VideoPortMapBankedMemory-Funktion (video.h)

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

VideoPortMapBankedMemory ordnet einen busrelativen physischen Bereich des Videospeichers dem virtuellen Adressraum des entsprechenden Anzeigetreibers als Reaktion auf einen VRP neu zu, wobei das IoControlCode-Element auf IOCTL_VIDEO_SHARE_VIDEO_MEMORY oder IOCTL_VIDEO_MAP_VIDEO_MEMORY festgelegt 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

Zeiger auf die Geräteerweiterung des Miniporttreibers.

PhysicalAddress

Gibt die busrelative Basisadresse des zuzuordnenden Bereichs an.

Length

Zeiger auf eine Variable, die die Gesamtanzahl der Bytes des zuzuordnenden Gerätespeichers angibt (unabhängig von der Bankgröße). VideoPortMapBankedMemory gibt die tatsächliche Größe des zugeordneten Arbeitsspeichers zurück, die in diesem Parameter auf eine systembestimmte Ausrichtungsgrenze gerundet werden kann. Die Miniport- und Anzeigetreiber können jedoch nicht auf Arbeitsspeicher außerhalb des durch den Eingabewert bei Length getrennten Bereichs zugreifen.

InIoSpace

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

Wert Bedeutung
VIDEO_MEMORY_SPACE_DENSE Veraltet
VIDEO_MEMORY_SPACE_IO Der Bereich befindet sich im System-E/A-Bereich und nicht im Speicherplatz.
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 Sequenz von Schreibvorgängen und sendet sie an eine bestimmte Cachezeile. Der Prozessor löscht dann den Cache. Dieses Flag ist nur dann sinnvoll, wenn VIDEO_MEMORY_SPACE_IO nicht festgelegt ist.
VIDEO_MEMORY_SPACE_USER_MODE Gibt an, dass der angegebene Adressbereich dem Benutzermodus und nicht dem Kernelmodus zugeordnet werden soll. Dieses Flag ist nur dann sinnvoll, wenn VIDEO_MEMORY_SPACE_IO nicht festgelegt ist.

VirtualAddress

Ist ein Handle für den Prozess, dem der Arbeitsspeicher zugeordnet werden muss, oder NULL. NULL gibt an, dass der Porttreiber den logischen Speicherbereich an einer beliebigen Stelle im Adressraum des aktuellen Prozesses zuordnen soll. Andernfalls kann es sich bei diesem Handle um einen Wert sein, der vom entsprechenden Anzeigetreiber des Miniporttreibers in einem VRP übergeben wird. Bei der Rückgabe eines erfolgreichen Aufrufs setzt VideoPortMapBankedMemory die Variable auf die virtuelle Basisadresse zurück, der die angegebene PhysicalAddress zugeordnet wurde.

BankLength

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

ReadWriteBank

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

BankRoutine

Zeiger auf eine vom Treiber bereitgestellte HwVidBankedMemoryCallback-Funktion , die vom Speicher-Manager aufgerufen wird, wenn der Anzeigetreiber auf eine neue Bank zugreift.

Context

Zeiger auf einen vom Miniporttreiber bereitgestellten Kontext, der beim Aufruf der BankRoutine an den Treiber zurückgegeben 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.

Hinweise

VideoPortMapBankedMemory wird im Kernelmodus im selben Kontext ausgeführt wie der Benutzermodusthread, der den Aufruf initiiert hat.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 2000 und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile video.h (einschließen von Video.h)
Bibliothek Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Weitere Informationen

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory