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 |
---|---|
|
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 |