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
[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
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 |