IopCombineCmResourceList
_CM_RESOURCE_LIST *__stdcall IopCombineCmResourceList(VOID *ResourceListA, _CM_RESOURCE_LIST *ResourceListB){
_CM_RESOURCE_LIST *v5;
__int64 v6;
int v7;
size_t v8;
VOID **PoolWithTag;
if( !ResourceListA )
return ResourceListB;
if( !ResourceListB )
return(_CM_RESOURCE_LIST *)ResourceListA;
v5 = 0i64;
v6 = (unsigned int)PnpDetermineResourceListSize(ResourceListA);
v7 = PnpDetermineResourceListSize(ResourceListB);
if( (_DWORD)v6 && v7 )
{
v8 = v7 - 4;
PoolWithTag = ExAllocatePoolWithTag(1ui64, (unsigned int)(v7 - 4 + v6), 538996816i64);
v5 = (_CM_RESOURCE_LIST *)PoolWithTag;
if( PoolWithTag )
{
memmove(PoolWithTag, ResourceListA, v6);
memmove((char *)v5 + v6, ResourceListB->List, v8);
v5->Count += ResourceListB->Count;
}
}
return v5;
}Referenced by:
IopAllocateLegacyBootResources