CSRSS のデバッグ

クライアント サーバー ランタイム サブシステム (CSRSS) は、Windows 環境の基になるレイヤーを制御するユーザー モード プロセスです。

Note

Windows 10 以降、CSRSS は保護されたプロセスであり、カーネル モードでのみデバッグできます。

保護されたプロセスに関する一般的な情報、および wininit や csrss などの Windows で保護された重要なコードに関するその他の詳細情報については、Pavel Yosifovich、Mark E. Russinovich、David A. Solomon、Alex Ionescu による「Windows Internals」を参照してください。

CSRSS プロセスの情報を表示する

CSRSS を調べるために、カーネル デバッグを使用していくつかの情報を入手できます。

!process 拡張機能を使用して、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

関連付けられているプロセスのいずれかを取得し、.process (プロセス コンテキストの設定) コマンドを使用してその場所にコンテキストを設定します。

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

次に dt (表示タイプ) コマンドを使用して、プロセスの構造を直接表示します。

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

!peb 拡張機能を使用すると、プロセス環境ブロック (PEB) に関する追加情報を表示できます。