Partager via


NdisMMapIoSpace, fonction (ndis.h)

NdisMMapIoSpace mappe une plage « physique » relative à un bus donné de ram d’appareil ou s’inscrit sur une plage virtuelle d’espace système.

Syntaxe

NDIS_STATUS NdisMMapIoSpace(
  [out] PVOID                 *VirtualAddress,
  [in]  NDIS_HANDLE           MiniportAdapterHandle,
  [in]  NDIS_PHYSICAL_ADDRESS PhysicalAddress,
  [in]  UINT                  Length
);

Paramètres

[out] VirtualAddress

Pointeur vers une variable fournie par l’appelant qui est définie sur l’adresse virtuelle convertie si l’appel réussit.

[in] MiniportAdapterHandle

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

[in] PhysicalAddress

Spécifie l’adresse physique de base relative du bus de la plage de mémoire de l’appareil à mapper.

[in] Length

Spécifie le nombre d’octets à mapper.

Valeur de retour

NdisMMapIoSpace peut retourner l’une des valeurs d’état suivantes :

Retourner le code Description
NDIS_STATUS_SUCCESS
La plage de mémoire de l’appareil a été mappée avec succès afin que la valeur à VirtualAddress soit valide et que la plage mappée ait été revendiquée dans le Registre pour la carte réseau.
NDIS_STATUS_RESOURCE_CONFLICT
Une tentative de revendication de la plage de mémoire de l’appareil dans le Registre a échoué, peut-être parce qu’un autre pilote a déjà revendiqué la plage pour son appareil. NdisMMapIoSpace journalise une erreur si cela se produit.
NDIS_STATUS_RESOURCES
La mémoire n’a pas pu être mappée ou une mémoire virtuelle suffisante n’a pas pu être allouée.
NDIS_STATUS_FAILURE
Le type de bus ou le numéro de bus est hors limites ou le PhysicalAddress donné et Longueur n’étaient pas valides (éventuellement pas dans l’espace d’E/S de la plateforme actuelle).

Remarques

Cette fonction est appelée par les pilotes de cartes réseau qui ont une mémoire à bord ou une banque d’registres d’appareils apparaissant dans l’espace d’E/S de l’hôte. Par exemple, le pilote d’une carte réseau qui utilise des appels PIO NdisMMapIoSpace.

Un appel réussi à NdisMMapIoSpace revendications des ressources matérielles dans le Registre pour la carte réseau du pilote. Par conséquent, seules fonctions MiniportInitializeEx appellent NdisMMapIoSpace.

NdisMMapIoSpace définit la variable à VirtualAddress sur NULL si elle ne retourne pas NDIS_STATUS_SUCCESS.

MiniportInitializeEx obtient la valeur PhysicalAddress à partir de la clé de Registre paramètres du pilote ou en appelant une fonction de configuration de type bus NdisXxx. La plage d’adresses physique donnée doit se trouver dans l’espace d’E/S de la plateforme actuelle. Il s’agit d’une erreur de programmation pour appeler NdisMMapIoSpace avec une adresse de mémoire physique hôte.

Un pilote miniport doit appeler le réciproque NdisMUnmapIoSpace pour libérer sa revendication sur les ressources système si MiniportInitializeEx par la suite ne parvient pas à initialiser une carte réseau, si une carte réseau est supprimée de la machine et/ou lorsque le pilote est déchargé.

Exigences

Exigence Valeur
client minimum pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisMMapIoSpace (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisMMapIoSpace (NDIS 5.1)) dans Windows XP.
plateforme cible Universel
d’en-tête ndis.h (include Ndis.h)
bibliothèque Ndis.lib
IRQL PASSIVE_LEVEL
règles de conformité DDI Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis)

Voir aussi

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort