Функция PsLookupProcessByProcessId (ntifs.h)
Подпрограмма psLookupProcessByProcessId принимает идентификатор процесса и возвращает указатель на структуру EPROCESS процесса.
Синтаксис
NTSTATUS PsLookupProcessByProcessId(
[in] HANDLE ProcessId,
[out] PEPROCESS *Process
);
Параметры
[in] ProcessId
Указывает идентификатор процесса процесса.
[out] Process
Возвращает указатель на структуру процесса EPROCESS, указанную ProcessId.
Возвращаемое значение
PsLookupProcessByProcessId возвращает STATUS_SUCCESS при успешном выполнении или соответствующем значении NTSTATUS, например:
Возвращаемый код | Описание |
---|---|
|
Указывает в Windows XP и более ранних версиях Windows идентификатор процесса не найден. |
|
Указывает в 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 |
См. также
PsRemoveCreateThreadNotifyRoutine
PsRemoveLoadImageNotifyRoutine