Какие процессы, если таковые имеются, существуют между PID 0 и 4 в Windows 7?

Ответы:

34

Нет идентификатора процесса 1,2 или 3 из-за того, как работает таблица дескрипторов ядра NT.

Ручки всегда кратны четырем. Объект процесса дескриптора ядра используется как для дескрипторов процесса, так и для идентификаторов процессов / потоков. Бывает, что значения дескриптора начинаются с 0x4 (бит 2) , и InitialSystemProcess является первым процессом, который будет создан, поэтому он получает PID 4. Фактически, неактивный процесс не является процессом, и вы не можете его открыть. Вероятно, у него нет реального PID, но большинство инструментов считают его равным 0.

Подробнее о таблице дескрипторов NT здесь, хотя это верно только для NT3-5 (xp), поскольку Windows 7 теперь требует, чтобы вы ссылались только на дескрипторы ядра, если они подключены к PsInitialSystemProcess.

Подробнее о Windows 7/8 Обработка ограничений от Марка Руссиновича

Подробнее о «кратных четырех» в PID

G Koe
источник
6
Хм, это интересно, я так и не понял, что все пиды делятся на 4
agz
звучит так, как будто они использовали предварительно умноженный индекс массива для PID
трещотка урод
Все еще удивляетесь, а как насчет PID от 4 до 200?
AGZ
@agz: числа от 4 до 200 (и многие другие) находятся в полупостоянном использовании потоками в так называемом системном процессе. Идентификаторы процессов и потоков (обычно называемые «идентификаторами клиентов») происходят из одного и того же «пространства номеров». Вы можете увидеть идентификаторы потоков в Process Explorer: дважды щелкните по процессу, а затем посмотрите на вкладку Threads в появившемся окне «Свойства».
Джейми Ханрахан
0

вы можете увидеть все эти процессы в диапазоне от 4 до 200 и многие другие в панели Process Process System - properties - threads.

Гомер
источник