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


Функция 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

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

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

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 Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntddk.h (include Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

ACCESS_MASK

OBJECT_ATTRIBUTES

использование версий собственных системных служб и Zw