Pilotes de miniports
Un pilote miniport NDIS a deux fonctions principales :
Gérer une carte d’interface réseau (NIC), notamment en envoyant et en recevant des données via la NIC.
Interagir avec des pilotes de niveau supérieur, tels que les pilotes de filtre, les pilotes intermédiaires et les pilotes de protocole.
Un pilote miniport communique avec ses NIC et avec des pilotes de niveau supérieur via la bibliothèque NDIS. La bibliothèque NDIS exporte un ensemble complet de fonctions (NdisMXxx et autres fonctions NdisXxx) qui encapsulent toutes les fonctions du système d’exploitation qu’un pilote miniport doit appeler. Le pilote miniport, à son tour, doit exporter un ensemble de points d’entrée (fonctions MiniportXxx) que NDIS appelle pour ses propres besoins, ou au nom des pilotes de niveau supérieur, afin d’accéder au pilote miniport.
Remarque
Pour plus d’informations sur la pile de pilotes NDIS et un diagramme montrant la relation entre les quatre types de pilotes NDIS, veuillez consulter la section Pile de pilotes NDIS.
Les opérations d’envoi et de réception suivantes illustrent l’interaction des pilotes miniport avec NDIS et avec des pilotes de niveau supérieur :
Lorsqu’un pilote de transport dispose d’un paquet à transmettre, il appelle une fonction NdisXxx exportée par la bibliothèque NDIS. NDIS transmet ensuite le paquet au pilote miniport en appelant la fonction MiniportXxx appropriée exportée par le pilote miniport. Le pilote miniport transmet ensuite le paquet à la NIC pour transmission en appelant les fonctions NdisXxx appropriées.
Lorsqu’une NIC reçoit un paquet qui lui est adressé, elle peut déclencher une interruption matérielle gérée par NDIS ou par le pilote miniport de la NIC. NDIS notifie le pilote miniport de la NIC en appelant la fonction MiniportXxx appropriée. Le pilote miniport configure le transfert de données depuis la NIC, puis indique la présence du paquet reçu aux pilotes de niveau supérieur liés en appelant la fonction NdisXxx appropriée.
Pilotes miniport sans connexion et orientés connexion
NDIS prend en charge les pilotes miniport pour les environnements sans connexion et orientés connexion.
Les pilotes miniport sans connexion contrôlent les NIC pour les médias réseau sans connexion, comme Ethernet. Les pilotes miniport sans connexion sont en outre divisés en pilotes désérialisés et sérialisés :
Remarque : Tous les pilotes NDIS 6.0 et versions ultérieures sont désérialisés.
Les pilotes désérialisés sérialisent le fonctionnement de leurs propres fonctions MiniportXxx et mettent en file d’attente en interne tous les paquets d’envoi entrants. Cela permet d’obtenir des performances full-duplex nettement meilleures, à condition que les sections critiques du pilote (code qui ne peut être exécuté que par un seul thread à la fois) restent réduites.
Les pilotes sérialisés s’appuient sur NDIS pour sérialiser les appels à leurs fonctions MiniportXxx et pour gérer leurs files d’attente d’envoi.
Les pilotes miniport orientés connexion contrôlent les NIC pour les médias réseau orientés connexion, tels que l’ISDN. Les pilotes miniport orientés connexion sont toujours désérialisés -- ils sérialisent toujours le fonctionnement de leurs propres fonctions MiniportXxx et mettent en file d’attente en interne tous les paquets d’envoi entrants.
Un pilote miniport NDIS peut avoir un bord inférieur non NDIS (voir l’illustration suivante).
Grâce à son bord inférieur non NDIS, un pilote miniport utilise l’interface de classe pour un bus, tel que l’Universal Serial Bus (USB), pour contrôler un périphérique sur le bus. Le pilote miniport communique avec le périphérique en envoyant des paquets de requête d’E/S (IRP) soit au bus, soit directement aux périphériques distants connectés au bus. À son bord supérieur, le pilote miniport expose une interface standard de pilote miniport NDIS, ce qui permet au pilote miniport de communiquer avec les pilotes NDIS superposés.