WinUsb_Initialize 函数 (winusb.h)

WinUsb_Initialize 函数为文件句柄指定的设备创建 WinUSB 句柄。

语法

BOOL WinUsb_Initialize(
  [in]  HANDLE                   DeviceHandle,
  [out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);

参数

[in] DeviceHandle

CreateFile 返回的设备句柄。 WinUSB 使用重叠的 I/O,因此必须在 CreateFile 调用的 dwFlagsAndAttributes 参数中指定FILE_FLAG_OVERLAPPED,以便 DeviceHandle 具有WinUsb_Initialize正常运行所需的特征。

[out] InterfaceHandle

接收设备上第一个 (默认) 接口的不透明句柄。 在默认接口上执行操作的其他 WinUSB 例程需要此句柄。 若要释放句柄,请调用 WinUSB_Free 函数。

返回值

如果操作成功,WinUsb_Initialize返回 TRUE。 否则,此例程返回 FALSE,调用方可以通过调用 GetLastError 检索记录的错误。

GetLastError 可以返回以下错误代码。

返回代码 说明
ERROR_INVALID_HANDLE
调用方在 DeviceHandle 参数中传递了 NULL 或无效句柄;FILE_FLAG_OVERLAPPED未在文件句柄中设置。
ERROR_NOT_ENOUGH_MEMORY
指示内存不足,无法执行操作。
ERROR_BAD_DEVICE
指示找不到设备的默认接口描述符。

注解

调用 WinUsb_Initialize 时,接口的策略设置将重置为默认值。

WinUsb_Initialize调用会查询基础 USB 堆栈中各种描述符,并分配足够的内存来存储检索到的描述符数据。

WinUsb_Initialize 先检索设备描述符,然后获取关联的配置描述符。 调用从配置描述符派生关联的接口描述符,并将其存储在数组中。 数组中的接口由从零开始的索引标识。 索引值为 0 表示第一个接口 (默认接口) ,值为 1 表示第二个关联的接口,依此。 WinUsb_Initialize 分析终结点描述符的默认接口描述符,并缓存关联管道或特定于状态的数据等信息。 InterfaceHandle 参数中收到的句柄是指向为数组中的第一个接口分配的内存块的指针。

如果应用程序想要在设备上使用另一个接口,则必须调用 WinUsb_GetAssociatedInterface,指定接口的索引,并检索为指定接口分配的内存块的句柄。

要求

要求
目标平台 通用
标头 winusb.h (包括 Winusb.h)
Library Winusb.lib
DLL Winusb.dll

另请参阅

WinUSB

WinUSB 函数

WinUSB_Free