PiDmGetCachedKeyIndex

VOID __stdcall PiDmGetCachedKeyIndex(
        const _PI_DM_CACHED_PROPERTY_KEY *CachedKeys,
        _SIZE_T CachedKeyCount,
        const _DEVPROPKEY *PropertyKey,
        INT64 a4){
  __int64 v4; 
  unsigned int pid; 
  __int64 v8; 
  __int64 v9; 

  v4 = 0i64;
  if( CachedKeyCount )
  {
    pid = PropertyKey->pid;
    do
    {
      v8 = *(_QWORD *)&CachedKeys[6 * v4];
      if( pid == *(_DWORD *)(v8 + 16) )
      {
        v9 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)v8;
        if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)v8 )
          v9 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)(v8 + 8);
        if( !v9 )
          break;
      }
      v4 = (unsigned int)(v4 + 1);
    }
    while( (unsigned int)v4 < CachedKeyCount );
  }
}

Referenced by:

PiDmListUpdateAggregationCountWorker
PiDmObjectCreate
PiDmObjectGetCachedObjectPropertyData
PiDmObjectGetCachedObjectReference
PiDmObjectProcessPropertyChange
PiDmObjectUpdateCachedObjectProperty