<Return[A]><Top>

AccessCheckAndAuditAlarm

Declare Function Api_AccessCheckAndAuditAlarm& Lib "advapi32" Alias "AccessCheckAndAuditAlarmA" (ByVal sNm$, hId As Any, ByVal otNm$, ByVal oNm$, sd As SECURITY_DESCRIPTOR, ByVal dAcc&, gm As GENERIC_MAPPING, ByVal oCre&, GrAcc&, ByVal AcSt&, ByVal Close&)

Declare Function AccessCheckAndAuditAlarm Lib "advapi32" Alias "AccessCheckAndAuditAlarmA" (ByVal SubsystemName As String, HandleId As Any, ByVal ObjectTypeName As String, ByVal ObjectName As String, SecurityDescriptor As SECURITY_DESCRIPTOR, ByVal DesiredAccess As Long, GenericMapping As GENERIC_MAPPING, ByVal ObjectCreation As Long, GrantedAccess As Long, ByVal AccessStatus As Long, ByVal pfGenerateOnClose As Long) As Long

セキュリティ記述子が、呼び出し側のスレッドによって偽装されたクライアントに対して、指定されたアクセス権セットを許可しているかどうかを調べる。セキュリティ記述子が SACL(システムアクセス制御リスト)を備えていて、クライアントに適用される ACE(アクセス制御エントリ)が SACL 内に含まれている場合、必要な監査メッセージをすべてセキュリティイベントログ内に生成する。
現在、アラームはサポートされていない。

パラメータ

SubsystemName
    この関数を呼び出すサブシステムの名前を表す、NULL で終わる文字列へのポインタを指定する。この文字列は、この関数が生成するす

    べての監査メッセージ内に登場する。
HandleId
    クライアントのオブジェクトハンドルを表す一意の 32 ビット値へのポインタを指定する。アクセスが拒否された場合、システムはこの値を無視す

    る。
ObjectTypeName
    作成またはアクセスしたいオブジェクトタイプを指定する、NULL で終わる文字列へのポインタを指定する。この文字列は、この関数が生成

    するすべての監査メッセージ内に登場する。
ObjectName
    作成またはアクセスしたいオブジェクトの名前を指定する、NULL で終わる文字列へのポインタを指定する。この文字列は、この関数が生

    成するすべての監査メッセージ内に登場する。
SecurityDescriptor
    アクセス確認の対象となる SECURITY_DESCRIPTOR 構造体へのポインタを指定する。
DesiredAccess
    確認したいアクセス権を指定するアクセスマスクを指定する。汎用のアクセス権利を含まないよう、MapGenericMask 関数を使ってこのマス

    クをマップしておかなければならない。
    このパラメータが MAXIMUM_ALLOWED である場合、この関数は GrantedAccess アクセスマスクを設定し、セキュリティ記述子がクライ

    アントに最大のアクセス権を認めていることを示す。
GenericMapping
    アクセスを確認したいオブジェクトに関連付けられている GENERIC_MAPPING 構造体へのポインタを指定する。
ObjectCreation
    アクセスが許可された場合、呼び出し側アプリケーションが新しいオブジェクトを作成するかどうかを表すフラグを指定する。TRUE を指定する

    と、アプリケーションが新しいオブジェクトを作成することを表す。FALSE を指定すると、アプリケーションが既存のオブジェクトを開くことを表

    す。
GrantedAccess
    許可されたアクセス権を受け取るアクセスマスクへのポインタを指定する。AccessStatus が FALSE を返した場合、この関数はアクセスマス

    クを 0 に設定する。この関数が失敗した場合、アクセスマスクを設定しない。
AccessStatus
    アクセス確認の結果を受け取る変数へのポインタを指定する。セキュリティ記述子がクライアントに対して、要求されたアクセス権を許可して

    いる場合は、AccessStatus は TRUE を返す。それ以外の場合、AccessStatus は FALSE を返す。
pfGenerateOnClose
    関数が制御を返したときに、監査生成ルーチンが設定したフラグへのポインタを指定する。オブジェクトハンドルを閉じるときに、このフラグを

    ObjectCloseAuditAlarm 関数へ渡す。

戻り値
    この関数が成功した場合、戻り値は 0 以外の値である。
    この関数が失敗した場合、戻り値は 0 である。拡張エラー情報を取得するには、GetLastError を呼び出す。

解説
    AccessCheckAndAuditAlarm 関数を使うには、呼び出し側のプロセスは SE_AUDIT_NAME 特権を有効にしておかなければならない。こ

    の特権に関するテストは、スレッドの偽装トークンではなく、呼び出し側のプロセスのプライマリトークンに対して実施される。
    呼び出し側のスレッドがクライアントを偽装していない場合、AccessCheckAndAuditAlarm 関数は失敗する。