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
Header wudfusb.h (Wudfusb.h を含む)
[DLL] WUDFx.dll

こちらもご覧ください

IWDFUsbTargetDevice

WinUsb_GetDescriptor