RtlSelfRelativeToAbsoluteSD 函式 (ntifs.h)
RtlSelfRelativeToAbsoluteSD 例程會使用自我相對格式的安全性描述元做為範本,以絕對格式建立新的安全性描述元。
語法
NTSYSAPI NTSTATUS RtlSelfRelativeToAbsoluteSD(
[in] PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
[out] PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
[in, out] PULONG AbsoluteSecurityDescriptorSize,
[out] PACL Dacl,
[in, out] PULONG DaclSize,
[out] PACL Sacl,
[in, out] PULONG SaclSize,
[out] PSID Owner,
[in, out] PULONG OwnerSize,
[out] PSID PrimaryGroup,
[in, out] PULONG PrimaryGroupSize
);
參數
[in] SelfRelativeSecurityDescriptor
呼叫端配置的緩衝區指標,其中包含自我相對格式的SECURITY_DESCRIPTOR結構。 RtlSelfRelativeToAbsoluteSD 會以絕對格式建立此安全性描述元的版本,而不需修改原始描述元。
[out] AbsoluteSecurityDescriptor
呼叫端配置的緩衝區指標,該緩衝區會接收絕對格式安全性描述元的主要主體。 這項資訊會格式化為SECURITY_DESCRIPTOR結構。
[in, out] AbsoluteSecurityDescriptorSize
呼叫端配置的變數指標,指定 AbsoluteSecurityDescriptor 參數所指向之緩衝區的大小,以位元組為單位。 如果緩衝區不夠大,無法保存安全性描述元, RtlSelfRelativeToAbsoluteSD 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為所需的最小大小。
[out] Dacl
接收絕對格式安全性描述元之 DACL 之呼叫端配置的緩衝區指標。 絕對格式安全性描述元的主要本文會參考此指標。
[in, out] DaclSize
呼叫端配置的變數指標,指定 Dacl 參數所指向之緩衝區的大小,以位元組為單位。 如果緩衝區太大而無法保存 DACL,RtlSelfRelativeToAbsoluteSD 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為所需的最小大小。
[out] Sacl
接收絕對格式安全性描述元之 SACL 之呼叫端配置的緩衝區指標。 絕對格式安全性描述元的主要本文會參考此指標。
[in, out] SaclSize
呼叫端配置的變數指標,指定 Sacl 參數所指向之緩衝區的大小,以位元組為單位。 如果緩衝區太大而無法保存 SACL,RtlSelfRelativeToAbsoluteSD 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為所需的最小大小。
[out] Owner
呼叫端配置的緩衝區指標,這個緩衝區會接收絕對格式安全性描述元擁有者的 SID。 絕對格式安全性描述元的主要本文會參考此指標。
[in, out] OwnerSize
呼叫端配置的變數指標,指定 Owner 參數所指向之緩衝區的大小,以位元組為單位。 如果緩衝區太大而無法保存 SID,RtlSelfRelativeToAbsoluteSD 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為所需的最小大小。
[out] PrimaryGroup
呼叫端配置的緩衝區指標,這個緩衝區會接收絕對格式安全性描述元之主要群組的 SID。 絕對格式安全性描述元的主要本文會參考此指標。
[in, out] PrimaryGroupSize
呼叫端配置的變數指標,指定 PrimaryGroup 參數所指向之緩衝區的大小,以位元組為單位。 如果緩衝區太大而無法保存 SID,RtlSelfRelativeToAbsoluteSD 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為所需的最小大小。
傳回值
RtlSelfRelativeToAbsoluteSD 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:
傳回碼 | Description |
---|---|
|
AbsoluteSecurityDescriptor 參數所指向的緩衝區未包含絕對格式的SECURITY_DESCRIPTOR結構。 STATUS_BAD_DESCRIPTOR_FORMAT是錯誤碼。 |
|
AbsoluteSecurityDescriptor 、Dacl、Sacl、Owner 或 PrimaryGroup 參數所指向的緩衝區太小。 STATUS_BUFFER_TOO_SMALL是錯誤碼。 |
備註
絕對格式的安全性描述元包含資訊的指標,而不是包含資訊本身。 自我相對格式的安全性描述項包含連續記憶體區塊中的資訊。 在自我相對安全性描述元中,SECURITY_DESCRIPTOR結構一律會啟動資訊,但安全性描述項的其他元件可以依照任何順序遵循SECURITY_DESCRIPTOR結構。 安全性描述元的元件會從安全性描述元的開頭進行位移來識別,而不是使用記憶體位址。 當安全性描述符必須儲存在磁碟上,或透過通訊協定傳輸時,此格式很有用。
請注意, AbsoluteSecurityDescriptor 參數只會接收絕對安全性描述元的主要主體。 整個絕對安全性描述元是由這個主要主體所組成,再加上 Dacl、 Sacl、 Owner和 PrimaryGroup 緩衝區中傳回的所有安全性描述元元件。 因此,呼叫端無法在呼叫 RtlSelfRelativeToAbsoluteSD 之後釋放這些緩衝區,因為這麼做會使絕對安全性描述元失效。
若要使用絕對格式的安全性描述元作為範本,以自我相對格式建立新的安全性描述元,請使用 RtlAbsoluteToSelfRelativeSD。
如需安全性和訪問控制的詳細資訊,請參閱 Microsoft Windows SDK 檔。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Server 2003 SP1 |
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= APC_LEVEL |