IopReportBootResources
NTSTATUS __stdcall IopReportBootResources(
_ARBITER_REQUEST_SOURCE ArbiterRequestSource,
PDEVICE_OBJECT DeviceObject,
PCM_RESOURCE_LIST BootResources){
_CM_RESOURCE_LIST *v4;
size_t v6;
void *DeviceNode;
size_t v9;
VOID **v10;
VOID **PoolWithTag;
void *v12;
v4 = BootResources;
v6 = PnpDetermineResourceListSize(BootResources);
if( !v6 )
return 0;
if( !DeviceObject )
{
DeviceNode = 0i64;
LABEL_10:
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x18ui64, 538996816i64);
if( !PoolWithTag )
{
if( DeviceNode )
{
v12 = (void *)*((_QWORD *)DeviceNode + 68);
if( v12 )
{
ExFreePoolWithTag(v12, 0);
*((_QWORD *)DeviceNode + 68) = 0i64;
}
}
return -1073741670;
}
if( DeviceNode )
v4 = (_CM_RESOURCE_LIST *)*((_QWORD *)DeviceNode + 68);
PoolWithTag[2] = v4;
PoolWithTag[1] = DeviceObject;
*PoolWithTag = IopInitReservedResourceList;
IopInitReservedResourceList = PoolWithTag;
return 0;
}
DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
if( (*((_DWORD *)DeviceNode + 99) & 1) == 0 )
return IopAllocateBootResources(ArbiterRequestSource, DeviceObject, v4);
if( *((_QWORD *)DeviceNode + 68) )
goto LABEL_10;
v9 = v6;
v10 = ExAllocatePoolWithTag(1ui64, v6, 538996816i64);
*((_QWORD *)DeviceNode + 68) = v10;
if( v10 )
{
memmove(v10, v4, v9);
goto LABEL_10;
}
return -1073741670;
}Referenced by:
No references.