IoGetDiskDeviceObject

NTSTATUS __stdcall IoGetDiskDeviceObject(_DEVICE_OBJECT *FileSystemDeviceObject, _DEVICE_OBJECT **DiskDeviceObject){
  INT64 v2; 
  NTSTATUS v3; 
  UINT8 v6; 
  _VPB *Vpb; 
  _DEVICE_OBJECT *RealDevice; 

  v3 = 0;
  if( FileSystemDeviceObject->Vpb )
    return -1073741811;
  v6 = KeAcquireQueuedSpinLock(9i64, (INT64)DiskDeviceObject, v2);
  Vpb = FileSystemDeviceObject->DeviceObjectExtension->Vpb;
  if( Vpb )
  {
    if( Vpb->ReferenceCount && (Vpb->Flags & 1) != 0 )
    {
      RealDevice = Vpb->RealDevice;
      *DiskDeviceObject = RealDevice;
      ObfReferenceObjectWithTag(RealDevice, 0x746C6644ui64);
    }
    else
    {
      v3 = -1073741202;
    }
  }
  else
  {
    v3 = -1073741811;
  }
  KeReleaseQueuedSpinLock(LockQueueIoVpbLock, v6);
  return v3;
}

Referenced by:

IopAttachDeviceToDeviceStackSafe