IopIsFileOpenOrSection
bool __fastcall IopIsFileOpenOrSection(_EX_PUSH_LOCK *a1, volatile signed __int64 *a2, __int64 a3, __int64 *a4){
__int64 v4;
bool v6;
unsigned __int64 v8;
_OBJECT_TYPE *v9;
int v11[10];
v4 = *a4;
v6 = 0;
v8 = (*(__int64 *)a2 >> 16) & 0xFFFFFFFFFFFFFFF0ui64;
v9 = (_OBJECT_TYPE *)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ *(unsigned __int8 *)(v8 + 0x18) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)(WORD1(*a2) & 0xFFF0) >> 8)];
if( v9 == (_OBJECT_TYPE *)IoFileObjectType )
{
if( v4 == v8 + 48 )
{
v6 = *((_BYTE *)a4 + 8) == 0;
}
else if( *(_QWORD *)(v4 + 24) == *(_QWORD *)(((*(__int64 *)a2 >> 16) & 0xFFFFFFFFFFFFFFF0ui64) + 0x48) )
{
v6 = 1;
}
}
else if( v9 == MmSectionObjectType && *(_QWORD *)(v4 + 40) )
{
v6 = MmSectionToSectionObjectPointers((VOID *)(v8 + 48)) == *(_SECTION_OBJECT_POINTERS **)(v4 + 40);
}
_InterlockedExchangeAdd64(a2, 1ui64);
_InterlockedOr(v11, 0);
if( a1[6]._bf_0 )
ExfUnblockPushLock(&a1[6]._bf_0, 0i64);
return v6;
}Referenced by:
No references.