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
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 參數只會接收絕對安全性描述元的主要主體。 整個絕對安全性描述元是由這個主要主體所組成,再加上 DaclSaclOwnerPrimaryGroup 緩衝區中傳回的所有安全性描述元元件。 因此,呼叫端無法在呼叫 RtlSelfRelativeToAbsoluteSD 之後釋放這些緩衝區,因為這麼做會使絕對安全性描述元失效。

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

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

規格需求

需求
最低支援的用戶端 Windows Server 2003 SP1
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor