
需要
VID和PIDPID/VID唯一标识一个设备,HardwareID是为了给系统识别的,他是根据PID/VID而生成的。这个与序列号没什么关系,序列号一般都是厂家固化到芯片中的信息而已。GUID只是为了标志你安装的设备是属于一个什么类当中,这个类可以显示再设备管理器中。比如:你可以定义一个类,当然这个类有与系统中任何类都不同的GUID,然后选择一个图标和类名,就可以同网卡等其他设备一起显示在设备管理器下的根目录中了根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每个供应商的VID是唯一的,PID由供应商自行决定,理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的PID,以便区别相同厂家的不同设备。
首先你找到一个兼容的驱动,然后修改驱动里面的硬件说明。这样驱动才能对应到设备,但是如果驱动不兼容的话,虽然能安装,设备还是无法使用的。
用写字本打开inf文件。找到device这个项目,然后把原来的ID改成你的设备ID
“USB\Vid_114d&Pid_8000&Rev_0100 ”
比如下面的
[Realtek]
; DisplayName Section DeviceID
; ----------- ------- --------
%RTL8169DeviceDesc% = RTL8169ndi, PCI\VEN_10EC&DEV_8169
把“DeviceID”下面的文字修改就能识别了。
你需要开启延迟变量,请在开头加上:setlocal enabledelayedexpansion
@echo off&setlocal enabledelayedexpansionfor /f "tokens=8 delims=_\" %%i in ('REG QUERY HKLM\system\CurrentControlSet\Control\usbstor') do (
set var=%%i
echo 设备标识码:%%i VID_!var:~0,4! PID_!var:~-4!
)
pause
WMI使用的WIN32_类库名访问。
比如VB6代码:
Dim WMIDim i As Integer
Dim aa
Set WMI = GetObject("WinMgmts:")
Set objs = WMIInstancesOf("Win32_ControllerHasHub")
i = 1
For Each obj In objs
aa = objPath_
Enum1 = Enum1 & i & vbTab & aa & vbCrLf
i = i + 1
Next
Enum1里面就是检举出来的usb端口路径,然后自己把字符转换一下就可以了。
具体的你需要检举哪种设备,把WMIInstancesOf(" ")里面的类替换为需要的就可以。
这个可以通过JAVA 的JNI 去调用 *** 作系统的API去获取已安装的USB接口驱动的问题
至于java的JNI是怎样工作的,以及其工作的原理可以参考下面这篇文章:
IT技术社区:>
看看具体是什么USB类的设备,通过MDK,DDK或SDK中的设备管理器族函数枚举设备的VID和PID,寻找到vid和pid就可以通过相关函数得到这个设备的符号名,然后通过相关函数比如openfile得到设备文件的读写句柄来通过驱动定义的函数或readfile和writefie来读写数据。
以上就是关于每个主机需要知道自己的VID吗全部的内容,包括:每个主机需要知道自己的VID吗、硬件 ID USB\Vid_114d&Pid_8000&Rev_0100怎么找、批处理显示当前USB设备标识码、VID、PID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)