MINIPORT_SYNCHRONIZE_INTERRUPT fonction de rappel (ndis.h)
Un pilote miniport doit fournir un gestionnaire MiniportSynchronizeInterrupt si une fonction de pilote qui s’exécute à un niveau inférieur à DIRQL partage des ressources avec la fonction MiniportInterrupt .
Pour les interruptions signalées par un message, le pilote miniport fournit un gestionnaire MiniportSynchronizeMessageInterrupt si une fonction de pilote qui s’exécute à un niveau inférieur à DIRQL partage des ressources pour une interruption signalée par un message avec la fonction MiniportMessageInterrupt .
Syntaxe
MINIPORT_SYNCHRONIZE_INTERRUPT MiniportSynchronizeInterrupt;
BOOLEAN MiniportSynchronizeInterrupt(
[in] NDIS_HANDLE SynchronizeContext
)
{...}
Paramètres
[in] SynchronizeContext
Handle à une zone de contexte fournie lorsque la fonction MiniportXxx du pilote miniport ou interne appelée NdisMSynchronizeWithInterruptEx , fonction.
Valeur retournée
MiniportSynchronizeInterrupt retourne une valeur booléenne avec une signification déterminée par le pilote. NDIS retourne la même valeur lorsque NDIS retourne à partir de NdisMSynchronizeWithInterruptEx.
Remarques
Pour synchroniser l’accès aux ressources partagées avec MiniportInterrupt, les fonctions de pilote de priorité inférieure doivent appeler le NdisMSynchronizeWithInterruptEx , fonction. La fonction MiniportSynchronizeInterrupt du pilote accède aux ressources partagées sur DIRQL. L’appel de NdisMSynchronizeWithInterruptEx empêche les conditions de course et les interblocages dans un tel pilote de miniport.
Toutes les fonctions de pilote de priorité inférieure qui partagent des ressources entre elles (mais pas avec une fonction qui s’exécute sur DIRQL) doivent utiliser un verrou de rotation pour protéger ces ressources partagées.
MiniportSynchronizeInterrupt s’exécute au niveau du DIRQL affecté lorsque la fonction MiniportInitializeEx du pilote appelle le Fonction NdisMRegisterInterruptEx . Comme toute fonction de pilote qui s’exécute sur DIRQL, MiniportSynchronizeInterrupt doit retourner le contrôle à l’appelant aussi rapidement que possible, et il peut appeler uniquement les fonctions NdisXxx qui peuvent être appelées en toute sécurité à n’importe quel IRQL.
Exemples
Pour définir une fonction MiniportSynchronizeInterrupt , 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, au vérificateur de pilotes statiques (SDV) et à d’autres outils de vérification de trouver des erreurs. 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 MiniportSynchronizeInterrupt nommée « MySynchronizeInterrupt », utilisez le type MINIPORT_SYNCHRONIZE_INTERRUPT comme indiqué dans cet exemple de code :
MINIPORT_SYNCHRONIZE_INTERRUPT MySynchronizeInterrupt;
Ensuite, implémentez votre fonction comme suit :
_Use_decl_annotations_
BOOLEAN
MySynchronizeInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Pour définir une fonction MiniportSynchronizeMessageInterrupt pour les interruptions signalées par un message, utilisez le type MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT comme indiqué dans cet exemple de code :
MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT MySynchronizeMessageInterrupt;
Ensuite, implémentez votre fonction comme suit :
_Use_decl_annotations_
BOOLEAN
MySynchronizeMessageInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Les types de fonction MINIPORT_SYNCHRONIZE_INTERRUPT et MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT sont définis 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 à vos définitions de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction 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 | Voir la section Notes |