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