다음을 통해 공유


ZwOpenProcessTokenEx 함수(ntifs.h)

ZwOpenProcessTokenEx 루틴은 프로세스와 연결된 액세스 토큰을 엽니다.

통사론

NTSYSAPI NTSTATUS ZwOpenProcessTokenEx(
  [in]  HANDLE      ProcessHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  ULONG       HandleAttributes,
  [out] PHANDLE     TokenHandle
);

매개 변수

[in] ProcessHandle

액세스 토큰을 열 프로세스에 대한 핸들입니다. 핸들에 PROCESS_QUERY_INFORMATION 액세스 권한이 있어야 합니다. Ntddk.h에 정의된 NtCurrentProcess 매크로를 사용하여 현재 프로세스를 지정합니다.

[in] DesiredAccess

액세스 토큰에 대한 요청된 액세스 유형을 지정하는 ACCESS_MASK 구조입니다. 이러한 요청된 액세스 유형은 토큰의 임의 액세스 제어 목록(DACL)과 비교하여 부여되거나 거부된 액세스 권한을 결정합니다.

[in] HandleAttributes

액세스 토큰 핸들에 대한 특성입니다. 현재 OBJ_KERNEL_HANDLE만 지원됩니다. 호출자가 시스템 프로세스 컨텍스트에서 실행되고 있지 않으면 이 매개 변수에 대한 OBJ_KERNEL_HANDLE 지정해야 합니다.

[out] TokenHandle

새로 열린 액세스 토큰에 대한 핸들을 수신하는 호출자 할당 변수에 대한 포인터입니다.

반환 값

ZwOpenProcessTokenEx STATUS_SUCCESS 또는 적절한 오류 상태를 반환합니다. 가능한 오류 상태 코드에는 다음이 포함됩니다.

반환 코드 묘사
STATUS_ACCESS_DENIED ProcessHandle PROCESS_QUERY_INFORMATION 액세스 권한이 없습니다.
STATUS_INSUFFICIENT_RESOURCES 새 토큰 핸들을 할당할 수 없습니다.
STATUS_INVALID_HANDLE ProcessHandle 올바른 핸들이 아닙니다.
STATUS_INVALID_PARAMETER 지정한 HandleAttributes OBJ_KERNEL_HANDLE 포함하지 않았습니다.
STATUS_OBJECT_TYPE_MISMATCH ProcessHandle 프로세스 핸들이 아닙니다.
STATUS_PRIVILEGE_NOT_HELD 호출자에게는 DesiredAccess 매개 변수에 지정된 액세스 권한이 있는 토큰 핸들을 만드는 데 필요한 권한(SeSecurityPrivilege)이 없습니다.
STATUS_QUOTA_EXCEEDED 프로세스의 메모리 할당량이 토큰 핸들을 할당하기에 충분하지 않습니다.
STATUS_UNSUCCESSFUL 토큰 핸들을 만들 수 없습니다.

발언

ZwOpenProcessTokenEx 프로세스와 연결된 액세스 토큰을 열고 해당 토큰에 대한 핸들을 반환합니다.

ZwOpenProcessTokenEx 호출하여 얻은 모든 핸들은 결국 ZwClose호출하여 해제되어야 합니다.

시스템 프로세스 이외의 프로세스 컨텍스트에서 실행되는 드라이버 루틴은 ZwOpenProcessTokenExHandleAttributes 매개 변수에 대한 OBJ_KERNEL_HANDLE 특성을 설정해야 합니다. 이렇게 하면 ZwOpenProcessTokenEx 반환된 핸들을 커널 모드에서 실행되는 프로세스로 제한합니다. 그렇지 않으면 드라이버가 실행 중인 컨텍스트의 프로세스에서 핸들에 액세스할 수 있습니다.

보안 및 액세스 제어에 대한 자세한 내용은 드라이버 개발자를 위한 Windows 보안 모델 및 Windows SDK의 이러한 항목에 대한 설명서를 참조하세요.

메모

ZwOpenProcessTokenEx 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwOpenProcessTokenEx" 대신 "NtOpenProcessTokenEx ""를 사용해야 합니다.

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

요구 사항

요구
지원되는 최소 클라이언트 Windows XP
대상 플랫폼 보편적
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

참고 항목

ACCESS_MASK

ACL

PsDereferencePrimaryToken

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

ZwClose

ZwOpenThreadTokenEx