다음을 통해 공유


RtlNormalizeSecurityDescriptor 함수(ntddk.h)

이 루틴은 가능한 한 자주 $SDS 두 개의 동등한 보안 설명자를 단일 인스턴스화할 수 있어야 하고 저장된 보안 설명자가 가능한 한 작아야 한다는 보조 목표를 목표로 레이아웃을 수정하는 방법에 대한 보안 설명자를 검사합니다.

통사론

NTSYSAPI BOOLEAN RtlNormalizeSecurityDescriptor(
  PSECURITY_DESCRIPTOR *SecurityDescriptor,
  ULONG                SecurityDescriptorLength,
  PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  PULONG               NewSecurityDescriptorLength,
  BOOLEAN              CheckOnly
);

매개 변수

SecurityDescriptor

정규화할 SECURITY_DESCRIPTOR 대한 포인터에 대한 포인터입니다. 보안 설명자는 자체 상대 형식이어야 합니다. NewSecurityDescriptor 제공되지 않으면 수정된 경우 이 위치가 페이징 풀에서 새로 할당된 보안 설명자로 업데이트될 수 있습니다(원래 보안 설명자 해제).

SecurityDescriptorLength

정규화할 보안 설명자의 길이(바이트)입니다.

NewSecurityDescriptor

NULL을 가리키고 있는 경우 SecurityDescriptor업데이트하는 대신 수정이 이루어진 경우 페이징 풀에서 새로 할당된 보안 설명자에 대한 포인터를 받습니다.

NULL이 아닌 경우 수정된 보안 설명자가 호출자가 제공하는 버퍼에서 직접 생성됩니다(SecurityDescriptorLength 길이 이상으로 가정).

NewSecurityDescriptorLength

필요에 따라 이 루틴이 수정된 경우 수정된 보안 설명자의 길이(바이트)를 받습니다.

CheckOnly

TRUE가 수정할 때 루틴이 아무 작업도 수행하지 않음을 지정하는 BOOLEAN 값입니다. 이 경우 수정된 보안 설명자가 만들어지지 않습니다.

반환 값

수정되었거나 수정되었으면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다(실패 포함).

발언

이 루틴을 수정하는 경우 호출자가 CheckOnly를 지정하지 않는 한 수정된 보안 설명자를 반환합니다.

현재 지원되는 변환은 다음과 같습니다.

  • 섹션을 Sacl => Dacl => Owner => Group 순서로 정렬합니다.

  • 섹션 간에 불필요한 안쪽 여백(단순 맞춤 제외)을 제거합니다.

  • 섹션 간의 맞춤 바이트(0)입니다.

  • ACE가 없는 Sacl을 제거합니다.

  • Sacl 및 Dacl에서 중복된 ALLOW ACE를 제거합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 버전 2004
헤더 ntddk.h(Ntddk.h 포함)
IRQL APC_LEVEL