Поделиться через


Функция 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 (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

ObDereferenceObject

PsGetCurrentProcess

PsGetCurrentProcessId

PsGetCurrentThread

PsGetCurrentThreadId

PsLookupThreadByThreadId

PsRemoveCreateThreadNotifyRoutine

PsRemoveLoadImageNotifyRoutine

PsSetCreateProcessNotifyRoutine

PsSetLoadImageNotifyRoutine