次の方法で共有


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 は、次のいずれかの値を返します。

リターン コード 形容
S_OK

RetrieveDescriptor 、USB 記述子 正常に取得されました。

E_OUTOFMEMORY

RetrieveDescriptor 割り当てエラーが発生しました。

Winerror.h で定義されているエラー コード
この値は、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

関連項目

IWDFUsbTargetDevice

WinUsb_GetDescriptor