ZwSetInformationToken 함수(ntifs.h)

ZwSetInformationToken 루틴은 지정된 토큰의 정보를 수정합니다. 호출 프로세스에는 정보를 설정하기 위한 적절한 액세스 권한이 있어야 합니다.

구문

NTSYSAPI NTSTATUS ZwSetInformationToken(
  [in] HANDLE                  TokenHandle,
  [in] TOKEN_INFORMATION_CLASS TokenInformationClass,
  [in] PVOID                   TokenInformation,
  [in] ULONG                   TokenInformationLength
);

매개 변수

[in] TokenHandle

정보를 수정할 액세스 토큰에 대한 핸들입니다.

[in] TokenInformationClass

수정할 정보의 형식을 식별하는 TOKEN_INFORMATION_CLASS 열거형 형식의 값입니다. 이 매개 변수의 가능한 값은 TokenInformation 매개 변수의 설명에 표시된 테이블의 TokenInformationClass 값 열에 나열됩니다.

[in] TokenInformation

토큰에서 수정할 정보를 포함하는 호출자 제공 버퍼에 대한 포인터입니다. 이 버퍼의 정보 구조는 다음 표와 같이 TokenInformationClass 값에 따라 달라집니다. 모든 구조체는 32비트 경계에 맞춰야 합니다.

TokenInformationClass 값 TokenInformation 버퍼에 미치는 영향
TokenDefaultDacl 버퍼에는 새로 만든 개체에 대한 기본 DACL을 지정하는 TOKEN_DEFAULT_DACL 구조체가 포함되어 있습니다. 이 정보를 설정하려면 TOKEN_ADJUST_DEFAULT 액세스가 필요합니다. 버퍼 콘텐츠는 구조적 정확성 또는 일관성에 대한 유효성을 검사하지 않습니다.
TokenGroups 유효한 정보 클래스가 아닙니다. 이 정보는 읽기 전용입니다.
TokenOwner 버퍼에는 새로 만든 개체에 대한 기본 소유자 SID를 지정하는 TOKEN_OWNER 구조체가 포함되어 있습니다. 이 정보를 설정하려면 TOKEN_ADJUST_DEFAULT 액세스가 필요합니다. 지정할 수 있는 소유자 값은 개체의 소유자로 할당될 수 있음을 나타내는 특성을 사용하여 사용자 및 그룹 ID로 제한됩니다.
TokenPrimaryGroup 버퍼에는 새로 만든 개체에 대한 기본 기본 그룹 SID를 지정하는 TOKEN_PRIMARY_GROUP 구조체가 포함되어 있습니다. 이 정보를 설정하려면 TOKEN_ADJUST_DEFAULT 액세스가 필요합니다. 토큰에 이미 있는 그룹 ID 중 하나여야 합니다.
TokenPrivileges 유효한 정보 클래스가 아닙니다. 이 정보는 읽기 전용입니다.
TokenSource 유효한 정보 클래스가 아닙니다. 이 정보는 읽기 전용입니다.
TokenStatistics 유효한 정보 클래스가 아닙니다. 이 정보는 읽기 전용입니다.
TokenUser 유효한 정보 클래스가 아닙니다. 이 정보는 읽기 전용입니다.

[in] TokenInformationLength

TokenInformation 버퍼에 전달된 구조체의 크기(바이트)입니다. 다음 표에 제공된 최소값보다 크거나 같아야 합니다.

TokenInformationClass 값 최소 TokenInformationLength
TokenDefaultDacl sizeof(TOKEN_DEFAULT_DACL)
TokenOwner sizeof(TOKEN_OWNER)
TokenPrimaryGroup sizeof(TOKEN_PRIMARY_GROUP)

반환 값

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

반환 코드 설명
STATUS_ACCESS_DENIED TokenHandle 에 필요한 액세스 권한이 없습니다.
STATUS_ALLOTTED_SPACE_EXCEEDED 기본 임의 액세스 제어 및 기본 그룹 ID의 스토리지에 할당된 공간은 이러한 필드 중 하나의 새 값을 수락할 만큼 크지 않습니다.
STATUS_INFO_LENGTH_MISMATCH TokenInformationLength 값이 필요한 최소값보다 작습니다.
STATUS_INSUFFICIENT_RESOURCES 지정된 기본 소유자의 보안 정보를 캡처할 수 없습니다.
STATUS_INVALID_HANDLE TokenHandle 이 유효한 핸들이 아니었습니다.
STATUS_INVALID_INFO_CLASS TokenInformationClass 가 유효한 토큰 정보 클래스가 아니었습니다.
STATUS_INVALID_OWNER 호출자는 지정된 ID를 개체의 소유자(또는 기본 소유자)로 설정할 수 없습니다.
STATUS_INVALID_PRIMARY_GROUP 호출자는 지정된 ID를 개체의 기본 그룹으로 설정할 수 없습니다.
STATUS_INVALID_SID 지정된 기본 소유자의 보안 정보가 잘못되었습니다.
STATUS_OBJECT_TYPE_MISMATCH TokenHandle 이 토큰 핸들이 아니었습니다.

설명

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

참고

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

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

요구 사항

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

추가 정보

PsDereferenceImpersonationToken

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

SID

SeQueryAuthenticationIdToken

SeQuerySubjectContextToken

SeTokenIsAdmin

SeTokenIsRestricted

TOKEN_DEFAULT_DACL

TOKEN_GROUPS

TOKEN_INFORMATION_CLASS

TOKEN_OWNER

TOKEN_PRIMARY_GROUP

TOKEN_PRIVILEGES

TOKEN_SOURCE

TOKEN_STATISTICS

TOKEN_TYPE

TOKEN_USER

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

ZwQueryInformationToken