Freigeben über


IWDFUsbTargetDevice::RetrieveDescriptor-Methode (wudfusb.h)

[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]

Die RetrieveDescriptor Methode ruft einen USB-Deskriptor ab, der ein Gerät, eine Konfiguration oder eine Zeichenfolge beschreiben kann.

Syntax

HRESULT RetrieveDescriptor(
  [in]      UCHAR  DescriptorType,
  [in]      UCHAR  Index,
  [in]      USHORT LanguageID,
  [in, out] ULONG  *BufferLength,
  [out]     PVOID  Buffer
);

Parameter

[in] DescriptorType

Ein Wert, der den Typ des zurückzugebenden Deskriptors angibt. Dieser Parameter entspricht dem bDescriptorType Feld eines Standardgerätedeskriptors, dessen Werte in der spezifikation Universal Serial Bus beschrieben werden. (Diese Ressource ist in einigen Sprachen möglicherweise nicht verfügbar.

und Länder.) Einige dieser Werte werden in der Beschreibung des DescriptorType-Elements der _URB_CONTROL_DESCRIPTOR_REQUEST-Struktur aufgeführt.

[in] Index

Der Index des Deskriptors gemäß der Universal Serial Bus Spezifikation. (Diese Ressource ist in einigen Sprachen möglicherweise nicht verfügbar.

und Länder.)

[in] LanguageID

Der Bezeichner der Sprache, wenn der UMDF-Treiber einen Zeichenfolgendeskriptor anfordert; andernfalls ist dieser Parameter null.

[in, out] BufferLength

Ein Zeiger auf eine Variable, die bei der Eingabe die Größe des Puffers in Byte enthält, auf den der Buffer verweist. Wenn der Vorgang erfolgreich ist, empfängt die Variable die Anzahl der Bytes, die das Framework in den Puffer kopiert hat.

[out] Buffer

Ein Zeiger auf einen vom Aufrufer bereitgestellten Puffer, der den USB-Deskriptor empfängt. Der Puffertyp sollte mit dem in DescriptorTypeangegebenen Wert übereinstimmen.

Rückgabewert

RetrieveDescriptor gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
S_OK

RetrieveDescriptor den USB-Deskriptor erfolgreich abgerufen.

E_OUTOFMEMORY

RetrieveDescriptor ein Zuordnungsfehler aufgetreten ist.

Ein Fehlercode, der in winerror.h definiert ist
Dieser Wert entspricht dem Fehlercode, den die WinUsb-API zurückgegeben hat.

Bemerkungen

Informationen zu gültigen Deskriptortypen, die ein UMDF-Treiber für den parameter DescriptorType übergeben kann, finden Sie in der WinUsb_GetDescriptor-Funktion.

Die RetrieveDescriptor--Methode generiert eine UMDF-Anforderung und sendet die Anforderung synchron an das E/A-Ziel.

Beispiele

Im folgenden Codebeispiel wird ein USB-Konfigurationsdeskriptor abgerufen.

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;
}

Anforderungen

Anforderung Wert
Ende des Supports In UMDF 2.0 und höher nicht verfügbar.
Zielplattform- Desktop
Mindest-UMDF-Version 1.5
Header- wudfusb.h (include Wudfusb.h)
DLL- WUDFx.dll

Siehe auch

IWDFUsbTargetDevice

WinUsb_GetDescriptor