Compartilhar via


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

A implementação do driver 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 cliente inicializou esse objeto na chamada anterior para UdecxWdfDeviceAddUsbDeviceEmulation.

[in] CapabilityType

Ponteiro para um GUID que especifica a funcionalidade solicitada. Os possíveis valores de 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) nesse 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 em OutputBuffer.

Valor de retorno

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

Observações

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 tiver retornado, normalmente em EvtDevicePrepareHardware. Esse retorno de chamada não pode ser invocado depois que EvtDeviceReleaseHardware tiver retornado.

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 de GUID_USB_CAPABILITY_SELECTIVE_SUSPEND como suportado 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 cliente determine o suporte para solicitações de E/S que usam um MDL encadeado. Se esse recurso tiver suporte, o TransferBufferMdl do URB conterá o buffer de solicitação. Se não houver suporte para MDL encadeado, o driver cliente não receberá valores TransferBufferMdl que apontam para MDLs encadeados.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10
servidor com suporte mínimo Windows Server 2016
da Plataforma de Destino Windows
versão mínima do KMDF 1.15
cabeçalho udecxwdfdevice.h (inclua Udecx.h)
IRQL PASSIVE_LEVEL

Consulte também

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

gravar um driver de cliente UDE