функция обратного вызова 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(status) равно 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 расширение класса вызывает реализацию драйвера клиента, например GUID_USB_CAPABILITY_CHAINED_MDLS. Драйвер клиента должен определить поддержку запросов ввода-вывода, использующих цепочек MDL. Если эта возможность поддерживается, то элемент TransferBufferMdlURB содержит буфер запросов. Если цепной MDL не поддерживается, драйвер клиента не получает значения TransferBufferMdl , указывающие на связанные многомерные списки.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Windows
Минимальная версия KMDF 1.15
Верхняя часть udecxwdfdevice.h (включая Udecx.h)
IRQL PASSIVE_LEVEL

См. также раздел

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

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