PnpHandleEnumerateHandlesAgainstDeviceObject

__int64 __fastcall PnpHandleEnumerateHandlesAgainstDeviceObject(__int64 a1, __int64 a2, __int64 a3){
  unsigned int v3; 
  _EPROCESS *v6; 
  _HANDLE_TABLE *v8; 
  _LIST_ENTRY *NextProcess; 
  _EX_RUNDOWN_REF *v10; 
  __int128 v12; 
  __int128 v13; 

  v3 = 0;
  v12 = 0i64;
  v6 = 0i64;
  v13 = 0i64;
  while( 1 )
  {
    NextProcess = PsGetNextProcess(v6);
    v10 = (_EX_RUNDOWN_REF *)NextProcess;
    if( !NextProcess )
      break;
    v8 = ObReferenceProcessHandleTable((_EPROCESS *)NextProcess);
    if( v8 )
    {
      *(_QWORD *)&v12 = a1;
      *((_QWORD *)&v12 + 1) = v10;
      *(_QWORD *)&v13 = a2;
      *((_QWORD *)&v13 + 1) = a3;
      v3 = (unsigned __int8)ExEnumHandleTable(
                              v8,
                              (__int64(__fastcall *)(_HANDLE_TABLE *, _HANDLE_TABLE_ENTRY *, _EXHANDLE, __int64))PnpHandleProcessWalkWorker,
                              (__int64)&v12,
                              0i64);
      ExReleaseRundownProtection(v10 + 139);
      if( v3 )
      {
        ObfDereferenceObjectWithTag(v10, 0x6E457350ui64);
        return v3;
      }
    }
    v6 = (_EPROCESS *)v10;
  }
  return v3;
}

Referenced by:

PnpHandleEnumerateHandlesAgainstPdoStack