Funzione VideoPortMapBankedMemory (video.h)
La funzione VideoPortMapBankedMemory è obsoleta ed è supportata solo per i driver 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 macchina virtuale 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 della banca). 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 in Length.
InIoSpace
Indica la posizione dell'intervallo. Questo parametro può essere uno dei valori seguenti:
Valore | Significato |
---|---|
VIDEO_MEMORY_SPACE_DENSE | Obsoleti |
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 il mapping dell'intervallo di indirizzi specificato deve essere eseguito in modalità utente anziché in modalità kernel. Questo flag è significativo solo quando VIDEO_MEMORY_SPACE_IO non è impostato. |
VirtualAddress
Handle per il processo in cui è necessario eseguire il mapping della memoria o 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 valore 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 una funzione HwVidBankedMemoryCallback fornita dal driver 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 BankRoutine .
Valore restituito
VideoPortMapBankedMemory restituisce NO_ERROR se il mapping dell'intervallo logico specificato è stato eseguito correttamente a un intervallo virtuale nello spazio utente. In caso contrario, può restituire ERROR_INVALID_PARAMETER.
Commenti
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 il 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 a cui si fa riferimento. Il registro dell'indice della banca 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.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows 2000 e versioni successive dei sistemi operativi Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | video.h (include Video.h) |
Libreria | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
Vedi anche
IOCTL_VIDEO_SHARE_VIDEO_MEMORY