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