我在创建新文件夹时遇到了 explorer.exe 挂起的一些问题。
如果我在资源监视器中使用分析等待链,它会显示“explorer.exe 的一个或多个线程正在等待完成网络 I/O”。
当我在 Process Explorer 中查看有问题的线程时,它没有发现任何有趣的东西:
ntdll.dll!ZwWaitForMultipleObjects+0xa
KERNELBASE.dll!GetCurrentThread+0x36
kernel32.dll!WaitForMultipleObjectsEx+0xb3
USER32.dll!PeekMessageW+0x1cd
USER32.dll!MsgWaitForMultipleObjectsEx+0x2a
USER32.dll!MsgWaitForMultipleObjects+0x20
SHELL32.dll!SHAppBarMessage+0x41e
SHELL32.dll!DragAcceptFiles+0x2a3c
SHELL32.dll!DragAcceptFiles+0x2a4f
SHELL32.dll!Ordinal211+0x124
SHELL32.dll!SHChangeNotification_Unlock+0x12f4
USER32.dll!GetSystemMetrics+0x2b1
USER32.dll!IsDialogMessageW+0x19b
USER32.dll!IsDialogMessageW+0x1e1
ntdll.dll!KiUserCallbackDispatcher+0x1f
USER32.dll!PeekMessageW+0xba
USER32.dll!PeekMessageW+0x89
SHELL32.dll!SHChangeNotification_Unlock+0xd9f
SHELL32.dll!Ordinal885+0x1407
SHLWAPI.dll!SHRegGetUSValueW+0x306
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21
当我查看 explorer.exe 线程时,我确实注意到有不少人在谈论 ETW(Windows 事件跟踪),所以显然 explorer.exe 使用了跟踪。
因此,我决定尝试使用 TraceView.exe 来尝试监听 explorer.exe 跟踪。
问题是 TraceView 需要一些难以获得的东西……要么是 pdbs,要么是 CTL 文件,还有 .TMF 文件。我尝试使用 Windows SDK 附带的 explorer.pdb,但没有奏效。我没有在“命名提供程序”中看到 explorer.exe。而且我不知道在哪里可以找到 explorer.exe 的 ctl 或 .TMF 文件。
所以问题是:有没有办法从资源管理器中查看 ETW 跟踪消息?
或者我是否应该不打扰并回到古老的技术,即逐个禁用每个探索者扩展,希望它是其中之一。(更喜欢前者,因为我喜欢追根究底!!)