我正在为多端口串行卡编写适用于 Windows (7/8) 的驱动程序堆栈。该卡有两个端口,因此驱动程序堆栈包含一个总线驱动程序,该总线驱动程序创建两个 PDO,每个端口一个,然后使总线关系无效以启动 PNP 序列,从而导致加载端口驱动程序。端口驱动程序在创建符号链接(symbolic link)以允许应用程序访问时在注册表中查找 PortName 字符串。我猜 MS CoInstaller 正在分配名称。这些端口被赋予了通常的 COMn 编号,通常是 COM3 和 COM4。
除了我找不到控制哪个端口被赋予哪个名称的方法之外,一切似乎都运行良好 - 端口具有不同的实例 ID(0x40 和 0x41)和不同的 UINumber(0 和 8)。在某些(可能是大多数)安装中,存在 0x40=COM3 和 0x41=COM4 的映射,但在其他安装中,关系是相反的。
谁能建议控制端口命名的因素?我没有自己的共同安装程序,但如果需要,可以轻松添加特定于设备的共同安装程序。
谢谢
最佳答案
这不是一个完整的答案,但它确实回答了 Windows 如何选择新的 com 端口名称的一些问题:
根据 this ,Windows 注册表包含正在使用的 com 端口名称的位图:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\ComDB
比如附近的Windows 7系统有
ComDB"=hex:fc,ff,ff,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00
第一个字节 (fc
) 表示 COM1
和 COM2
可以分配并且 COM3
到 COM8
不可用。
关于windows - 从 Windows 驱动程序控制 COM 端口名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32958017/