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 は、要求されるアクセスに応じて、 SeTakeOwnershipPrivilegeSeSecurityPrivilege の特権テストを実行する場合があります。 オペレーティング システムの今後のリリースでは、追加の特権テストを実行する可能性があります。

また、このルーチンでは、呼び出し元がオブジェクトの所有者であるかどうかをチェックして、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)

こちらもご覧ください

ACCESS_MASK

GENERIC_MAPPING

IoGetFileObjectGenericMapping

PRIVILEGE_SET

SE_EXPORTS

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeFreePrivileges

SeValidSecurityDescriptor