Функция 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 |
См. также
использование версий собственных системных служб и Zw