Функция 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 возвращает фактический размер сопоставленной памяти, который можно округить до границы выравнивания, определяемой системой, в этом параметре. Однако минипорт и драйверы отображения не могут получить доступ к памяти за пределами диапазона, разделенного входным значением по длине.
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, если задано значение FALSE, существует два независимых банка чтения и записи.
BankRoutine
Указатель на функцию HwVidBankedMemoryCallback вызываемой диспетчером памяти, когда новый банк обращается к драйверу отображения.
Context
Указатель на контекст, предоставленный драйвером мини-порта, который передается драйверу при вызове BankRoutine.
Возвращаемое значение
VideoPortMapBankedMemory возвращает NO_ERROR, если заданный логический диапазон успешно сопоставлен с виртуальным диапазоном пространства пользователя. В противном случае он может вернуть ERROR_INVALID_PARAMETER.
Замечания
VideoPortMapBankedMemory выполняется в режиме ядра в том же контексте, что и поток пользовательского режима, инициирующий вызов.
VideoPortMapBankedMemory вызывается драйверами минипорта для эффективного управления устройствами типа x86, которые ограничены сопоставлением буфера кадров в банках. Когда эта подпрограмма возвращается вызывающему объекту, буфер кадра, управляемый драйвером мини-порта, сопоставляется как линейный буфер кадров в адресное пространство процесса запроса (см. параметр VirtualAddress). Когда доступ осуществляется к адресу в сопоставленном пространстве, диспетчер памяти вызывает минипорт-драйвер, чтобы обновить регистр индекса банка, чтобы указать новый банк, содержащий указанный в данный момент адрес. Реестр индексов банка поддерживается драйвером минипорта в BankRoutine. Правильный индекс банка вычисляется диспетчером памяти прозрачно для драйвера отображения и передается в драйвер минипорта в обратном вызове в BankRoutine.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows 2000 и более поздних версиях операционных систем Windows. |
целевая платформа | Настольный |
заголовка | video.h (include Video.h) |
библиотеки | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
См. также
IOCTL_VIDEO_SHARE_VIDEO_MEMORY