IovpExamineDevObjForwarding

UINT64 __stdcall IovpExamineDevObjForwarding(_DEVICE_OBJECT *DeviceBeingCalled, _DEVICE_OBJECT *DeviceLastCalled){
  VOID *UpperDeviceObjectWithTag; 
  VOID *v5; 
  _DEVOBJ_RELATION DeviceObjectRelation; 

  DeviceObjectRelation = 0;
  if( !DeviceLastCalled )
  {
    UpperDeviceObjectWithTag = IovUtilGetUpperDeviceObjectWithTag((INT64)DeviceBeingCalled);
    if( !UpperDeviceObjectWithTag )
      return 1i64;
    ObfDereferenceObjectWithTag(UpperDeviceObjectWithTag, 0x49667256ui64);
    return 4i64;
  }
  IovUtilRelateDeviceObjects(DeviceBeingCalled, DeviceLastCalled, &DeviceObjectRelation);
  switch( DeviceObjectRelation )
  {
    case 0:
      return 2i64;
    case 1:
      return 3i64;
    case 2:
      return 2i64;
    case 3:
    case 4:
      return 3i64;
  }
  if( DeviceObjectRelation != 5 )
    return 2i64;
  v5 = IovUtilGetUpperDeviceObjectWithTag((INT64)DeviceBeingCalled);
  if( !v5 )
    return 5i64;
  ObfDereferenceObjectWithTag(v5, 0x49667256ui64);
  return 6i64;
}

Referenced by:

IovpCallDriver1