SeAccessCheckFromState 函式 (ntifs.h)
SeAccessCheckFromState 會檢查要求的訪問許可權是否可以授與受安全描述符和選擇性對象擁有者保護的物件。
語法
BOOLEAN SeAccessCheckFromState(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PTOKEN_ACCESS_INFORMATION PrimaryTokenInformation,
PTOKEN_ACCESS_INFORMATION ClientTokenInformation,
ACCESS_MASK DesiredAccess,
ACCESS_MASK PreviouslyGrantedAccess,
PPRIVILEGE_SET *Privileges,
PGENERIC_MAPPING GenericMapping,
KPROCESSOR_MODE AccessMode,
PACCESS_MASK GrantedAccess,
PNTSTATUS AccessStatus
);
參數
SecurityDescriptor
[in]包含保護所存取物件之安全性資訊之 SECURITY_DESCRIPTOR 結構的指標。
PrimaryTokenInformation
[in]從主要令牌擷取 TOKEN_ACCESS_INFORMATION 結構的指標。 此結構提供執行存取檢查所需的令牌資訊。
ClientTokenInformation
[in_opt]從用戶端令牌擷 取TOKEN_ACCESS_INFORMATION結構的 選擇性指標。
DesiredAccess
[in] ACCESS_MASK 值,指定要檢查的存取權。
PreviouslyGrantedAccess
[in] ACCESS_MASK 值,指定使用者已授與的任何存取權;例如,因為保留許可權。
Privileges
[out] PRIVILEGE_SET 結構的指標,其中會傳回許可權集合,以指出做為存取驗證一部分的任何許可權。
GenericMapping
[in]與這個物件類型相關聯 之GENERIC_MAPPING 結構的指標。
AccessMode
[in]KPROCESSOR_MODE值,指定要用於檢查的處理器模式。 AccessMode 可以是 KernelMode 或 UserMode。 較低層級的驅動程序應該指定 KernelMode。
GrantedAccess
[out]傳回 之ACCESS_MASK 值的指標,表示授與的存取權。
AccessStatus
[out]可以傳回的 NT 狀態值指標,指出拒絕存取的原因。 請參閱<備註>。
傳回值
如果允許存取,SeAccessCheckFromState 會傳回 TRUE;如果不允許存取,則會傳回 FALSE。
備註
SeAccessCheckFromState 可能會根據所要求的存取權,執行下列許可權的測試:
- SeTakeOwnershipPrivilege
- SeSecurityPrivilege
此例程也可能檢查呼叫端是否為對象的擁有者,以便授與WRITE_DAC或READ_CONTROL存取權。
如果這個例程傳回 FALSE,呼叫端應該使用傳回的 AccessStatus 作為其傳回值。 也就是說,呼叫端應該避免硬式編碼傳回值STATUS_ACCESS_DENIED或任何其他特定的STATUS_XXX 值。
此例程可能從 DPC 層級呼叫,因此不可分頁。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 |
標頭 | ntifs.h (包含 ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |