阅读:1501回复:9
关于USB过滤驱动程序
在USB过滤驱动程序中,怎么拦截读interface descriptor的过程?
拦截到后可以修改吗? |
|
|
沙发#
发布于:2001-12-26 14:42
关注
|
|
|
板凳#
发布于:2001-12-28 10:06
你的filter是插在哪里的?
|
|
|
地板#
发布于:2001-12-28 10:53
谢谢关注,是LowerFilters,我的问题已解决.
|
|
|
地下室#
发布于:2001-12-28 11:32
谢谢关注,是LowerFilters,我的问题已解决. 怎么解决的呀?说说看 |
|
|
5楼#
发布于:2001-12-28 22:02
用户被禁言,该主题自动屏蔽! |
|
6楼#
发布于:2001-12-29 14:53
先谢谢各位的关注
我用ds2.5的usbfilt的例子改的在98下解决了,可是2000下一插上USB设备就会重启并且只有拔了设备才能进2000了。 我用if(p->UrbControlDescriptorRequest.DescriptorType!=USB_CONFIGURATION_DESCRIPTOR_TYPE)来拦截 在完成例程里 UCHAR* pdc=(UCHAR*)p->UrbControlDescriptorRequest.TransferBuffer; pdc +=14; *pdc=0x03; T<<\"usage is \"<<*pdc<<\"\\n\"; //T << *p; // display URB contents using KDebugOnlyTrace 在98下没发现问题可是用于2000时就会自动重启动后只有拔了设备才能再进2000。 在2000下我改为 UCHAR* pdc=(UCHAR*)p->UrbControlDescriptorRequest.TransferBuffer; T<<\"Report Descriptor from device is:\\n\"; *pdc=0x09; for (ULONG i=0; i < p->UrbControlDescriptorRequest.TransferBufferLength; i++, pdc++) { T<<\" \"<<*pdc; } T<<\"Intercept completed\\n\"; if(p->UrbControlDescriptorRequest.TransferBufferLength>=22) { pdc=(UCHAR*)p->UrbControlDescriptorRequest.TransferBuffer; pdc+=14; T<<\"\\naaaaaaaaa \"<<*pdc<<\"#\\n\"; *pdc=0x03; } (注上面的aaaaaaaa和#只是突出显示) 如果没有把*pdc=0x03;注释了就没问题,如果没注释掉就会重启,可是*pdc=0x09有没问题 谁能告诉我为什么?或者有什么更好的办法,先谢谢了! |
|
|
7楼#
发布于:2001-12-30 22:57
INTEL网站上找东西很费尽
|
|
8楼#
发布于:2001-12-31 10:24
你的pdc +=14;指哪个寄存器,*pdc=0x3和*pdc=0x9代表什么意思?
我刚刚接触,多指教! |
|
|
9楼#
发布于:2001-12-31 15:41
谢谢各位,改写了几行代码,可以了。放完假后再总结一下吧!
|
|
|