Debug di CSRSS

Il server client Run-Time sottosistema (CSRSS) è il processo in modalità utente che controlla il livello sottostante per l'ambiente Windows.

Nota

A partire da Windows 10, CSRSS è un processo protetto e può essere eseguito solo il debug in modalità kernel.

Per informazioni generali sui processi protetti, oltre a specifiche aggiuntive su Windows protette, codice critico, ad esempio wininit e csrss, vedere Windows Internals by Pavel Yosifovich, Mark E. Russinovich, David A. Solomon e Alex Ionescu.

Visualizzare le informazioni sul processo CSRSS

Per esaminare CSRSS, alcune informazioni sono disponibili usando il debug del kernel.

Usare l'estensione !process per visualizzare informazioni sui processi associati alla csrss.exe.

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

Accettare uno dei processi associati e impostare il contesto su tale posizione usando il comando .process (Set Process Context).

0: kd> .process /r /p ffffe381a583b080
Implicit process is now ffffe381`a583b080
Loading User Symbols

Usare ora il comando dt (Tipo di visualizzazione) per visualizzare direttamente la struttura del processo:

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

L'estensione !peb può essere usata per visualizzare informazioni aggiuntive sul blocco di ambiente di elaborazione (PEB).