Дескрипторы и идентификаторы процессов

При создании нового процесса с помощью функции CreateProcess возвращаются дескрипторы нового процесса и его основного потока. Эти дескрипторы создаются с правами полного доступа и могут использоваться в любой функции, принимающей дескрипторы потоков или процессов, при условии проверки доступа к ним. Эти дескрипторы могут наследоваться дочерними процессами в зависимости от флага наследования, указанного при их создании. Дескрипторы действительны до закрытия, даже после завершения процесса или потока, которые они представляют.

Функция CreateProcess также возвращает идентификатор, который однозначно идентифицирует процесс в системе. Процесс может использовать функцию GetCurrentProcessId для получения собственного идентификатора процесса (также известного как идентификатор процесса или PID). Идентификатор действителен с момента создания процесса до его завершения. Процесс может использовать функцию Process32First для получения идентификатора процесса родительского процесса.

Если у вас есть идентификатор процесса, вы можете получить дескриптор процесса, вызвав функцию OpenProcess . OpenProcess позволяет указать права доступа дескриптора и указать, можно ли наследовать его.

Процесс может использовать функцию GetCurrentProcess для получения псевдо дескриптора в собственный объект процесса. Этот псевдо дескриптор действителен только для вызывающего процесса; Он не может быть унаследован или дублирован для использования другими процессами. Чтобы получить реальный дескриптор процесса, вызовите функцию DuplicateHandle .