EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY funzione di callback (udecxwdfdevice.h)

Implementazione del driver client UDE per determinare le funzionalità supportate dal controller host USB emulato.

Sintassi

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
)
{...}

Parametri

[in] UdecxWdfDevice

Handle per un oggetto dispositivo framework che rappresenta il controller. Il driver client ha inizializzato questo oggetto nella chiamata precedente a UdecxWdfDeviceAddUsbDeviceEmulation.

[in] CapabilityType

Puntatore a un GUID che specifica la funzionalità richiesta. I possibili valori PGUID sono i seguenti:

  • 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
Per informazioni sulle funzionalità, vedere la sezione Osservazioni di USBD_QueryUsbCapability.

[in] OutputBufferLength

Lunghezza, in byte, del buffer di output della richiesta, se è disponibile un buffer di output.

[out, optional] OutputBuffer

Puntatore a una posizione che riceve l'indirizzo del buffer. Alcune funzionalità potrebbero dover fornire informazioni aggiuntive all'estensione della classe di emulazione del dispositivo USB (UdeCx) in questo buffer.

[out] ResultLength

Posizione che, in caso di restituzione, contiene le dimensioni, in byte, delle informazioni archiviate nella funzione di callback archiviata in OutputBuffer.

Valore restituito

Se l'operazione ha esito positivo, la funzione di callback deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(status) è TRUE. Se una funzionalità non è supportata, il driver client può restituire NT_SUCCESS(status) uguale a FALSE, ad esempio STATUS_UNSUCCESSFUL.

Commenti

L'estensione della classe richiama questa funzione di callback implementata dal driver client quando l'estensione della classe riceve una richiesta per determinare le funzionalità del controller emulato. Il callback viene richiamato solo dopo che EvtDriverDeviceAdd è stato restituito, in genere in EvtDevicePrepareHardware. Questo callback non può essere richiamato dopo la restituzione di EvtDeviceReleaseHardware .

L'estensione della classe segnala questi GUID di funzionalità, come non supportato:

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
L'estensione della classe segnala il GUID della funzionalità GUID_USB_CAPABILITY_SELECTIVE_SUSPEND come supportato senza richiamare anche la funzione di callback.

Per altri GUID, l'estensione della classe richiama l'implementazione del driver client, ad esempio GUID_USB_CAPABILITY_CHAINED_MDLS. Si prevede che il driver client determini il supporto per le richieste di I/O che usano un MDL concatenato. Se questa funzionalità è supportata, il membro TransferBufferMdldell'OGGETTO ESEGUI contiene il buffer della richiesta. Se MDL concatenato non è supportato, il driver client non riceve valori TransferBufferMdl che puntano agli ELENCHI MDL concatenati.

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Server minimo supportato Windows Server 2016
Piattaforma di destinazione Windows
Versione KMDF minima 1.15
Intestazione udecxwdfdevice.h (include Udecx.h)
IRQL PASSIVE_LEVEL

Vedi anche

Architettura: Emulazione dispositivo USB (UDE)

Scrivere un driver client UDE