PiUEventNotifyDeviceInstanceChange

__int64 __fastcall PiUEventNotifyDeviceInstanceChange(__int64 a1){
  unsigned int v1; 
  unsigned int v3; 
  __int64 *v4; 
  unsigned int v5; 
  _QWORD **v6; 
  _QWORD *v7; 
  __int64 v9; 
  __int64 v10[7]; 

  v1 = 0;
  if( *(_DWORD *)(a1 + 88) == 4 || *(_DWORD *)(a1 + 88) == 10 || *(_DWORD *)(a1 + 88) == 11 )
  {
    ExAcquireFastMutex((PFAST_MUTEX)((char *)&PnpReplaceEvent + 7040));
    PiUEventHashStringIntoBucket((const WCHAR *)(a1 + 120));
    v4 = v10;
    v10[0] = (__int64)&PnpReplaceEvent + 16 * v3 + 7104;
    v5 = 0;
    v10[1] = (__int64)&PnpReplaceEvent + 7312;
    do
    {
      v6 = (_QWORD **)*v4;
      v7 = *(_QWORD **)*v4;
      while( v7 != v6 )
      {
        v9 = (__int64)v7;
        v7 = (_QWORD *)*v7;
        if( v5 || !wcsicmp((const wchar_t *)(a1 + 120), *(const wchar_t **)(*(_QWORD *)(v9 + 24) + 16i64)) )
        {
          if( PiUEventApplyAdditionalFilters(a1, v9) )
            v1 = PiUEventNotifyClient(a1, v9);
        }
      }
      ++v5;
      ++v4;
    }
    while( v5 < 2 );
    KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&PnpReplaceEvent + 7040));
  }
  return v1;
}

Referenced by:

No references.