Condividi tramite


Funzione VideoPortMapBankedMemory (video.h)

La funzione VideoPortMapBankedMemory è obsoletaed è supportata solo per i driver di Windows NT 4.0 e precedenti. I driver windows 2000 e versioni successive devono usare VideoPortMapMemory.

VideoPortMapBankedMemory esegue il mapping di un intervallo fisico relativo al bus di memoria video nello spazio indirizzi virtuale del driver di visualizzazione corrispondente in risposta a una VRP con il membro IoControlCode impostato su IOCTL_VIDEO_SHARE_VIDEO_MEMORY o IOCTL_VIDEO_MAP_VIDEO_MEMORY.

Sintassi

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

Parametri

HwDeviceExtension

Puntatore all'estensione del dispositivo del driver miniport.

PhysicalAddress

Specifica l'indirizzo di base relativo al bus dell'intervallo di cui eseguire il mapping.

Length

Puntatore a una variabile che specifica il numero totale di byte di memoria del dispositivo di cui eseguire il mapping (indipendentemente dalle dimensioni bancarie). VideoPortMapBankedMemory restituisce le dimensioni effettive della memoria mappata, che può essere arrotondata a un limite di allineamento determinato dal sistema, in questo parametro. Tuttavia, i driver miniport e display non possono accedere alla memoria all'esterno dell'intervallo delimitato dal valore di input a Lunghezza.

InIoSpace

Indica la posizione dell'intervallo. Questo parametro può essere uno dei valori seguenti:

Valore Significato
VIDEO_MEMORY_SPACE_DENSE Obsoleto
VIDEO_MEMORY_SPACE_IO L'intervallo si trova nello spazio di I/O di sistema anziché nello spazio di memoria.
VIDEO_MEMORY_SPACE_MEMORY L'intervallo è nello spazio di memoria anziché nello spazio di I/O di sistema.
VIDEO_MEMORY_SPACE_P6CACHE Il processore aggrega una sequenza di operazioni di scrittura e le invia a una determinata riga della cache. Il processore scarica quindi la cache. Questo flag è significativo solo quando VIDEO_MEMORY_SPACE_IO non è impostato.
VIDEO_MEMORY_SPACE_USER_MODE Indica che l'intervallo di indirizzi specificato deve essere mappato in modalità utente anziché in modalità kernel. Questo flag è significativo solo quando VIDEO_MEMORY_SPACE_IO non è impostato.

VirtualAddress

Handle del processo in cui deve essere mappata la memoria oppure NULL. null specifica che il driver della porta deve eseguire il mapping dell'intervallo di memoria logica in qualsiasi posizione nello spazio indirizzi del processo corrente. In caso contrario, questo handle può essere un valore passato in un VRP dal driver di visualizzazione corrispondente del driver miniport. Al termine della chiamata, VideoPortMapBankedMemory reimposta la variabile sull'indirizzo virtuale di base a cui è stato mappato il PhysicalAddress specificato.

BankLength

Specifica le dimensioni di una banca, in byte.

ReadWriteBank

Se impostato su TRUE la banca è Read\Write; se impostato su FALSE sono presenti due banche di lettura e scrittura indipendenti.

BankRoutine

Puntatore a un driver fornito HwVidBankedMemoryCallback funzione da chiamare da Memory Manager quando si accede a una nuova banca dal driver di visualizzazione.

Context

Puntatore a un contesto fornito dal driver miniport passato al driver quando viene chiamato il BankRoutine.

Valore restituito

VideoPortMapBankedMemory restituisce NO_ERROR se l'intervallo logico specificato è stato mappato correttamente a un intervallo virtuale dello spazio utente. In caso contrario, può restituire ERROR_INVALID_PARAMETER.

Osservazioni

videoPortMapBankedMemory viene eseguito in modalità kernel nello stesso contesto del thread in modalità utente che ha avviato la chiamata.

videoPortMapBankedMemory viene chiamato dai driver miniport per gestire in modo efficiente i dispositivi di tipo x86 limitati al mapping di un buffer di fotogrammi nelle banche. Quando questa routine torna al chiamante, il buffer dei frame gestito dal driver miniport viene mappato come buffer di frame lineare nello spazio degli indirizzi del processo di richiesta (vedere parametro VirtualAddress). Quando viene effettuato un accesso a un indirizzo in tale spazio mappato, Memory Manager chiama il driver miniport per aggiornare il registro dell'indice bancario in modo che punti a una nuova banca contenente l'indirizzo attualmente a cui si fa riferimento. Il registro dell'indice bancario viene gestito dal driver miniport in BankRoutine. L'indice bancario corretto viene calcolato in modo trasparente da Memory Manager a un driver di visualizzazione e passato al driver miniport nel callback a BankRoutine.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows 2000 e versioni successive dei sistemi operativi Windows.
piattaforma di destinazione Desktop
intestazione video.h (includere Video.h)
libreria Videoprt.lib
dll Videoprt.sys
IRQL PASSIVE_LEVEL

Vedere anche

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory