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.
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 |