TraceLoggingUnregister 函式 (traceloggingprovider.h)
取消註冊 TraceLogging 提供者。
語法
void TraceLoggingUnregister(
TraceLoggingHProvider hProvider
);
參數
hProvider
要取消註冊的 TraceLogging 提供者控制碼。
傳回值
無
備註
當元件開始執行時,元件中的任何 TraceLogging 提供者控制碼都會處於未註冊的狀態,而且任何嘗試使用提供者的控制碼來產生事件,都會以無訊息方式忽略。 在提供者可以寫入任何事件之前,您必須使用 TraceLoggingRegister註冊提供者。
您通常會在元件啟動期間執行此動作。 在元件關機時,先呼叫TraceLoggingUnregister來取消註冊提供者,例如,在 從 失敗傳回 之前,或從驅動程式 Unload 常式中傳回之前,先從 main
DriverEntry
、 wmain
或 WinMain
DllMain(DLL_PROCESS_DETACH)
中傳回 。
TraceLoggingRegister 與相同控制碼上的 TraceLoggingRegister 或 TraceLoggingUnregister 的其他呼叫無關安全。 如果另一個執行緒可能同時在同一個控制碼上呼叫TraceLoggingRegister或TraceLoggingUnregister,請勿呼叫TraceLoggingRegister。
如果 TraceLoggingRegister 失敗,提供者控制碼會維持未註冊狀態,而且提供者控制碼的所有用法都將是安全的無作業。 特別是,使用未註冊的提供者控制碼呼叫 TraceLoggingWrite 或 TraceLoggingUnregister 是安全的 no-op。
重要
如果您的 DLL 或驅動程式在提供者控制碼上呼叫 TraceLoggingRegister
,它 必須在 該提供者控制碼上呼叫 TraceLoggingUnregister
,才能卸載 DLL 或驅動程式。 如果 DLL 卸載而不呼叫 TraceLoggingUnregister
,進程後續可能會當機。 如果驅動程式在未呼叫 TraceLoggingUnregister
的情況下卸載,系統後續可能會當機。 函 TraceLoggingRegister
式會建立 ETW 組態回呼,並 TraceLoggingUnregister
取消回呼。 如果未取消回呼且模組卸載,則下次 ETW 嘗試叫用回呼時,就會發生當機。
規格需求
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
標頭 | traceloggingprovider.h |
程式庫 | Advapi32.lib |