TraceLoggingUnregister 函数 (traceloggingprovider.h)
取消注册 TraceLogging 提供程序。
语法
void TraceLoggingUnregister(
TraceLoggingHProvider hProvider
);
参数
hProvider
要注销的 TraceLogging 提供程序的句柄。
返回值
无
备注
当组件开始运行时,组件中的任何 TraceLogging 提供程序句柄都将处于未注册状态,并且任何使用提供程序的句柄生成事件的尝试都将以无提示方式忽略。 在提供程序可以写入任何事件之前,需要使用 TraceLoggingRegister 注册提供程序。
通常会在组件启动期间执行此操作。 在组件关闭时,通过调用 TraceLoggingUnregister 来注销提供程序,例如,在 从 main
wmain
、 或 WinMain
中DllMain(DLL_PROCESS_DETACH)
返回之前,从失败DriverEntry
的 或驱动程序 Unload 例程中返回之前。
对于同一句柄上的 TraceLoggingRegister 或 TraceLoggingUnregister 的其他调用,TraceLoggingRegister 不是线程安全的。 如果另一个线程可能同时在同一句柄上调用 TraceLoggingRegister 或 TraceLoggingUnregister,请不要调用 TraceLoggingRegister。
如果 TraceLoggingRegister 失败,提供程序句柄将保持未注册状态,并且提供程序句柄的所有使用都将是安全的无操作。 具体而言,使用未注册的提供程序句柄调用 TraceLoggingWrite 或 TraceLoggingUnregister 是安全的无操作。
重要
如果 DLL 或驱动程序在提供程序句柄上调用 TraceLoggingRegister
,则必须在 DLL 或驱动程序卸载之前在该提供程序句柄上调用 TraceLoggingUnregister
。 如果 DLL 在未调用 TraceLoggingUnregister
的情况下卸载,则进程随后可能会崩溃。 如果驱动程序在未调用 TraceLoggingUnregister
的情况下卸载,系统随后可能会崩溃。 函数 TraceLoggingRegister
建立 ETW 配置回调,并 TraceLoggingUnregister
取消回调。 如果未取消回调并且模块卸载,则下次 ETW 尝试调用回调时将发生崩溃。
要求
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
标头 | traceloggingprovider.h |
Library | Advapi32.lib |