Я полный новичок в WinDbg, и я пытался отладить проблему WindowsXP, которую заказчик отправил мне, когда наше программное обеспечение и некоторые сторонние программы предотвращают выход из системы.Я воспроизвел проблему и убедился, что только когда наше программное обеспечение и программное обеспечение клиента установлены (хотя не обязательно работают при выходе из системы), возникает проблема выхода из системы.Я заметил, что сообщения WM_ENDSESSION не доходят до запущенных окон, когда пользователь пытается выйти из системы, и я знаю, что стороннее программное обеспечение использует драйвер ядра.
Я смотрел на процессы в WinDbg иЯ знаю, что csrss.exe обычно отправляет всем окнам сообщение WM_ENDSESSION.Когда я запустил:
! Process 82356020 6
Чтобы посмотреть на стек csrss.exe, я вижу:
WARNING: Frame IP not in any known module. Following frames may be wrong.
00000000 00000000 00000000 00000000 00000000 0x7c90e514
THREAD 8246d998 Cid 0248.02a0 Teb: 7ffd7000 Win32Thread: e1627008 WAIT: (WrUserRequest) UserMode Non-Alertable
8243d9f0 SynchronizationEvent
81fe0390 SynchronizationEvent
Not impersonating
DeviceMap e1004450
Owning Process 82356020 Image: csrss.exe
Attached Process N/A Image: N/A
Wait Start TickCount 1813 Ticks: 20748 (0:00:05:24.187)
Context Switch Count 3 LargeStack
UserTime 00:00:00.000
KernelTime 00:00:00.000
Start Address 0x75b67cdf
Stack Init f80bd000 Current f80bc9c8 Base f80bd000 Limit f80ba000 Call 0
Priority 14 BasePriority 13 PriorityDecrement 0 DecrementCount 0
Kernel stack not resident.
ChildEBP RetAddr Args to Child
f80bc9e0 80500ce6 00000000 8246d998 804f9af2 nt!KiSwapContext+0x2e (FPO: [Uses EBP] [0,0,4])
f80bc9ec 804f9af2 804f986e e1627008 00000000 nt!KiSwapThread+0x46 (FPO: [0,0,0])
f80bca24 bf80a4a3 00000002 82475218 00000001 nt!KeWaitForMultipleObjects+0x284 (FPO: [Non-Fpo])
f80bca5c bf88c0a6 00000001 82475218 00000000 win32k!xxxMsgWaitForMultipleObjects+0xb0 (FPO: [Non-Fpo])
f80bcd30 bf87507d bf9ac0a0 00000001 f80bcd54 win32k!xxxDesktopThread+0x339 (FPO: [Non-Fpo])
f80bcd40 bf8010fd bf9ac0a0 f80bcd64 00bcfff4 win32k!xxxCreateSystemThreads+0x6a (FPO: [Non-Fpo])
f80bcd54 8053d648 00000000 00000022 00000000 win32k!NtUserCallOneParam+0x23 (FPO: [Non-Fpo])
f80bcd54 7c90e514 00000000 00000022 00000000 nt!KiFastCallEntry+0xf8 (FPO: [0,0] TrapFrame @ f80bcd64)
Этот waitForMultipleObjects выглядит интересно, потому что мне интересно,csrss.exe ожидает некоторого события, которое не приходит, чтобы разрешить выход из системы.Может кто-нибудь сказать мне, как я могу узнать, какое событие ожидает чего-либо еще, что я мог бы сделать для дальнейшего исследования проблемы?