EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY función de devolución de llamada (udecxwdfdevice.h)
La implementación del controlador cliente UDE para determinar las funcionalidades admitidas por el controlador de host USB emulado.
Sintaxis
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
)
{...}
Parámetros
[in] UdecxWdfDevice
Identificador de un objeto de dispositivo de marco que representa el controlador. El controlador cliente inicializó este objeto en la llamada anterior a UdecxWdfDeviceAddUsbDeviceEmulation.
[in] CapabilityType
Puntero a un GUID que especifica la funcionalidad solicitada. Los posibles valores PGUID son los siguientes:
- 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
Longitud, en bytes, del búfer de salida de la solicitud, si hay disponible un búfer de salida.
[out, optional] OutputBuffer
Puntero a una ubicación que recibe la dirección del búfer. Algunas funcionalidades pueden necesitar proporcionar información adicional a la extensión de clase de emulación de dispositivo USB (UdeCx) en este búfer.
[out] ResultLength
Una ubicación que, a la devolución, contiene el tamaño, en bytes, de la información que la función de devolución de llamada almacena en OutputBuffer.
Valor devuelto
Si la operación se realiza correctamente, la función de devolución de llamada debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) es igual a TRUE. Si no se admite una funcionalidad, el controlador cliente puede devolver NT_SUCCESS(status) es igual a FALSE, como STATUS_UNSUCCESSFUL.
Comentarios
La extensión de clase invoca esta función de devolución de llamada implementada por el controlador de cliente cuando la extensión de clase recibe una solicitud para determinar las funcionalidades del controlador emulado. La devolución de llamada se invoca solo después de que EvtDriverDeviceAdd haya devuelto, normalmente en EvtDevicePrepareHardware. Esta devolución de llamada no se puede invocar después de que se haya devuelto EvtDeviceReleaseHardware .
La extensión de clase notifica estos GUID de funcionalidad, como no se admite:
- GUID_USB_CAPABILITY_STATIC_STREAMS
- GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
Para otros GUID, la extensión de clase invoca la implementación del controlador cliente, como GUID_USB_CAPABILITY_CHAINED_MDLS. Se espera que el controlador cliente determine la compatibilidad con las solicitudes de E/S que usan una MDL encadenada. Si se admite esta funcionalidad, el miembro TransferBufferMdl del URB contiene el búfer de solicitudes. Si no se admite MDL encadenado, el controlador de cliente no recibe valores TransferBufferMdl que apuntan a MDL encadenados.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Servidor mínimo compatible | Windows Server 2016 |
Plataforma de destino | Windows |
Versión mínima de KMDF | 1.15 |
Encabezado | udecxwdfdevice.h (incluir Udecx.h) |
IRQL | PASSIVE_LEVEL |