NdisMRegisterInterruptEx, fonction (ndis.h)
Les pilotes miniport NDIS appellent la fonction NdisMRegisterInterruptEx pour inscrire une interruption.
Syntaxe
NDIS_STATUS NdisMRegisterInterruptEx(
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_HANDLE MiniportInterruptContext,
[in] PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
[out] PNDIS_HANDLE NdisInterruptHandle
);
Paramètres
[in] MiniportAdapterHandle
Poignée de l’adaptateur miniport que NDIS a passée à Fonction MiniportInitializeEx .
[in] MiniportInterruptContext
Pointeur vers un bloc d’informations de contexte. Le pilote miniport alloue cette mémoire pour stocker des informations sur l’interruption. NDIS transmet le bloc d’informations de contexte dans les appels suivants à d’autres fonctions associées à l’interruption.
[in] MiniportInterruptCharacteristics
Pointeur vers un NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS structure créée par le pilote miniport. Le pilote initialise cette structure avec des points d’entrée de gestionnaire et des paramètres de configuration qui définissent les caractéristiques d’interruption.
[out] NdisInterruptHandle
Pointeur vers un handle NDIS. NDIS écrit le handle de l’objet d’interruption nouvellement créé dans l’adresse spécifiée par le pointeur NdisInterruptHandle .
Valeur retournée
NdisMRegisterInterruptEx peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
NDIS initialise l’objet d’interruption et fournit un handle d’interruption valide à NdisInterruptHandle . NDIS a revendiqué des ressources matérielles et configuré les fonctions qu’il appelle lorsqu’une interruption se produit. |
|
NdisMRegisterInterruptEx a échoué en raison de ressources insuffisantes. |
|
La tentative d’initialisation de l’objet d’interruption a échoué pour des raisons autres que celles de la liste précédente. |
Remarques
Un pilote miniport doit appeler NdisMRegisterInterruptEx à partir de sa fonction MiniportInitializeEx s’il gère une carte réseau qui génère des interruptions.
MiniportInitializeEx doit appeler le Fonction NdisMSetMiniportAttributes avant d’appeler NdisMRegisterInterruptEx.
Le pilote miniport doit spécifier des points d’entrée pour les fonctions de service d’interruption suivantes :
MiniportDisableInterruptExSi la carte réseau prend en charge les interruptions de message signalées (MSI), le pilote miniport doit spécifier des points d’entrée pour les fonctions de service MSI suivantes :
MiniportMessageInterruptDPC MiniportDisableMessageInterrupt MiniportEnableMessageInterruptSi un pilote spécifie des points d’entrée pour MSI, il doit également spécifier des points d’entrée pour les fonctions de service d’interruption non MSI. En outre, si NdisMRegisterInterruptEx retourne NDIS_STATUS_SUCCESS, le pilote doit examiner la valeur du membre InterruptType du NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS structure pour déterminer le type d’interruptions NDIS accordées. Si NDIS ne peut pas accorder la prise en charge MSI, il accorde la prise en charge des interruptions basées sur les lignes.
Lorsque les interruptions sont activées sur la carte réseau, la fonction MiniportInterrupt(ou MiniportMessageInterrupt) d’un pilote peut être appelée à tout moment après que le pilote a appelé NdisMRegisterInterruptEx, même avant le retour de NdisMRegisterInterruptEx . Par conséquent, un pilote ne doit pas appeler NdisMRegisterInterruptEx tant qu’il n’est pas prêt à gérer une interruption.
Les pilotes appellent le Fonction NdisMDeregisterInterruptEx pour libérer les ressources précédemment allouées avec NdisMRegisterInterruptEx.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge dans NDIS 6.0 et versions ultérieures. |
Plateforme cible | Universal |
En-tête | ndis.h (inclure Ndis.h) |
Bibliothèque | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | Init_DeRegisterInterrupt(ndis), Init_RegisterInterrupt(ndis), Irql_Interrupt_Function(ndis), NdisMDeregisterInterruptEx(ndis) |