private void InternalClose() { Win32Com.CancelIo(m_hPort); if (m_RxThread != null) { m_RxThread.Abort(); m_RxThread.Join(100); m_RxThread = (Thread)null; } Win32Com.CloseHandle(m_hPort); if (m_ptrUWO != IntPtr.Zero) { Marshal.FreeHGlobal(m_ptrUWO); } }
private void InternalClose() { Win32Com.CancelIo(hPort); if (rxThread != null) { rxThread.Abort(); rxThread.Join(100); rxThread = (Thread)null; } Win32Com.CloseHandle(hPort); if (ptrUWO != IntPtr.Zero) { Marshal.FreeHGlobal(ptrUWO); } stateRTS = 2; stateDTR = 2; stateBRK = 2; online = false; }
public CommBase.PortStatus IsPortAvailable(string s) { IntPtr file = Win32Com.CreateFile(s, 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero); if (file == (IntPtr)(-1)) { if ((long)Marshal.GetLastWin32Error() == 5L) { return(CommBase.PortStatus.unavailable); } file = Win32Com.CreateFile(AltName(s), 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero); if (file == (IntPtr)(-1)) { return((long)Marshal.GetLastWin32Error() == 5L ? CommBase.PortStatus.unavailable : CommBase.PortStatus.absent); } } Win32Com.CloseHandle(file); return(CommBase.PortStatus.available); }
public static PortStatus IsPortAvailable(int iComPort) { string comPort = "COM" + iComPort.ToString(); IntPtr file = Win32Com.CreateFile(comPort, 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero); if (file == (IntPtr)(-1)) { if ((long)Marshal.GetLastWin32Error() == 5L) { return(PortStatus.Unavailable); } file = Win32Com.CreateFile(AltName(comPort), 3221225472U, 0U, IntPtr.Zero, 3U, 1073741824U, IntPtr.Zero); if (file == (IntPtr)(-1)) { return((long)Marshal.GetLastWin32Error() == 5L ? PortStatus.Unavailable : PortStatus.Absent); } } Win32Com.CloseHandle(file); return(PortStatus.Available); }