HeadlessTerminalAddResources
INT64 __fastcall HeadlessTerminalAddResources(
_CM_RESOURCE_LIST *Resources,
UINT64 ResourceListSize,
UINT8 TranslatedList,
_CM_RESOURCE_LIST **NewList,
UINT64 *NewListSize){
UINT64 v8;
INT64 result;
_CM_RESOURCE_LIST *PoolWithTag;
_CM_RESOURCE_LIST *v11;
LARGE_INTEGER v12;
v12.QuadPart = 0i64;
v8 = (unsigned int)ResourceListSize;
if( !HeadlessGlobals || (HeadlessGlobals[6] & 0x1000) != 0 )
{
*NewList = 0i64;
result = 0i64;
LABEL_3:
*(_DWORD *)NewListSize = 0;
return result;
}
*(_DWORD *)NewListSize = ResourceListSize + 36;
if( (int)ResourceListSize + 36 < (unsigned int)ResourceListSize
|| (PoolWithTag = (_CM_RESOURCE_LIST *)ExAllocatePoolWithTag(
PagedPool,
(unsigned int)(ResourceListSize + 36),
0x736C6448ui64),
*NewList = PoolWithTag,
(v11 = PoolWithTag) == 0i64) )
{
result = 3221225626i64;
goto LABEL_3;
}
memmove((UINT8 *)PoolWithTag, (UINT8 *)Resources, v8);
if( TranslatedList )
{
HalTranslateBusAddress(0i64, 0i64, (MEMORY_CACHING_TYPE *)HeadlessGlobals[8]);
v11 = *NewList;
}
else
{
v12.QuadPart = HeadlessGlobals[8];
}
++*(_DWORD *)v11;
*(_QWORD *)((char *)v11 + v8) = 1i64;
*(_DWORD *)((char *)v11 + v8 + 12) = 1;
*(_DWORD *)((char *)v11 + v8 + 8) = 0;
*(_DWORD *)((char *)v11 + v8 + 16) = 66049;
*(LARGE_INTEGER *)((char *)v11 + v8 + 20) = v12;
result = 0i64;
*(_DWORD *)((char *)v11 + v8 + 28) = 8;
return result;
}Referenced by:
IoReportHalResourceUsage