Funzione VideoPortSetTrappedEmulatorPorts (video.h)

I driver miniport compatibili con VGA chiamano la funzione VideoPortSetTrappedEmulatorPorts per modificare in modo dinamico l'elenco delle porte di I/O intrappolate quando un VDM (monitoraggio video) viene eseguito in modalità schermo intero in un computer basato su x86.

Sintassi

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortSetTrappedEmulatorPorts(
       PVOID               HwDeviceExtension,
       ULONG               NumAccessRanges,
  [in] PVIDEO_ACCESS_RANGE AccessRange
);

Parametri

HwDeviceExtension

Puntatore all'estensione del dispositivo del driver miniport.

NumAccessRanges

Specifica il numero di elementi nella matrice AccessRange .

[in] AccessRange

Puntatore a una matrice di elementi VIDEO_ACCESS_RANGE . Ogni elemento descrive una sottorange appropriata delle voci EmulatorAccessEntries configurate nel driver miniport in VIDEO_PORT_CONFIG_INFO. L'impostazione del membro RangeVisible di un elemento AccessRange su TRUE consente l'accesso diretto all'intervallo di porte I/O dall'applicazione MS-DOS a schermo intero. L'impostazione di un membro RangeVisible su FALSE causa l'interruzione dell'applicazione ins, INSB/INSW/INSDs,OUTSB/OUTSW/OUTSDs fino a tale intervallo per essere intrappolata e inoltrata alla funzione del driver miniport corrispondente SvgaHwIoPortXxx per la convalida.

La matrice AccessRange passata a VideoPortSetTrappedEmulatorPorts deve essere un subset appropriato degli intervalli di porte I/O configurati dalla funzione HwVidFindAdapter nella matrice EmulatorAccessEntries della struttura VIDEO_PORT_CONFIG_INFO . Qualsiasi intervallo di porte di I/O nella matrice di intervalli di accesso che non sono inclusi nella matrice EmulatorAccessEntries viene intrappolato e riflesso nella VDD in modalità utente.

Valore restituito

VideoPortSetTrappedEmulatorPorts restituisce NO_ERROR se ha modificato correttamente le porte intrappolate. In caso contrario, restituisce ERROR_INVALID_PARAMETER.

Commenti

Per impostazione predefinita, accessRange delle porte di I/O a cui le applicazioni MS-DOS a schermo intero possono accedere direttamente include nessuno degli elementi della matrice di intervallo di accesso che descrivono gli intervalli di porte di I/O che dispongono anche di elementi corrispondenti nella matrice EmulatorAccessEntries della struttura VIDEO_PORT_CONFIG_INFO . Ovvero, gli intervalli di porte I/O con le voci di accesso dell'emulatore corrispondenti sono, per impostazione predefinita, collegati alle funzioni SvgaHwIoPortXxx del driver miniport, in modo che le istruzioni rilasciate dall'applicazione vengano inoltrate alle funzioni SvgaHwIoPortXxx per la convalida.

Un driver SVGA compatibile con VGAA può abilitare e disabilitare intervalli di porte di I/O in base alle esigenze con chiamate a VideoPortSetTrappedEmulatorPorts. Gli intervalli di porte abilitati consentono a un'applicazione MS-DOS a schermo intero di accedere direttamente alle porte di I/O, senza avere istruzioni di assembly rilasciate dall'applicazione intrappolate e inoltrate alle funzioni SvgaHwIoPortXxx del driver miniport per la convalida prima. L'accesso diretto alla porta di I/O per tale applicazione offre all'utente tempi di risposta di I/O più veloci.

VideoPortSetTrappedEmulatorPorts analizza la matrice di parametri AccessRange dal primo elemento all'ultimo, abilitando e disabilitando le porte di I/O come indirizzato in ogni elemento. Si noti che un intervallo di porte abilitate (il membro RangeVisible impostato su TRUE) può essere disabilitato di nuovo nella stessa chiamata se il driver miniport include una descrizione duplicata dello stesso intervallo con il membro RangeVisible impostato su FALSE. Si noti anche che un driver miniport può abilitare un'ampia gamma di porte di I/O nell'elemento iniziale della matrice AccessRange e disabilitare in modo selettivo le sottorange delle porte negli elementi di matrice successivi quando chiama VideoPortSetTrappedEmulatorPorts.

Tutte le applicazioni MS-DOS a schermo intero usano la stessa mappa di I/O (I/O) nei computer basati su x86 e, pertanto, lo stesso set di porte di I/O abilitate o disabilitate. In ogni passaggio a un'applicazione a schermo intero, viene chiamata una funzione HwVidStartIO compatibile con VGA con la IOCTL_VIDEO_ENABLE_VDM VRP. Il driver miniport deve quindi reinizializzare un set predefinito di porte di I/O accessibili direttamente, che possono includere qualsiasi porta nella matrice EmulatorAccessEntries .

Pur dando alle applicazioni MS-DOS a schermo intero in computer basati su x86 l'accesso diretto alle porte video rende più veloci le operazioni video avviate dall'applicazione, ogni driver SVGA compatibile con VGA deve continuare a intrappolare un subset di porte di I/O critiche per impedire a tale applicazione di appendere il computer. In particolare, tali driver miniport devono sempre intrappolare l'applicazione I/O al sequencer compatibile con VGA e registri di output vari. Tale driver miniport deve anche trappolare e convalidare l'I/O diretto rilasciato dall'applicazione che potrebbe causare l'blocco del computer per qualsiasi subset aggiuntivo dipendente dall'adattatore delle porte di I/O.

Chiamando di nuovo VideoPortSetTrappedEmulatorPorts e reimpostando il membro RangeVisible di un elemento AccessRange su FALSE , le istruzioni rilasciate dall'applicazione per tale intervallo devono essere inoltrate al driver miniport corrispondente SvgaHwIoPortXxx .

Requisiti

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

Vedi anche

EMULATOR_ACCESS_ENTRY

HwVidFindAdapter

HwVidStartIO

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortSynchronizeExecution