windows – 挂钩线程创建/终止
是否有可能挂钩到
Windows上的线程终止? IOW,如果进程内的线程(对其他进程及其线程不感兴趣)已经终止(通常或者 – 更重要 – 强制),我希望得到通知.
或者,挂钩创建线程也可以. 基本原理:我有一个库,可以在每个线程的基础上管理一些信息(将其视为某些信息的进程范围的每线程缓存).线程终止时,我必须从缓存中删除所有特定于线程的信息. [缓存关联使用线程ID实现,可能会为将来的线程重用.] “正常”执行顺序没有问题,因为库用户将从库中分离当前线程以清除状态.如果有人杀死拥有缓存资源的线程,问题就会开始出现.
您可以使用像
Detours这样的东西来执行Win32 API的API级挂钩,例如
TerminateThread .
不过,我不明白为什么你需要这样做.听起来你需要在线程死亡时清除线程的关联缓存,以便在另一个具有相同ID的线程出现时重新使用该槽.它是否正确? 如果是这样,当你收到DLL_THREAD_ATTACH事件时,你不能只清除DllMain中的缓存关联吗?这基本上是你的新线程通知.此时,您知道自己有一个新线程,清除现有的关联缓存是否安全? 可能有效的另一种选择是thread-local storage(TLS).您可以使用Win32 API(如 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 新建Microsoft Word文档
- win10家庭版升级专业版出现0x80070422错误
- Windows – 程序如何删除自己的可执行文件
- windows-services – 如何将我的应用程序作为Windows服务启
- windows-server-2008-r2 – 如何创建任务计划程序以在Windo
- windows-server-2008 – 单个Hyper-V主机上的两个虚拟机在通
- .net – 铁蟒,美丽的汤,win32应用程序
- batch-file – 如何测试cmd.exe命令是否存在?
- windows-vista – 当内存不足时,Vista如何决定应关闭哪些程
- windows – 如何在循环中获取局部变量的子串?
- windows-server-2008-r2 – Windows Server 2008
- windows-server-2008 – Server Foundation 2012
- Windows下docker的安装,将ASP.NET Core程序部署
- windows – 检查什么在降低PC速度和启动速度的工
- exchange-2013 – 关于Microsoft Exchange 2013
- Windows Server 2012 R2 SAN存储连接
- windows – VirtualBox:共享文件夹中的符号链接
- .net – 将DLL和EXE合并为单个EXE文件的缺点
- windows – 如何知道dll是否使用ASLR?
- 如何恢复NTFS分区中丢失的数据呢?