CmGetDeviceRelationsList

NTSTATUS __stdcall CmGetDeviceRelationsList(
        HPNPCTX *hPnpCtx,
        const WCHAR *DeviceInstance,
        UINT64 CmRelationType,
        WCHAR *Buffer,
        UINT64 BufferLength,
        UINT64 *RequiredLength,
        UINT64 Flags){
  unsigned int v7; 
  NTSTATUS result; 
  _UNICODE_STRING DestinationString; 

  v7 = 4;
  DestinationString = 0i64;
  switch( (_DWORD)CmRelationType )
  {
    case 4:
      v7 = 0;
      break;
    case 8:
      v7 = 1;
      break;
    case 0x10:
      v7 = 2;
      break;
    case 0x20:
      v7 = 3;
      break;
    case 0x40:
      break;
    default:
      return -1073741811;
  }
  result = RtlInitUnicodeStringEx(&DestinationString, (WCHAR *)DeviceInstance);
  if( result >= 0 )
    return NtPlugPlayGetDeviceRelationsList(
             (__int64)hPnpCtx,
             (__int64)&DestinationString,
             v7,
             (__int64)Buffer,
             BufferLength,
             (__int64)RequiredLength);
  return result;
}

Referenced by:

CmGetDeviceMappedPropertyFromComposite
CmGetMatchingFilteredDeviceListWorker
PiCMGetDeviceIdList