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 |