Condividi tramite


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

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory