NtSetSecurityObject 函式 (ntifs.h)
NtSetSecurityObject 例程會設定對象的安全性狀態。
語法
__kernel_entry NTSYSCALLAPI NTSTATUS NtSetSecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR SecurityDescriptor
);
參數
[in] Handle
要設定其安全性狀態的物件句柄。 此句柄必須具有數據表的 Meaning 數據行中指定的存取權,如 SecurityInformation 參數的描述所示。
[in] SecurityInformation
SECURITY_INFORMATION 值,指定要設定為下列一或多個組合的資訊。
價值 | 意義 |
---|---|
OWNER_SECURITY_INFORMATION | 表示要設定對象的擁有者標識碼。 需要WRITE_OWNER存取權。 |
GROUP_SECURITY_INFORMATION | 表示要設定物件的主要群組標識碼。 需要WRITE_OWNER存取權。 |
SACL_SECURITY_INFORMATION | 表示要設定物件的系統 ACL (SACL)。 需要ACCESS_SYSTEM_SECURITY存取權。 |
DACL_SECURITY_INFORMATION | 表示要設定物件的任意訪問控制清單 (DACL)。 需要WRITE_DAC存取權。 |
[in] SecurityDescriptor
要為物件設定之安全性描述元的指標。
傳回值
NtSetSecurityObject 會傳回STATUS_SUCCESS或適當的錯誤狀態。 可能的錯誤狀態代碼包括下列專案:
傳回碼 | 描述 |
---|---|
STATUS_ACCESS_DENIED | 呼叫端沒有必要的存取權。 |
STATUS_ACCESS_VIOLATION | |
STATUS_INSUFFICIENT_RESOURCES | 無法擷取對象的安全性描述元。 |
STATUS_INVALID_ACL | 對象的安全性描述元包含無效的 ACL。 |
STATUS_INVALID_HANDLE | 句柄 不是有效的句柄。 |
STATUS_INVALID_SECURITY_DESCR | SecurityDescriptor 未指向有效的安全性描述元。 |
STATUS_INVALID_SID | 對象的安全性描述元包含無效的 SID。 |
STATUS_OBJECT_TYPE_MISMATCH | Handle 不是預期類型的句柄。 |
STATUS_UNKNOWN_REVISION | 物件之安全性描述元的修訂層級未知或不受支援。 |
言論
安全性描述元可以是絕對或自我相對形式。 在自我相對形式中,結構的所有成員都連續位於記憶體中。 在絕對形式中,結構只包含成員的指標。 如需詳細資訊,請參閱 Absolute 和 Self-Relative Security 描述元。
如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程式開發人員的 Windows 安全性模型,以及 Windows SDK 中這些主題的檔。
Minifilters 應該使用 FltSetSecurityObject,而不是 NtSetSecurityObject。
NtSetSecurityObject 的呼叫者必須在 IRQL = PASSIVE_LEVEL,且 啟用特殊核心 APC。
注意
如果在使用者模式中呼叫 NtSetSecurityObject 函式,您應該使用名稱 “NtSetSecurityObject” 而不是 “ZwSetSecurityObject”。
對於內核模式驅動程式的呼叫,NtXxx 和 ZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (請參閱一節) |
DDI 合規性規則 | HwStorPortProhibitedDDIs, PowerIrpDDis |