функция обратного вызова DXGKDDI_MIRACAST_HANDLE_IO_CONTROL (dispmprt.h)

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

Синтаксис

DXGKDDI_MIRACAST_HANDLE_IO_CONTROL DxgkddiMiracastHandleIoControl;

NTSTATUS DxgkddiMiracastHandleIoControl(
  [in]  PVOID DriverContext,
  [in]  PVOID MiracastContext,
  [in]  ULONG InputBufferSize,
  [in]  VOID *pInputBuffer,
  [in]  ULONG OutputBufferSize,
  [out] VOID *pOutputBuffer,
  [out] ULONG *BytesReturned
)
{...}

Параметры

[in] DriverContext

Дескриптор для блока контекста, связанного с видеоадаптером. Функция DxgkDdiAddDevice драйвера мини-порта дисплея ранее предоставляла этот дескриптор подсистеме графического ядра DirectX.

[in] MiracastContext

Контекст устройства Miracast, предоставляемый операционной системой. Этот контекст был предоставлен драйвером мини-порта дисплея при вызове функции DxgkDdiMiracastCreateContext .

[in] InputBufferSize

Предоставляется операционной системой в виде размера входного буфера в байтах, на который указывает pInputBuffer. Это значение возникло как параметр InputBufferSize функции MiracastIoControl в пользовательском режиме.

[in] pInputBuffer

Предоставляется операционной системой в качестве указателя на входной буфер. Это значение возникло как параметр InputBufferSize функции MiracastIoControl в пользовательском режиме.

InputBufferSize указывает размер буфера.

[in] OutputBufferSize

Предоставляется операционной системой в виде размера (в байтах) выходного буфера, на который указывает pOutputBuffer.

Это значение возникло как параметр OutputBufferSize функции MiracastIoControl в пользовательском режиме.

[out] pOutputBuffer

Предоставляется операционной системой в качестве указателя на выходной буфер. Это значение возникло как параметр pOutputBuffer функции MiracastIoControl в пользовательском режиме.

OutBufferSize указывает размер буфера.

[out] BytesReturned

Предоставляется операционной системой в качестве указателя на буфер, содержащий значение типа ULONG, которое представляет собой количество байтов, возвращенных драйвером мини-порта дисплея в буфере, на который указывает pOutputBuffer.

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

При успешном выполнении возвращает STATUS_SUCCESS . В противном случае возвращается один из кодов ошибок, определенных в ntstatus.h.

Комментарии

Операционная система гарантирует, что вызов DxgkDdiMiracastIoControl происходит в том же пространстве процессов, что и запрос MiracastIoControl в пользовательском режиме.

Несмотря на то, что операционная система просто копирует значения размеров входных и выходных буферов из соответствующих параметров MiracastIoControl, драйвер мини-порта дисплея отвечает за проверку размеров буфера перед использованием буферов. Кроме того, драйвер должен выполнять операции проверки в вызывающем блоке try/except с помощью функций ProbeForRead и (или ) ProbeForWrite , чтобы проверить любую память в пользовательском режиме, на которую указывают входные буферы.

Эта операция управления вводом-выводом обрабатывается синхронно с вызовом функции MiracastIoControl в пользовательском режиме.

Синхронизации

Операционная система группует функции DxgkDdiMiracastCreateContext, DxgkDdiMiracastDetext и DxgkDdiMiracastIoControl как класс Miracast .

Уровень потоков и синхронизации для этой функции задается тем, как драйвер пользовательского режима задает параметр HardwareAccess при вызове функции MiracastIoControl :

  • Если параметр HardwareAccess имеет значение FALSE, операционная система гарантирует, что DxgkDdiMiracastIoControl будет следовать режиму синхронизации второго уровня, как определено в разделе Потоки и синхронизация второго уровня. DxgkDdiMiracastIoControl можно вызывать, когда другие классы уровня 0, 1 или не Miracast функций уровня 2 вызываются в другом контексте потока. Однако одновременно можно вызывать только одну из функций класса Miracast уровня 2.
  • Если параметр HardwareAccess имеет значение TRUE, dxgkDdiMiracastIoControl следует режиму синхронизации третьего уровня, как определено в разделе Потоки и синхронизация третьего уровня. Обратите внимание, что очистка GPU создаст значительные затраты на обработку.

Требования

Требование Значение
Минимальная версия клиента Windows 8.1
Минимальная версия сервера Windows Server 2012 R2
Целевая платформа Персональный компьютер
Верхняя часть dispmprt.h (включая Dispmprt.h)
IRQL PASSIVE_LEVEL

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

DxgkDdiAddDevice

DxgkDdiMiracastCreateContext

MiracastIoControl

ProbeForRead

ProbeForWrite