如果执行!过程在 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 位。