Fonction NdisMQueueDpcEx (ndis.h)

Les pilotes miniportS NDIS appellent la fonction NdisMQueueDpcEx pour planifier des appels DPC sur les processeurs.

Syntaxe

KAFFINITY NdisMQueueDpcEx(
  [in] IN NDIS_HANDLE     NdisInterruptHandle,
  [in] IN ULONG           MessageId,
  [in] IN PGROUP_AFFINITY TargetProcessors,
  [in] IN PVOID           MiniportDpcContext
);

Paramètres

[in] NdisInterruptHandle

Handle d’interruption que le pilote miniport a obtenu lors d’un appel précédent au Fonction NdisMRegisterInterruptEx .

[in] MessageId

ID de message MSI pour le DPC. Si la DPC concerne une interruption basée sur une ligne, ce paramètre n’est pas utilisé et doit être défini sur zéro. Sinon, MessageId est un index du IO_INTERRUPT_MESSAGE_INFO_ENTRY structure à l’intérieur d’un IO_INTERRUPT_MESSAGE_INFO structure. NDIS transmet un pointeur vers la structure IO_INTERRUPT_MESSAGE_INFO associée au membre MessageInfoTable lorsque le pilote s’inscrit correctement à MSI avec la fonction NdisMRegisterInterruptEx .

[in] TargetProcessors

Bitmap qui indique les processeurs cibles. NDIS doit planifier un DPC pour chaque processeur cible indiqué dans la bitmap. Chaque bit dans TargetProcessors identifie un processeur. Si l’appelant définit le bit 0, NDIS planifie un DPC pour le processeur 0. Si l’appelant définit le bit 1, NDIS planifie un DPC pour le processeur 1, et ainsi de suite.

[in] MiniportDpcContext

Pointeur vers une zone de contexte spécifiée par l’appelant. NDIS transmet ce pointeur au paramètre MiniportDpcContext du MiniportInterruptDPC et Fonctions MiniportMessageInterruptDPC .

Valeur retournée

NdisMQueueDpcEx retourne une bitmap qui indique les processeurs cibles. Chaque bit de la valeur de retour identifie un processeur.

NDIS a correctement planifié un DPC pour chaque processeur cible défini dans la bitmap. Si NDIS définit le bit 0, NDIS a planifié un DPC pour le processeur 0. Si NDIS définit le bit 1, NDIS a planifié un DPC pour le processeur 1, et ainsi de suite.

Si le pilote a demandé un DPC pour un processeur et que NDIS indique qu’il n’a pas planifié cette DPC, la DPC n’a pas été planifiée, car la DPC qui mappait à cette paire interruption/processeur était déjà planifiée pour ce processeur.

Remarques

Les pilotes NDIS 6.20 et versions ultérieures de miniport appellent NdisMQueueDpcEx pour demander des appels DPC pour d’autres processeurs. NDIS appelle miniportInterruptDPC ou Fonction MiniportMessageInterruptDPC pour terminer le traitement différé d’une interruption.

NdisMQueueDpcEx est identique à la fonction NdisMQueueDpc , sauf que le paramètre TargetProcessors a un type de KGROUP_AFFINITY. Par conséquent, NdisMQueueDpcEx peut planifier des DCP sur des processeurs dans n’importe quel groupe de processeurs. Pour planifier des PDC dans plusieurs groupes de processeurs, vous pouvez utiliser plusieurs appels à NdisMQueueDpcEx.

NoteNdisMQueueDpc, MiniportInterrupt et Les fonctions MiniportMessageInterrupt ont un paramètre TargetProcessors qui est un ULONG. Ce paramètre spécifie les 32 premiers processeurs du groupe de processeurs 0.
 
Important Les pilotes NDIS 6.20 et versions ultérieures doivent toujours utiliser NdisMQueueDpcEx pour planifier des PDC.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.20 et versions ultérieures.
Plateforme cible Universal
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL N’importe quel niveau

Voir aussi

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NdisMQueueDpc

NdisMRegisterInterruptEx