PiDmGetObjectList

INT64 __fastcall PiDmGetObjectList(UINT64 a1, INT64 a2, INT64 a3, _WORD *a4, UINT64 a5, _DWORD *a6){
  int v7; 
  int v8; 
  __int64 v10[3]; 
  __int64 v11; 
  v10[0] = a2;
  v10[1] = a3;
  v10[2] = (__int64)a4;
  *a6 = 0;
  v11 = (unsigned int)a5;
  if( (_DWORD)a5 )
    *a4 = 0;
  v7 = PiDmEnumObjectsWithCallback(
         a1,
         (__int64(__fastcall *)(void *, __int64, char *))PiDmGetObjectListCallback,
         (__int64)v10);
  if( v7 >= 0 )
  {
    v8 = HIDWORD(v11);
    *a6 = HIDWORD(v11);
    if( v8 )
    {
      *a6 = v8 + 1;
      if( a4 && (unsigned int)a5 >= v8 + 1 )
        a4[v8] = 0;
      else
        return(unsigned int)-1073741789;
    }
  }
  return(unsigned int)v7;
}

Referenced by:

PiDmGetCmObjectListFromCache
PiPnpRtlObjectActionCallback