ExpEnumerateCallback
__int64 __fastcall ExpEnumerateCallback(__int64 a1, _QWORD *a2){
UINT64 *v2;
unsigned __int8 v5;
__int64 **v6;
unsigned __int64 v7;
__int64 v8;
__int64 v9;
__int64 v10;
__int64 *i;
v2 = (UINT64 *)(a1 + 8);
v5 = KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 8));
v6 = (__int64 **)(a1 + 16);
v7 = v5;
v8 = 0i64;
v9 = *a2 & -(__int64)(*a2 != 0i64);
if( *a2 )
v6 = (__int64 **)*a2;
v10 = a1 + 16;
for( i = *v6; i != (__int64 *)v10; i = (__int64 *)*i )
{
if( !*((_BYTE *)i + 44) )
{
++*((_DWORD *)i + 10);
v8 = i[3];
*a2 = i;
break;
}
}
if( v9 )
{
--*(_DWORD *)(v9 + 40);
if( *(_BYTE *)(v9 + 44) )
{
if( !*(_DWORD *)(v9 + 40) )
KeSetEvent((PRKEVENT)((char *)&ExBootDevicesRemovedEvent + 64), 0, 0);
}
}
KxReleaseSpinLock(v2);
__writecr8(v7);
return v8;
}Referenced by:
No references.