Partager via


Fonction NdisMMapIoSpace (ndis.h)

NdisMMapIoSpace mappe une plage « physique » de ram d’appareil relative au bus donnée ou s’inscrit dans 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 dans 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 retournée

NdisMMapIoSpace peut retourner l’une des valeurs status suivantes :

Code de retour Description
NDIS_STATUS_SUCCESS
La plage de mémoire de l’appareil a été correctement mappée, de sorte que la valeur dans VirtualAddress 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 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 consigne 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 de portée, ou les données PhysicalAddress et Length n’étaient pas valides (peut-être 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 embarquée ou une banque de registres d’appareils qui apparaissent dans l’espace d’E/S de l’hôte. Par exemple, le pilote d’une carte réseau qui utilise PIO appelle NdisMMapIoSpace.

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

NdisMMapIoSpace définit la variable virtualAddress sur NULL s’il ne retourne pas NDIS_STATUS_SUCCESS.

MiniportInitializeEx obtient la valeur PhysicalAddress à partir de la clé de Registre Parameters du pilote ou en appelant une fonction de configuration NdisXxx spécifique au type de bus. 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 d’appeler NdisMMapIoSpace avec une adresse de mémoire physique hôte.

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

Configuration requise

Condition requise Valeur
Client minimal 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 (consultez NdisMMapIoSpace (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),NdisMMapIoSpace(ndis)

Voir aussi

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort