Share via


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
Para obtener información sobre las funcionalidades, vea la sección Comentarios de USBD_QueryUsbCapability.

[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
La extensión de clase notifica el GUID de funcionalidad GUID_USB_CAPABILITY_SELECTIVE_SUSPEND como se admite sin invocar la función de devolución de llamada.

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

Consulte también

Arquitectura: emulación de dispositivos USB (UDE)

Escritura de un controlador de cliente UDE