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" 이름을 사용해야 합니다.
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. NtXxxZwXxx 루틴 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴 Nt 및 Zw 버전 사용참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntddk.h(Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs, PowerIrpDDis |
참고 항목
네이티브 시스템 서비스 루틴 Nt 및 Zw 버전 사용