DrvDbGetObjectSubKeyList

INT64 __fastcall DrvDbGetObjectSubKeyList(
        INT64 a1,
        VOID *a2,
        INT64 a3,
        INT64 a4,
        _WORD *a5,
        UINT64 a6,
        UINT64 *a7,
        INT64 a8){
  int v12; 
  int v13; 
  unsigned int v14; 
  int v16; 
  _DWORD result[136]; 
  int v18; 
  *(_DWORD *)a7 = 0;
  if( a5 && (_DWORD)a6 )
    *a5 = 0;
  memset((INT64)result, 0i64);
  v16 = a8;
  *(_QWORD *)&result[129] = a3;
  *(_QWORD *)&result[131] = a4;
  *(_QWORD *)&result[133] = a5;
  result[135] = a6;
  v18 = 0;
  v12 = PnpCtxRegEnumKeyWithCallback(a1, a2, (__int64)DrvDbGetObjectSubKeyCallback, (__int64)&v16);
  if( v12 >= 0 )
  {
    v13 = v18;
    *(_DWORD *)a7 = v18;
    if( v13 )
    {
      v14 = v13 + 1;
      *(_DWORD *)a7 = v14;
      if( a5 && v14 <= (unsigned int)a6 )
        a5[v14 - 1] = 0;
      else
        return(unsigned int)-1073741789;
    }
    else
    {
      return 0;
    }
  }
  return(unsigned int)v12;
}

Referenced by:

DrvDbGetObjectList