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