PiDmGetObjectListCallback

NTSTATUS __stdcall PiDmGetObjectListCallback(PI_DM_OBJECT *Object, VOID *Context, UINT8 *StopEnumeration){
  __int64(__fastcall *v5)(PI_DM_OBJECT *, _QWORD, char *); 
  NTSTATUS v6; 
  __int64 v8; 
  unsigned int v9; 
  unsigned int v10; 
  UINT64 dwFlags; 
  char v12; 

  *StopEnumeration = 0;
  v5 = *(__int64(__fastcall **)(PI_DM_OBJECT *, _QWORD, char *))Context;
  v6 = 0;
  v12 = 0;
  if( !v5 || (v6 = v5(Object, *((_QWORD *)Context + 1), &v12), v6 >= 0) && v12 )
  {
    v8 = -1i64;
    do
      ++v8;
    while( *(_WORD *)(*((_QWORD *)Object + 2) + 2 * v8) );
    v9 = *((_DWORD *)Context + 6);
    v10 = v8 + 1;
    *((_DWORD *)Context + 7) += v10;
    if( v9 > v10 )
    {
      LODWORD(dwFlags) = 2304;
      RtlStringCchCopyExW(*((WCHAR **)Context + 2), v9, *((WCHAR **)Object + 2), 0i64, 0i64, dwFlags);
      *((_QWORD *)Context + 2) += 2i64 * v10;
      *((_DWORD *)Context + 6) -= v10;
    }
  }
  return v6;
}

Referenced by:

No references.