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 |
---|---|
|
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. |
|
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. |
|
La mémoire n’a pas pu être mappée ou une mémoire virtuelle suffisante n’a pas pu être allouée. |
|
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) |