다음을 통해 공유


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를 이 함수의 인수로 사용하는 경우 성능 향상을 위해 OpenProcess 대신 GetCurrentProcess를 사용하는 것이 좋습니다.

반환 값

함수가 성공하면 반환 값은 지정된 프로세스에 대한 열린 핸들입니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

다른 로컬 프로세스에 대한 핸들을 열고 전체 액세스 권한을 얻으려면 SeDebugPrivilege 권한을 사용하도록 설정해야 합니다. 자세한 내용은 토큰의 권한 변경을 참조하세요.

OpenProcess 함수에서 반환된 핸들은 적절한 액세스 권한이 요청된 경우 대기 함수와 같은 프로세스에 대한 핸들이 필요한 모든 함수에서 사용할 수 있습니다.

핸들을 완료하면 CloseHandle 함수를 사용하여 핸들을 닫아야 합니다.

예제

예제는 스냅샷 만들기 및 프로세스 보기를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 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