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
프로세스를 열 스레드를 식별하는 클라이언트 ID에 대한 포인터입니다. 이 매개 변수는 유효한 클라이언트 ID에 대한 NULL 이 아닌 포인터여야 합니다. 자세한 내용은 다음 설명 섹션을 참조 하세요 .
반환 값
ZwOpenProcess 는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 반환 값에는 다음 오류 상태 코드가 포함됩니다.
반환 코드 | 설명 |
---|---|
STATUS_INVALID_PARAMETER_MIX | 호출자가 개체 이름을 제공했거나 클라이언트 ID를 제공하지 못했습니다. |
STATUS_INVALID_CID | 지정된 클라이언트 ID가 잘못되었습니다. |
STATUS_INVALID_PARAMETER | 요청된 액세스 권한이 프로세스 개체에 대해 유효하지 않습니다. |
STATUS_ACCESS_DENIED | 요청된 액세스 권한을 부여할 수 없습니다. |
설명
ZwCreateKey 및 ZwCreateFile과 같은 다른 시스템 서비스 호출에서 연 커널 핸들의 경우와 마찬가지로 호출자는 더 이상 필요하지 않을 때 ZwClose를 호출하여 핸들을 닫습니다.
ClientId 매개 변수는 프로세스를 열 스레드를 식별하는 클라이언트 ID를 가리킵니다. 또한 ObjectAttributes가 가리키는 구조체의 ObjectName 필드를 NULL로 설정해야 합니다.
이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwOpenProcess" 대신 "NtOpenProcess"라는 이름을 사용해야 합니다.
커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxx 및 ZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | ntddk.h(Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs, PowerIrpDDis |