Funzione VideoPortGetDeviceBase (video.h)

La funzione VideoPortGetDeviceBase esegue il mapping di un intervallo di indirizzi di memoria del dispositivo o I/O relativi al bus nello spazio di sistema.

Sintassi

VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
  PVOID            HwDeviceExtension,
  PHYSICAL_ADDRESS IoAddress,
  ULONG            NumberOfUchars,
  UCHAR            InIoSpace
);

Parametri

HwDeviceExtension

Puntatore all'estensione del dispositivo del driver miniport.

IoAddress

Indirizzo fisico di base dell'intervallo da mappare. Per ottenere questo valore relativo al bus, chiamare VideoPortGetDeviceData, VideoPortGetRegistryParameters o VideoPortGetAccessRanges. In caso contrario, questo valore è un indirizzo di base predefinito fornito dal driver per la memoria del dispositivo o le porte di I/O.

È necessario aver richiesto correttamente l'intervallo descritto da IoAddress e NumberOfUchars nel Registro di sistema tramite una chiamata precedente a VideoPortVerifyAccessRanges o VideoPortGetAccessRanges.

NumberOfUchars

Numero di byte, a partire da IoAddress, per eseguire il mapping.

InIoSpace

Posizione dell'intervallo IoAddress . Questo parametro può essere uno dei flag seguenti o una combinazione compatibile con ORed di questi flag.

Bandiera Significato
VIDEO_MEMORY_SPACE_DENSE Obsoleta.
VIDEO_MEMORY_SPACE_IO L'intervallo di indirizzi si trova nello spazio di I/O, non nello spazio di memoria.
VIDEO_MEMORY_SPACE_MEMORY L'intervallo di indirizzi si trova nello spazio di memoria, non nello spazio di I/O.
VIDEO_MEMORY_SPACE_P6CACHE Il processore aggrega una sequenza di operazioni di scrittura, le invia a una riga della cache e successivamente scarica la cache. Questo flag è significativo solo quando VIDEO_MEMORY_SPACE_IO non è impostato. Definisce la memoria video come combinazione di scrittura (WC). Per informazioni sulla memorizzazione nella cache WC, vedere l'articolo Write-Combining Memory in Video Miniport Drivers .For information about WC caching, see the Write-Combining Memory in Video Miniport Drivers website article.

Valore restituito

In caso di esito positivo, VideoPortGetDeviceBase restituisce l'indirizzo virtuale di base del mapping. Se non è possibile eseguire il mapping dell'intervallo relativo al bus specificato, VideoPortGetDeviceBase restituisce NULL.

Commenti

È possibile passare gli indirizzi virtuali mappati alle funzioni VideoPortReadXxx, VideoPortWriteXxx e VideoPortXxxMemory , ad eccezione di VideoPortMapMemory e VideoPortUnmapMemory.

È necessario chiamare VideoPortGetDeviceBase dalla funzione HwVidFindAdapter del driver miniport, HwVidQueryDeviceCallback o HwVidQueryNamedValueCallback .

Prima che HwVidFindAdapter restituisca il controllo, devi archiviare sia l'indirizzo di base mappato restituito da VideoPortGetDeviceBase che la lunghezza dell'intervallo di accesso mappato nell'estensione del dispositivo dell'adattatore (a cui punta HwDeviceExtension) per usarlo in un secondo momento.

L'accesso allo spazio indirizzi mappato deve seguire queste regole:

  • Se InIoSpace è VIDEO_MEMORY_SPACE_IO, che indica che l'indirizzo si trova nello spazio di I/O, l'indirizzo virtuale restituito da questa funzione deve essere passato alle funzioni VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxx e VideoPortWritePortBufferXxx , dove Xxx è Uchar, Ushort o Ulong.
  • Se InIoSpace è VIDEO_MEMORY_SPACE_MEMORY, che indica che l'indirizzo non si trova nello spazio di I/O ma nello spazio di memoria, l'indirizzo virtuale restituito da questa funzione deve essere passato alle funzioni VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxx e VideoPortWriteRegisterBufferXxx , dove Xxx è Uchar, Ushort o Ulong.
  • Il driver non deve accedere agli indirizzi esterni all'intervallo delimitato da NumberOfUchars.
VideoPortGetDeviceBase e VideoPortMapMemory possono essere chiamati entrambi dal driver miniport video per eseguire il mapping della memoria video in uno spazio indirizzi virtuale. Se si chiamano entrambe queste funzioni per eseguire il mapping degli stessi indirizzi fisici o se si chiama più volte una delle funzioni per eseguire il mapping degli stessi indirizzi fisici, potrebbe essere presente più di un intervallo di indirizzi virtuali mappato allo stesso intervallo di indirizzi fisici. In tal caso, è necessario impostare il flag VIDEO_MEMORY_SPACE_P6CACHE del parametro InIoSpace sullo stesso valore in tutte queste chiamate.

Ogni dispositivo di visualizzazione UMA (Universal Memory Architecture) usa un buffer di frame che si trova nella memoria principale anziché in un bus PCI. In questo caso, non chiamare VideoPortMapMemory per eseguire il mapping del buffer dei fotogrammi. Per eseguire il mapping di un buffer di frame UMA nello spazio di sistema, chiamare MmMapIoSpace.

Se un driver miniport non supporta un adattatore per cui è stato mappato un intervallo logico, deve eseguire due passaggi prima di restituire il controllo alla funzione DriverEntry : chiamare VideoPortFreeDeviceBase per annullare il mapping dell'intervallo mappato in precedenza dallo spazio di sistema e chiamare VideoPortGetAccessRanges o VideoPortVerifyAccessRanges per rilasciare le attestazioni nell'intervallo nel Registro di sistema.

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

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory