IoWMIQueryAllDataMultiple

NTSTATUS __stdcall IoWMIQueryAllDataMultiple(
        VOID **DataBlockObjectList,
        UINT64 ObjectCount,
        UINT64 *InOutBufferSize,
        VOID *OutBuffer){
  unsigned int v4; 
  unsigned int v8; 
  NTSTATUS AllDataMultiple; 
  UINT64 v11; 
  __int64 v12; 
  char v13[80]; 

  v4 = ObjectCount;
  memset(v13, 0i64, 0x48u);
  LODWORD(v12) = 0;
  if( !DataBlockObjectList || !v4 || !InOutBufferSize )
    return -1073741811;
  v8 = *(_DWORD *)InOutBufferSize;
  if( !OutBuffer || v8 < 0x48 )
  {
    OutBuffer = v13;
    v8 = 72;
  }
  LODWORD(v11) = v8;
  AllDataMultiple = WmipQueryAllDataMultiple(
                      v4,
                      (__int64)DataBlockObjectList,
                      0i64,
                      0,
                      (tagWNODE_ALL_DATA *)OutBuffer,
                      v11,
                      0i64,
                      (__int64)&v12);
  if( AllDataMultiple >= 0 )
  {
    if( (*((_DWORD *)OutBuffer + 11) & 0x20) != 0 )
    {
      *(_DWORD *)InOutBufferSize = *((_DWORD *)OutBuffer + 12);
    }
    else
    {
      *(_DWORD *)InOutBufferSize = v12;
      if( OutBuffer != v13 )
        return AllDataMultiple;
    }
    return -1073741789;
  }
  return AllDataMultiple;
}

Referenced by:

No references.