RawVerifyVolume
INT64 __fastcall RawVerifyVolume(INT64 a1, INT64 a2){
char v4;
char v5;
KIRQL v6;
__int64 v7;
int v8;
KIRQL v9;
v4 = 0;
v5 = 0;
v6 = KeAcquireQueuedSpinLock(9ui64);
v7 = *(_QWORD *)(a1 + 8);
if( (*(_BYTE *)(v7 + 4) & 1) != 0 )
{
++*(_DWORD *)(v7 + 28);
v4 = 1;
}
KeReleaseQueuedSpinLock(9ui64, v6);
if( v4 )
{
ExAcquireFastMutex((FAST_MUTEX *)(a2 + 224));
v8 = *(_DWORD *)(a2 + 104);
if( (v8 & 2) == 0 )
{
v5 = 1;
*(_DWORD *)(a2 + 104) = v8 | 2;
}
KeReleaseGuardedMutex((_FAST_MUTEX *)(a2 + 224));
if( v5 )
ExWaitForRundownProtectionReleaseCacheAware(*(PEX_RUNDOWN_REF_CACHE_AWARE *)(a2 + 216));
ExAcquireFastMutex((FAST_MUTEX *)(a2 + 224));
v9 = KeAcquireQueuedSpinLock(9ui64);
--*(_DWORD *)(v7 + 28);
KeReleaseQueuedSpinLock(9ui64, v9);
*(_DWORD *)(*(_QWORD *)(*(_QWORD *)(a2 + 184) + 16i64) + 48i64) &= ~2u;
if( !RawInitiateDeleteVolume(a2, 1i64, 0i64) )
KeReleaseGuardedMutex((_FAST_MUTEX *)(a2 + 224));
}
return 3221225490i64;
}Referenced by:
RawFileSystemControl