CmGetDeviceContainerMappedPropertyKeys

__int64 __fastcall CmGetDeviceContainerMappedPropertyKeys(
        __int64 a1,
        __int64 a2,
        __int64 a3,
        __int64 a4,
        __int64 a5,
        unsigned int a6,
        unsigned int *a7){
  DEVPROPKEY **v7; 
  __int64 result; 
  unsigned int v9; 
  DEVPROPKEY *v10; 
  __int64 v11; 
  __int64 v12; 
  unsigned int v13; 
  unsigned int v14; 
  unsigned int v15; 
  v7 = &off_140007960;
  result = 0i64;
  *a7 = 0;
  v9 = 0;
  while( 1 )
  {
    v10 = *v7;
    if( *v7 )
    {
      if( a5 )
      {
        v11 = *a7;
        if( (unsigned int)v11 < a6 )
        {
          v12 = 5 * v11;
          *(_GUID *)(a5 + 4 * v12) = v10->fmtid;
          *(_DWORD *)(a5 + 4 * v12 + 16) = v10->pid;
        }
      }
      v13 = *a7;
      v14 = -1;
      v15 = *a7 + 1;
      if( v15 >= *a7 )
        v14 = *a7 + 1;
      *a7 = v14;
      result = v15 < v13 ? 0xC0000095 : 0;
      if( v15 < v13 )
        break;
    }
    ++v9;
    v7 += 2;
    if( v9 >= 4 )
      goto LABEL_10;
  }
  *a7 = 0;
LABEL_10:
  if( (int)result >= 0 )
    return a6 < *a7 ? 0xC0000023 : 0;
  return result;
}

Referenced by:

CmDeleteDeviceContainerWorker
PnpDispatchDeviceContainer