Что означает C в Cid в winDbg, kdbg и livekd?
Если выполнить команду ! Process в отладчике 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.
2 ответа
Это означает CLIENT_ID
,
Из этого сообщения в блоге MSDN (выделено мое):
Недавно кто-то спросил меня, каково истинное значение поля 'Cid', которое появляется в выводе таких команд, как! Process и! Thread, в отладчике ядра (kd). Хотя с практической точки зрения я знал, что они представляют идентификатор процесса и идентификатор потока, я не был уверен в том, что означает Cid. В ходе поиска я нашел общедоступный источник, который отвечает на вопрос. Сид короток для
CLIENT_ID
которая в свою очередь является недокументированной структурой.
В этой публикации цитируется, что первоисточник - " Недокументированные секреты Windows 2000: Поваренная книга программиста", автор Свен Б. Шрайбер.
03ec = 1004 в дек. 'c' - последняя шестнадцатеричная цифра этого числа, она ничего не означает (ну, 12dec сама по себе).
cid/pid - это 4-значное шестнадцатеричное значение, а не 3.