EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY Rückruffunktion (udecxwdfdevice.h)

Die Implementierung des UDE-Clienttreibers, um die Funktionen zu ermitteln, die vom emulierten USB-Hostcontroller unterstützt werden.

Syntax

EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY EvtUdecxWdfDeviceQueryUsbCapability;

NTSTATUS EvtUdecxWdfDeviceQueryUsbCapability(
  [in]            WDFDEVICE UdecxWdfDevice,
  [in]            PGUID CapabilityType,
  [in]            ULONG OutputBufferLength,
  [out, optional] PVOID OutputBuffer,
  [out]           PULONG ResultLength
)
{...}

Parameter

[in] UdecxWdfDevice

Ein Handle für ein Frameworkgerätobjekt, das den Controller darstellt. Der Clienttreiber hat dieses Objekt im vorherigen Aufruf von UdecxWdfDeviceAddUsbDeviceEmulation initialisiert.

[in] CapabilityType

Zeiger auf eine GUID, die die angeforderte Funktion angibt. Die möglichen PGUID-Werte sind wie folgt:

  • GUID_USB_CAPABILITY_CHAINED_MDLS
  • GUID_USB_CAPABILITY_SELECTIVE_SUSPEND
  • GUID_USB_CAPABILITY_FUNCTION_SUSPEND
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_HIGH_SPEED_COMPATIBLE
  • GUID_USB_CAPABILITY_DEVICE_CONNECTION_SUPER_SPEED_COMPATIBLE
Informationen zu den Funktionen finden Sie im Abschnitt Hinweise von USBD_QueryUsbCapability.

[in] OutputBufferLength

Die Länge des Ausgabepuffers der Anforderung in Bytes, wenn ein Ausgabepuffer verfügbar ist.

[out, optional] OutputBuffer

Ein Zeiger auf eine Position, die die Adresse des Puffers empfängt. Bestimmte Funktionen müssen möglicherweise zusätzliche Informationen zur USB-Geräteemulationsklassenerweiterung (UdeCx) in diesem Puffer bereitstellen.

[out] ResultLength

Ein Speicherort, der bei der Rückgabe die Größe der Informationen enthält, die die Rückruffunktion in OutputBuffer gespeichert hat.

Rückgabewert

Wenn der Vorgang erfolgreich ist, muss die Rückruffunktion STATUS_SUCCESS oder einen anderen status Wert zurückgeben, für den NT_SUCCESS(status) true entspricht. Wenn eine Funktion nicht unterstützt wird, kann der Clienttreiber NT_SUCCESS(status) gleich FALSE zurückgeben, z. B. STATUS_UNSUCCESSFUL.

Hinweise

Die Klassenerweiterung ruft diese vom Clienttreiber implementierte Rückruffunktion auf, wenn die Klassenerweiterung eine Anforderung empfängt, um die Funktionen des emulierten Controllers zu bestimmen. Der Rückruf wird erst aufgerufen, nachdem EvtDriverDeviceAdd zurückgegeben wurde, in der Regel in EvtDevicePrepareHardware. Dieser Rückruf kann nicht aufgerufen werden, nachdem EvtDeviceReleaseHardware zurückgegeben wurde.

Die Klassenerweiterung meldet diese Funktions-GUIDs, da diese nicht unterstützt werden:

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
Die Klassenerweiterung meldet die GUID_USB_CAPABILITY_SELECTIVE_SUSPEND-Funktions-GUID als unterstützt, ohne dass die Rückruffunktion aufgerufen wird.

Für andere GUIDs ruft die Klassenerweiterung die Implementierung des Clienttreibers auf, z. B. GUID_USB_CAPABILITY_CHAINED_MDLS. Es wird erwartet, dass der Clienttreiber die Unterstützung für E/A-Anforderungen bestimmt, die eine verkettete MDL verwenden. Wenn diese Funktion unterstützt wird, enthält das TransferBufferMdl-Element der URB den Anforderungspuffer. Wenn verkettete MDL nicht unterstützt wird, empfängt der Clienttreiber keine TransferBufferMdl-Werte , die auf verkettete MDLs verweisen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Zielplattform Windows
KMDF-Mindestversion 1.15
Kopfzeile udecxwdfdevice.h (einschließlich Udecx.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

Architektur: USB-Geräteemulation (UDE)

Schreiben eines UDE-Clienttreibers