Функция NtOpenProcess (ntddk.h)
Подпрограмма ZwOpenProcess открывает дескриптор для объекта процесса и задает права доступа к этому объекту.
Синтаксис
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
[out] PHANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PCLIENT_ID ClientId
);
Параметры
[out] ProcessHandle
Указатель на переменную типа HANDLE. Подпрограмма ZwOpenProcess записывает дескриптор процесса в переменную, на которую указывает этот параметр.
[in] DesiredAccess
Значение ACCESS_MASK , содержащее права доступа, запрошенные вызывающим объектом процесса.
[in] ObjectAttributes
Указатель на структуру OBJECT_ATTRIBUTES , указывающую атрибуты, применяемые к дескриптору объекта процесса. Поле ObjectName этой структуры должно иметь значение NULL. Дополнительные сведения см. в следующем разделе Примечаний .
[in, optional] ClientId
Указатель на идентификатор клиента, который идентифицирует поток, процесс которого необходимо открыть. Этот параметр должен быть указателем на допустимый идентификатор клиента, отличный от NULL . Дополнительные сведения см. в следующем разделе Примечаний .
Возвращаемое значение
ZwOpenProcess возвращает STATUS_SUCCESS, если вызов выполнен успешно. Возможные возвращаемые значения включают следующие коды состояния ошибок:
Код возврата | Описание |
---|---|
STATUS_INVALID_PARAMETER_MIX | Вызывающий объект либо предоставил имя объекта, либо не смог предоставить идентификатор клиента. |
STATUS_INVALID_CID | Указанный идентификатор клиента недопустим. |
STATUS_INVALID_PARAMETER | Запрошенные права доступа недопустимы для объекта процесса. |
STATUS_ACCESS_DENIED | Запрошенные права доступа не могут быть предоставлены. |
Комментарии
Как и в случае с дескрипторами ядра, открытыми другими вызовами системных служб, такими как ZwCreateKey и ZwCreateFile, вызывающий объект отвечает за вызов ZwClose , чтобы закрыть дескриптор, когда он больше не требуется.
Параметр ClientId должен указывать на идентификатор клиента, определяющий поток, процесс которого должен быть открыт. Кроме того, поле ObjectName структуры, на которую указывает ObjectAttributes , должно иметь значение NULL.
Если вызов этой функции выполняется в пользовательском режиме, следует использовать имя NtOpenProcess вместо ZwOpenProcess.
Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы Собственные системные службы Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ntddk.h (включая Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs, PowerIrpDDis |