IWDFUsbTargetDevice::RetrieveDescriptor 方法 (wudfusb.h)
[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]
RetrieveDescriptor 方法检索可描述设备、配置或字符串的 USB 描述符。
语法
HRESULT RetrieveDescriptor(
[in] UCHAR DescriptorType,
[in] UCHAR Index,
[in] USHORT LanguageID,
[in, out] ULONG *BufferLength,
[out] PVOID Buffer
);
参数
[in] DescriptorType
一个 值,该值指定要返回的描述符的类型。 此参数对应于标准设备描述符的 bDescriptorType 字段,其值在 通用串行总线 规范中介绍。 (此资源在某些语言中可能不可用
和 countries.) 其中一些值在 _URB_CONTROL_DESCRIPTOR_REQUEST 结构的 DescriptorType 成员的说明中列出。
[in] Index
描述符的索引,根据 通用串行总线 规范。 (此资源在某些语言中可能不可用
和 countries.)
[in] LanguageID
如果 UMDF 驱动程序请求字符串描述符,则为语言的标识符;否则,此参数为零。
[in, out] BufferLength
指向变量的指针,该变量在输入时包含 Buffer 指向的缓冲区的大小(以字节为单位)。 如果操作成功,变量将接收框架复制到缓冲区中的字节数。
[out] Buffer
指向接收 USB 描述符的调用方提供的缓冲区的指针。 缓冲区的类型应与 DescriptorType 中指定的值匹配。
返回值
RetrieveDescriptor 返回以下值之一:
返回代码 | 说明 |
---|---|
|
RetrieveDescriptor 已成功检索 USB 描述符。 |
|
RetrieveDescriptor 遇到分配失败。 |
|
此值对应于 WinUsb API 返回的错误代码。 |
注解
有关 UMDF 驱动程序可为 DescriptorType 参数传递的有效描述符类型的信息,请参阅 WinUsb_GetDescriptor 函数。
RetrieveDescriptor 方法生成 UMDF 请求,并将请求同步发送到 I/O 目标。
示例
下面的代码示例检索 USB 配置描述符。
HRESULT
CUmdfHidDevice::RetrieveConfigDescriptor(
__out_bcount(ConfigDescriptorCb) PUSB_CONFIGURATION_DESCRIPTOR *ConfigDescriptor,
__out ULONG *ConfigDescriptorCb
)
{
ULONG descriptorCb = sizeof(USB_CONFIGURATION_DESCRIPTOR);
USB_CONFIGURATION_DESCRIPTOR descriptorHeader;
PBYTE descriptorBuffer;
HRESULT hr;
//
// Get the configuration descriptor at index 0
//
hr = m_UsbTargetDevice->RetrieveDescriptor(
USB_CONFIGURATION_DESCRIPTOR_TYPE,
0,
0,
&descriptorCb,
&descriptorHeader
);
//
// Store the buffer in the output parameter, or delete it.
//
if (SUCCEEDED(hr)) {
*ConfigDescriptor = (PUSB_CONFIGURATION_DESCRIPTOR) (descriptorHeader);
*ConfigDescriptorCb = descriptorCb;
}
else {
delete[] descriptorHeader;
}
return hr;
}
要求
要求 | 值 |
---|---|
结束支持 | 在 UMDF 2.0 及更高版本中不可用。 |
目标平台 | 桌面 |
最低 UMDF 版本 | 1.5 |
标头 | wudfusb.h (包括 Wudfusb.h) |
DLL | WUDFx.dll |