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

BOOLEAN 值,如果 TRUE 指定例程在修改時不應採取任何動作。 在此情況下,不會建立修改的安全性描述元。

傳回值

如果已進行修改或已進行,否則會傳回 TRUE,否則會傳回 FALSE,否則會 (包括失敗) 。

備註

如果這個例程進行任何修改,除非呼叫端指定 CheckOnly,否則它會傳回修改的安全性描述元,指出他們只想要知道是否進行修改。

目前支援的轉換如下:

  • 依照 Sacl = Dacl =>> Owner => Group 順序排列區段。

  • 除了區段之間的簡單對齊) 之外,消除不必要的填補 (。

  • 零區段之間的任何對齊位元組。

  • 排除任何不包含 ACE 的 Sacl。

  • 消除 Sacl 和 Dacl 中的重複 ALLOW ACE。

規格需求

需求
最低支援的用戶端 Windows 10 (版本 2004)
標頭 ntddk.h (包含 Ntddk.h)
IRQL APC_LEVEL