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
IOCTL_VIDEO_SHARE_VIDEO_MEMORY