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


Функция OpenProcess (processthreadsapi.h)

Открывает существующий локальный объект процесса.

Синтаксис

HANDLE OpenProcess(
  [in] DWORD dwDesiredAccess,
  [in] BOOL  bInheritHandle,
  [in] DWORD dwProcessId
);

Параметры

[in] dwDesiredAccess

Доступ к объекту процесса. Это право доступа проверяется по дескриптору безопасности для процесса. Этот параметр может быть одним или несколькими правами доступа процесса.

Если вызывающий объект включил привилегию SeDebugPrivilege, запрошенный доступ предоставляется независимо от содержимого дескриптора безопасности.

[in] bInheritHandle

Если это значение равно TRUE, процессы, созданные этим процессом, наследуют дескриптор. В противном случае процессы не наследуют этот дескриптор.

[in] dwProcessId

Идентификатор открываемого локального процесса.

Если указанный процесс является системным неактивным процессом (0x00000000), функция завершается ошибкой и последним кодом ошибки является ERROR_INVALID_PARAMETER. Если указанный процесс является системным процессом или одним из процессов подсистемы клиентского сервера Run-Time (CSRSS), эта функция завершается ошибкой, и последний код ошибки заключается в ERROR_ACCESS_DENIED том, что их ограничения доступа препятствуют открытию кода на уровне пользователя.

Если вы используете GetCurrentProcessId в качестве аргумента для этой функции, рассмотрите возможность использования GetCurrentProcess вместо OpenProcess для повышения производительности.

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

Если функция выполняется успешно, возвращаемое значение является открытым дескриптором для указанного процесса.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Чтобы открыть дескриптор для другого локального процесса и получить полный доступ, необходимо включить привилегию SeDebugPrivilege. Дополнительные сведения см. в разделе Изменение привилегий в токене.

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

Завершив работу с дескриптором, закройте его с помощью функции CloseHandle .

Примеры

Пример см. в разделе Создание моментального снимка и просмотр процессов.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header processthreadsapi.h (включая Windows.h в Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

Функции процессов и потоков

Процессы

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory