次の方法で共有


BuildSecurityDescriptorA 関数 (aclapi.h)

BuildSecurityDescriptor 関数は、新しい セキュリティ記述子を割り当てて初期化します。 この関数は、指定したセキュリティ情報を既存のセキュリティ記述子の情報とマージすることで、新しいセキュリティ記述子を初期化できます。 既存のセキュリティ記述子を指定しない場合、関数は指定されたセキュリティ情報に基づいて新しいセキュリティ記述子を初期化します。

BuildSecurityDescriptor 関数は、の自己相対セキュリティ記述子を作成します。 自己相対形式により、セキュリティ記述子はストリームに格納するのに適しています。

構文

DWORD BuildSecurityDescriptorA(
  [in, optional] PTRUSTEE_A           pOwner,
  [in, optional] PTRUSTEE_A           pGroup,
  [in]           ULONG                cCountOfAccessEntries,
  [in, optional] PEXPLICIT_ACCESS_A   pListOfAccessEntries,
  [in]           ULONG                cCountOfAuditEntries,
  [in, optional] PEXPLICIT_ACCESS_A   pListOfAuditEntries,
  [in, optional] PSECURITY_DESCRIPTOR pOldSD,
  [out]          PULONG               pSizeNewSD,
  [out]          PSECURITY_DESCRIPTOR *pNewSD
);

パラメーター

[in, optional] pOwner

新しいセキュリティ記述子の所有者を識別する のトラスティ 構造体へのポインター。 構造体がTRUSTEE_IS_NAME形式を使用する場合、BuildSecurityDescriptor 、指定されたトラスティ名に関連付けられている セキュリティ識別子 (SID) を検索します。

このパラメーターが NULL場合、この関数は pOldSDが指す元のセキュリティ記述子 所有者 SID を使用します。 pOldSD が NULL場合、または pOldSD の所有者 SID が NULL場合、所有者 SID は新しいセキュリティ記述子で NULL

[in, optional] pGroup

新しいセキュリティ記述子のプライマリ グループ SID を識別する のトラスティ 構造体へのポインター。 構造体で TRUSTEE_IS_NAME フォームを使用する場合は、BuildSecurityDescriptor 指定されたトラスティ名に関連付けられている SID を検索します。

このパラメーターが NULL場合、この関数は pOldSDによって指 元のセキュリティ記述子のグループ SID を使用します。 pOldSD が NULL場合、または pOldSD のグループ SID が NULL場合、グループ SID は新しいセキュリティ記述子で NULL

[in] cCountOfAccessEntries

pListOfAccessEntries 配列内の EXPLICIT_ACCESS 構造体の数。

[in, optional] pListOfAccessEntries

新しいセキュリティ記述子の 随意アクセス制御リスト (DACL) のアクセス制御情報を記述する EXPLICIT_ACCESS 構造体の配列へのポインター。 この関数は、配列内の情報を pOldSD内の DACL マージすることによって、新しい DACL を作成します (存在する場合)。 pOldSD が NULL場合、または pOldSD の DACL が NULL場合、関数は配列内の情報のみに基づいて新しい DACL を作成します。 EXPLICIT_ACCESS 構造体の配列から ACL を作成するための規則については、SetEntriesInAcl 関数を参照してください。

pListOfAccessEntries が NULL場合、新しいセキュリティ記述子は pOldSDから DACL 取得します。 この場合、pOldSD が NULL場合、または pOldSD の DACL が NULL場合、新しい DACL は NULL

[in] cCountOfAuditEntries

pListOfAuditEntries 配列内の EXPLICIT_ACCESS 構造体の数。

[in, optional] pListOfAuditEntries

新しいセキュリティ記述子の SACL の監査制御情報を記述する EXPLICIT_ACCESS 構造体の配列へのポインター。 この関数は、配列内の情報を pOldSD内の SACL マージすることによって、新しい SACL を作成します (存在する場合)。 pOldSD が NULL場合、または pOldSD の SACL が NULL場合、関数は配列内の情報のみに基づいて新しい SACL を作成します。

pListOfAuditEntries が NULL場合、新しいセキュリティ記述子は pOldSDから SACL 取得します。 この場合、pOldSD が NULL場合、または pOldSD の SACL が NULL場合、新しい SACL は NULL

[in, optional] pOldSD

既存の自己相対 SECURITY_DESCRIPTOR 構造とそれに関連付けられているセキュリティ情報へのポインター。 この関数は、指定した所有者、グループ、アクセス制御、および監査制御の情報をこのセキュリティ記述子の情報とマージすることによって、新しいセキュリティ記述子を構築します。 このパラメーターは NULLできます。

[out] pSizeNewSD

セキュリティ記述子のサイズ (バイト単位) を受け取る変数へのポインター。

[out] pNewSD

新しいセキュリティ記述子へのポインターを受け取る変数へのポインター。 この関数は、新しいセキュリティ記述子にメモリを割り当てます。 返されたバッファーを解放するには、LocalFree 関数を呼び出す必要があります。

戻り値

関数が成功した場合、関数はERROR_SUCCESSを返します。

関数が失敗した場合、WinError.h で定義された 0 以外のエラー コードが返されます。

備考

BuildSecurityDescriptor 関数は、独自のオブジェクトにセキュリティを実装または公開する信頼されたサーバーを対象としています。 この関数は、信頼されたサーバーが必要とする場合があるため、ストリームへのシリアル化とディスクへの格納に適した自己相対セキュリティ記述子を使用します。

手記

aclapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして BuildSecurityDescriptor を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー aclapi.h
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

ACL

クライアント/サーバー のアクセス制御関数の

クライアント/サーバー のアクセス制御の概要

EXPLICIT_ACCESS

LocalFree

SECURITY_DESCRIPTOR

SID の

SetEntriesInAcl

トラスティ