共用方式為


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,否則傳回 FALSE (包括失敗)。

言論

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

目前支援的轉換如下:

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

  • 消除區段之間不必要的填補(超越簡單的對齊方式)。

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

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

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

要求

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