функция обратного вызова 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
[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_CHAINED_MDLS. Драйвер клиента должен определить поддержку запросов ввода-вывода, использующих цепочек MDL. Если эта возможность поддерживается, то элемент TransferBufferMdlURB содержит буфер запросов. Если цепной MDL не поддерживается, драйвер клиента не получает значения TransferBufferMdl , указывающие на связанные многомерные списки.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Минимальная версия сервера | Windows Server 2016 |
Целевая платформа | Windows |
Минимальная версия KMDF | 1.15 |
Верхняя часть | udecxwdfdevice.h (включая Udecx.h) |
IRQL | PASSIVE_LEVEL |