Debuggen von CSRSS
Das Client Server Run-Time Subsystem (CSRSS) ist der Benutzermodusprozess, der die zugrunde liegende Ebene für die Windows-Umgebung steuert.
Hinweis
Ab Windows 10 ist CSRSS ein geschützter Prozess und kann nur im Kernelmodus gedebuggt werden.
Allgemeine Informationen zu geschützten Prozessen sowie zusätzliche Besonderheiten zu windowsgeschütztem, kritischem Code wie wininit und csrss finden Sie unter Windows Internals von Pavel Yosifovich, Mark E. Russinovich, David A. Solomon und Alex Ionescu.
Anzeigen von CSRSS-Prozessinformationen
Um CSRSS zu untersuchen, sind einige Informationen mithilfe des Kerneldebuggens verfügbar.
Verwenden Sie die Erweiterung !process , um Informationen zu Prozessen anzuzeigen, die csrss.exe zugeordnet sind.
0: kd> !process 0 0 csrss.exe
PROCESS ffffe381a583b080
SessionId: 0 Cid: 027c Peb: e0c93ef000 ParentCid: 0270
DirBase: 115478000 ObjectTable: ffffaa87786b67c0 HandleCount: 722.
Image: csrss.exe
PROCESS ffffe381a68ab140
SessionId: 1 Cid: 02f4 Peb: 186a447000 ParentCid: 02dc
DirBase: 143c0e000 ObjectTable: ffffaa87786b5200 HandleCount: 445.
Image: csrss.exe
Verwenden Sie einen der zugeordneten Prozesse, und legen Sie den Kontext mit dem Befehl PROZESS (Prozesskontext festlegen) auf diesen Speicherort fest.
0: kd> .process /r /p ffffe381a583b080
Implicit process is now ffffe381`a583b080
Loading User Symbols
Verwenden Sie nun den Befehl dt (Anzeigetyp), um die Prozessstruktur direkt anzuzeigen:
0: kd> dt csrss!_csr_process
+0x000 ClientId : _CLIENT_ID
+0x010 ListLink : _LIST_ENTRY
+0x020 ThreadList : _LIST_ENTRY
+0x030 NtSession : Ptr64 _CSR_NT_SESSION
+0x038 ClientPort : Ptr64 Void
+0x040 ClientViewBase : Ptr64 Char
+0x048 ClientViewBounds : Ptr64 Char
+0x050 ProcessHandle : Ptr64 Void
+0x058 SequenceNumber : Uint4B
+0x05c Flags : Uint4B
+0x060 DebugFlags : Uint4B
+0x064 ReferenceCount : Int4B
+0x068 ProcessGroupId : Uint4B
+0x06c ProcessGroupSequence : Uint4B
+0x070 LastMessageSequence : Uint4B
+0x074 NumOutstandingMessages : Uint4B
+0x078 ShutdownLevel : Uint4B
+0x07c ShutdownFlags : Uint4B
+0x080 Luid : _LUID
+0x088 ServerDllPerProcessData : [1] Ptr64 Void
Die Erweiterung !peb kann verwendet werden, um zusätzliche Informationen zum Prozessumgebungsblock (PEB) anzuzeigen.