Windows 7 Win7 WOW64中应用程序中的奇怪线程

Windows 7 Win7 WOW64中应用程序中的奇怪线程,windows-7,etw,Windows 7,Etw,我们在应用程序中观察到Windows 7 x64上的4-6线程,这些线程具有3线程,并且在Windows 7之前的任何窗口(32位或64位)上正常运行 Process Explorer显示以下“未知”线程: 随机间隔后,将出现以下线程: ntdll.dll!TpCallbackIndependent+offset ntdll.dll!TpCallbackIndependent+offset 之后,应用程序无法创建线程(错误代码8,空间不够热…) 在我看来,一些系统DLL创建ETW线程或其他东西

我们在应用程序中观察到Windows 7 x64上的4-6线程,这些线程具有3线程,并且在Windows 7之前的任何窗口(32位或64位)上正常运行

Process Explorer显示以下“未知”线程:

随机间隔后,将出现以下线程:

ntdll.dll!TpCallbackIndependent+offset
ntdll.dll!TpCallbackIndependent+offset
之后,应用程序无法创建线程(错误代码8,空间不够热…)


在我看来,一些系统DLL创建ETW线程或其他东西。有人知道这些线程的用途以及如何管理它们吗?

TP线程是Windows线程池API的一部分,是因为您的应用程序(或应用程序使用的DLL)使用了Windows线程池API而创建的。您的应用程序(或应用程序使用的某个DLL)似乎正在使用ETWAPI,该API也使用了几个线程。你真的没有能力管理这些线程


我严重怀疑这些线程是否是导致内存不足错误的原因。更可能的问题是进程中没有足够的连续内存来为新线程的堆栈预留空间。

我相信你是对的。我使用procmon捕捉CreateThread调用,它显示ws2_32.dll初始化线程池。仍然很奇怪为什么Win7中的实现如此不同。。。winsock库需要TP的原因。基本上,使用TP API可以方便地处理异步操作,而无需创建专用线程。理论上,如果多个DLL都使用相同的线程池,则系统上的总体线程负载会更低。
ntdll.dll!TpCallbackIndependent+offset
ntdll.dll!TpCallbackIndependent+offset