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 字段,其值會在 通用序列總線 規格中說明。 (某些語言可能無法使用此資源
和國家/地區.) 其中一些值會列在 _URB_CONTROL_DESCRIPTOR_REQUEST 結構之 DescriptorType 成員的描述中。
[in] Index
描述項的索引,根據 通用序列總線 規格。 (某些語言可能無法使用此資源
和國家/地區.)
[in] LanguageID
如果 UMDF 驅動程式要求字串描述元,則為語言的標識碼;否則,此參數為零。
[in, out] BufferLength
在輸入時,變數的指標包含 Buffer 所指向之緩衝區的大小,以位元組為單位。 如果作業成功,變數會接收架構複製到緩衝區的位元元組數目。
[out] Buffer
接收USB描述元之呼叫端所提供緩衝區的指標。 緩衝區的類型應該符合 DescriptorType 中指定的值。
傳回值
RetrieveDescriptor 會傳回下列其中一個值:
傳回碼 | Description |
---|---|
|
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 |