Метод IDXGIOutput1::D uplicateOutput (dxgi1_2.h)

Создает интерфейс дублирования рабочего стола из интерфейса IDXGIOutput1 , который представляет выходные данные адаптера.

Синтаксис

HRESULT DuplicateOutput(
  [in]  IUnknown               *pDevice,
  [out] IDXGIOutputDuplication **ppOutputDuplication
);

Параметры

[in] pDevice

Указатель на интерфейс устройства Direct3D, который можно использовать для обработки образа рабочего стола. Это устройство должно быть создано на основе адаптера, к которому подключен выход.

[out] ppOutputDuplication

Указатель на переменную, которая получает новый интерфейс IDXGIOutputDuplication .

Возвращаемое значение

Функция DuplicateOutput возвращает:

  • S_OK, если DuplicateOutput успешно создал интерфейс дублирования рабочего стола.
  • E_INVALIDARG по одной из следующих причин:
    • Указанное устройство (pDevice) является недопустимым, не было создано на правильном адаптере или не было создано из IDXGIFactory1 (или более поздней версии интерфейса фабрики DXGI, наследуемого от IDXGIFactory1).
    • Вызывающее приложение уже дублирует эти выходные данные рабочего стола.
  • E_ACCESSDENIED, если у приложения нет прав доступа к текущему образу рабочего стола. Например, доступ к защищенному рабочему столу может получить только приложение, которое выполняется на LOCAL_SYSTEM.
  • DXGI_ERROR_UNSUPPORTED, если созданный интерфейс IDXGIOutputDuplication не поддерживает текущий режим рабочего стола или сценарий. Например, режимы рабочего стола 8bpp и без DWM не поддерживаются. Если duplicateOutput завершается сбоем с DXGI_ERROR_UNSUPPORTED, приложение может дождаться системного уведомления о переключениях рабочего стола и изменениях режима, а затем снова вызвать DuplicateOutput после получения такого уведомления. Дополнительные сведения см . в EVENT_SYSTEM_DESKTOPSWITCH и уведомлениях об изменении режима (WM_DISPLAYCHANGE).
  • DXGI_ERROR_NOT_CURRENTLY_AVAILABLE, достигла ли DXGI ограничения на максимальное число одновременных дублирующихся приложений (по умолчанию — четыре). Таким образом, вызывающее приложение не может создавать интерфейсы дублирования рабочего стола, пока другие приложения не закроют.
  • DXGI_ERROR_SESSION_DISCONNECTED, если сбой DuplicateOutput , так как сеанс в данный момент отключен.
  • Другие коды ошибок описаны в DXGI_ERROR разделе.

Обновление платформы для Windows 7: В Windows 7 или Windows Server 2008 R2 с установленным Обновлением платформы для Windows 7сбой DuplicateOutput с E_NOTIMPL. Дополнительные сведения об Обновлении платформы для Windows 7 см. в разделе Обновление платформы для Windows 7.

Комментарии

Если приложение хочет дублировать весь рабочий стол, оно должно создать интерфейс дублирования рабочего стола для каждого активного выхода на рабочем столе. Этот интерфейс не предоставляет явного способа синхронизации времени каждого выходного изображения. Вместо этого приложение должно использовать метку времени для каждого вывода, а затем определить, как объединять изображения.

Для успешного выполнения DuplicateOutput необходимо создать pDevice из IDXGIFactory1 или более поздней версии интерфейса фабрики DXGI, которая наследуется от IDXGIFactory1.

Если текущий режим является стереорежимом, интерфейс дублирования рабочего стола предоставляет изображение только для левого стереоснимка.

По умолчанию только четыре процесса могут использовать интерфейс IDXGIOutputDuplication одновременно в рамках одного сеанса. Процесс может иметь только один интерфейс дублирования рабочего стола на одном выходе рабочего стола; однако этот процесс может иметь интерфейс дублирования рабочего стола для каждого выхода, который является частью рабочего стола.

Для повышения производительности рассмотрите возможность использования DuplicateOutput1.

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header dxgi1_2.h
Библиотека Dxgi.lib

См. также раздел

DuplicateOutput1

IDXGIOutput1