Метод IWDFDevice::P ostEvent (wudfddi.h)
[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]
Метод PostEvent асинхронно уведомляет приложения, ожидающие указанного события от драйвера.
Синтаксис
HRESULT PostEvent(
[in] REFGUID EventGuid,
[in] WDF_EVENT_TYPE EventType,
[in] BYTE *pbData,
[in] DWORD cbDataSize
);
Параметры
[in] EventGuid
GUID для события. GUID определяется приложением и драйвером и непрозрачным для платформы.
[in] EventType
Значение WDF_EVENT_TYPEтипа, определяющее тип события. В текущей версии UMDF драйвер должен задать EventType значение WdfEventBroadcast (1). WdfEventBroadcast указывает, что событие передается. Приложения могут подписаться на события WdfEventBroadcastтипа. Чтобы получать трансляции, приложение должно зарегистрировать уведомление через функцию Microsoft Win32 RegisterDeviceNotification. события WdfEventBroadcastтипа предоставляются в виде событий типа DBT_CUSTOMEVENT приложениям.
[in] pbData
Указатель на буфер, содержащий данные, связанные с событием. null является допустимым значением.
[in] cbDataSize
Размер данных в байтах, на которые pbData указывает. Ноль является допустимым значением размера, если для pbData задано значение NULL.
Максимальный размер данных события немного меньше MAXUSHORT (64 КБ). Точный верхний предел ( 0xFFFF - FIELD_OFFSET(TARGET_DEVICE_CUSTOM_NOTIFICATION, CustomDataBuffer)).
Возвращаемое значение
PostEvent возвращает одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Данные события успешно отправлены в операционную систему. |
|
Размер данных, который указывает параметр cbDataSize, превышает максимальный допустимый размер. |
|
Параметр EventType не имеет значения WdfEventBroadcast (1). |
|
PostEvent не удалось выделить память, необходимую для завершения. |
PostEvent также может возвращать другие значения HRESULT.
Замечания
Когда драйвер вызывает IWDFDevice::P ostEvent, чтобы уведомить запрашивающее приложение о событии, UMDF отправляет событие в операционную систему. Операционная система отправляет событие в запрашивающее приложение в асинхронной операции. Если операционная система изначально не возвращает ошибку, драйвер не получает никаких ошибок (S_OK). Однако позже, если операционная система получает ошибку во время попытки доставки события (возможно, из-за низкой памяти), операционная система не может сообщить драйверу об ошибке. Из-за асинхронного характера уведомления об этом событии доставка события в запрашивающее приложение не гарантируется. Если сведения о событии теряются на пути к запрашивающем приложению, приложение должно быть в состоянии восстановиться после потерянного события.
Сведения о создании событий устройства см. в статье Использование интерфейсов устройств в драйверах UMDF.
Требования
Требование | Ценность |
---|---|
завершение поддержки | Недоступно в UMDF 2.0 и более поздних версиях. |
целевая платформа | Настольный |
минимальная версия UMDF | 1.5 |
заголовка | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |