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 ドライバーが文字列記述子を要求する場合の言語の識別子。それ以外の場合、このパラメーターは 0 です。
[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 |
Header | wudfusb.h (Wudfusb.h を含む) |
[DLL] | WUDFx.dll |