EtwRegister 函式 (wdm.h)
EtwRegister 函式會註冊事件提供者,而且必須先呼叫提供者,提供者才能開始追蹤。 EtwRegister 函式是與 user-mode EventRegister 函式的核心模式對應專案。 函式也可以提供選擇性回呼函式的指標,可用來提供額外的事件篩選功能。
語法
NTSTATUS EtwRegister(
[in] LPCGUID ProviderId,
[in, optional] PETWENABLECALLBACK EnableCallback,
[in, optional] PVOID CallbackContext,
[out] PREGHANDLE RegHandle
);
參數
[in] ProviderId
事件提供者 GUID 的指標。
[in, optional] EnableCallback
選擇性回呼函式的指標。 回呼函式提供額外的事件篩選功能。 回呼函式是用戶定義的。
[in, optional] CallbackContext
函式會在進行回呼時傳回選擇性回呼內容。 您可以在註冊提供者時指定選擇性內容。 CallbackContext 參數支援多個提供者共用一個回呼的案例,就像在 C++ 類別中一樣。 CallbackContext 提供一種方式來區分啟用回呼的目標提供者實例。
[out] RegHandle
如果函式呼叫成功,接收提供者註冊句柄的變數指標。
傳回值
EtwRegister 函式會從下列清單中傳回狀態代碼:
傳回碼 | 描述 |
---|---|
|
指出事件提供者已成功向 ETW 註冊。 |
|
表示參數無效。 |
|
表示要求因為 NTSTATUS 值所指定的原因而失敗。 如需實際狀態傳回碼的詳細資訊,請參閱 Ntstatus.h。 |
言論
在內核模式驅動程式可以追蹤事件之前,驅動程式必須使用 EtwRegister 函式註冊為事件提供者。 當核心模式驅動程式呼叫 EtwRegister時,函式會傳回註冊句柄。 此註冊句柄可用來測試是否為特定提供者啟用關鍵詞或層級,以及呼叫事件追蹤和記錄函式。 追蹤完成之後,驅動程式必須呼叫 EtwUnregister 函式來取消註冊提供者。 對於每個呼叫 EtwRegister 必須有對應的呼叫,才能 EtwUnregister。 當卸除進程時,無法取消註冊事件提供者可能會導致錯誤,因為與進程相關聯的回呼函式不再有效。 不應該呼叫落在由 EtwRegister 系結的程式代碼之外,EtwUnregister 函式。 為了獲得最佳效能,您可以在 DriverEntry 例程中呼叫 EtwRegister 函式,並在 DriverUnload 例程中呼叫 EtwUnregister 函式。
EtwRegister 的呼叫端必須在系統線程的內容中於 IRQL = PASSIVE_LEVEL執行。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows Vista 和更新版本的 Windows。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、 Ntddk.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIs(storport),PowerIrpDDis(wdm) |