Jav*_*Man 19 usb drivers device
我是一个学习如何为USB设备编写WDM设备驱动程序的新手,发现可用的材料太难理解了(DDK在线文档是最难读的,而且Oney的WDM设备驱动程序书不是'更好的事情).
所以,我有一个简单的问题.如果我想创建一个虚拟USB设备(例如,一个看起来像是连接到USB端口的真正USB鼠标的虚拟USB鼠标)进行测试/学习,我该从哪里开始.
到目前为止,我所理解的是HIDClass驱动程序(hidclass.sys)有一个用于usb总线(hidusb.sys)的微型驱动程序,它执行连接的USB硬件的枚举.因此,如果我想劫持硬件枚举过程并创建我自己的虚拟硬件,我是否应该在某处包含一个过滤器驱动程序来拦截与硬件枚举过程相关的一些IRP?
很抱歉,如果上述内容完全没有意义,因为我还处于学习阶段,这实际上是我认为可以帮助我学习更好地编写USB设备驱动程序的练习之一.
Ale*_*kov 20
Windows使用即插即用架构.当您插入USB设备时,它会向设备发送低级USB请求,然后根据设备的响应决定加载哪个驱动程序.匹配是通过将供应商ID,产品ID等与inf文件部分进行比较来完成的.驱动程序以带有xxx.inf文件的已编译xxx.sys的形式出现,并加载到内核空间.Windows根据设备驱动程序附带的*.inf文件决定加载哪个xxx.sys.
这些文件包含以下部分:
[Manufacturer]
%Manufacturer% = DeviceInstall
[DeviceInstall]
"some usb dev"=OTHER_SECTION_DEV, USB\Vid_XXXX&Pid_yyyy
# This is where windows learns to match this information
# to your device, using the product id (Pid) and the
# vendor id (Vid) that Windows gets back during the
# low level USB DeviceDescriptor request
[OTHER_SECTION_DEV]
CopyFiles = xxx.sys, 10,system32\drivers
Run Code Online (Sandbox Code Playgroud)
(有关inf
文件内容的详细说明,请访问https://docs.microsoft.com/en-us/windows-hardware/drivers/install/inf-manufacturer-section)
详细了解USB枚举过程(使用USB记录器):
对于任何连接的USB设备,您可以使用设备管理器查看这些字符串:
例如,我有一个连接的USB存储设备Device Id = usb\class_08&subclass_06&prot_50
,此字符串可以与.inf
首次枚举后添加到已知设备列表中的文件匹配.此文件有一个字符串Service = USBSTOR
,因此我们知道它usbstor.sys
用于与此USB大容量存储设备连接.
让我们继续匹配过程.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
对于密钥上的磁盘,您可以看到如下内容:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0781&Pid_5406\0775555ACA54ADE3]
"Service"="USBSTOR"
Run Code Online (Sandbox Code Playgroud)
对于写作司机,我的建议是:
归档时间: |
|
查看次数: |
77514 次 |
最近记录: |