AccessCheckAndAuditAlarmW 関数 (securitybaseapi.h)
AccessCheckAndAuditAlarm 関数は、セキュリティ記述子が、呼び出し元スレッドによって偽装されているクライアントに対して、指定されたアクセス権のセットを許可するかどうかを決定します。 セキュリティ記述子に、クライアントに適用される ACE を含む SACL がある場合、この関数はセキュリティ イベント ログに必要な監査メッセージを生成します。
構文
BOOL AccessCheckAndAuditAlarmW(
[in] LPCWSTR SubsystemName,
[in, optional] LPVOID HandleId,
[in] LPWSTR ObjectTypeName,
[in, optional] LPWSTR ObjectName,
[in] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] DWORD DesiredAccess,
[in] PGENERIC_MAPPING GenericMapping,
[in] BOOL ObjectCreation,
[out] LPDWORD GrantedAccess,
[out] LPBOOL AccessStatus,
[out] LPBOOL pfGenerateOnClose
);
パラメーター
[in] SubsystemName
関数を呼び出すサブシステムの名前を指定する null で終わる文字列へのポインター。 この文字列は、関数によって生成されるすべての監査メッセージに表示されます。
[in, optional] HandleId
オブジェクトへのクライアントのハンドルを表す一意の値へのポインター。 アクセスが拒否された場合、システムはこの値を無視します。
[in] ObjectTypeName
作成またはアクセスされるオブジェクトの種類を指定する null で終わる文字列へのポインター。 この文字列は、関数によって生成されるすべての監査メッセージに表示されます。
[in, optional] ObjectName
作成またはアクセスされるオブジェクトの名前を指定する null で終わる文字列へのポインター。 この文字列は、関数によって生成されるすべての監査メッセージに表示されます。
[in] SecurityDescriptor
アクセスがチェックされる SECURITY_DESCRIPTOR 構造体へのポインター。
[in] DesiredAccess
チェックへのアクセス権を指定するアクセス マスク。 このマスクは、汎用アクセス権を含めずに MapGenericMask 関数によってマップされている必要があります。
このパラメーターがMAXIMUM_ALLOWED場合、この関数は GrantedAccess アクセス マスクを設定して、セキュリティ記述子がクライアントに許可する最大アクセス権を示します。
[in] GenericMapping
アクセスがチェックされるオブジェクトに関連付けられている GENERIC_MAPPING 構造体へのポインター。
[in] ObjectCreation
アクセスが許可されたときに呼び出し元のアプリケーションが新しいオブジェクトを作成するかどうかを決定するフラグを指定します。 TRUE の値は、アプリケーションが新しいオブジェクトを作成することを示します。 FALSE の値は、アプリケーションが既存のオブジェクトを開きます。
[out] GrantedAccess
付与されたアクセス権を受け取るアクセス マスク へのポインター。 AccessStatus が FALSE に設定されている場合、関数はアクセス マスクを 0 に設定します。 関数が失敗した場合、アクセス マスクは設定されません。
[out] AccessStatus
アクセス チェックの結果を受け取る変数へのポインター。 セキュリティ記述子でクライアントに対する要求されたアクセス権が許可されている場合、 AccessStatus は TRUE に設定されます。 それ以外の場合、 AccessStatus は FALSE に設定されます。
[out] pfGenerateOnClose
関数が戻るときに監査生成ルーチンによって設定されたフラグへのポインター。 オブジェクト ハンドルが閉じられたときに、このフラグを ObjectCloseAuditAlarm 関数に渡します。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
詳細については、「 AccessCheck のしくみ の概要」を参照してください。
AccessCheckAndAuditAlarm 関数では、呼び出し元プロセスでSE_AUDIT_NAME特権が有効になっている必要があります。 この特権のテストは、スレッドの偽装 トークン ではなく、呼び出し元プロセスのプライマリ トークン に対して実行されます。
呼び出し元のスレッドがクライアントを偽装していない場合、 AccessCheckAndAuditAlarm 関数は失敗します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | securitybaseapi.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |
こちらもご覧ください
AccessCheck
クライアント/サーバー Access Control
クライアント/サーバー Access Control関数
GENERIC_MAPPING
AccessCheck のしくみ
MakeAbsoluteSD
MapGenericMask
ObjectCloseAuditAlarm
ObjectOpenAuditAlarm
ObjectPrivilegeAuditAlarm
PrivilegeCheck
PrivilegedServiceAuditAlarm
SECURITY_DESCRIPTOR