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
AbsoluteSecurityDescriptorDaclSaclOwner、または PrimaryGroup パラメーターが指すバッファーが小さすぎます。 STATUS_BUFFER_TOO_SMALLはエラー コードです。

注釈

絶対形式のセキュリティ記述子には、情報自体を含むのではなく、情報へのポインターが含まれています。 自己相対形式のセキュリティ記述子には、連続するメモリ ブロック内に情報が含まれています。 自己相対セキュリティ記述子では、SECURITY_DESCRIPTOR構造体は常に情報を開始しますが、セキュリティ記述子の他のコンポーネントは任意の順序でSECURITY_DESCRIPTOR構造に従うことができます。 このセキュリティ記述子のコンポーネントは、メモリ アドレスを使用する代わりに、セキュリティ記述子の先頭からのオフセットによって識別されます。 この形式は、セキュリティ記述子をフロッピー ディスクに格納するか、通信プロトコルによって送信する必要がある場合に便利です。

AbsoluteSecurityDescriptor パラメーターは、絶対セキュリティ記述子のメイン本文のみを受け取ります。 絶対セキュリティ記述子全体は、このメイン本文に加えて、DaclSaclOwnerPrimaryGroup バッファーで返されるすべてのセキュリティ記述子コンポーネントで構成されます。 そのため、呼び出し元は RtlSelfRelativeToAbsoluteSD を呼び出した後にこれらのバッファーを解放できません。これを行うと、絶対セキュリティ記述子が無効になるためです。

絶対形式のセキュリティ記述子をテンプレートとして使用して自己相対形式で新しいセキュリティ記述子を作成するには、 RtlAbsoluteToSelfRelativeSD を使用します。

セキュリティとアクセス制御の詳細については、Microsoft Windows SDKドキュメントを参照してください。

要件

要件
サポートされている最小のクライアント Windows Server 2003 SP1
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor