laser_xjp
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2005-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:826回复:0

请教EZ_USb驱动程序开发代码中关于Setup各域值如何设定?

楼主#
更多 发布于:2005-04-05 12:19
不知道其中的域如: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!
菜鸟请教,望高手赐教!

游客

返回顶部