Partager via


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

Un pilote intermédiaire appelle NdisMRegisterMiniportDriver pour exporter ses fonctions MiniportXxx . Le NdisMiniportDriverHandle retourné par NdisMRegisterMiniportDriver doit être conservé par le pilote intermédiaire et l’entrée dans NDIS lorsque le pilote appelle NdisIMInitializeDeviceInstanceEx.

Le pilote intermédiaire doit :

  1. Initialisez zéro une structure NDIS_MINIPORT_DRIVER_CHARACTERISTICS avec NdisZeroMemory.

  2. Stockez les adresses des fonctions MiniportXxx obligatoires, ainsi que toutes les fonctions MiniportXxx facultatives que le pilote exporte.

Un pilote intermédiaire qui prend en charge les fonctionnalités NDIS 6.0 doit s’inscrire en tant que pilote miniport version 6.0. Pour plus d’informations sur la spécification des numéros de version des pilotes miniports, consultez NDIS_MINIPORT_DRIVER_CHARACTERISTICS.

Vous devez définir les entrées suivantes dans MiniportCharacteristics sur une adresse de fonction MiniportXxx valide, sauf si la fonction est facultative et n’est pas exportée. Si le pilote n’exporte pas la fonction, définissez l’adresse sur NULL.

SetOptionsHandler
MiniportSetOptions est une fonction facultative. NDIS appelle MiniportSetOptions afin que le pilote intermédiaire puisse spécifier des gestionnaires facultatifs.

InitializeHandlerEx
NDIS appelle MiniportInitializeEx à la suite du pilote intermédiaire appelant NdisIMInitializeDeviceInstanceEx pour initialiser ses opérations d’adaptateur miniport pour le miniport virtuel en cours d’initialisation.

HaltHandlerEx
MiniportHaltEx est une fonction obligatoire. NDIS appelle MiniportHaltEx si le périphérique miniport virtuel exposé par le pilote intermédiaire est désactivé ou arrêté, ou si le pilote intermédiaire appelé NdisIMDeInitializeDeviceInstance pour lancer sa suppression.

UnloadHandler
MiniportDriverUnload est une fonction obligatoire. NDIS appelle MiniportDriverUnload pour décharger le pilote intermédiaire.

PauseHandler
MiniportPause est une fonction obligatoire. NDIS appelle MiniportPause pour arrêter le flux de données réseau via un miniport virtuel spécifié du pilote intermédiaire.

RestartHandler
MiniportRestart est une fonction obligatoire. NDIS appelle MiniportRestart pour redémarrer le flux de données réseau via un miniport virtuel spécifié du pilote intermédiaire.

OidRequestHandler
MiniportOidRequest reçoit les requêtes OID_XXX provenant d’un pilote qui a été appelé NdisOidRequest ou de NDIS. Le pilote intermédiaire peut gérer une requête ou la transmettre au pilote miniport sous-jacent.

SendNetBufferListsHandler
MiniportSendNetBufferLists reçoit un tableau d’un ou plusieurs pointeurs vers NET_BUFFER_LIST structures qui spécifient les données réseau à transmettre sur le réseau. Chaque pilote intermédiaire doit fournir une fonction MiniportSendNetBufferLists . Pour plus d’informations, consultez Transmission de données réseau via un pilote intermédiaire.

ReturnNetBufferListsHandler
MiniportReturnNetBufferLists reçoit une structure de NET_BUFFER_LIST retournée qu’il a précédemment indiquée à un pilote de niveau supérieur en appelant NdisMIndicateReceiveNetBufferLists. L’appel à NdisMIndicateReceiveNetBufferLists abandonne le contrôle des ressources indiquées au pilote de niveau supérieur. Une fois que le pilote de niveau supérieur a utilisé chaque indication, le pilote intermédiaire alloué NET_BUFFER_LIST structure et les ressources qu’il décrit sont retournées à la fonction MiniportReturnNetBufferLists .

CancelSendHandler
MiniportCancelSend est une fonction obligatoire. NDIS appelle MiniportCancelSend pour annuler une demande d’envoi.

CheckForHangHandler
MiniportCheckForHangEx n’étant pas requis pour les pilotes intermédiaires, ils doivent définir ce point d’entrée sur NULL.

ResetHandlerEx
MiniportResetEx n’étant pas requis pour les pilotes intermédiaires, ils doivent définir ce point d’entrée sur NULL.

DevicePnPEventNotifyHandler
Point d’entrée de la fonction MiniportDevicePnPEventNotify .

ShutdownHandlerEx
MiniportShutdownEx est une fonction obligatoire. MiniportShutdownEx restaure le miniport virtuel à son état initial (avant l’exécution de la routine DriverEntry du pilote intermédiaire).

CancelOidRequestHandler
MiniportCancelOidRequest est une fonction obligatoire. NDIS appelle MiniportCancelOidRequest pour annuler une requête OID.

Un pilote intermédiaire peut nécessiter d’autres fonctions MiniportXxx spécifiques à l’implémentation. Pour plus d’informations sur l’inscription facultative, consultez Configuration des services de pilotes Miniport facultatifs.

Certaines fonctions de gestionnaire de pilotes miniports ne sont jamais fournies par un pilote intermédiaire. Les raisons sont les suivantes : ces pilotes ne gèrent pas les périphériques d’interruption, ou ces pilotes n’allouent pas de mémoires tampons à l’IRQL déclenché.

Note Les pilotes intermédiaires doivent inclure des fonctionnalités de pause et de redémarrage. Incluez la prise en charge de la pause et du redémarrage des miniports virtuels, si nécessaire, lorsque NDIS interrompt une pile de pilotes sous-jacente. Pour plus d’informations sur la pause et le redémarrage, consultez Gestion de la pile des pilotes.