RawVerifyVolume
NTSTATUS __stdcall RawVerifyVolume(_IO_STACK_LOCATION *IrpSp, _VCB *Vcb){
INT64 v2;
char v5;
char v6;
UINT8 v7;
_IO_SECURITY_CONTEXT *SecurityContext;
_VCB v9;
INT64 v10;
INT64 v11;
UINT8 v12;
v5 = 0;
v6 = 0;
v7 = KeAcquireQueuedSpinLock(9i64, (INT64)Vcb, v2);
SecurityContext = IrpSp->Parameters.SecurityContext;
if( (BYTE4(SecurityContext->SecurityQos) & 1) != 0 )
{
++HIDWORD(SecurityContext[1].SecurityQos);
v5 = 1;
}
KeReleaseQueuedSpinLock(LockQueueIoVpbLock, v7);
if( v5 )
{
ExAcquireFastMutex((PFAST_MUTEX)Vcb + 4);
v9 = Vcb[26];
if( (v9 & 2) == 0 )
{
v6 = 1;
Vcb[26] = v9 | 2;
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)Vcb + 4);
if( v6 )
ExWaitForRundownProtectionReleaseCacheAware(*((_EX_RUNDOWN_REF_CACHE_AWARE **)Vcb + 27));
ExAcquireFastMutex((PFAST_MUTEX)Vcb + 4);
v12 = KeAcquireQueuedSpinLock(9i64, v10, v11);
--HIDWORD(SecurityContext[1].SecurityQos);
KeReleaseQueuedSpinLock(LockQueueIoVpbLock, v12);
*(_DWORD *)(*(_QWORD *)(*((_QWORD *)Vcb + 23) + 16i64) + 48i64) &= ~2u;
if( !RawInitiateDeleteVolume(Vcb, 1ui64, 0i64) )
KeReleaseGuardedMutex((PKGUARDED_MUTEX)Vcb + 4);
}
return -1073741806;
}Referenced by:
RawFileSystemControl