IWDFDevice::P ostEvent 方法(wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 没有将新功能添加到 UMDF 1,并且对较新版本的 Windows 10 上的 UMDF 1 的支持有限。 通用 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-type 事件。 若要接收广播事件,应用程序必须通过 Microsoft Win32 RegisterDeviceNotification 函数注册通知。 WdfEventBroadcast-type 事件作为DBT_CUSTOMEVENT类型事件公开给应用程序。

[in] pbData

指向包含与事件关联的数据的缓冲区的指针。 NULL 是有效值。

[in] cbDataSize

pbData 指向的数据的大小(以字节为单位)。 如果 pbData 设置为 NULL,则零是有效的大小值。

事件数据的最大大小略低于 MAXUSHORT (64 KB)。 精确的上限是(0xFFFF - FIELD_OFFSETTARGET_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