阅读:715回复:0
急问:DeviceIoControl()发送的USB设备请求的问题?
各位大侠,我对如下一段代码发送的USB设备请求有疑问:
ioRequest.uAddressL = 0x00; ioRequest.bAddressH = 0x20; ioRequest.uSize = 0xDC00; ioRequest.bCommand = 0x81; ioBlock.uOffset = 0; ioBlock.uLength = sizeof(IO_REQUEST); ioBlock.pbyData = (PUCHAR)&ioRequest; ioBlock.uIndex = SETUP_DMA_REQUEST; bResult = DeviceIoControl(hDevice, IOCTL_WRITE_REGISTERS, (PVOID)&ioBlock, //输入数据缓冲区 sizeof(IO_BLOCK), //输入缓冲区的大小 NULL, //输出缓冲区 0, //输出缓冲区的长度 &nBytes, //实际装载到输出缓冲区中的长度 NULL); 根据DDK文档中对IOCTL_WRITE_REGISTERS说明,我觉得这个DeviceIoControl()调用发送给USB器件的设备请求各字段的值应该是: bmRequestType=0x40 bRequest=0x04 --我的问题就在这里。DDK文档中说bRequest=(pIoBlock->uLength>1)?0x04:0x0C,那么根据以上代码bRequest就应该等于0x04,但实际的值是0x0C。请问这是问什么? wValue=0 wIndex=SETUP_DMA_REQUEST wLength=sizeof(IO_RETUEST) 请各位大侠赐教哇! |
|
|