UsbBuildVendorRequest构造urb ,Windows xp wdm driver

slevin   2010-3-18 17:51 楼主
我想通过设备的控制端点EndPoint 0,进行读取寄存器的操作,寄存器是R\W的,地址是由Value的低位设置的

  1. ReservedBits = 0;
  2. urbflags = USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK;
  3. uValue = VALUEHIGH(*value)|reg;//将value的值向右移动8位,reg是寄存器的地址,结果存放在value中
  4. bRequest = 0xc3;
  5. uIndex = 0;

  6. UsbBuildVendorRequest(urb,
  7.                         URB_FUNCTION_VENDOR_ENDPOINT,
  8.                                 sizeof(urb),
  9.                                 urbflags,
  10.                                 ReservedBits,
  11.                                 bRequest,
  12.                                 uValue,
  13.                                 uIndex,
  14.                                 value,
  15.                                 NULL,
  16.                                 sizeof(value),
  17.                                 NULL);

然后,发送URB
  1.   irp = IoBuildDeviceIoControlRequest(IOCTL_INTERNAL_USB_SUBMIT_URB,
  2.                                         deviceExtension->TopOfStackDeviceObject,
  3.                                         NULL,
  4.                                         0,
  5.                                         NULL,
  6.                                         0,
  7.                                         TRUE,
  8.                                         &event,
  9.                                         &ioStatus);
  10. nextStack = IoGetNextIrpStackLocation(irp);
  11.     ASSERT(nextStack != NULL);
  12.     nextStack->Parameters.Others.Argument1 = Urb;




结果ntStatus==INVALID_PARAMTER,不知哪位给予指点,究竟参数该怎么设置

回复评论 (1)

补充:

  1. urb =  ExAllocatePool(NonPagedPool,
  2.                          sizeof(struct         _URB_CONTROL_VENDOR_OR_CLASS_REQUEST
  3.                          ));

bRequest = 0xc3;
是由BusHound得到的
Phase  Data                       Info
CTL    c0 c3 11 00 - 00 00 01 00  VENDOR
RequestType = 0xc0,不知道为何在UrbBuildVendorRequest中没有相应的参数与之对应
Request = 0xc3,是保留的命令代码
点赞  2010-3-18 19:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复