Freigeben über


VideoPortMapBankedMemory-Funktion (video.h)

Die VideoPortMapBankedMemory Funktion ist veralteteund wird nur für Windows NT 4.0 und frühere Treiber unterstützt. Windows 2000- und höher-Treiber müssen VideoPortMapMemory-verwenden.

VideoPortMapBankedMemory einen busrelativen physischen Videospeicherbereich in den virtuellen Adressraum des entsprechenden Anzeigetreibers als Reaktion auf einen VRP umordnet, wobei der IoControlCode- Member auf IOCTL_VIDEO_SHARE_VIDEO_MEMORY oder IOCTL_VIDEO_MAP_VIDEO_MEMORYfestgelegt ist.

Syntax

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
);

Parameter

HwDeviceExtension

Zeigen Sie auf die Geräteerweiterung des Miniporttreibers.

PhysicalAddress

Gibt die busrelative Basisadresse des zuzuordnenden Bereichs an.

Length

Zeigen Sie auf eine Variable, die die Gesamtzahl der Bytes des zuzuordnenden Gerätespeichers angibt (unabhängig von der Bankgröße). VideoPortMapBankedMemory gibt die tatsächliche Größe des zugeordneten Speichers zurück, der in diesem Parameter auf eine vom System festgelegte Ausrichtungsgrenze gerundet werden kann. Die Miniport- und Anzeigetreiber können jedoch nicht auf den Speicher außerhalb des Bereichs zugreifen, der durch den Eingabewert bei Lengthgetrennt ist.

InIoSpace

Gibt die Position des Bereichs an. Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
VIDEO_MEMORY_SPACE_DENSE Obsolet
VIDEO_MEMORY_SPACE_IO Der Bereich befindet sich im System-E/A-Bereich und nicht im Arbeitsspeicher.
VIDEO_MEMORY_SPACE_MEMORY Der Bereich befindet sich im Arbeitsspeicher und nicht im System-E/A-Bereich.
VIDEO_MEMORY_SPACE_P6CACHE Der Prozessor aggregiert eine Abfolge von Schreibvorgängen und sendet sie an eine bestimmte Cachezeile. Der Prozessor löscht dann den Cache. Dieses Kennzeichen ist nur dann sinnvoll, wenn VIDEO_MEMORY_SPACE_IO nicht festgelegt ist.
VIDEO_MEMORY_SPACE_USER_MODE Gibt an, dass der angegebene Adressbereich nicht im Kernelmodus, sondern im Benutzermodus zugeordnet werden soll. Dieses Kennzeichen ist nur dann sinnvoll, wenn VIDEO_MEMORY_SPACE_IO nicht festgelegt ist.

VirtualAddress

Ist ein Handle für den Prozess, dem der Speicher zugeordnet werden muss, oder NULL-. NULL- gibt an, dass der Porttreiber den logischen Speicherbereich an einem beliebigen Ort im Adressraum des aktuellen Prozesses zuordnen soll. Andernfalls kann dieser Handle ein Wert sein, der in einem VRP- vom entsprechenden Anzeigetreiber des Miniporttreibers übergeben wird. Beim Zurückgeben von einem erfolgreichen Aufruf setzt VideoPortMapBankedMemory die Variable auf die virtuelle Basisadresse zurück, der sie die angegebene PhysicalAddress-zugeordnet hat.

BankLength

Gibt die Größe einer Bank in Byte an.

ReadWriteBank

Wenn dieser Wert auf TRUE festgelegt ist, die Bank "Read\Write" lautet; wenn sie auf FALSE festgelegt ist, gibt es zwei unabhängige Lese- und Schreibbanken.

BankRoutine

Zeiger auf eine vom Treiber bereitgestellte HwVidBankedMemoryCallback--Funktion, die vom Memory Manager aufgerufen werden soll, wenn vom Anzeigetreiber auf eine neue Bank zugegriffen wird.

Context

Zeiger auf einen vom Miniporttreiber bereitgestellten Kontext, der an den Treiber übergeben wird, wenn die BankRoutine- aufgerufen wird.

Rückgabewert

VideoPortMapBankedMemory gibt NO_ERROR zurück, wenn der angegebene logische Bereich erfolgreich einem virtuellen Benutzerbereich zugeordnet wurde. Andernfalls kann ERROR_INVALID_PARAMETER zurückgegeben werden.

Bemerkungen

VideoPortMapBankedMemory im Kernelmodus innerhalb desselben Kontexts wie der Benutzermodusthread ausgeführt wird, der den Aufruf initiiert hat.

VideoPortMapBankedMemory wird von Miniporttreibern aufgerufen, um x86-Typgeräte effizient zu verwalten, die auf die Zuordnung eines Framepuffers in Banken beschränkt sind. Wenn diese Routine an den Aufrufer zurückkehrt, wird der vom Miniporttreiber verwaltete Framepuffer als linearer Framepuffer im Adressraum des anfordernden Prozesses zugeordnet (siehe VirtualAddress Parameter). Wenn ein Zugriff auf eine Adresse in diesem zugeordneten Bereich erfolgt, ruft der Speicher-Manager den Miniporttreiber auf, um das Bankindexregister zu aktualisieren, um auf eine neue Bank zu verweisen, die die aktuell referenzierte Adresse enthält. Das Bankindexregister wird vom Miniporttreiber in BankRoutineverwaltet. Der richtige Bankindex wird vom Memory Manager transparent an einen Anzeigetreiber berechnet und an den Miniporttreiber im Rückruf an BankRoutineübergeben.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows 2000 und höheren Versionen von Windows-Betriebssystemen.
Zielplattform- Desktop
Header- video.h (video.h einschließen)
Library Videoprt.lib
DLL- Videoprt.sys
IRQL- PASSIVE_LEVEL

Siehe auch

HwVidBankedMemoryCallback-

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory-

VideoPortUnmapMemory