阅读:825回复:0
请教EZ_USb驱动程序开发代码中关于Setup各域值如何设定?
不知道其中的域如:bRequest,wValue,wIndex等的值是在哪设定的!
看DDk中说,可以调用USBBuildVendorRequest来设定其中的值,以发送一个用户自定义的控制请求设定URB以传给USBDI; 可在EZ_USB开发工具包中的ezusb驱动开发源代码中,没找到设定用户自定义控制请求的地方,而是通过如下一段代码实现的: urb->UrbHeader.Length = sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST); urb->UrbHeader.Function = urbFunction; urb->UrbControlVendorClassRequest.TransferFlags = transferFlags; urb->UrbControlVendorClassRequest.TransferBufferLength = bufferLength; urb->UrbControlVendorClassRequest.TransferBufferMDL = Irp->MdlAddress; urb->UrbControlVendorClassRequest.Request = requestControl->request; urb->UrbControlVendorClassRequest.Value = requestControl->value; urb->UrbControlVendorClassRequest.Index = requestControl->index; 而requestControl又是以如下代码得到的! PVENDOR_OR_CLASS_REQUEST_CONTROL requestControl = Irp->AssociatedIrp.SystemBuffer; 在其ezusb驱动的头文件中定义了一个: #define IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST CTL_CODE(FILE_DEVICE_UNKNOWN, \\ Ezusb_IOCTL_INDEX+22,\\ METHOD_IN_DIRECT, \\ FILE_ANY_ACCESS) 来在缺省控制管道上进行Vendor or Class Specific Control transfer! 不明白如何设定requestControl->request - requestControl->value 等职 将它传给URB! 菜鸟请教,望高手赐教! |
|