SpaceWalker
驱动牛犊
驱动牛犊
  • 注册日期2003-04-13
  • 最后登录2003-09-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:716回复:0

急问:DeviceIoControl()发送的USB设备请求的问题?

楼主#
更多 发布于:2003-09-16 10:10
   各位大侠,我对如下一段代码发送的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)
  
    请各位大侠赐教哇!
天行者
游客

返回顶部