您的位置:首页 > 健康 > 养生 > 苏州网页设计多少钱_国家新闻出版署投诉电话_怎么做外链_百度指数首页

苏州网页设计多少钱_国家新闻出版署投诉电话_怎么做外链_百度指数首页

2025/3/16 22:14:07 来源:https://blog.csdn.net/m0_72813396/article/details/142666621  浏览:    关键词:苏州网页设计多少钱_国家新闻出版署投诉电话_怎么做外链_百度指数首页
苏州网页设计多少钱_国家新闻出版署投诉电话_怎么做外链_百度指数首页

本文章的前置文章为:

windows 驱动编写原则

windows COM驱动 案例

windows COM驱动的I/O处理

在前面的设计中,主要是对windows提供的VirtualSerial源代码的讲解,但是那个驱动其实是一个空壳驱动,用于学习的,在I/O处理中,也讲述了serial I/O处理的本质,接下来会将这些知识应用到实际中,完整的代码正在审核,审核完成后会上传。

需求

在很多windows 外接的开发板的调试中,日志端口被虚拟成一个RS232的UART,在设备管理器中看起来像这样:

而日志端口的输出往往是这样:

很明显,之前的VirtualSerial驱动不能在一些通用软件(sscom或者UartAssist上使用) ,那么怎么改造它呢?

从驱动中反推应用代码

如果我们在DeviceIoControl代码中,对所有的IOCTL打印的话,那么我们会发现通用软件至少会调用下面的IOCTL:

DeviceIoControl IOCTL_SERIAL_SET_WAIT_MASK IOCTL = 0x1b0044DeviceIoControl IOCTL_SERIAL_SET_QUEUE_SIZE IOCTL = 0x1b0008DeviceIoControl IOCTL_SERIAL_GET_BAUD_RATE IOCTL = 0x1b0050DeviceIoControl IOCTL_SERIAL_GET_LINE_CONTROL IOCTL = 0x1b0054DeviceIoControl IOCTL_SERIAL_GET_CHARS IOCTL = 0x1b0058DeviceIoControl IOCTL_SERIAL_GET_HANDFLOW IOCTL = 0x1b0060DeviceIoControl IOCTL_SERIAL_SET_BAUD_RATE IOCTL = 0x1b0004DeviceIoControl IOCTL_SERIAL_SET_RTS IOCTL = 0x1b0030DeviceIoControl IOCTL_SERIAL_SET_DTR IOCTL = 0x1b0024DeviceIoControl IOCTL_SERIAL_SET_LINE_CONTROL IOCTL = 0x1b000cDeviceIoControl IOCTL_SERIAL_SET_CHARS IOCTL = 0x1b005cDeviceIoControl IOCTL_SERIAL_SET_HANDFLOW IOCTL = 0x1b0064DeviceIoControl IOCTL_SERIAL_GET_MODEMSTATUS IOCTL = 0x1b0068EvtIoDeviceControl IOCTL_SERIAL_WAIT_ON_MASK EvtIoDeviceControl IOCTL_SERIAL_GET_COMMSTATUS 

注意,这里屏蔽了CreateFile等函数,因为那个对目前的需求来说并无意义。 

仔细观察会发现

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com