다음을 통해 공유


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 요청된 액세스 권한을 부여할 수 없습니다.

설명

ZwCreateKeyZwCreateFile과 같은 다른 시스템 서비스 호출에서 연 커널 핸들의 경우와 마찬가지로 호출자는 더 이상 필요하지 않을 때 ZwClose를 호출하여 핸들을 닫습니다.

ClientId 매개 변수는 프로세스를 열 스레드를 식별하는 클라이언트 ID를 가리킵니다. 또한 ObjectAttributes가 가리키는 구조체의 ObjectName 필드를 NULL로 설정해야 합니다.

이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwOpenProcess" 대신 "NtOpenProcess"라는 이름을 사용해야 합니다.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs, PowerIrpDDis

추가 정보

ACCESS_MASK

OBJECT_ATTRIBUTES

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용