EtwWriteEx 函式 (wdm.h)
EtwWriteEx 函式是一種追蹤函式,可發佈支援在核心模式驅動程式程式代碼中篩選的事件。
語法
NTSTATUS EtwWriteEx(
[in] REGHANDLE RegHandle,
[in] PCEVENT_DESCRIPTOR EventDescriptor,
[in] ULONG64 Filter,
[in] ULONG Flags,
[in, optional] LPCGUID ActivityId,
[in, optional] LPCGUID RelatedActivityId,
[in] ULONG UserDataCount,
[in, optional] PEVENT_DATA_DESCRIPTOR UserData
);
參數
[in] RegHandle
事件提供者註冊句柄的指標,如果事件提供者註冊成功, 則 EtwRegister 函式會傳回此指標。
[in] EventDescriptor
EVENT_DESCRIPTOR 結構的指標。
[in] Filter
識別事件不會寫入之會話的實例標識碼。 也就是說,此值是會話的遮罩,應該從記錄中排除 (篩選出) 。 使用位 OR 來指定多個識別碼。 如果您不支持篩選,或事件正在寫入所有工作階段, (沒有篩選失敗) ,請將 設定為零。 如需取得會話標識碼的詳細資訊,請參閱 EtwEnableCallback 回呼的 FilterData 參數。
[in] Flags
保留的。 必須是零 (0) 。
[in, optional] ActivityId
標識符,表示與事件相關聯的活動。 ActivityID 提供將相關事件分組的方式,並用於端對端追蹤。 如果為 NULL,ETW 會從線程本機記憶體取得標識碼。 如需取得此標識碼的詳細資訊,請參閱 EtwActivityIdControl。
[in, optional] RelatedActivityId
上一個元件中的活動識別項。 請使用此參數將元件的事件連結到上一個元件的事件。 若要取得為上一個元件設定的活動標識碼,請參閱 EtwActivityIdControl 函式 ControlCode 參數的描述。
[in] UserDataCount
UserData 中的EVENT_DATA_DESCRIPTOR結構數目。 最大數目為 128。
[in, optional] UserData
EVENT_DATA_DESCRIPTOR 結構的陣列指標。 如果 UserDataCount 為零,請將此參數設定為 NULL。 資料必須按照資訊清單中指定的順序排列。
傳回值
如果成功或發生下列其中一個值,則傳回ERROR_SUCCESS。
備註
EtwWriteEx 函式是與使用者模式 EventWriteEx 函式相等的核心模式。 以此函式撰寫的事件數據需要指令清單。 指令清單內嵌在提供者中,因此提供者必須可供取用者取用數據。 若要確保您發行的事件有取用者,您可以在呼叫 EtwWrite 之前呼叫 EtwEventEnabled 或 EtwProviderEnabled。
當您想要在端對端追蹤案例中的不同元件中關聯事件時,請使用 ActivityId 和 RelatedActivityId 參數。 例如,元件 A、B 和 C 會對相關活動執行工作,並想要連結其事件,讓取用者可以取用與該活動相關的所有事件。
您可以在任何 IRQL 呼叫 EtwWriteEx 。 不過,當 IRQL 大於APC_LEVEL時,傳遞至 EtwWrite、EtwWriteEx、EtwWriteString、EtwWriteTransfer 函式的任何數據都不得分頁。 也就是說,在 IRQL 上執行的任何核心模式例程大於APC_LEVEL都無法存取可分頁的記憶體。 傳遞至 EtwWrite、EtwWriteEx、EtwWriteString 和 EtwWriteTransfer 函式的數據必須位於系統空間記憶體中,不論 IRQL 是什麼。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 |
最低支援的伺服器 | Windows Server 2008 R2 |
目標平台 | Universal |
標頭 | wdm.h |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |