MakeAbsoluteSD 関数 (securitybaseapi.h)

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

構文

BOOL MakeAbsoluteSD(
  [in]            PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  [out, optional] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  [in, out]       LPDWORD              lpdwAbsoluteSecurityDescriptorSize,
  [out, optional] PACL                 pDacl,
  [in, out]       LPDWORD              lpdwDaclSize,
  [out, optional] PACL                 pSacl,
  [in, out]       LPDWORD              lpdwSaclSize,
  [out, optional] PSID                 pOwner,
  [in, out]       LPDWORD              lpdwOwnerSize,
  [out, optional] PSID                 pPrimaryGroup,
  [in, out]       LPDWORD              lpdwPrimaryGroupSize
);

パラメーター

[in] pSelfRelativeSecurityDescriptor

自己相対形式の SECURITY_DESCRIPTOR 構造体へのポインター。 関数は、元のセキュリティ記述子を変更せずに、このセキュリティ記述子の絶対形式バージョンを作成します。

[out, optional] pAbsoluteSecurityDescriptor

関数が絶対形式のセキュリティ記述子のメイン本文で埋めるバッファーへのポインター。 この情報は、 SECURITY_DESCRIPTOR 構造体として書式設定されます。

[in, out] lpdwAbsoluteSecurityDescriptorSize

pAbsoluteSD パラメーターによって指されるバッファーのサイズを指定する変数へのポインター。 バッファーがセキュリティ記述子に十分な大きさでない場合、関数は失敗し、この変数を必要な最小サイズに設定します。

[out, optional] pDacl

関数が入力するバッファーへのポインターは、絶対形式のセキュリティ記述子の 随意アクセス制御リスト (DACL) です。 絶対形式のセキュリティ記述子のメイン本文は、このポインターを参照します。

[in, out] lpdwDaclSize

pDacl パラメーターによって指されるバッファーのサイズを指定する変数へのポインター。 バッファーがアクセス制御リスト (ACL) に十分な大きさでない場合、関数は失敗し、この変数を必要な最小サイズに設定します。

[out, optional] pSacl

関数が入力するバッファーへのポインターは、絶対形式のセキュリティ記述子の システム アクセス制御リスト (SACL) です。 絶対形式のセキュリティ記述子のメイン本文は、このポインターを参照します。

[in, out] lpdwSaclSize

pSacl パラメーターによって指されるバッファーのサイズを指定する変数へのポインター。 バッファーが ACL に対して十分な大きさでない場合、関数は失敗し、この変数を必要な最小サイズに設定します。

[out, optional] pOwner

関数が入力するバッファーへのポインターは、絶対形式のセキュリティ記述子の所有者のセキュリティ 識別子 (SID) です。 絶対形式のセキュリティ記述子のメイン本文は、このポインターを参照します。

[in, out] lpdwOwnerSize

pOwner パラメーターによって指されるバッファーのサイズを指定する変数へのポインター。 バッファーが SID に対して十分な大きさでない場合、関数は失敗し、この変数を必要な最小サイズに設定します。

[out, optional] pPrimaryGroup

関数が入力するバッファーへのポインターは、絶対形式のセキュリティ記述子のプライマリ グループの SID です。 絶対形式のセキュリティ記述子のメイン本文は、このポインターを参照します。

[in, out] lpdwPrimaryGroupSize

pPrimaryGroup パラメーターによって指されるバッファーのサイズを指定する変数へのポインター。 バッファーが SID に対して十分な大きさでない場合、関数は失敗し、この変数を必要な最小サイズに設定します。

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

関数が失敗すると、0 が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。 可能なリターン コードには、次のものが含まれますが、これらに限定されません。

リターン コード/値 Description
ERROR_INSUFFICIENT_BUFFER
0x7A
1 つ以上のバッファーが小さすぎます。

解説

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

セキュリティで保護されたオブジェクトをさまざまなメディアにコピーするサーバーでは 、MakeAbsoluteSD 関数を使用して、自己相対セキュリティ記述子から絶対セキュリティ記述子を作成し、 MakeSelfRelativeSD 関数を使用して、絶対セキュリティ記述子から自己相対セキュリティ記述子を作成できます。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー securitybaseapi.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

低レベルのAccess Control

低レベルのAccess Control関数

MakeSelfRelativeSD

SECURITY_DESCRIPTOR