Partager via


NdisMRegisterIoPortRange, fonction (ndis.h)

NdisMRegisterIoPortRange configure l’accès du pilote aux ports d’E/S de périphérique avec les fonctions NdisRawReadPortXxx et NdisRawWritePortXxx et revendique la plage d’adresses de port d’E/S dans le Registre pour la carte réseau de ce pilote.

Syntaxe

NDIS_STATUS NdisMRegisterIoPortRange(
  [out] PVOID       *PortOffset,
  [in]  NDIS_HANDLE MiniportAdapterHandle,
  [in]  UINT        InitialPort,
  [in]  UINT        NumberOfPorts
);

Paramètres

[out] PortOffset

Spécifie une variable fournie par l’appelant dans laquelle cette fonction retourne l’adresse virtuelle de base mappée pour la plage de ports d’E/S relative du bus spécifiée par InitialPort et NumberOfPorts .

[in] MiniportAdapterHandle

Spécifie l’entrée de handle dans MiniportInitializeEx.

[in] InitialPort

Spécifie l’adresse de port de base relative du bus pour une plage de ports à mapper.

[in] NumberOfPorts

Spécifie le nombre de ports dans la plage à mapper.

Valeur retournée

NdisMRegisterIoPortRange peut retourner l’un des éléments suivants :

Code de retour Description
NDIS_STATUS_SUCCESS
La plage donnée de ports d’E/S a été correctement mappée, de sorte que la valeur dans PortOffset est valide et que la plage mappée a été revendiquée dans le Registre pour la carte réseau.
NDIS_STATUS_RESOURCE_CONFLICT
Une tentative de revendication de la plage de ports d’E/S dans le Registre a échoué, peut-être parce qu’un autre pilote a déjà revendiqué la plage pour son appareil. NdisMRegisterIoPortRange enregistre une erreur si cela se produit.
NDIS_STATUS_RESOURCES
La plage de ports n’a pas pu être mappée ou NDIS n’a pas pu allouer de ressources à case activée le Registre pour les conflits de ressources matérielles.
NDIS_STATUS_FAILURE
Le type de bus ou le numéro de bus est hors limites ou les valeurs InitialPort et NumberOfPorts spécifiées n’étaient pas valides (peut-être pas dans l’espace de port d’E/S de la plateforme actuelle).

Remarques

Un pilote miniport appelle NdisMRegisterIoPortRange à partir de sa fonction MiniportInitializeEx . MiniportInitializeEx doit appeler NdisMSetMiniportAttributes avant d’appeler NdisMRegisterIoPortRange.

NdisMRegisterIoPortRange mappe une plage d’adresses de périphérique relative au bus que le pilote miniport peut utiliser par la suite pour accéder à une plage de ports d’E/S sur une carte réseau en appelant les fonctions NdisRawXxx . Un appel réussi revendique la plage spécifiée de ports d’E/S dans le Registre pour la carte réseau de l’appelant.

Étant donné que les paramètres passés au NdisRawXxx ont été mappés, ces fonctions s’exécutent beaucoup plus rapidement que le NdisImmediate correspondant. PortXxx. Après un appel réussi à NdisMRegisterIoPortRange, un pilote miniport ne peut appeler aucun des NdisImmediate. Le portXxx fonctionne avec des adresses relatives de bus ou des adresses virtuelles mappées dans une plage de ports d’E/S de ce type.

Si son appel à NdisMRegisterIoPortRange échoue, MiniportInitializeEx doit libérer toutes les ressources déjà allouées pour une carte réseau, puis échouer l’initialisation de cette carte réseau.

Les pilotes des cartes réseau avec des registres d’appareils dans l’espace mémoire hôte appellent NdisMMapIoSpace et, par la suite, les fonctions NdisRead/WriteRegisterXxx pour accéder aux registres de cartes réseau.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisMRegisterIoPortRange (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisMRegisterIoPortRange (NDIS 5.1)) dans Windows XP.
Plateforme cible Universal
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL PASSIVE_LEVEL
Règles de conformité DDI Irql_Miniport_Driver_Function(ndis), NdisMRegisterIoPortRange(ndis)

Voir aussi

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawWritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawWritePortBufferUshort

NdisRawWritePortUchar

NdisRawWritePortUlong

NdisRawWritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort