VideoPortSetTrappedEmulatorPorts, fonction (video.h)

Les pilotes miniport compatibles VGA (SVGA) appellent la fonction VideoPortSetTrappedEmulatorPorts pour modifier dynamiquement la liste des ports d’E/S qui sont bloqués lorsqu’un VDM (moniteur d’affichage vidéo) s’exécute en mode plein écran sur un ordinateur x86.

Syntaxe

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

Paramètres

HwDeviceExtension

Pointeur vers l’extension de périphérique du pilote miniport.

NumAccessRanges

Spécifie le nombre d’éléments dans le tableau AccessRange .

[in] AccessRange

Pointeur vers un tableau d’éléments VIDEO_ACCESS_RANGE . Chaque élément décrit une sous-plage appropriée de EmulatorAccessEntries que le pilote miniport a configuré dans VIDEO_PORT_CONFIG_INFO. Définir le membre RangeVisible d’un élément AccessRange sur TRUE permet d’accéder directement à la plage de ports d’E/S par l’application MS-DOS en plein écran. Si vous définissez un membre RangeVisible sur FALSE , les INémis par l’application, INSB/INSW/INSD, OUTs et/ou OUTSB/OUTSW/OUTSDsur cette plage sont interceptés et transférés à la fonction svgaHwIoPortXxx du pilote miniport correspondant à des fins de validation.

Le tableau AccessRange passé à VideoPortSetTrappedEmulatorPorts doit être un sous-ensemble approprié des plages de ports d’E/S que la fonction HwVidFindAdapter a configurées dans le tableau EmulatorAccessEntries de la structure VIDEO_PORT_CONFIG_INFO . Toutes les plages de ports d’E/S du tableau de plages d’accès qui ne sont pas incluses dans le tableau EmulatorAccessEntries sont interceptées et reflétées dans le VDD en mode utilisateur.

Valeur retournée

VideoPortSetTrappedEmulatorPorts retourne NO_ERROR s’il a correctement modifié les ports piégés. Sinon, elle retourne ERROR_INVALID_PARAMETER.

Remarques

Par défaut, accessRange des ports d’E/S auxquels les applications MS-DOS plein écran peuvent accéder directement n’inclut aucun élément de tableau de plage d’accès décrivant les plages de ports d’E/S qui ont également des éléments correspondants dans le tableau EmulatorAccessEntries de la structure VIDEO_PORT_CONFIG_INFO . Autrement dit, les plages de ports d’E/S avec les entrées d’accès de l’émulateur correspondantes sont, par défaut, liées aux fonctions SvgaHwIoPortXxx du pilote miniport afin que les instructions émises par l’application soient transférées aux fonctions SvgaHwIoPortXxx pour validation.

Un pilote miniport SVGA compatible VGA peut activer et désactiver des plages de ports d’E/S en fonction des besoins avec des appels à VideoPortSetTrappedEmulatorPorts. Les plages de ports activées permettent à une application MS-DOS en plein écran d’accéder directement à ces ports d’E/S, sans que les instructions d’assembly émises par l’application ne se fassent intercepter et transférées aux fonctions SvgaHwIoPortXxx du pilote miniport pour validation. L’accès au port d’E/S direct pour une telle application offre à l’utilisateur des temps de réponse vidéo d’E/S plus rapides.

VideoPortSetTrappedEmulatorPorts analyse le tableau de paramètres AccessRange du premier au dernier élément, activant et désactivant les ports d’E/S comme indiqué dans chaque élément. Notez qu’une plage de ports activés (le membre RangeVisible défini sur TRUE) peut être désactivée à nouveau dans le même appel si le pilote miniport inclut une description dupliquée de la même plage avec le membre RangeVisible défini sur FALSE. Notez également qu’un pilote miniport peut activer un large éventail de ports d’E/S dans l’élément initial du tableau AccessRange et désactiver de manière sélective les sous-plages de ports dans les éléments de tableau suivants lorsqu’il appelle VideoPortSetTrappedEmulatorPorts.

Toutes les applications MS-DOS plein écran utilisent la même carte d’autorisation IOPM (E/S) dans les machines x86 et, par conséquent, le même ensemble de ports d’E/S activés ou désactivés. Sur chaque commutateur vers une telle application plein écran, la fonction HwVidStartIO d’un pilote miniport compatible VGA est appelée avec la IOCTL_VIDEO_ENABLE_VDM VRP. Le pilote miniport doit ensuite réinitialiser un ensemble par défaut de ports d’E/S directement accessibles, qui peut inclure n’importe quel port dans le tableau EmulatorAccessEntries .

Si l’accès direct aux ports vidéo des applications MS-DOS plein écran sur les ordinateurs x86 accélère les opérations vidéo initiées par l’application, chaque pilote svgA compatible VGA doit continuer à intercepter un sous-ensemble de ports d’E/S critiques pour empêcher une telle application de suspendre la machine. En particulier, ces pilotes miniport doivent toujours intercepter les E/S d’application sur le séquenceur d’adaptateur compatible VGA et divers registres de sortie. Un tel pilote miniport doit également intercepter et valider les E/S directes émises par l’application qui peuvent entraîner le blocage de l’ordinateur pour tout sous-ensemble supplémentaire dépendant de l’adaptateur de ports d’E/S.

L’appel de VideoPortSetTrappedEmulatorPorts et la réinitialisation du membre RangeVisible d’un élément AccessRange sur FALSE entraîne le transfert des instructions émises par l’application pour cette plage à la fonction SvgaHwIoPortXxx correspondante du pilote miniport.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête video.h (incluez Video.h)
Bibliothèque Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Voir aussi

EMULATOR_ACCESS_ENTRY

HwVidFindAdapter

HwVidStartIO

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortSynchronizeExecution