监视线程创建
Monitoring the thread creation
我一直在为从Windows XP开始的Windows版本开发驱动程序。 为此,我使用例程PsSetCreateThreadNotifyRoutine。在注册的回调中,我正在尝试访问线程的上下文,但我没有得到。我发现当调用回调函数时,线程仍在将使用的上下文中的信息。
我想知道是否有像 kewaitforsingleobject 这样的函数会在这些线程获得上下文时发出信号?
我尝试为每个出现的线程创建一个新线程并让它们等待,但认为这不是最佳解决方案。
在这种情况下,等待线程接收其上下文的最佳方法是什么?
由于MSDN:
驱动程序的线程通知例程在 IRQL = PASSIVE_LEVEL 处运行。什么时候 创建线程,线程通知例程在 创建新线程的线程。删除线程时, 线程通知例程在此线程的上下文中运行,当 线程退出。
因此,您可以在创建新线程时访问父线程的上下文。我不确定,但似乎您也可以访问删除线程的上下文。(或者也许又是父母)
因此,您可以使用列表来存储线程 ID,并有一个工作线程来检查每个 TID。不要忘记相互排斥。您可以使用互斥锁或旋转锁(在 WDK 中不知道它们的实际名称)。
相关文章:
- C++使用params创建线程函数会导致转换错误
- 为什么我不能在 while 循环中创建线程?
- 如何创建线程序列以按照启动顺序执行任务?
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- std::使用类成员函数创建线程 - 最佳实践
- CPP:如何使用需要指针的方法创建线程
- 使用 lambda 表达式创建线程时,如何为每个线程提供自己的 lambda 表达式副本
- C++,如何创建线程限制/受保护的变量和函数
- BOOST_LOG_SEV在创建线程后损坏async_read_some
- 为什么当我在构造函数中创建线程时,实例化对象和对象的指针的行为不同
- 如何通过调用类中的函数来创建线程
- 如何在Silverlight本机C 中创建线程
- 通过类构造函数创建线程
- C++:创建线程时出现问题;错误 C2672:"std::invoke":找不到匹配的重载函数
- 尝试在dll main中创建线程
- 如何在Linux上为C和C 创建线程安全LIB
- 如何在 dll 中创建线程 (c++)?
- 从调度队列块 [ swift / c++ ] 创建线程
- 从成员类功能创建线程
- 创建线程,但不要立即在 Linux 中运行它