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