winDbg、kdbg 和 livekd 中 Cid 中的 C 代表什么?

winDbg、kdbg 和 livekd 中 Cid 中的 C 代表什么?

如果执行!过程在 windwos 调试器中执行命令,你会得到这种格式的输出:

PROCESS fffffa8006bff940
    SessionId: 0  Cid: 03ec    Peb: 7f79ae1f000  ParentCid: 02e4
    DirBase: 084ed000  ObjectTable: fffff8a002c3fd80  HandleCount: <Data Not Accessible>
    Image: svchost.exe

有充分的证据表明 Cid 是十六进制的 ProcessId (pid)。但是,我不明白 C 代表什么。

答案1

它代表CLIENT_ID

由此MSDN 博客文章(重点是我的):

最近有人问我内核调试器 (kd) 中 !process 和 !thread 等命令的输出中出现的“Cid”字段的真正含义是什么。虽然从实际角度来看,我知道它们代表进程 ID 和线程 ID,但我不确定 Cid 代表什么。在搜索过程中,我找到了一个可以回答这个问题的公开来源。Cid 是 的缩写CLIENT_ID,而 它是一个未记录的结构

该帖子引用了原始来源未公开的 Windows 2000 秘密:程序员的食谱,作者:Sven B. Schreiber。

答案2

03ec = 十进制 1004。'c' 是该数字的最后一位十六进制数字,它不代表任何含义(嗯,它本身就是 12dec)。

cid/pid 是 4 位十六进制值,而不是 3 位。

相关内容