Функция VideoPortMapBankedMemory (video.h)
Функция VideoPortMapBankedMemory устарела и поддерживается только для драйверов Windows NT 4.0 и предыдущих версий. Драйверы Windows 2000 и более поздних версий должны использовать VideoPortMapMemory.
VideoPortMapBankedMemory повторно сопоставляет относительный физический диапазон видеопамять шины в виртуальное адресное пространство соответствующего драйвера дисплея в ответ на VRP с элементом IoControlCode , для IOCTL_VIDEO_SHARE_VIDEO_MEMORY илиIOCTL_VIDEO_MAP_VIDEO_MEMORY.
Синтаксис
VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortMapBankedMemory(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS PhysicalAddress,
PULONG Length,
PULONG InIoSpace,
PVOID *VirtualAddress,
ULONG BankLength,
UCHAR ReadWriteBank,
PBANKED_SECTION_ROUTINE BankRoutine,
PVOID Context
);
Параметры
HwDeviceExtension
Указатель на расширение устройства драйвера мини-порта.
PhysicalAddress
Указывает базовый адрес сопоставляемого диапазона относительно шины.
Length
Указатель на переменную, указывающую общее количество байтов памяти устройства для сопоставления (независимо от размера банка). VideoPortMapBankedMemory возвращает фактический размер сопоставленной памяти, который можно округлить до определяемой системой границы выравнивания в этом параметре. Однако драйверы минипорта и дисплея не могут получить доступ к памяти за пределами диапазона, разделенного входным значением в поле Length.
InIoSpace
Указывает расположение диапазона. Этот параметр может иметь одно из следующих значений:
Значение | Значение |
---|---|
VIDEO_MEMORY_SPACE_DENSE | Устаревшие. |
VIDEO_MEMORY_SPACE_IO | Диапазон находится в системном пространстве ввода-вывода, а не в памяти. |
VIDEO_MEMORY_SPACE_MEMORY | Диапазон находится в памяти, а не в системном пространстве ввода-вывода. |
VIDEO_MEMORY_SPACE_P6CACHE | Процессор объединяет последовательность операций записи и отправляет их в заданную строку кэша. Затем процессор очищает кэш. Этот флаг имеет смысл только в том случае, если VIDEO_MEMORY_SPACE_IO не задан. |
VIDEO_MEMORY_SPACE_USER_MODE | Указывает, что указанный диапазон адресов должен быть сопоставлен с режимом пользователя, а не с режимом ядра. Этот флаг имеет смысл только в том случае, если VIDEO_MEMORY_SPACE_IO не задан. |
VirtualAddress
Дескриптор процесса, с которым должна быть сопоставлена память, или значение NULL. Значение NULL указывает, что драйвер порта должен сопоставить диапазон логической памяти в любом расположении адресного пространства текущего процесса. В противном случае этот дескриптор может быть значением, переданным в VRP соответствующим драйвером дисплея драйвера мини-порта. При возвращении из успешного вызова VideoPortMapBankedMemory сбрасывает переменную на базовый виртуальный адрес, с которым сопоставлен данный PhysicalAddress.
BankLength
Указывает размер банка в байтах.
ReadWriteBank
Если задано значение TRUE , банк имеет значение Read\Write; Если задано значение FALSE , существуют два независимых банка чтения и записи.
BankRoutine
Указатель на предоставленную драйвером функцию HwVidBankedMemoryCallback , вызываемую диспетчером памяти при доступе к новому банку с помощью драйвера дисплея.
Context
Указатель на предоставленный драйвером мини-порт контекст, который передается драйверу при вызове BankRoutine .
Возвращаемое значение
VideoPortMapBankedMemory возвращает NO_ERROR, если заданный логический диапазон был успешно сопоставлен с виртуальным диапазоном пользовательского пространства. В противном случае он может вернуть ERROR_INVALID_PARAMETER.
Комментарии
VideoPortMapBankedMemory выполняется в режиме ядра в том же контексте, что и поток пользовательского режима, который инициировал вызов.
VideoPortMapBankedMemory вызывается драйверами минипорта для эффективного управления устройствами типа x86, которые ограничены сопоставлением буфера кадров в банках. Когда эта подпрограмма возвращается вызывающей объекту, буфер кадров, управляемый драйвером мини-порта, сопоставляется как линейный буфер кадров с адресным пространством запрашивающего процесса (см. параметр VirtualAddress ). Когда осуществляется доступ к адресу в этом сопоставленном пространстве, диспетчер памяти вызывает драйвер мини-порта, чтобы обновить банковский индексный регистр, чтобы указать на новый банк, содержащий текущий адрес. Банковский индекс регистр поддерживается водителем минипорта в BankRoutine. Правильный индекс банка вычисляется диспетчером памяти прозрачно для драйвера дисплея и передается драйверу мини-порта в обратном вызове BankRoutine.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows 2000 и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | video.h (включить Video.h) |
Библиотека | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
См. также раздел
IOCTL_VIDEO_SHARE_VIDEO_MEMORY