共用方式為


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 值,例如下列其中一項:

傳回碼 描述
STATUS_BAD_DESCRIPTOR_FORMAT
AbsoluteSecurityDescriptor 參數所指向的緩衝區未包含絕對格式的SECURITY_DESCRIPTOR結構。 STATUS_BAD_DESCRIPTOR_FORMAT是錯誤碼。
STATUS_BUFFER_TOO_SMALL
AbsoluteSecurityDescriptorDaclSaclOwnerPrimaryGroup 參數所指向的緩衝區太小。 STATUS_BUFFER_TOO_SMALL是錯誤碼。

言論

絕對格式的安全性描述元包含資訊的指標,而不是包含資訊本身。 自我相對格式的安全性描述元包含連續記憶體區塊中的資訊。 在自我相對安全性描述元中,SECURITY_DESCRIPTOR結構一律會啟動資訊,但安全性描述項的其他元件可以依照任何順序遵循SECURITY_DESCRIPTOR結構。 安全性描述元的元件不是使用記憶體位址,而是透過安全性描述元開頭的位移來識別。 當安全性描述元必須儲存在軟盤上,或透過通訊協定傳輸時,這個格式就很有用。

請注意,AbsoluteSecurityDescriptor 參數只會接收絕對安全性描述元的主體。 整個絕對安全性描述元是由這個主體所組成,再加上 Dacl SaclOwnerPrimaryGroup 緩衝區中傳回的所有安全性描述元元件。 因此,呼叫者無法在呼叫 RtlSelfRelativeToAbsoluteSD之後釋放這些緩衝區,因為這樣做會使絕對安全性描述元失效。

若要使用絕對格式的安全性描述元作為範本,以自我相對格式建立新的安全性描述元,請使用 RtlAbsoluteToSelfRelativeSD

如需安全性和訪問控制的詳細資訊,請參閱 Microsoft Windows SDK 檔。

要求

要求 價值
最低支援的用戶端 Windows Server 2003 SP1
目標平臺 普遍
標頭 ntifs.h (include Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor