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_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 (包括 Wudfddi.h) |
DLL | WUDFx.dll |