阅读:2048回复:3
怎样读取USB鼠标的HID描述符
我发送类型码为23的descriptor_request URB给USBDI,结果请求失败。chris cant的wdm驱动开发指南书上的例子却显示同样的方法读取USB键盘HID描述符成功。我觉得这种方法有问题,因为DDK文档上说descriptor_request URB用于获取device,configuration和string 描述符,没有讲到HID描述符。
我又不知道该怎么做,哪位高手能解答一下? |
|
沙发#
发布于:2004-03-19 08:16
这个要设备响应正确后才完成这个IRQ的
|
|
|
板凳#
发布于:2004-03-19 08:50
你的程序贴出来看
|
|
|
地板#
发布于:2004-03-20 19:44
更正一下,HID描述符已经在Configuration描述符中得到,我想请求的是HID report描述符。
urb类型为struct _URB_CONTROL_DESCRIPTOR_REQUEST Index=0; LangID=0; DescriptorType=0x22;//for HID report descriptor UsbBuildGetDescriptorRequest(urb,UrbSize,DescriptorType, Index, LangID,Descriptor, NULL, Size,NULL); IoControlCode=IOCTL_INTERNAL_USB_SUBMIT_URB; KeInitializeEvent(&event, NotificationEvent, FALSE); PIRP Irp = IoBuildDeviceIoControlRequest(IoControlCode, dx->NextStackDevice,NULL,0,NULL,0,TRUE,&event,&IoStatus); PIO_STACK_LOCATION NextIrpStack = IoGetNextIrpStackLocation(Irp); NextIrpStack->Parameters.Others.Argument1 = urb; NTSTATUS status = IoCallDriver( dx->NextStackDevice, Irp); if (status == STATUS_PENDING) { KeWaitForSingleObject( &event, Suspended, KernelMode, FALSE, NULL); status = IoStatus.Status; } 结果status报错 |
|