Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique à KMDF et UMDF]
La méthode WdfInterruptSetExtendedPolicy spécifie la priorité d’interruption, l’affinité du processeur, la stratégie d’affinité et le groupe de processeurs pour une interruption spécifiée.
Syntaxe
VOID WdfInterruptSetExtendedPolicy(
[in] WDFINTERRUPT Interrupt,
[in] PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
);
Paramètres
[in] Interrupt
Handle vers un objet d’interruption de framework.
[in] PolicyAndGroup
Pointeur vers une structure WDF_INTERRUPT_EXTENDED_POLICY que l’appelant alloue et initialise.
Valeur de retour
Aucun
Remarques
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Windows Vista et versions ultérieures du système d’exploitation permettent aux pilotes d’utiliser la méthode WdfInterruptSetPolicy pour spécifier la priorité, l’affinité du processeur et la stratégie d’affinité d’une interruption. En outre, les versions 1.9 et ultérieures de KMDF permettent aux pilotes d’utiliser la méthode WdfInterruptSetExtendedPolicy pour spécifier la priorité, l’affinité du processeur, la stratégie d’affinité et le groupe de processeurs d’interruptions.
Pour plus d’informations sur l’utilisation du Registre pour remplacer les valeurs qui ensembles WdfInterruptSetExtendedPolicy, consultez Affinité d’interruption et priorité.
Si un pilote s’exécute sur une version du système d’exploitation antérieure à Windows 7, l’infrastructure ignore la valeur spécifiée par le pilote pour le numéro de groupe de processeur lorsqu’il appelle WdfInterruptSetExtendedPolicy.
Si un pilote s’exécute sur une version du système d’exploitation antérieure à Windows Vista, l’infrastructure ignore toutes les valeurs spécifiées par le pilote lorsqu’il appelle WdfInterruptSetPolicy ou WdfInterruptSetExtendedPolicy.
Pour plus d’informations sur les valeurs de Registre et les sections INF qui spécifient la priorité, l’affinité processeur et la stratégie d’affinité d’interruption, consultez Affinité d’interruption et.
Si un pilote appelle WdfInterruptSetExtendedPolicy, il le fait généralement dans sa fonction de rappel EvtDriverDeviceAdd, après avoir appelé WdfInterruptCreate.
Si votre pilote crée des interruptions dans EvtDevicePrepareHardware, n’utilisez pas WdfInterruptSetPolicy ou WdfInterruptSetExtendedPolicy. Au lieu de cela, vous pouvez appliquer une stratégie dans EvtDeviceFilterAddResourceRequirements, en manipulant directement l’exigence de ressource d’interruption que cette fonction de rappel reçoit dans son paramètre IoResourceRequirementsList.
Pour plus d’informations sur la gestion des interruptions dans les pilotes basés sur l’infrastructure, consultez Gestion des interruptions matérielles.
Exemples
L’exemple de code suivant appelle WDF_INTERRUPT_EXTENDED_POLICY_INIT pour initialiser une structure de WDF_INTERRUPT_EXTENDED_POLICY ; définit des valeurs pour le jeu de processeurs de stratégie, de priorité et de cible ; et appelle WdfInterruptSetExtendedPolicy. L’exemple définit la priorité normale pour l’interruption et affecte l’interruption au processeur 0 dans le groupe de processeurs 2.
#define AFFINITY_MASK(n) ((ULONG_PTR)1 << (n))
WDF_INTERRUPT_EXTENDED_POLICY myExtendedPolicy;
WDF_INTERRUPT_EXTENDED_POLICY_INIT(&myExtendedPolicy);
myExtendedPolicy.Policy = WdfIrqPolicySpecifiedProcessors;
myExtendedPolicy.Priority = WdfIrqPriorityNormal;
myExtendedPolicy.TargetProcessorSetAndGroup.Mask = AFFINITY_MASK(0);
myExtendedPolicy.TargetProcessorSetAndGroup.Group = 2;
WdfInterruptSetExtendedPolicy(
Interrupt,
&myExtendedPolicy
);
Spécifications
| Besoin | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1.9 |
| version minimale de UMDF | 2.0 |
| En-tête | wdfinterrupt.h (include Wdf.h) |
| Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
| IRQL | <=DISPATCH_LEVEL |
| règles de conformité DDI | DriverCreate(kmdf) |