SeAssignSecurityEx 関数 (wdm.h)
SeAssignSecurityEx ルーチンは、次の省略可能なパラメーターを指定して、新しいオブジェクトの自己相対セキュリティ記述子を構築します。 オブジェクトの親ディレクトリのセキュリティ記述子、オブジェクトの明示的なセキュリティ記述子、およびオブジェクト型。
構文
NTSTATUS SeAssignSecurityEx(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] ULONG AutoInheritFlags,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
パラメーター
[in, optional] ParentDescriptor
作成される新しいオブジェクトを含む親オブジェクトの SECURITY_DESCRIPTOR へのポインター。 ParentDescriptor は NULL にすることも、 NULL システム アクセス制御リスト (SACL) または NULL 随意アクセス制御リスト (DACL) を使用することもできます。
[in, optional] ExplicitDescriptor
新しいオブジェクトに適用される明示的な SECURITY_DESCRIPTOR へのポインター。 ExplicitDescriptor には NULL を指定するか、 NULL SACL または NULL DACL を指定できます。
[out] NewDescriptor
返された SECURITY_DESCRIPTORへのポインターを受け取ります。 SeAssignSecurityEx は、ページングされたメモリ プールからバッファーを割り当てます。
[in, optional] ObjectType
作成されるオブジェクトの種類の GUID へのポインター。 オブジェクトに GUID がない場合は、 ObjectType をNULL に設定する必要があります。
[in] IsDirectoryObject
新しいオブジェクトがディレクトリ オブジェクトかどうかを指定します。 IsDirectoryObject が TRUE に設定されている場合、新しいオブジェクトはディレクトリ オブジェクトになります。それ以外の場合、新しいオブジェクトはディレクトリ オブジェクトではありません。
[in] AutoInheritFlags
ParentDescriptor で指定されたアクセス制御リスト (ACL) のアクセス制御エントリ (ACE) に適用される自動継承の種類を指定します。 AutoInheritFlags では、 NewDescriptor の特権チェック、所有者チェック、既定の所有者とグループの設定も制御します。 AutoInheritFlags は、次の 1 つ以上の値の論理 OR に設定する必要があります。
値 | 意味 |
---|---|
SEF_DACL_AUTO_INHERIT | ParentDescriptor の DACL の ACE は、ExplicitDescriptorで指定された明示的な ACE に加えて、NewDescripto r によって継承されます。 |
SEF_SACL_AUTO_INHERIT | ParentDescriptor の SACL 内の ACE は、ExplicitDescriptor で指定された明示的な ACE に加えて、NewDescriptor によって継承されます。 |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor は、 ObjectType で指定されたオブジェクト型の既定の記述子です。 ACE が ParentDescriptor から継承される場合、 ExplicitDescriptor は使用されません。 |
SEF_AVOID_PRIVILEGE_CHECK | 特権チェックは行われません。 このフラグは、更新する必要がある各子に対する特権チェックを回避するため、自動継承で役立ちます。 |
SEF_AVOID_OWNER_CHECK | 所有者の確認は行われません。 |
SEF_DEFAULT_OWNER_FROM_PARENT |
所有者が ExplicitDescriptor で指定されている場合、このフラグは使用されず、NewDescriptor の所有者は ExplictDescriptor で指定された所有者に設定されます。
所有者が ExplicitDescriptor で指定されていない場合、このフラグは次のように使用されます。フラグが設定されている場合、NewDescriptor の所有者は ParentDescriptor の所有者に設定されます。 それ以外の場合、NewDescriptor の所有者は SubjectContext で指定された所有者に設定されます。 |
SEF_DEFAULT_GROUP_FROM_PARENT |
ExplicitDescriptor でグループが指定されている場合、このフラグは使用されず、NewDescriptor のグループは ExplictDescriptor で指定されたグループに設定されます。
ExplicitDescriptor でグループが指定されていない場合、このフラグは次のように使用されます。フラグが設定されている場合、NewDescriptor のグループは ParentDescriptor のグループに設定されます。 それ以外の場合、NewDescriptor のグループは SubjectContext で指定されたグループに設定されます。 |
システム ACL と随意 ACL の割り当てを次の表に示します。
既定以外の明示的記述子 (1) | 既定の明示的記述子 (2) | Null 明示的な記述子 | |
---|---|---|---|
ACL は親記述子 (3) から継承されます。 | 継承された ACL と明示的 ACL(5)(6) の両方を割り当てます。 | 継承された ACL を割り当てます。 | 継承された ACL を割り当てます。 |
ACL は親記述子 (4) から継承されません。 | 既定以外の ACL を割り当てます。 | 既定の ACL を割り当てます。 | ACL を割り当てない。 |
割り当てに関する注釈
- SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT フラグが指定されていません。
- SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT フラグが指定されています。
- ACL の自動継承フラグが指定されています (SEF_DACL_AUTO_INHERITまたはSEF_SACL_AUTO_INHERIT)。
- ACL の自動継承フラグが指定されていません。
- AceFlags メンバーにINHERITED_ACE ビットが設定されている ACE は、割り当てられたセキュリティ記述子にコピーされません。
- 親記述子から継承された ACE は、明示的な記述子で指定された ACE の後に追加されます。
[in] SubjectContext
オブジェクトを作成しているサブジェクトのセキュリティ コンテキストへのポインター。 SubjectContext は、既定の所有者、プライマリ グループ、随意アクセス制御など、新しいオブジェクトの既定のセキュリティ情報を取得するために使用されます。
[in] GenericMapping
オブジェクト固有の権限に対する各汎用権限間のマッピングを指定するアクセス マスク値の配列へのポインター。
[in] PoolType
このパラメーターは使用されません。 新しいセキュリティ記述子を保持するバッファーは、常にページ プールから割り当てられます。
戻り値
SeAssignSecurityEx は 、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
割り当てが成功しました。 |
|
新しいセキュリティ記述子の所有者として提供される SID は、呼び出し元がオブジェクトの所有者として割り当てる権限を持つ SID ではありません。 |
|
呼び出し元には、指定した SACL を明示的に割り当てるために必要な特権 (SeSecurityPrivilege) がありません。 |
注釈
SeAssignSecurityEx は 、 SeAssignSecurity の基本的な操作を次の方法で拡張します。
- ObjectType は、必要に応じてオブジェクトの種類を指定します。 オブジェクト固有の継承は、オブジェクト固有の ACE の次のメンバーによって制御されます: Flags、 InheritedObjectType、 Header.AceFlags。
- AutoInheritFlags は、使用される ACE の自動継承の種類を指定します。 AutoInheritFlags では、 NewDescriptor の特権チェック、所有者チェック、既定の所有者とグループの設定も制御します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport) |