IoGetAttachedDeviceReference

DEVICE_OBJECT *__stdcall IoGetAttachedDeviceReference(DEVICE_OBJECT *DeviceObject){
  WORK_QUEUE_TYPE v1; 
  void *v2; 
  unsigned __int8 CurrentIrql; 
  __int64 v5; 
  __int64 i; 
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  v5 = *((_QWORD *)KeGetPcr() + 5) + 160i64;
  KxAcquireQueuedSpinLock((PIO_WORKITEM)v5, *(PIO_WORKITEM_ROUTINE *)(v5 + 8), v1, v2);
  for( i = *((_QWORD *)DeviceObject + 3); i; i = *(_QWORD *)(i + 24) )
    DeviceObject = (DEVICE_OBJECT *)i;
  if( ObpTraceFlags )
    ObpPushStackInfo((INT64)DeviceObject - 48, 1, 1i64, 1953261124i64);
  ObpIncrPointerCount((volatile INT64 *)DeviceObject - 6);
  KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)(*((_QWORD *)KeGetPcr() + 5) + 160i64));
  __writecr8(CurrentIrql);
  return DeviceObject;
}

Referenced by:

CmpGetVolumeClusterSize
CmpVolumeManagerGetContextForFile
HalpQueryPccInterface
IoBuildPoDeviceNotifyList
IoShutdownSystem
IopFilterResourceRequirementsCall
VfIrpSendSynchronousIrp
WmipForwardWmiIrp
WmipGetFilePDO
WmipRegisterDevice