Поделиться через


Функция 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

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

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory