Поделиться через


Поддержка беспроводного дисплея Miracast

Поддержка стандарта беспроводного дисплея Miracast появилась в Windows 8.1 (WDDM 1.3).

Поддержка Miracast начиная с Windows 10

Начиная с Windows 10 (WDDM 2.0), операционная система поставляется со встроенным стеком Miracast, который может работать на любом GPU. Сведения о стеке Microsoft Miracast и требованиях драйверов и оборудования для поддержки экранов Miracast, начиная с Windows 10, см. в следующей документации:

Разработчики драйверов больше не должны реализовывать пользовательский стек Miracast. Корпорация Майкрософт может удалить поддержку пользовательских стеков Miracast в будущей версии Windows.

Поддержка Miracast в Windows 8.1

Драйверы WDDM 1.3 могут поддерживать Miracast через DDIs Miracast, предоставляемые в Windows 8.1. Остальная часть этой статьи и ее связанные статьи описывают, как обеспечить эту поддержку.

Интерфейсы драйверов устройств в режиме пользователя (DDIs)

Функции обратного вызова беспроводного дисплея, вызываемые драйверами пользовательского режима Miracast

В следующей таблице перечислены функции пользовательского режима беспроводного дисплея (Miracast), которые реализует операционная система. Эти функции могут вызывать только драйверы пользовательского режима Miracast для Windows 8.1. Указатели на функции обратного вызова Miracast возвращаются в MIRACAST_CALLBACKS структуре.

Function Description
PFN_GET_NEXT_CHUNK_DATA Предоставляет сведения о следующем блоке кодирования Miracast, который был сообщен подсистеме ядра графики DirectX, когда тип прерывания DXGK_INTERRUPT_TYPE DXGK_INTERRUPT_MIRACAST_CHUNK_PROCESSING_COMPLETE.
PFN_MIRACAST_IO_CONTROL Вызывается драйвером отображения в пользовательском режиме для отправки мини-порта драйвера мини-порта в режиме ядра синхронным запросом управления ввода-вывода.
PFN_REGISTER_DATARATE_NOTIFICATIONS Вызывается драйвером пользовательского режима для регистрации в операционной системе для получения уведомлений о качестве обслуживания (QoS) и текущей пропускной способности сети подключения Miracast.
PFN_REPORT_SESSION_STATUS Вызывается драйвером отображения пользовательского режима, чтобы сообщить о состоянии текущего сеанса Miracast connected.
PFN_REPORT_STATISTIC Вызывается драйвером отображения пользовательского режима, чтобы сообщить статистику ссылки Miracast на операционную систему.

Функции беспроводного отображения, реализованные драйверами пользовательского режима Windows 8.1 Miracast

В следующей таблице перечислены функции беспроводного дисплея (Miracast), которые должен реализовать драйвер пользовательского режима Windows 8.1 Miracast. Этот тип драйвера выполняется в автономной библиотеке DLL.

В ответ на вызов операционной системы функции QueryMiracastDriverInterface драйвер пользовательского режима Miracast должен предоставить указатели на эти функции в структуре MIRACAST_DRIVER_INTERFACE . Исключением является pfnDataRateNotify, который имеет указатель, объявленный в RegisterForDataRateNotifications.

Function Description
PFN_CREATE_MIRACAST_CONTEXT Вызывается операционной системой для создания контекста Miracast в пользовательском режиме.
PFN_DESTROY_MIRACAST_CONTEXT Вызывается операционной системой для уничтожения контекста Miracast в пользовательском режиме.
PFN_HANDLE_KMD_MESSAGE Вызывается операционной системой для обработки сообщения в асинхронном режиме ядра, которое получает драйвер пользовательского режима Miracast, когда драйвер мини-порта дисплея вызывает функцию DxgkCbMiracastSendMessage .
PFN_DATARATE_NOTIFICATION Вызывается операционной системой для уведомления драйвера пользовательского режима Miracast о том, что скорость передачи сетевого канала Miracast изменилась. Эта функция регистрируется в операционной системе при вызове функции RegisterForDataRateNotifications .
QUERY_MIRACAST_DRIVER_INTERFACE Вызывается операционной системой для запроса интерфейса драйвера в пользовательском режиме Miracast, MIRACAST_DRIVER_INTERFACE.
PFN_START_MIRACAST_SESSION Вызывается операционной системой для запуска подключенного сеанса Miracast.
PFN_STOP_MIRACAST_SESSION Вызывается операционной системой для запуска подключенного сеанса Miracast, который ранее был запущен вызовом функции StartMiracastSession .

В следующей таблице перечислены структуры и перечисления пользовательского режима, используемые в Windows 8.1 Miracast, отображают интерфейсы драйверов устройств (DDIs).

Struct/Enum Description
MIRACAST_CALLBACKS Содержит указатели на функции обратного вызова среды выполнения беспроводного дисплея (Miracast), которые может вызывать драйвер пользовательского режима Miracast.
MIRACAST_CHUNK_DATA Содержит кодирование данных блока для использования при вызове функции GetNextChunkData в драйвере пользовательского режима.
MIRACAST_CHUNK_ID Хранит сведения, определяющие блок кодирования беспроводного дисплея (Miracast).
MIRACAST_CHUNK_INFO Содержит сведения о заданном блоке кодирования беспроводного дисплея (Miracast).
MIRACAST_CHUNK_TYPE Указывает типы данных блока беспроводного дисплея (Miracast), которые должны обрабатываться.
MIRACAST_DATARATE_STATS Содержит сведения, используемые в функции pfnDataRateNotify для скорости передачи битов аудио-видеокодировщика и неудачных или повторных кадров Wi-Fi.
MIRACAST_DRIVER_INTERFACE Содержит указатели на функции беспроводного дисплея (Miracast), которые реализует драйвер пользовательского режима Miracast.
MIRACAST_PROTOCOL_EVENT Указывает типы событий протокола беспроводного дисплея (Miracast), которые должен сообщать драйвер отображения в пользовательском режиме.
MIRACAST_SESSION_INFO Содержит сведения о подключенном сеансе беспроводного дисплея (Miracast).
MIRACAST_STATISTIC_DATA Содержит данные статистики Miracast, которые отчеты драйвера в пользовательском режиме отображаются в операционной системе.
MIRACAST_STATISTIC_TYPE Указывает типы данных статистики Miracast, создаваемые драйвером отображения в пользовательском режиме.
MIRACAST_STATUS Указывает типы состояния, которые драйвер отображения пользовательского режима использует для отчета о состоянии подключения Miracast.
MIRACAST_WFD_CONNECTION_STATS Содержит сведения о скорости скорости подключения Wi-Fi Direct.

Следующие структуры и перечисления в пользовательском режиме поддерживают отображение Miracast и были обновлены для Windows 8.1:

  • DISPLAYCONFIG_TARGET_BASE_TYPE (новое)
  • DISPLAYCONFIG_VIDEO_SIGNAL_INFO (добавлена дочерняя структура AdditionalSignalInfo)
  • DISPLAYCONFIG_DEVICE_INFO_TYPE (добавлена константная DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE)
  • D3DKMDT_VIDEO_SIGNAL_INFO (добавлена дочерняя структура AdditionalSignalInfo)
  • DISPLAYCONFIG_DEVICE_INFO_TYPE (добавлена константная DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE)

DDIs в режиме ядра

Интерфейс обратного вызова беспроводного дисплея (Miracast)

Интерфейс обратного вызова Miracast содержит функции, которые подсистема графического ядра DirectX реализует для поддержки беспроводных (Miracast) дисплеев в Windows 8.1.

В следующей таблице перечислены эти функции в режиме ядра, которые вызываются драйверами мини-порта WDDM 1.3:

Function Description
DXGKCB_MIRACAST_SEND_MESSAGE Отправляет асинхронное сообщение в драйвер отображения пользовательского режима.
DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK Вызывается в режиме ядра, когда сообщение, отправленное драйверу пользовательского режима с вызовом функции DxgkCbMiracastSendMessage , завершается или отменяется.
DXGKCB_MIRACAST_REPORT_CHUNK_INFO Вызывается мини-драйвером отображения, чтобы сообщить сведения о блоке кодирования.

Драйвер мини-порта отображения должен заполнить указатели на эти функции в структуре DXGK_MIRACAST_DISPLAY_CALLBACKS .

Интерфейс беспроводного дисплея (Miracast)

В следующей таблице перечислены функции в режиме ядра, которые отображают драйверы мини-порта для поддержки беспроводных дисплеев (Miracast) в Windows 8.1. Указатели на функции интерфейса Miracast возвращаются в DXGK_MIRACAST_INTERFACE структуре.

Function Description
DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK Вызывается в режиме ядра, когда сообщение, отправленное драйверу пользовательского режима с вызовом функции DxgkCbMiracastSendMessage , завершается или отменяется.
DXGKDDI_MIRACAST_CREATE_CONTEXT Создает контекст режима ядра для устройства Miracast.
DXGKDDI_MIRACAST_DESTROY_CONTEXT Уничтожает экземпляр устройства Miracast.
DXGKDDI_MIRACAST_HANDLE_IO_CONTROL Вызывается операционной системой, чтобы запросить, чтобы драйвер минипорта отображал синхронный запрос управления ввода-вывода в ответ на вызов драйвера в режиме пользователя к функции MiracastIoControl.
DXGKDDI_MIRACAST_QUERY_CAPS Запрашивает возможности Miracast текущего адаптера отображения. Операционная система вызывает эту функцию только при первом запуске адаптера отображения, а затем сохраняет возвращаемые возможности.

Эти структуры и перечисления в режиме ядра поддерживают отображение Miracast и были обновлены для Windows 8.1:

  • DXGK_MIRACAST_CAPS
  • D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY (добавлена константа D3DKMDT_VOT_MIRACAST)
  • D3DKMDT_VIDEO_SIGNAL_INFO (добавлена дочерняя структура AdditionalSignalInfo)
  • DXGK_CHILD_STATUS (добавлена дочерняя структура Miracast)
  • DXGK_CHILD_STATUS_TYPE (добавлена константа StatusMiracast)
  • DXGKARGCB_NOTIFY_INTERRUPT_DATA (добавлена дочерняя структура MiracastEncodeChunkCompleted)