SeAccessCheck 関数 (wdm.h)
SeAccessCheck は、要求されたアクセス権を、セキュリティ記述子とオブジェクト所有者によって保護されたオブジェクトに付与できるかどうかを決定します。
構文
BOOLEAN SeAccessCheck(
[in] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
[in] BOOLEAN SubjectContextLocked,
[in] ACCESS_MASK DesiredAccess,
[in] ACCESS_MASK PreviouslyGrantedAccess,
[out] PPRIVILEGE_SET *Privileges,
[in] PGENERIC_MAPPING GenericMapping,
[in] KPROCESSOR_MODE AccessMode,
[out] PACCESS_MASK GrantedAccess,
[out] PNTSTATUS AccessStatus
);
パラメーター
[in] SecurityDescriptor
アクセスされるオブジェクトを保護するセキュリティ記述子を記述する SECURITY_DESCRIPTOR 構造体へのポインター。
[in] SubjectSecurityContext
サブジェクトのキャプチャされたセキュリティ コンテキストを指定する不透明な SECURITY_SUBJECT_CONTEXT 構造体へのポインター。
[in] SubjectContextLocked
ユーザーの件名コンテキストがロックされているかどうかを示すブール値。再びロックする必要がないようにします。
[in] DesiredAccess
呼び出し元が取得しようとしているアクセス権の ACCESS_MASK ビットマスクを指定します。 呼び出し元がMAXIMUM_ALLOWEDビットを設定すると、ルーチンはすべての DACL チェックを実行します。 ただし、 SeAccessCheck は、呼び出し元がACCESS_SYSTEM_SECURITYまたはWRITE_OWNER ビットを設定して明示的に要求しない限り、特権チェックを行いません。
[in] PreviouslyGrantedAccess
特権 を保持 した結果として付与されたアクセス権など、既に付与されているアクセス権のACCESS_MASKビットマスクを指定します。
[out] Privileges
アクセス検証の一部として使用される PRIVILEGE_SET 構造体のアドレスに設定する呼び出し元が指定した変数へのポインター。または、このパラメーターに NULL を指定できます。 返されるバッファーがある場合は、呼び出し元が SeFreePrivileges を使用して解放する必要があります。
[in] GenericMapping
このオブジェクト型に関連付けられている GENERIC_MAPPING 構造体へのポインター。 この値は、各GENERIC_XXX アクセス権によって暗黙的に示される特定のアクセス権を 指定します。
[in] AccessMode
チェックで使用するアクセス モード (UserMode または KernelMode) を指定します。
[out] GrantedAccess
許可されたアクセスを示す、返されたアクセス マスクへのポインター。 呼び出し元がMAXIMUM_ALLOWEDを指定し、 SecurityDescriptor の DACL が NULL の場合、ルーチンは GENERIC_ALLと呼び出し元が明示的に要求する追加のアクセスを返します。
[out] AccessStatus
アクセスが拒否された理由を示す状態値へのポインター。
戻り値
アクセスが許可されている場合、 SeAccessCheck は TRUE を返します。
注釈
SeAccessCheck は、要求されるアクセスに応じて、 SeTakeOwnershipPrivilege と SeSecurityPrivilege の特権テストを実行する場合があります。 オペレーティング システムの今後のリリースでは、追加の特権テストを実行する可能性があります。
また、このルーチンでは、呼び出し元がオブジェクトの所有者であるかどうかをチェックして、WRITE_DACまたはREAD_CONTROLアクセスを許可することもできます。
このルーチンが FALSE を返す場合、呼び出し元は返された AccessStatus を戻り値として使用する必要があります。 つまり、呼び出し元は、STATUS_ACCESS_DENIEDまたはその他の特定のSTATUS_XXX 値の戻り値をハードコーディングしないようにする必要があります。
セキュリティとアクセス制御の詳細については、ドライバー開発者向けの Windows セキュリティ モデルと、Microsoft Windows SDKのこれらのトピックに関するドキュメントを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |