다음을 통해 공유


RtlSelfRelativeToAbsoluteSD 함수(ntifs.h)

RtlSelfRelativeToAbsoluteSD 루틴은 자체 상대 형식의 보안 설명자를 템플릿으로 사용하여 절대 형식의 새 보안 설명자를 만듭니다.

구문

NTSYSAPI NTSTATUS RtlSelfRelativeToAbsoluteSD(
  [in]      PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
  [out]     PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
  [in, out] PULONG               AbsoluteSecurityDescriptorSize,
  [out]     PACL                 Dacl,
  [in, out] PULONG               DaclSize,
  [out]     PACL                 Sacl,
  [in, out] PULONG               SaclSize,
  [out]     PSID                 Owner,
  [in, out] PULONG               OwnerSize,
  [out]     PSID                 PrimaryGroup,
  [in, out] PULONG               PrimaryGroupSize
);

매개 변수

[in] SelfRelativeSecurityDescriptor

자체 상대 형식의 SECURITY_DESCRIPTOR 구조를 포함하는 호출자가 할당한 버퍼에 대한 포인터입니다. RtlSelfRelativeToAbsoluteSD 는 원본을 수정하지 않고 이 보안 설명자의 버전을 절대 형식으로 만듭니다.

[out] AbsoluteSecurityDescriptor

절대 형식 보안 설명자의 기본 본문을 수신하는 호출자가 할당한 버퍼에 대한 포인터입니다. 이 정보는 SECURITY_DESCRIPTOR 구조체로 서식이 지정됩니다.

[in, out] AbsoluteSecurityDescriptorSize

AbsoluteSecurityDescriptor 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 호출자 할당 변수에 대한 포인터입니다. 버퍼가 보안 설명자를 저장할 만큼 크지 않은 경우 RtlSelfRelativeToAbsoluteSD 는 STATUS_BUFFER_TOO_SMALL 반환하고 이 변수를 필요한 최소 크기로 설정합니다.

[out] Dacl

절대 형식 보안 설명자의 DACL을 수신하는 호출자가 할당한 버퍼에 대한 포인터입니다. 절대 형식 보안 설명자의 기본 본문은 이 포인터를 참조합니다.

[in, out] DaclSize

Dacl 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 호출자 할당 변수에 대한 포인터입니다. 버퍼가 DACL을 보유할 만큼 크지 않은 경우 RtlSelfRelativeToAbsoluteSD 는 STATUS_BUFFER_TOO_SMALL 반환하고 이 변수를 필요한 최소 크기로 설정합니다.

[out] Sacl

절대 형식 보안 설명자의 SACL을 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 절대 형식 보안 설명자의 기본 본문은 이 포인터를 참조합니다.

[in, out] SaclSize

Sacl 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 호출자 할당 변수에 대한 포인터입니다. 버퍼가 SACL을 보유할 만큼 크지 않으면 RtlSelfRelativeToAbsoluteSD 는 STATUS_BUFFER_TOO_SMALL 반환하고 이 변수를 필요한 최소 크기로 설정합니다.

[out] Owner

절대 형식 보안 설명자의 소유자 SID를 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 절대 형식 보안 설명자의 기본 본문은 이 포인터를 참조합니다.

[in, out] OwnerSize

Owner 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 호출자 할당 변수에 대한 포인터입니다. 버퍼가 SID를 보유할 만큼 크지 않은 경우 RtlSelfRelativeToAbsoluteSD 는 STATUS_BUFFER_TOO_SMALL 반환하고 이 변수를 필요한 최소 크기로 설정합니다.

[out] PrimaryGroup

절대 형식 보안 설명자의 기본 그룹의 SID를 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 절대 형식 보안 설명자의 기본 본문은 이 포인터를 참조합니다.

[in, out] PrimaryGroupSize

PrimaryGroup 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 호출자 할당 변수에 대한 포인터입니다. 버퍼가 SID를 보유할 만큼 크지 않은 경우 RtlSelfRelativeToAbsoluteSD 는 STATUS_BUFFER_TOO_SMALL 반환하고 이 변수를 필요한 최소 크기로 설정합니다.

반환 값

RtlSelfRelativeToAbsoluteSD 는 STATUS_SUCCESS 또는 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 설명
STATUS_BAD_DESCRIPTOR_FORMAT
AbsoluteSecurityDescriptor 매개 변수가 가리키는 버퍼에 절대 형식의 SECURITY_DESCRIPTOR 구조체가 포함되어 있지 않습니다. STATUS_BAD_DESCRIPTOR_FORMAT 오류 코드입니다.
STATUS_BUFFER_TOO_SMALL
AbsoluteSecurityDescriptor, Dacl, Sacl, Owner 또는 PrimaryGroup 매개 변수가 가리키는 버퍼가 너무 작습니다. STATUS_BUFFER_TOO_SMALL 오류 코드입니다.

설명

절대 형식의 보안 설명자는 정보 자체를 포함하지 않고 정보에 대한 포인터를 포함합니다. 자체 상대 형식의 보안 설명자는 인접한 메모리 블록의 정보를 포함합니다. 자체 상대 보안 설명자에서 SECURITY_DESCRIPTOR 구조는 항상 정보를 시작하지만 보안 설명자의 다른 구성 요소는 순서에 따라 SECURITY_DESCRIPTOR 구조를 따를 수 있습니다. 메모리 주소를 사용하는 대신 보안 설명자의 구성 요소는 보안 설명자의 시작 부분에서 오프셋으로 식별됩니다. 이 형식은 보안 설명자를 플로피 디스크에 저장하거나 통신 프로토콜을 통해 전송해야 하는 경우에 유용합니다.

AbsoluteSecurityDescriptor 매개 변수는 절대 보안 설명자의 기본 본문만 받습니다. 전체 절대 보안 설명자는 이 기본 본문과 Dacl, Sacl, OwnerPrimaryGroup 버퍼에 반환된 모든 보안 설명자 구성 요소로 구성됩니다. 따라서 호출자는 RtlSelfRelativeToAbsoluteSD를 호출한 후 이러한 버퍼를 해제할 수 없습니다. 이렇게 하면 절대 보안 설명자가 무효화되므로

절대 형식의 보안 설명자를 템플릿으로 사용하여 자체 상대 형식의 새 보안 설명자를 만들려면 RtlAbsoluteToSelfRelativeSD를 사용합니다.

보안 및 액세스 제어에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2003 SP1
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor