Функция PsLookupProcessByProcessId (ntifs.h)

Подпрограмма PsLookupProcessByProcessId принимает идентификатор процесса и возвращает указатель на структуру процесса EPROCESS.

Синтаксис

NTSTATUS PsLookupProcessByProcessId(
  [in]  HANDLE    ProcessId,
  [out] PEPROCESS *Process
);

Параметры

[in] ProcessId

Указывает идентификатор процесса.

[out] Process

Возвращает указатель, на который указывает ссылка на структуру EPROCESS процесса, указанного с помощью ProcessId.

Возвращаемое значение

PsLookupProcessByProcessId возвращает STATUS_SUCCESS при успешном выполнении или соответствующее значение NTSTATUS, например:

Код возврата Описание
STATUS_INVALID_PARAMETER
Указывает в Windows XP и более ранних версиях Windows идентификатор процесса не найден.
STATUS_INVALID_CID

Указывает в Windows Vista и более поздних версиях Windows недопустимый идентификатор клиента.

Комментарии

Эта подпрограмма доступна в Windows 2000 и более поздних версиях.

Если вызов PsLookupProcessByProcessId выполнен успешно, PsLookupProcessByProcessID увеличивает количество ссылок на объект, возвращаемый в параметре Process . Следовательно, когда драйвер завершил работу с параметром Process , драйвер должен вызвать ObDereferenceObject для разыменования параметра Process , полученного от подпрограммы PsLookupProcessByProcessID .

Структура EPROCESS — это непрозрачная структура данных, используемая внутри операционной системы. Эту структуру можно передать другим подпрограммам для доступа к определенной информации в этой структуре.

Драйвер фильтра файловой системы может перечислять активные процессы, а затем вызывать PsLookupProcessByProcessId для преобразования идентификатора процесса в структуру EPROCESS. Идентификатор процесса доступен в процедуре создания процесса. Драйвер фильтра файловой системы может задать подпрограмму обратного вызова уведомления процесса с помощью PsSetCreateProcessNotifyRoutine. В подпрограмме обратного вызова уведомлений драйвер фильтра файловой системы может использовать переданный параметр ProcessId и вызвать PsLookupProcessByProcessID , чтобы найти структуру EPROCESS. PsSetCreateThreadNotifyRoutine также можно использовать для задания процедуры уведомления, которая возвращает идентификатор процесса при создании идентификатора потока.

Подпрограмма PsLookupProcessByProcessId содержит страничный код.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также раздел

ObDereferenceObject

PsGetCurrentProcess

PsGetCurrentProcessId

PsGetCurrentThread

PsGetCurrentThreadId

PsLookupThreadByThreadId

PsRemoveCreateThreadNotifyRoutine

PsRemoveLoadImageNotifyRoutine

PsSetCreateProcessNotifyRoutine

PsSetLoadImageNotifyRoutine