Функция 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 Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2, Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

GetExitCodeProcess

GetModuleFileNameEx

GetPriorityClass

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

Процессы

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory