有没有办法获得应用程序中线程不再运行(已返回)的通知?
我知道这在内核模式下是可能的(使用 PsSetCreateThreadNotifyRoutine),但是有没有办法仅使用 Win32 API 从用户模式知道这一点?
问题是我无法控制线程中的代码,因为我的模块是库的一部分。制作一个驱动程序来监视系统不会太难,但即使对于使用我的库的基本应用程序,用户安装驱动程序也很烦人。
我的代码使用 TLS 存储,在 Linux/Unix 下 pthread_key_create 可以获取指向线程被销毁时调用的函数的指针。但 TlsAlloc (Windows) 没有这样的东西......
提前致谢!
取决于你有什么样的图书馆。对于 DLL 可以处理 DllMain 中的线程终止(DLL_THREAD_DETACH
). The MSDN http://msdn.microsoft.com/en-us/library/ms682583%28VS.85%29.aspx声明这是处理 TLS 资源的最佳位置。
请记住,此回调仅在线程干净退出时调用(而不是通过例如TerminateThread()
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)