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


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

См. также

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory