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
IOCTL_VIDEO_SHARE_VIDEO_MEMORY