IOCTL_VIDEO_SHARE_VIDEO_MEMORY IOCTL (ntddvdeo.h)
Этот IOCTL вызывается процессом, который будет совместно использовать видеопамяти пользовательского режима в качестве линейного буфера кадров. Драйверы минипорта обрабатывают этот IOCTL путем сопоставления буфера кадров с адресным пространством вызывающего объекта с помощью VideoPortMapBankedMemory. В противном случае IOCTL совпадает с IOCTL_VIDEO_MAP_VIDEO_MEMORY.
Этот запрос является модальным и немодальным: драйвер минипорта должен возвращать размер буфера кадров в видеопамяти, а размер и расположение буфера кадров могут изменяться в разных режимах (модальная характеристика), но последующая операция в режиме установки (в тот же режим) не должна приводить к изменению расположения видеопамяти (немодальная характеристика).
Этот IOCTL является только DCI.
Основной код
Входной буфер
VRP InputBuffer содержит структуру VIDEO_SHARE_MEMORY, указывающую дескриптор процесса, сопоставляющий буфер кадров, а также запрошенный размер представления и смещение в общей памяти. Размер представления и смещение не должны превышать размер памяти адаптера.
Выходной буфер
Драйвер мини-порта возвращает структуру VIDEO_SHARE_MEMORY_INFORMATION в VRP OutputBuffer. Эти выходные данные содержат виртуальный адрес, по которому сопоставляется видеопамять, размер представления в байтах сопоставленной памяти и смещение в представлении.
Блок состояния
Если драйвер минипорта успешно сопоставляет память, он устанавливает для элемента Informationструктуры STATUS_BLOCKзначение sizeof(VIDEO_SHARE_MEMORY_INFORMATION); в противном случае драйвер мини-порта устанавливает для этого элемента значение 0.
Требования
Требование | Значение |
---|---|
Заголовок | ntddvdeo.h |