C# 获得串口句柄,供 Win32 API 使用

C# 获得串口句柄,供 Win32 API 使用

废话不表,直接看代码

public static IntPtr GetCommHandle(System.IO.Ports.SerialPort sp)

{//获得串口句柄,供 Win32 API 使用
  IntPtr hComm = IntPtr.Zero;
  if(sp != null)
  {
    object stream = typeof(System.IO.Ports.SerialPort).GetField("internalSerialStream", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(sp);
    var handle = (Microsoft.Win32.SafeHandles.SafeFileHandle)stream.GetType().GetField("_handle", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(stream);
    hComm = handle.DangerousGetHandle();
  }
  return hComm;
}

posted @ 2021-01-15 16:29  czcbzc  阅读(505)  评论(0编辑  收藏  举报