【问题标题】:Monitoring the thread creation监控线程创建
【发布时间】:2013-10-19 20:04:59
【问题描述】:

我一直在为从 Windows XP 开始的 Windows 版本开发驱动程序。为此,我使用了例程 PsSetCreateThreadNotifyRoutine。在注册的回调中,我试图访问线程的上下文,但我没有得到。查到的信息是调用回调函数时,线程不在将要使用的上下文中。

我想知道是否有像 kewaitforsingleobject 这样的函数会在这些线程获得上下文时发出信号?

我尝试为每个出现的线程创建一个新线程并让它们等待,但我认为这不是最好的解决方案。

在这种情况下,等待线程接收其上下文的最佳方式是什么?

【问题讨论】:

    标签: c# c++ visual-studio-2010 visual-studio visual-c++


    【解决方案1】:

    由于MSDN

    驱动程序的线程通知例程运行在 IRQL = PASSIVE_LEVEL。什么时候 创建一个线程,线程通知例程在上下文中运行 创建新线程的线程。当一个线程被删除时, 线程通知例程在此线程的上下文中运行,当 线程退出。

    因此您可以在创建新线程时访问父线程的上下文。 我不确定,但您似乎也可以访问删除线程的上下文。 (或者可能再次成为父母)

    因此,您可以使用一个列表来存储 Thread-ID,并使用一个工作线程来检查每个 TID。 不要忘记互斥。您可以使用 MUTEX 或 SPINLOCK(不知道它们在 WDK 中的实际名称)。

    【讨论】:

      猜你喜欢
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多