Remarque
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.
Pour écrire un pilote portable pour toutes les versions de Microsoft Windows, vous devez écrire du code pour s’exécuter en toute sécurité sur des ordinateurs avec plusieurs processeurs en cours d’exécution simultanée. Un pilote réseau doit être sécurisé multiprocesseur et doit utiliser les fonctions de bibliothèque NDIS fournies.
Dans un environnement uniprocesseur, un seul processeur exécute une seule instruction d’ordinateur à la fois, même s’il est possible pour une carte d’interface réseau (NIC) ou un autre appareil d’interrompre le flux d’exécution actuel lorsque des paquets arrivent ou à mesure que des interruptions du minuteur se produisent. En règle générale, lors de la manipulation de structures de données telles que des files d’attente de paquets, un pilote désactive les interruptions sur la carte réseau, effectue la manipulation, puis réenable les interruptions. De nombreux threads dans un environnement uniprocesseur semblent s’exécuter simultanément, mais s’exécutent réellement dans des tranches de temps entrelacées.
Dans un environnement multiprocesseur, les processeurs exécutent simultanément plusieurs instructions d’ordinateur. Un pilote doit synchroniser afin que lorsqu’une fonction de pilote manipule des structures de données courantes, la même ou une autre fonction de pilote sur un autre processeur ne tente pas de modifier les données partagées en même temps. Tout le code du pilote est réentrant dans un système multiprocesseur symétrique (SMP). Pour éliminer ce problème de protection des ressources, les pilotes de périphériques Windows utilisent des verrous de rotation. Pour plus d’informations, consultez synchronisation et notification dans les pilotes réseau.