SeAssignSecurity 函式 (wdm.h)
SeAssignSecurity 例程會針對新物件建置自我相對安全性描述元,並指定其父目錄的安全性描述元,以及任何原本要求該對象的安全性描述項。
語法
NTSTATUS SeAssignSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in] BOOLEAN IsDirectoryObject,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
參數
[in, optional] ParentDescriptor
緩衝區的指標,其中包含父目錄 的SECURITY_DESCRIPTOR ,如果有的話,包含要建立的新物件。 ParentDescriptor 可以是 NULL,或具有 NULL 系統存取控制清單, (SACL) 或 NULL 任意存取控制清單, (DACL) 。
[in, optional] ExplicitDescriptor
緩衝區的指標,其中包含套用至新物件之使用者所指定的 SECURITY_DESCRIPTOR 。 ExplicitDescriptor 可以是 NULL,或具有 NULL SACL 或 NULL DACL。
[out] NewDescriptor
接收傳回 SECURITY_DESCRIPTOR的指標。 SeAssignSecurity 會從分頁記憶體集區配置緩衝區。
[in] IsDirectoryObject
指定新物件是否為目錄物件。 TRUE 表示物件包含其他物件。
[in] SubjectContext
緩衝區的指標,其中包含建立 物件之主體的安全性內容。 這是用來擷取新對象的預設安全性資訊,例如預設擁有者、主要群組和任意訪問控制。
[in] GenericMapping
描述從每個泛型許可權對應到隱含非泛型許可權之 GENERIC_MAPPING 結構的指標。
[in] PoolType
不使用這個參數。 保存新安全性描述元的緩衝區一律會從分頁集區配置。
傳回值
SeAssignSecurity 可以傳回下列其中一項:
傳回碼 | Description |
---|---|
|
指派成功。 |
|
為目標安全描述元擁有者提供的 SID 不是被授權指派為對象擁有者的 SID。 |
|
呼叫端沒有明確指派指定系統 ACL 所需的許可權 (SeSecurityPrivilege) 。 |
備註
傳回給呼叫端的最後一個安全描述項可能包含混合的資訊,部分會明確從新物件的父代提供。
SeAssignSecurity 假設尚未執行許可權檢查。 此例程會執行許可權檢查。
系統指派和任意 ACL 是由下表所示的邏輯所控管:
指定的明確 (非預設) ACL | 指定的明確預設 ACL | 未指定 ACL | |
---|---|---|---|
從父代繼承的 ACL | 指派指定的 ACL | 指派繼承的 ACL | 指派繼承的 ACL |
父系中沒有可繼承的 ACL | 指派指定的 ACL | 指派預設 ACL | 未指派 ACL |
明確指定的 ACL,無論是預設 ACL,都可以是空的或 Null。 呼叫端必須是內核模式用戶端或適當許可權,才能明確指派預設或非預設系統 ACL。
新物件的擁有者和群組指派是由下列邏輯所控管:
- 如果傳遞的安全性描述元包含擁有者,則會指派為新對象的擁有者。 否則,呼叫端的令牌會被視為判斷擁有者。 在令牌中,如果已指派預設擁有者,則為 。 否則,會指派呼叫端的使用者標識符。
- 如果傳遞的安全性描述元包含群組,則會指派為新物件的群組。 否則,呼叫端的令牌會被視為決定群組。 在令牌中,若有指派預設群組,則為 。 否則,會指派呼叫端的主要群組標識符。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows 2000 和更新版本的 Windows。 |
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS (storport) 、 PowerIrpDDis (wdm) |