EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY função de retorno de chamada (udecxwdfdevice.h)

A implementação do driver do cliente UDE para determinar os recursos compatíveis com o controlador de host USB emulado.

Sintaxe

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

Um identificador para um objeto de dispositivo de estrutura que representa o controlador. O driver do cliente inicializou esse objeto na chamada anterior para UdecxWdfDeviceAddUsbDeviceEmulation.

[in] CapabilityType

Ponteiro para um GUID que especifica o recurso solicitado. Os possíveis valores PGUID são os seguintes:

  • 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 obter informações sobre os recursos, consulte a seção Comentários do USBD_QueryUsbCapability.

[in] OutputBufferLength

O comprimento, em bytes, do buffer de saída da solicitação, se um buffer de saída estiver disponível.

[out, optional] OutputBuffer

Um ponteiro para um local que recebe o endereço do buffer. Alguns recursos podem precisar fornecer informações adicionais para a extensão de classe de emulação de dispositivo USB (UdeCx) neste buffer.

[out] ResultLength

Um local que, no retorno, contém o tamanho, em bytes, das informações armazenadas na função de retorno de chamada no OutputBuffer.

Retornar valor

Se a operação for bem-sucedida, a função de retorno de chamada deverá retornar STATUS_SUCCESS ou outro valor status para o qual NT_SUCCESS(status) é igual a TRUE. Se não houver suporte para uma funcionalidade, o driver do cliente poderá retornar NT_SUCCESS(status) igual a FALSE, como STATUS_UNSUCCESSFUL.

Comentários

A extensão de classe invoca essa função de retorno de chamada implementada pelo driver cliente quando a extensão de classe recebe uma solicitação para determinar os recursos do controlador emulado. O retorno de chamada é invocado somente depois que EvtDriverDeviceAdd é retornado, normalmente em EvtDevicePrepareHardware. Esse retorno de chamada não pode ser invocado após o retorno de EvtDeviceReleaseHardware .

A extensão de classe relata esses GUIDs de funcionalidade, como não há suporte:

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
A extensão de classe relata o GUID de funcionalidade GUID_USB_CAPABILITY_SELECTIVE_SUSPEND com suporte sem sequer invocar a função de retorno de chamada.

Para outros GUIDs, a extensão de classe invoca a implementação do driver cliente, como GUID_USB_CAPABILITY_CHAINED_MDLS. Espera-se que o driver do cliente determine o suporte para solicitações de E/S que usam um MDL encadeado. Se esse recurso tiver suporte, o membro TransferBufferMdl da URB conterá o buffer de solicitação. Se não houver suporte para MDL encadeado, o driver do cliente não receberá valores TransferBufferMdl que apontam para MDLs encadeados.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Windows
Versão mínima do KMDF 1.15
Cabeçalho udecxwdfdevice.h (inclua Udecx.h)
IRQL PASSIVE_LEVEL

Confira também

Arquitetura: UDE (Emulação de Dispositivo USB)

Escrever um driver de cliente UDE