функция обратного вызова EVT_UDECX_WDF_DEVICE_QUERY_USB_CAPABILITY (udecxwdfdevice.h)

Реализация драйвера клиента UDE для определения возможностей, поддерживаемых эмулированным usb-контроллером узла.

Синтаксис

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

Параметры

[in] UdecxWdfDevice

Дескриптор объекта устройства платформы, представляющего контроллер. Драйвер клиента инициализировал этот объект в предыдущем вызове UdecxWdfDeviceAddUsbDeviceEmulation.

[in] CapabilityType

Указатель на GUID, указывающий запрошенную возможность. Возможные значения PGUID приведены следующим образом:

  • 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
Сведения о возможностях см. в разделе "Примечания" USBD_QueryUsbCapability.

[in] OutputBufferLength

Длина в байтах выходного буфера запроса, если выходной буфер доступен.

[out, optional] OutputBuffer

Указатель на расположение, которое получает адрес буфера. Некоторые возможности могут потребоваться предоставить дополнительные сведения расширению класса эмуляции USB-устройства (UdeCx) в этом буфере.

[out] ResultLength

Расположение, которое, возвращаемое, содержит размер (в байтах) сведений о функции обратного вызова, хранящейся в OutputBuffer.

Возвращаемое значение

Если операция выполнена успешно, функция обратного вызова должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(состояние) равно TRUE. Если возможность не поддерживается, драйвер клиента может возвращать NT_SUCCESS значение false, например STATUS_UNSUCCESSFUL.

Замечания

Расширение класса вызывает эту функцию обратного вызова, реализованную драйвером клиента, когда расширение класса получает запрос на определение возможностей эмулированного контроллера. Обратный вызов вызывается только после возврата EvtDriverDeviceAdd, как правило, в EvtDevicePrepareHardware. Этот обратный вызов нельзя вызвать после возврата EvtDeviceReleaseHardware.

Расширение класса сообщает об этих идентификаторах GUID возможностей, так как не поддерживается:

  • GUID_USB_CAPABILITY_STATIC_STREAMS
  • GUID_USB_CAPABILITY_CLEAR_TT_BUFFER_ON_ASYNC_TRANSFER_CANCEL
Расширение класса сообщает guid GUID_USB_CAPABILITY_SELECTIVE_SUSPEND возможности, как поддерживается, даже не вызывая функцию обратного вызова.

Для других графических идентификаторов расширение класса вызывает реализацию драйвера клиента, например GUID_USB_CAPABILITY_CHAINED_MDLS. Ожидается, что драйвер клиента определяет поддержку запросов ввода-вывода, использующих цепочки MDL. Если эта возможность поддерживается, TransferBufferMdl член URB содержит буфер запроса. Если цепочки MDL не поддерживаются, драйвер клиента не получает Значения TransferBufferMdl, указывающие на цепочки многомерных выражений.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10
минимальный поддерживаемый сервер Windows Server 2016
целевая платформа Виндоус
минимальная версия KMDF 1.15
заголовка udecxwdfdevice.h (include Udecx.h)
IRQL PASSIVE_LEVEL

См. также

архитектура : эмуляция USB-устройств (UDE)

запись драйвера клиента UDE