ExpQueryMemoryTopologyInformation

INT64 __stdcall ExpQueryMemoryTopologyInformation(VOID *Buffer, UINT64 BufferSize, UINT64 *ReturnSize){
  UINT64 v4; 
  int NodeChannelRanges; 
  UINT64 v7; 
  __int64 Size[4]; 
  void *Src; 
  v4 = (unsigned int)BufferSize;
  Size[0] = 0i64;
  Src = 0i64;
  NodeChannelRanges = MmGetNodeChannelRanges(&Src, (UINT64 *)Size);
  if( NodeChannelRanges >= 0 )
  {
    v7 = Size[0];
    *(_DWORD *)ReturnSize = Size[0];
    if( v7 > 0xFFFFFFFF )
    {
      NodeChannelRanges = -1073741670;
    }
    else if( v7 > v4 )
    {
      NodeChannelRanges = -1073741789;
    }
    else
    {
      memmove((UINT8 *)Buffer, (UINT8 *)Src, v7);
      NodeChannelRanges = 0;
    }
  }
  if( Src )
    ExFreePoolWithTag(Src, 0);
  return(unsigned int)NodeChannelRanges;
}

Referenced by:

ExpQuerySystemInformation