Partager via


Fonction KeSetTargetProcessorDpcEx (wdm.h)

La routine KeSetTargetProcessorDpcEx spécifie le processeur sur lequel une routine DPC s’exécutera.

Syntaxe

NTSTATUS KeSetTargetProcessorDpcEx(
  [in, out] PKDPC             Dpc,
  [in]      PPROCESSOR_NUMBER ProcNumber
);

Paramètres

[in, out] Dpc

Pointeur vers l’objet DPC de l’appelant. Ce paramètre pointe vers une structure KDPC , qui est une structure système opaque qui représente l’objet DPC. Cet objet doit avoir été initialisé par la routine KeInitializeDpc .

[in] ProcNumber

Pointeur vers une structure de PROCESSOR_NUMBER allouée par l’appelant qui identifie le processeur cible sur lequel la DPC sera mise en file d’attente et exécutée. Cette structure spécifie un groupe et un processeur au sein de ce groupe.

Valeur retournée

KeSetTargetProcessorDpcEx retourne STATUS_SUCCESS si l’appel réussit. Sinon, il retourne ce qui suit :

Code de retour Description
STATUS_INVALID_PARAMETER
Le paramètre ProcNumber pointe vers un numéro de processeur non valide.

Remarques

Chaque processeur d’un système multiprocesseur a sa propre file d’attente DPC. KeSetTargetProcessorDpcEx spécifie la file d’attente du processeur que le système doit utiliser lorsque le pilote appelle la routine KeInsertQueueDpc ou IoRequestDpc pour mettre en file d’attente un DPC à exécuter ultérieurement.

KeSetTargetProcessorDpcEx peut spécifier le processeur cible pour les PDC ordinaires et les DCP threads. Un DPC ordinaire ne peut pas être préempté par un thread à priorité élevée, mais un DPC thread peut être préempté par des threads critiques qui ont des priorités suffisamment élevées.

Une routine associée, KeSetTargetProcessorDpc, spécifie un processeur cible pour un DPC, mais cette routine, contrairement à KeSetTargetProcessorDpcEx, ne spécifie pas de groupe pour le processeur cible. À compter de Windows 7, KeSetTargetProcessorDpc suppose que le processeur cible appartient au groupe 0. Ce comportement garantit que les pilotes existants qui appellent KeSetTargetProcessorDpc et qui n’utilisent aucune fonctionnalité orientée groupe s’exécutent correctement dans les systèmes multiprocesseurs qui ont deux groupes ou plus. Toutefois, les pilotes qui utilisent des fonctionnalités orientées groupe dans Windows 7 et versions ultérieures du système d’exploitation Windows doivent appeler KeSetTargetProcessorDpcEx au lieu de KeSetTargetProcessorDpc.

Un appel à KeSetTargetProcessorDpcEx qui se produit après qu’un objet DPC a été mis en file d’attente n’a aucun effet sur la sélection d’un processeur pour la routine DPC sur laquelle s’exécuter. Pour contrôler la sélection du processeur cible, un appel KeSetTargetProcessorDpcEx doit se produire avant l’appel à KeInsertQueueDpc ou IoRequestDpc qui met en file d’attente l’objet DPC.

Pour plus d’informations sur les files d’attente DPC, consultez Organisation des files d’attente DPC.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 7.
Plateforme cible Universal
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau

Voir aussi

IoRequestDpc

KDPC

KeInitializeDpc

KeInsertQueueDpc

KeSetTargetProcessorDpc

PROCESSOR_NUMBER