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 structure WDF_INTERRUPT_CONFIG contient des informations de configuration pour une interruption d’appareil.
Syntaxe
typedef struct _WDF_INTERRUPT_CONFIG {
ULONG Size;
WDFSPINLOCK SpinLock;
WDF_TRI_STATE ShareVector;
BOOLEAN FloatingSave;
BOOLEAN AutomaticSerialization;
PFN_WDF_INTERRUPT_ISR EvtInterruptIsr;
PFN_WDF_INTERRUPT_DPC EvtInterruptDpc;
PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable;
PFN_WDF_INTERRUPT_DISABLE EvtInterruptDisable;
PFN_WDF_INTERRUPT_WORKITEM EvtInterruptWorkItem;
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw;
PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated;
WDFWAITLOCK WaitLock;
BOOLEAN PassiveHandling;
WDF_TRI_STATE ReportInactiveOnPowerDown;
BOOLEAN CanWakeDevice;
} WDF_INTERRUPT_CONFIG, *PWDF_INTERRUPT_CONFIG;
Membres
Size
Taille, en octets, de cette structure.
SpinLock
Handle vers un objet de verrouillage de spin-lock framework, obtenu par un appel précédent à WdfSpinLockCreate, ou NULL. Si ce paramètre est NULL, l’infrastructure utilise un objet de verrouillage de spin-lock interne. L’infrastructure acquiert le verrou de rotation avant d’appeler la fonction de rappel d’événement evtInterruptSynchron ize du pilote et lorsque le pilote appelle WdfInterruptAcquireLock. Pour la gestion des interruptions au niveau passif, définissez la valeur NULL.
À compter de UMDF version 2.0, UMDF utilise toujours la gestion des interruptions au niveau passif. Dans ce cas, définissez ce membre sur NULL.
ShareVector
Valeur WDF_TRI_STATE-typée. Si cette valeur est WdfTrue, le vecteur d’interruption peut être partagé. Si la valeur est WdfFalse, le vecteur d’interruption ne peut pas être partagé. Si la valeur est WdfDefault, le gestionnaire PnP utilise la valeur du pilote de bus.
FloatingSave
Valeur booléenne qui, si TRUE, indique que le système enregistre l’état à virgule flottante du processeur et MMX lors de l’interruption de l’appareil. Si FALSE, le système n’enregistre pas l’état à virgule flottante et MMX. Un pilote doit définir cette valeur sur TRUE uniquement si son EvtInterruptIsr fonction de rappel doit utiliser des registres à virgule flottante ou MMX. Pour plus d’informations sur l’enregistrement à virgule flottante et l’état MMX, consultez Utilisation de virgule flottante ou DE MMX dans unde pilote WDM.
Ce membre est ignoré à partir de UMDF version 2.0.
AutomaticSerialization
Valeur booléenne qui, si TRUE, indique que l’infrastructure synchronise l’exécution de l’objet d’interruption EvtInterruptDpc ou EvtInterruptWorkItem fonction de rappel avec des fonctions de rappel d’autres objets qui se trouvent sous l’objet parent de l’interruption. Pour plus d’informations, consultez la section Remarques suivante.
EvtInterruptIsr
Pointeur vers la fonction de rappel evtInterruptIs r du pilote. Ce pointeur ne peut pas être NULL.
EvtInterruptDpc
Pointeur vers la fonction de rappel EvtInterruptDpc du pilote, ou NULL . Le pilote peut fournir EvtInterruptWorkItem ou EvtInterruptDpc, mais pas les deux.
EvtInterruptEnable
Pointeur vers la fonction de rappel EvtInterruptEnable du pilote, ou NULL .
EvtInterruptDisable
Pointeur vers la fonction de rappel EvtInterruptDisable du pilote, ou NULL .
EvtInterruptWorkItem
Pointeur vers la fonction de rappel evtInterruptWork Item du pilote ou NULL. Le pilote peut fournir EvtInterruptWorkItem ou EvtInterruptDpc, mais pas les deux. Le membre EvtInterruptWorkItem est disponible dans la version 1.11 et les versions ultérieures de KMDF.
InterruptRaw
Pointeur vers la structure CM_PARTIAL_RESOURCE_DESCRIPTOR qui décrit les ressources brutes que le système a affecté à l’interruption. Ce membre est utilisé uniquement si l’interruption est créée dans le EvtDevicePrepareHardware rappel. Le membre InterruptRaw est disponible dans la version 1.11 et les versions ultérieures de KMDF.
InterruptTranslated
Pointeur vers la structure CM_PARTIAL_RESOURCE_DESCRIPTOR qui décrit les ressources traduites que le système a affecté à l’interruption. Ce membre est utilisé uniquement si l’interruption est créée dans le EvtDevicePrepareHardware rappel. Le membre InterruptTranslated est disponible dans la version 1.11 et les versions ultérieures de KMDF.
WaitLock
Handle vers un objet de verrouillage d’attente du framework, obtenu par un appel précédent à WdfWaitLockCreate, ou NULL . Si WaitLock n’est pasNULL, PassiveHandling doit être défini sur TRUE. Le membre WaitLock est disponible dans la version 1.11 et les versions ultérieures de KMDF. Pour plus d’informations sur WaitLock, consultez Remarques.
PassiveHandling
Défini sur FALSE pour la gestion des interruptions au niveau du runtime d’intégration (DIRQL) de l’appareil. Définissez la valeur TRUE pour la gestion des interruptions au niveau passif. Le membre PassiveHandling est disponible dans la version 1.11 et les versions ultérieures de KMDF. À compter de UMDF version 2.0, WDF_INTERRUPT_CONFIG_INIT définit toujours ce membre sur TRUE.
ReportInactiveOnPowerDown
Ce membre s’applique uniquement à KMDF.
Valeur WDF_TRI_STATE-typée qui s’applique uniquement si le pilote n’a pas appelé WdfDeviceInitSetPowerNotPageable. Ce membre peut avoir l’une des valeurs suivantes :
WdfTrue - KMDF signale l’interruption inactive lorsque l’appareil passe à un état de faible alimentation (Dx). Dans les systèmes d’exploitation antérieurs à Windows 8, le comportement du framework correspond à celui décrit pour WdfFalse.
WdfFalse - KMDF déconnecte l’interruption lorsque l’appareil passe à un état de faible alimentation (Dx).
WdfDefault - Sur les plateformes ARM, le comportement du framework correspond à celui décrit pour WdfTrue. Sur d’autres plateformes, le comportement du framework correspond à celui décrit pour WdfFalse.
Le membre ReportInactiveOnPowerDown est disponible dans la version 1.11 et les versions ultérieures de KMDF. Il n’est pas disponible dans UMDF version 2.0.
Pour plus d’informations sur la création d’une interruption inactive, consultez Création d’unISR actif ou inactif.
CanWakeDevice
Valeur booléenne qui indique si l’interruption est utilisée pour réveiller l’appareil à partir d’un état de faible alimentation. Si FAUX, l’interruption n’est pas utilisée pour réveiller l’appareil. Si TRUE, l’interruption est utilisée pour réveiller l’appareil. Le membre CanWakeDevice est disponible à partir de KMDF version 1.13 et UMDF version 2.0.
Remarques
La structure WDF_INTERRUPT_CONFIG est utilisée comme entrée pour WdfInterruptCreate.
Pour initialiser une structure WDF_INTERRUPT_CONFIG, votre pilote doit d’abord appeler WDF_INTERRUPT_CONFIG_INIT, puis remplir les membres de la structure qui WDF_INTERRUPT_CONFIG_INIT n’initialise pas.
Si l' d’automaticSérialisation a la valeur TRUE, les règles suivantes s’appliquent :
- Si le niveau d’exécution de l’objet parent de l’interruption est WdfExecutionLevelPassive, le pilote peut fournir EvtInterruptWorkItem, mais ne doit pas fournir EvtInterruptDpc dans cette structure de configuration.
- Si le niveau d’exécution de l’objet parent de l’interruption est WdfExecutionLevelDispatch, le pilote peut fournir EvtInterruptDpc, mais ne doit pas fournir EvtInterruptWorkItem dans cette structure de configuration. Dans ce deuxième cas, l’objet d’interruption lui-même peut toujours être passif.
Pour plus d’informations sur l' de synchronisation et la synchronisation des fonctions de rappel de pilote, consultez Techniques de synchronisation pour les pilotes Framework-Based.
Par défaut, les pilotes de fonction KMDF peuvent être paginables. Un pilote appelle WdfDeviceInitSetPowerNotPageable pour spécifier qu’il ne peut pas être mis à jour.
Dans les versions KMDF antérieures à la version 1.11, l’infrastructure déconnecte toujours les interruptions des pilotes paginables lorsque l’appareil passe à un état de faible puissance (Dx). À compter de KMDF version 1.11, vous pouvez modifier ce comportement en définissant le ReportInactiveOnPowerDown membre de cette structure. Pour les pilotes paginables sans alimentation, les interruptions restent connectées lorsque des transitions d’état Dx se produisent, quelle que soit la valeur définie dans ReportInactiveOnPowerDown.
Si un pilote UMDF définit ReportInactiveOnPowerDown, la valeur est ignorée.
Pour plus d’informations sur la gestion des interruptions dans les pilotes basés sur l’infrastructure, consultez Gestion des interruptions matérielles.
Le pilote peut utiliser l'CanWakeDevice membre de cette structure pour créer une interruption qui peut être utilisée pour ramener l’appareil d’un état Dx à faible alimentation vers D0. La routine de rappel EvtInterruptIsr du pilote est planifiée pour s’exécuter à IRQL = PASSIVE_LEVEL après l’entrée de L’appareil D0.
Pour plus d’informations, consultez Using an Interrupt to Wake a Device.
Spécifications
| Besoin | Valeur |
|---|---|
| version minimale de KMDF | 1.0 |
| version minimale de UMDF | 2.0 |
| En-tête | wdfinterrupt.h (include Wdf.h) |