Fonction VideoPortVerifyAccessRanges (video.h)

La fonction VideoPortVerifyAccessRanges vérifie dans le Registre si un autre pilote a déjà revendiqué la propriété des plages d’accès relatives au bus spécifiées et de toutes les autres ressources matérielles spécifiées dans la structure VIDEO_PORT_CONFIG_INFO . Si ce n’est pas le cas, cette fonction revendique les ressources données pour l’appelant.

Syntaxe

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortVerifyAccessRanges(
                 PVOID               HwDeviceExtension,
                 ULONG               NumAccessRanges,
  [in, optional] PVIDEO_ACCESS_RANGE AccessRanges
);

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 AccessRanges , ou zéro.

[in, optional] AccessRanges

Pointeur vers le tableau de plages d’accès du pilote miniport ou NULL. Chaque élément de type VIDEO_ACCESS_RANGE dans ce tableau spécifie une plage relative de bus de mémoire de l’appareil, de ports d’E/S ou d’inscription d’adresses pour l’adaptateur.

Valeur retournée

VideoPortVerifyAccessRanges retourne l’une des valeurs suivantes :

Code de retour Description
ERROR_INVALID_PARAMETER Une erreur s’est produite ou un conflit a été trouvé ; autrement dit, un autre pilote a déjà revendiqué une ou plusieurs des ressources matérielles données pour son appareil.
NO_ERROR Les AccessRanges donnés sont valides et ont été réclamés pour utilisation par l’appelant.

Remarques

Chaque pilote de miniport vidéo doit appeler VideoPortVerifyAccessRanges ou utiliser des plages d’accès retournées par VideoPortGetAccessRanges avant de tenter d’accéder à une carte vidéo pendant le processus d’initialisation du pilote (et du système).

VideoPortVerifyAccessRanges ne peut être appelé que par la fonction HwVidFindAdapter d’un pilote miniport.

Chaque pilote de miniport vidéo doit définir les plages d’accès relatives au bus pour son appareil, soit en tant que mémoire allouée statiquement dans le fichier d’en-tête ou le code du pilote, soit sur la pile. La plupart des pilotes miniport configurent leurs plages d’accès vidéo sur la pile, à l’exception de ceux qui utilisent des plages d’adresses standard pc pour la mémoire vidéo, comme les pilotes svgA compatibles AVEC VGA.

La fonction HwVidFindAdapter doit essayer d’obtenir des informations sur la plage d’accès relative du bus en appelant VideoPortGetAccessRanges ou en vérifiant le Registre via des appels à VideoPortGetDeviceData ou VideoPortGetRegistryParameters. Si HwVidFindAdapter ne peut pas obtenir ces informations, le pilote miniport doit avoir un ensemble de valeurs par défaut relatives au bus pour les plages d’accès.

Si les plages d’accès d’un pilote miniport sont configurables en externe, le programme d’installation configure des plages d’accès pour l’adaptateur dans le Registre. La fonction HwVidFindAdapter d’un tel pilote miniport peut appeler VideoPortGetRegistryParameters avec une fonction HwVidQueryNamedValueCallback fournie par le pilote miniport qui traite les informations récupérées à partir du Registre.

HwVidFindAdapter ne doit pas transmettre d’adresses de plage d’accès à VideoPortGetDeviceBase , sauf s’il appelle d’abord VideoPortVerifyAccessRanges ou VideoPortGetAccessRanges et que la fonction correspondante retourne NO_ERROR.

VideoPortVerifyAccessRanges peut être appelé à nouveau si la spécification ou la valeur AccessRanges initiale dans le VIDEO_PORT_CONFIG_INFO, comme un vecteur d’interruption, l’amène à renvoyer un ERROR_XXX indiquant qu’un autre pilote a déjà revendiqué la ou les ressources.

Si VideoPortVerifyAccessRanges retourne NO_ERROR, un appel suivant pour le même adaptateur remplace la revendication du pilote miniport sur les ressources de cette carte dans le Registre.

Notez qu’un pilote miniport ne peut pas communiquer avec sa carte vidéo, sauf en utilisant des adresses mappées retournées par VideoPortGetDeviceBase avec les fonctions VideoPortRead/WriteXxx .

Si la fonction HwVidFindAdapter revendique des plages d’accès relatives au bus et éventuellement d’autres ressources matérielles pour une carte, mais qu’elle détermine ensuite qu’elle ne prend pas en charge l’adaptateur, le pilote miniport doit abandonner ses revendications sur les ressources matérielles dans le Registre en appelant VideoPortVerifyAccessRanges ou VideoPortGetAccessRanges avec NumAccessRanges défini sur zéro et AccessRanges défini sur NULL.

Pour abandonner les revendications sur un sous-ensemble de plages d’accès revendiquées que le pilote miniport n’utilise plus, procédez comme suit :

  1. Modifiez la spécification AccessRanges pour l’adaptateur afin que chaque élément décrivant une plage à publier ait toujours défini RangeStart sur la base relative du bus d’une plage revendiquée, mais que RangeLength soit réinitialisé à zéro.
  2. Appelez VideoPortVerifyAccessRanges avec ce tableau AccessRanges modifié.

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 (inclure Video.h)
Bibliothèque Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Voir aussi

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetAccessRanges

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortGetRegistryParameters