Partager via


Intermediate DriverEntry, fonction

Le point d’entrée initial requis d’un pilote intermédiaire doit être explicitement nommé DriverEntry afin que le chargeur puisse l’identifier correctement. Toutes les autres fonctions de pilote exportées, qui sont décrites dans cette section en tant que MiniportXxx et ProtocolXxx, peuvent avoir n’importe quel nom spécifié par le fournisseur, car elles sont passées en tant qu’adresses à NDIS.

Dans un pilote intermédiaire, DriverEntry doit au minimum :

  1. Appelez NdisMRegisterMiniportDriver et enregistrez le handle retourné dans le paramètre NdisMiniportDriverHandle .

  2. Appelez NdisRegisterProtocolDriver pour inscrire les fonctions ProtocolXxx du pilote si le pilote se lie par la suite à un pilote NDIS sous-jacent.

  3. Appelez NdisIMAssociateMiniport pour informer NDIS de l’association entre le bord supérieur du miniport du pilote et le bord inférieur du protocole.

Un pilote intermédiaire doit inscrire un gestionnaire de déchargement MiniportDriverUnload . Ce gestionnaire de déchargement est appelé lorsque le système décharge le pilote intermédiaire. En cas d’échec de DriverEntry , ce gestionnaire de déchargement n’est pas appelé ; au lieu de cela, le pilote est simplement déchargé. Pour plus d’informations sur le gestionnaire de déchargement, consultez Déchargement d’un pilote intermédiaire.

Le gestionnaire de déchargement doit appeler NdisDeregisterProtocolDriver pour annuler l’inscription de la partie protocole du pilote intermédiaire. Le gestionnaire de déchargement doit également effectuer toutes les opérations de nettoyage nécessaires, telles que la réaffectation des ressources utilisées par la partie protocole du pilote.

Notez qu’un gestionnaire de déchargement diffère d’une fonction MiniportHaltEx : le gestionnaire de déchargement a une étendue plus globale et l’étendue de la fonction MiniportHaltEx est limitée à un adaptateur miniport particulier. Le pilote intermédiaire doit propre les informations d’état et réallouer des ressources lorsque chaque pilote miniport sous-jacent qui lui est lié est arrêté. Pour plus d’informations sur la gestion de l’opération d’arrêt pour les miniports virtuels, consultez Arrêt d’un miniport virtuel.

ProtocolUninstall est un gestionnaire de déchargement facultatif. Inscrivez un point d’entrée pour cette fonction dans la structure ProtocolCharacteristics que vous passez à NdisRegisterProtocolDriver. NDIS appelle ProtocolUninstall en réponse à une demande d’utilisateur pour désinstaller un pilote intermédiaire. NDIS appelle ProtocolUnbindAdapterEx une fois pour chaque adaptateur lié, puis NDIS appelle ProtocolUninstall. Ce gestionnaire est appelé avant que le système décharge réellement le pilote. Ce minutage permet de libérer des objets d’appareil ou d’autres ressources susceptibles d’empêcher le système d’appeler le gestionnaire de déchargement inscrit auprès de NdisMRegisterMiniportDriver et de décharger le pilote.

DriverEntry peut initialiser des verrous de rotation pour protéger toutes les ressources partagées à l’échelle mondiale que le pilote intermédiaire alloue, telles que les variables d’état, les structures et les zones de mémoire. Le pilote utilise ces ressources pour suivre les connexions et suivre les envois en cours ou les files d’attente allouées par le pilote.

Si DriverEntry ne parvient pas à allouer les ressources dont le pilote a besoin pour effectuer des opérations d’E/S réseau, il doit libérer toutes les ressources précédemment allouées et retourner une erreur appropriée status.

Les rubriques suivantes décrivent plus en détail comment inscrire des pilotes intermédiaires :

Inscription en tant que pilote intermédiaire NDIS

Inscription d’un pilote intermédiaire en tant que pilote Miniport

Inscription d’un pilote intermédiaire en tant que pilote de protocole