WinUsb_GetDescriptor 函数 (winusb.h)

WinUsb_GetDescriptor函数返回请求的描述符。 这是一个同步操作。

语法

BOOL WinUsb_GetDescriptor(
  [in]  WINUSB_INTERFACE_HANDLE InterfaceHandle,
  [in]  UCHAR                   DescriptorType,
  [in]  UCHAR                   Index,
  [in]  USHORT                  LanguageID,
  [out] PUCHAR                  Buffer,
  [in]  ULONG                   BufferLength,
  [out] PULONG                  LengthTransferred
);

参数

[in] InterfaceHandle

所选配置中接口的不透明句柄。

若要检索设备或配置描述符,请使用 WinUsb_Initialize返回的句柄。

若要检索第一个接口的接口描述符,请使用 WinUsb_Initialize返回的句柄。

若要在第一个接口中检索终结点的终结点描述符,请使用 WinUsb_Initialize返回的句柄。

若要检索所有其他接口及其相关终结点的描述符,请使用目标接口的句柄(由 WinUsb_GetAssociatedInterface 检索)。

[in] DescriptorType

一个 值,该值指定要返回的描述符的类型。 此参数对应于标准设备描述符的 bDescriptorType 字段,其值在 通用串行总线 规范中介绍。 其中一些值列在 _URB_CONTROL_DESCRIPTOR_REQUEST 结构的 DescriptorType 成员的说明中。

[in] Index

描述符索引。 有关描述符索引的说明,请参阅 通用串行总线 规范 (www.usb.org) 。

[in] LanguageID

一个 值,该值指定语言标识符(如果请求的描述符是字符串描述符)。

[out] Buffer

调用方分配的缓冲区,用于接收请求的描述符。

[in] BufferLength

Buffer 的长度(以字节为单位)。

[out] LengthTransferred

复制到 Buffer 中的字节数。

返回值

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

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

返回代码 说明
ERROR_INVALID_HANDLE
调用 方在InterfaceHandle 参数中传递 NULL。

注解

如果 Buffer 参数指向的输出缓冲区足够大, WinUsb_GetDescriptor 会在输出缓冲区中创建指定描述符的副本。 如果缓冲区不够大,无法保存描述符数据,则不会复制任何数据。 描述符是在 WinUsb_Initialize 调用期间创建的,或者此时可以从设备检索它。

要求

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

另请参阅

WinUSB

WinUSB 函数

WinUsb_Initialize

_URB_CONTROL_DESCRIPTOR_REQUEST