SeExamineGlobalSacl
VOID __stdcall SeExamineGlobalSacl(
_UNICODE_STRING *ObjectType,
_ACL *ResourceSacl,
VOID *Token,
UINT64 DesiredAccess,
UINT8 AccessGranted,
UINT8 *GenerateAudit,
UINT8 *GenerateAlarm){
UINT8 *v7;
UINT8 v8;
unsigned int v9;
_ETHREAD *CurrentThread;
_ACL *v14;
char v15;
char v16[8];
_SEP_GLOBAL_SACL *Match;
v7 = GenerateAudit;
v8 = 0;
v9 = DesiredAccess;
if( GenerateAudit && !*GenerateAudit )
{
Match = 0i64;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceSharedLite((UINT64)&unk_140CEC530, 1);
if( SepRmGlobalSaclFind(&Match, 0i64, ObjectType, 0) >= 0 )
{
v14 = (_ACL *)*((_QWORD *)Match + 3);
if( v14 )
{
LOBYTE(GenerateAudit) = 0;
v16[0] = 0;
SeExamineSacl(v14, ResourceSacl, Token, v9, AccessGranted, (UINT8 *)&GenerateAudit, (UINT8 *)v16);
if( *v7 || (v15 = 0, (_BYTE)GenerateAudit) )
v15 = 1;
*v7 = v15;
if( GenerateAlarm )
{
if( *GenerateAlarm || v16[0] )
v8 = 1;
*GenerateAlarm = v8;
}
}
}
ExReleaseResourceLite(&unk_140CEC530);
KeLeaveCriticalRegion();
}
}Referenced by:
CmpExamineSaclForAuditEvent
SeAdtRegistryValueChangedAuditAlarm
SeObjectReferenceAuditAlarm
SeOpenObjectAuditAlarmForNonObObject
SeOpenObjectAuditAlarmWithTransaction
SeOpenObjectForDeleteAuditAlarmWithTransaction