Partager via


MINIPORT_HALT fonction de rappel (ndis.h)

NDIS appelle la fonction MiniportHaltEx d’un pilote miniport pour libérer des ressources lorsqu’un adaptateur miniport est supprimé et pour arrêter le matériel. Cette fonction place le miniport à l’état Arrêté, où aucun autre rappel ne peut se produire (y compris MiniportShutdownEx). Pour plus d’informations sur les états des pilotes miniports, consultez États et opérations de l’adaptateur miniport.

Note Vous devez déclarer la fonction à l’aide du type MINIPORT_HALT . Pour plus d’informations, consultez la section Exemples suivante.
 

Syntaxe

MINIPORT_HALT MiniportHalt;

void MiniportHalt(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HALT_ACTION HaltAction
)
{...}

Paramètres

[in] MiniportAdapterContext

Handle à une zone de contexte que le pilote miniport a allouée dans sa fonction MiniportInitializeEx . Le pilote miniport utilise cette zone de contexte pour conserver les informations d’état d’un adaptateur miniport.

[in] HaltAction

Raison de l’arrêt de l’adaptateur miniport. Ce peut être l’une des valeurs suivantes :

NdisHaltDeviceDisabled

NDIS arrête l’adaptateur miniport en réponse à un message de suppression de Plug-and-Play (PnP).

NdisHaltDeviceInstanceDeInitialized

NDIS arrête l’adaptateur miniport en réponse à un pilote intermédiaire appelant le Fonction NdisIMDeInitializeDeviceInstance .

NdisHaltDevicePoweredDown

NDIS arrête l’adaptateur miniport, car le système passe à un état de veille.

NdisHaltDeviceSurpriseRemoved

L’adaptateur miniport a été supprimé par surprise et le matériel n’est pas présent.

NdisHaltDeviceFailed

L’adaptateur miniport est en cours de suppression en raison d’une défaillance matérielle. Le pilote miniport appelé fonction NdisMRemoveMiniport ou un pilote de bus n’a pas allumé la carte réseau lors de la reprise.

NdisHaltDeviceInitializationFailed

NDIS n’a pas pu initialiser l’adaptateur miniport pour une raison inconnue une fois la fonction MiniportInitializeEx terminée avec succès.

NdisHaltDeviceStopped

NDIS arrête l’adaptateur miniport en réponse à un message d’arrêt pnP d’appareil.

Valeur de retour

None

Remarques

Un pilote spécifie le point d’entrée MiniportHaltEx lorsqu’il appelle le Fonction NdisMRegisterMiniportDriver .

NDIS peut appeler MiniportHaltEx à tout moment une fois que la fonction MiniportInitializeEx d’un pilote est retournée avec succès. Si le pilote contrôle une carte réseau physique, MiniportHaltEx doit arrêter la carte réseau. Si un pilote intermédiaire NDIS appelle le Fonction NdisIMDeInitializeDeviceInstance , NDIS appelle la fonction MiniportHaltEx pour l’appareil virtuel du pilote.

MiniportHaltEx doit libérer toutes les ressources qui ont été allouées dans MiniportInitializeEx pour un appareil. MiniportHaltEx libère également toutes les autres ressources que le pilote a allouées dans les opérations suivantes pour cet appareil. Le pilote doit appeler les réciproques des fonctions NdisXxx avec lesquelles il a initialement alloué les ressources. En règle générale, une fonction MiniportHaltEx doit appeler les fonctions NdisXxx réciproques dans l’ordre inverse des appels effectués par le pilote à partir de MiniportInitializeEx.

Si une carte réseau génère des interruptions, la fonction MiniportHaltEx d’un pilote miniport peut être préemptée par la fonction MiniportInterrupt du pilote jusqu’à ce que l’appel MiniportHaltEx à La fonction NdisMDeregisterInterruptEx retourne. La fonction MiniportHaltEx d’un tel pilote doit désactiver les interruptions et appeler NdisMDeregisterInterruptEx dès que possible. Notez qu’un pilote peut continuer à recevoir des interruptions jusqu’à ce que NdisMDeregisterInterruptEx retourne. NdisMDeregisterInterruptEx ne retourne pas tant que le pilote n’a pas terminé tous les PDC planifiés (voir la fonction MiniportInterruptDPC pour plus d’informations).

Si le pilote a une fonction NetTimerCallback associée à un objet de minuteur qui peut se trouver dans la file d’attente du minuteur système, MiniportHaltEx doit appeler la fonction NdisCancelTimerObject . Si NdisCancelTimerObject échoue, le minuteur aurait peut-être déjà déclenché. Dans ce cas, le pilote doit attendre que la fonction de minuteur se termine avant que le pilote ne retourne à partir de MiniportHaltEx.

NDIS n’appelle pas MiniportHaltEx s’il y a des demandes OID en suspens ou des demandes d’envoi. NDIS n’envoie aucune autre demande pour l’appareil affecté après que NDIS a appelé MiniportHaltEx.

Si le pilote doit attendre la fin d’une opération, MiniportHaltEx peut utiliser la fonction NdisWaitEvent ou la fonction NdisMSleep .

NDIS appelle MiniportHaltEx à IRQL = PASSIVE_LEVEL.

Exemples

Pour définir une fonction MiniportHaltEx , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs, et il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction MiniportHaltEx nommée « MyHaltEx », utilisez le type MINIPORT_HALT comme indiqué dans cet exemple de code :

MINIPORT_HALT MyHaltEx;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyHaltEx(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HALT_ACTION  HaltAction
    )
  {...}

Le type de fonction MINIPORT_HALT est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction MINIPORT_HALT dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Windows
En-tête ndis.h (inclure Ndis.h)
IRQL PASSIVE_LEVEL
Règles de conformité DDI WlanAssociation, WlanConnectionRoaming, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Voir aussi

États de l’adaptateur d’un pilote Miniport

Arrêt d’un adaptateur Miniport

États et opérations de l’adaptateur miniport

Fonctions de réinitialisation et d’arrêt du pilote miniport

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback