CyUSB.sys的说明文档CyUSB.chm-IOCTL接口范例-IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER
2014-08-20 07:56
351 查看
DeviceIoControl()可以利用Io Control (aka IOCTL) code操作USB设备驱动,这些IOCTL码由谁定义由谁解释呢?(CyAPI.lib? CyUSB.dll? CyUSB.sys?)
答案:cyioctl.h
例如:
#define IOCTL_ADAPT_GET_DRIVER_VERSION CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_ADAPT_INDEX, METHOD_BUFFERED, FILE_ANY_ACCESS)
..
#define IOCTL_ADAPT_GET_ALT_INTERFACE_SETTING CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_ADAPT_INDEX+2, METHOD_BUFFERED, FILE_ANY_ACCESS)
至于“FILE_DEVICE_UNKNOWN, IOCTL_ADAPT_INDEX, METHOD_BUFFERED, FILE_ANY_ACCESS”这些东西的定义,应该是在Windows相关头文件or库里面吧。
这是IOCTL Interface的IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER的使用范例:
Description
This command sends a control request to the default Control endpoint, endpoint zero.
DeviceIoControl( ) is passed a pointer to a two-part structure as both the lpInBuffer and lpOutBuffer parameters. This two-part structure contains a SINGLE_TRANSFER structure followed by a data buffer.
The SINGLE_TRANSFER structure contains all the parameters for the control request.
The buffer contains the transfer data.
pXmitBuf
SINGLE_TRANFER
bmRequest
Request
.
.
buff
答案:cyioctl.h
例如:
#define IOCTL_ADAPT_GET_DRIVER_VERSION CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_ADAPT_INDEX, METHOD_BUFFERED, FILE_ANY_ACCESS)
..
#define IOCTL_ADAPT_GET_ALT_INTERFACE_SETTING CTL_CODE(FILE_DEVICE_UNKNOWN, IOCTL_ADAPT_INDEX+2, METHOD_BUFFERED, FILE_ANY_ACCESS)
至于“FILE_DEVICE_UNKNOWN, IOCTL_ADAPT_INDEX, METHOD_BUFFERED, FILE_ANY_ACCESS”这些东西的定义,应该是在Windows相关头文件or库里面吧。
这是IOCTL Interface的IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER的使用范例:
Description
This command sends a control request to the default Control endpoint, endpoint zero.
DeviceIoControl( ) is passed a pointer to a two-part structure as both the lpInBuffer and lpOutBuffer parameters. This two-part structure contains a SINGLE_TRANSFER structure followed by a data buffer.
The SINGLE_TRANSFER structure contains all the parameters for the control request.
The buffer contains the transfer data.
pXmitBuf
SINGLE_TRANFER
bmRequest
Request
.
.
buff
union { struct { UCHAR Recipient:5; //接收方: Device,Interface,Endpoint,Other UCHAR Type:2; //Type: Standard,Class,Vendor UCHAR Direction:1; //数据传输方向: Host2Device,Device2Host } bmRequest; UCHAR bmReq; //请求类型 }; bmRequest.Recipient = 0; // Device bmRequest.Type = 2; // Vendor bmRequest.Direction = 1; // IN command (from Device to Host) int iXmitBufSize = sizeof(SINGLE_TRANSFER) + bufLen; // The size of the two-part structure. XmitBuf is the two-part structure. UCHAR *pXmitBuf = new UCHAR[iXmitBufSize]; // Allocate the memory 创建iXmitBufSize大小的UCHAR变量 ZeroMemory(pXmitBuf, iXmitBufSize); // 指定存储空(UCHAR)间清零 PSINGLE_TRANSFER pTransfer = (PSINGLE_TRANSFER)pXmitBuf; // The SINGLE_TRANSFER comes first 下面首先定义SINGLE_TRANSFER Structure的值 pTransfer->SetupPacket.bmRequest = bmReq; //Birmap Characteristics of request pTransfer->SetupPacket.bRequest = ReqCode; //Specific request pTransfer->SetupPacket.wValue = Value; pTransfer->SetupPacket.wIndex = Index; pTransfer->SetupPacket.wLength = bufLen; //Number of bytes to transfer if there is a Data stage pTransfer->SetupPacket.ulTimeOut = TimeOut / 1000; pTransfer->Reserved = 0; pTransfer->ucEndpointAddress = 0x00; // Control pipe pTransfer->IsoPacketLength = 0; pTransfer->BufferOffset = sizeof (SINGLE_TRANSFER); pTransfer->BufferLength = bufLen; DWORD dwReturnBytes; DeviceIoControl (hDevice, IOCTL_ADAPT_SEND_EP0_CONTROL_TRANSFER, pXmitBuf, iXmitBufSize, pXmitBuf, iXmitBufSize, &dwReturnBytes, NULL); // Copy data into buf UCHAR *ptr = pXmitBuf + sizeof (SINGLE_TRANSFER); memcpy(buf, ptr, dwReturnBytes);
相关文章推荐
- 3D地图接口说明文档
- ADOX.Catalog中文帮助详细说明chm文档第1/3页
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url.
- AXI-Lite:Simper,non-brust control register style interface 添加寄存器类型接口IP核详细使用步骤说明
- FastDFS接口API文档说明
- Choice接口说明文档
- 基站定位接口说明文档
- FastDFS接口API文档说明
- i2c 驱动编程接口 i2c_master_send 和 i2c_master_recv i2c_transfer
- 【改自lg2lh】EZ-USB 68013 学习笔记--设备信息安装文件CyUSB.inf详细说明
- .net 类库生成chm说明文档
- EZ-USB 68013 学习笔记--设备信息安装文件CyUSB.inf详细说明
- 学习effective java-17类和接口之要么为继承而设计,并提供文档说明,要么就禁止继承
- .net dll类库 生成chm说明文档
- 把.html文件(使用说明包)制作成CHM文档的方法
- Md5简介【摘自99Bill接口说明文档】
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url
- i2c 驱动编程接口 i2c_master_send 和 i2c_master_recv i2c_transfer
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. .
- i2c 驱动编程接口 i2c_master_send 和 i2c_master_recv, i2c_transfer