Метод 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 возвращает одно из следующих значений:

Код возврата Описание
S_OK
Данные события успешно отправлены в операционную систему.
HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY)
Размер данных, который указывает параметр cbDataSize , превышает максимально допустимый размер.
E_INVALIDARG
Для параметра EventType не задано значение WdfEventBroadcast (1).
E_OUTOFMEMORY

PostEvent не удалось выделить память, необходимую для ее завершения.

 

PostEvent также может возвращать другие значения HRESULT.

Комментарии

Когда драйвер вызывает IWDFDevice::P ostEvent , чтобы уведомить запрашивающее приложение о событии, UMDF отправляет событие в операционную систему. Операционная система отправляет событие в запрашивающее приложение в асинхронной операции. Если операционная система изначально не возвращает ошибок, драйвер не получает ошибок (S_OK). Однако позже, если операционная система получает сообщение об ошибке при попытке доставить событие (возможно, из-за нехватки памяти), операционная система не сможет сообщить драйверу об этой ошибке. Из-за асинхронного характера уведомления о событии доставка события в запрашивающее приложение не гарантируется. Если сведения о событии теряются на пути до запрашивающего приложения, приложение должно иметь возможность восстановиться после потерянного события.

Сведения о создании событий устройства см. в разделе Использование интерфейсов устройств в драйверах UMDF.

Требования

Требование Значение
Дата окончания поддержки Недоступно в UMDF 2.0 и более поздних версиях.
Целевая платформа Персональный компьютер
Минимальная версия UMDF 1.5
Верхняя часть wudfddi.h (включая Wudfddi.h)
DLL WUDFx.dll

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

FIELD_OFFSET

IWDFDevice

TARGET_DEVICE_CUSTOM_NOTIFICATION

WdfDevicePostEvent