Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 |
---|---|
|
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. |
|
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. |
|
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 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) |