【发布时间】:2018-07-31 12:33:46
【问题描述】:
我使用 PIC18F67J94 设计了一个嵌入式系统,并使用了随机 VID 和 PID。然后我使用 Zadig 为硬件生成了一个 USB CDC 驱动程序。它使用 mdmcpq.inf 和 usbser.sys。以下是 Zadig 制作的 .inf 文件,对供应商名称进行了一些修改
[Strings]
SNMPMOD = "SNMP-Modbus Converter"
VendorName = "ABCD"
SourceName = "ABCD Install Disk"
SNMPMODID = "VID_8474&PID_0005"
DeviceGUID = "{6097438F-67AB-4C8C-A8C5-AF92EE79D3DF}"
Service = "USB COM Port"
[Version]
Signature = "$Windows NT$"
Provider = "ABCD"
Class = Ports
ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318}
CatalogFile = ABCD.cat
DriverVer = 04/11/2018, 1.0.0.6
[ControlFlags]
ExcludeFromSelect=*
[Manufacturer]
%VendorName% = DeviceList,NTx86,NTamd64
[DeviceList.NTx86]
%SNMPMOD% = UsbSer_Install, USB\%SNMPMODID%
[DeviceList.NTamd64]
%SNMPMOD% = UsbSer_Install, USB\%SNMPMODID%
[UsbSer_Install]
include = mdmcpq.inf
CopyFiles = FakeModemCopyFileSection
AddReg = UsbSer_Install.AddReg
AddProperty = UsbSer_AddProperty
[UsbSer_Install.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
[UsbSer_Install.Services]
AddService = usbser,0x00000002,UsbSer_Service
[UsbSer_Service]
DisplayName = %Service%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\usbser.sys
LoadOrderGroup = Base
[UsbSer_AddProperty]
GenericDriverInstalled,,,,1
[DestinationDirs]
DefaultDestDir = 12
[SourceDisksNames]
1 = %SourceName%
它创建了一个 COM 端口并且工作正常,但如果我在不关闭 COM 端口的情况下移除设备然后重新连接设备,设备管理器会显示要连接的设备和 com 端口号,但该 com 端口不再使用终端软件访问。
然后我必须再次移除设备,然后重新连接设备,然后它会创建一个有效的 com 端口。
我也使用过 FTDI 设备和 Prolific Technology 设备,它们都没有这些问题。
Prolific 使用 ser2pl.sys,因为 FTDI 有自己的 .sys 文件。
我想知道在设备断开连接时是否可以让 windows 以某种方式关闭 COM 端口。
【问题讨论】: