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 네이티브 시스템 서비스 루틴의 NtXxx 및 ZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
추가 정보
PsDereferenceImpersonationToken