我必须创建虚拟 com 端口,通过它我可以与机器上的其他 com 端口通信,这是设备驱动程序开发的一部分?或者简单地我们可以用 c++ 编写。
任何人都可以帮我解决这个问题 提前致谢。
最佳答案
你必须编写一个驱动程序,所以你需要安装 WDK (以前称为 DDK)。但你很幸运,因为 Windows Driver Kit Samples Pack包含 Virtual Serial port samples .
看起来你想要一个“翻译器”来与设备对话,为什么不简单地编写一个过滤器驱动程序并实现一些额外的 IOControls?
如果你真的想从你的驱动程序中访问另一个端口(我已经做过一次),你应该查找以下函数:
IoGetDeviceObjectPointer
/ObDereferenceObject
(用于打开/关闭端口)IoBuildDeviceIoControlRequest
/IoCallDriver
(用于发送 IOCTL 以更改端口设置)IoBuildSynchronousFsdRequest
/IoCallDriver
(用于写入/读取数据)
你需要的结构/IOCTL:
SERIAL_BAUD_RATE
(用于IOCTL_SERIAL_SET_BAUD_RATE
/IOCTL_SERIAL_GET_BAUD_RATE
)IOCTL_SERIAL_SET_TIMEOUTS
SERIAL_HANDFLOW
(用于IOCTL_SERIAL_SET_HANDFLOW
/IOCTL_SERIAL_GET_HANDFLOW
)SERIAL_LINE_CONTROL
(用于IOCTL_SERIAL_SET_LINE_CONTROL
)IOCTL_SERIAL_PURGE
IOCTL_SERIAL_SET_WAIT_MASK
/IOCTL_SERIAL_GET_WAIT_MASK
IOCTL_SERIAL_SET_CHARS
/IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_WAIT_ON_MASK
可以找到控制请求的完整概述 here
关于c++ - 创建虚拟串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27038838/