cloneGroupId MSDN CCD API, когда установлен не работает - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу расширить и дублировать мои мониторы с помощью MSDN CCD API .Для этого я написал небольшое тестовое приложение для случая с двумя мониторами.Вставка приведенного ниже кода.

hr = GetDisplayConfigBufferSizes(QDC_ONLY_ACTIVE_PATHS | QDC_VIRTUAL_MODE_AWARE, &cPath, &cMode);
std::vector<DISPLAYCONFIG_PATH_INFO> pathArray1(cPath);
std::vector<DISPLAYCONFIG_MODE_INFO> modeArray1(cMode);
hr = QueryDisplayConfig(QDC_ONLY_ACTIVE_PATHS | QDC_VIRTUAL_MODE_AWARE, &cPath, &pathArray1[0], &cMode, &modeArray1[0], NULL);

pathArray1[0].flags |= DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE;
pathArray1[1].flags |= DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE;

pathArray1[0].targetInfo.targetModeInfoIdx = DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID;
pathArray1[0].targetInfo.desktopModeInfoIdx = DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID;

pathArray1[1].targetInfo.targetModeInfoIdx = DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID;
pathArray1[1].targetInfo.desktopModeInfoIdx = DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID;

pathArray1[0].sourceInfo.sourceModeInfoIdx = DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID;
pathArray1[0].sourceInfo.cloneGroupId = 1;

pathArray1[1].sourceInfo.sourceModeInfoIdx = DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID;
pathArray1[1].sourceInfo.cloneGroupId = 0;

hr = SetDisplayConfig(cPath, &pathArray1[0], 0, NULL, SDC_APPLY | SDC_TOPOLOGY_SUPPLIED | SDC_ALLOW_PATH_ORDER_CHANGES);

Проблема в том, что когда я указываю cloneGroupId , SetDisplayConfig всегда заканчивается 0x00000057: параметр неверен .Когда для cloneFroupId установлено значение DISPLAYCONFIG_PATH_CLONE_GROUP_INVALID , функция пропускает и расширяет все мониторы.

Что я делаю неправильно?

...