функция обратного вызова 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 |