共用方式為


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

[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D30745EE1E10C4C62B93C4259718CCFD9 上不支援 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 會傳回下列其中一個值:

傳回碼 描述
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