我确定标题确实做得不好,但是老实说,我想不出简短的描述来解决这个问题。请提出建议!
我使用WDF编写自定义/修改的KMDF COM端口串行驱动程序,并继承了MS作为开放源代码示例代码提供的示例Serial.sys驱动程序。
在此过程中,我更改了设备类和设备实例类GUID,创建了一个描述我的设备的新对象。
我成功安装了需要它的特定COM端口的驱动程序,并且可以在设备管理器中看到我的设备实例位于自定义设备类树下,我可以看到设备属性,并且看起来都不错。在驱动程序部分下,列出了我的名为wdfserial.sys的示例
现在的问题是,计算机上的其他5个COM端口没有使用我的驱动程序更新,也没有出现在我的设备类下,而是被标识为通用通信端口(COM x)。
但是,在属性和驱动程序窗口下,我可以看到列出的serial.sys(Windows附带的通用串行驱动程序),serenum.sys(与Serial一起使用)以及我的wdfserial.sys。
现在,如果只是在此处列出它,我就不会感到困扰,问题是,如果我打开一个COM端口,驱动程序也会被这些COM端口使用。我知道这一点,因为我可以看到我的DeviceIOControl结果进入了使用默认c#SerialPort类打开这5个com端口中的任何一个的代码。
我已经在驱动程序的修改后的代码中搜索并查找了任何Serial.sys或旧的GUID映射,但无法识别任何内容。
是否可能仅对同一硬件的一个实例使用不同的驱动程序?我在这里想念什么?
Win7和Win10都相同。
谢谢