Méthode IWDFDevice3 ::CreateInterrupt (wudfddi.h)

[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main avec UMDF.]

La méthode CreateInterrupt crée un objet d’interruption de framework.

Syntaxe

HRESULT CreateInterrupt(
  [in]  PWUDF_INTERRUPT_CONFIG Configuration,
  [out] IWDFInterrupt          **ppInterrupt
);

Paramètres

[in] Configuration

Pointeur vers une structure WUDF_INTERRUPT_CONFIG initialisée par un appel à la macro WUDF_INTERRUPT_CONFIG_INIT .

[out] ppInterrupt

Pointeur vers une mémoire tampon qui reçoit un pointeur vers l’interface IWDFInterrupt pour le nouvel objet d’interruption.

Valeur retournée

La méthode retourne S_OK si l’opération réussit. Sinon, cette méthode retourne l’un des codes d’erreur définis dans Winerror.h.

Remarques

Votre pilote doit appeler CreateInterrupt une fois pour chaque vecteur d’interruption requis par son appareil. Si l’appareil prend en charge les interruptions signalées par message (MSI), le pilote doit créer un objet d’interruption pour chaque message que l’appareil peut prendre en charge.

Les pilotes appellent généralement la méthode CreateInterrupt à partir d’une fonction de rappel OnDeviceAdd , mais peuvent également appeler cette méthode à partir de IPnpCallbackHardware2 ::OnPrepareHardware.

Une fois que le gestionnaire de Plug-and-Play (PnP) affecte des ressources système à l’appareil, l’infrastructure stocke des informations sur les ressources d’interruption attribuées à l’appareil dans les objets d’interruption que le pilote a créés. (Les pilotes qui ne prennent pas en charge les Plug-and-Play ne peuvent pas utiliser d’objets d’interruption.)

Le système peut ne pas affecter toutes les ressources d’interruption qu’un appareil peut prendre en charge. Par exemple, un pilote crée huit objets d’interruption pour un appareil capable de prendre en charge huit messages MSI. Toutefois, le système ne peut affecter qu’un seul message à l’appareil. Dans ce cas, sept des objets d’interruption seront inutilisés.

En règle générale, votre pilote doit stocker des informations spécifiques aux interruptions, telles que le contenu copié des registres d’interruption d’appareil, dans l’espace de contexte de l’objet d’interruption. Un pilote appelle IWDFObject ::AssignContext pour inscrire un contexte et demander une notification lorsque l’objet devient non valide.

UMDF prend en charge les interruptions déclenchées au niveau à partir de Windows 8. Si un pilote s’exécutant sur un système d’exploitation antérieur à Windows 8 crée une interruption déclenchée par un niveau dans OnDeviceAdd, CreateInterrupt réussit, car le système d’exploitation n’a pas encore de ressources affectées. Toutefois, lorsque l’infrastructure tente de connecter l’interruption ultérieurement, l’appareil ne parvient pas à démarrer.

Pour plus d’informations sur la gestion des interruptions dans les pilotes UMDF, consultez Accès au matériel et Gestion des interruptions.

Exemples

HRESULT  hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG  interruptConfig;

WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
                           MyInterruptIsr,
                           MyInterruptWorkItem);

hr = pDevice->Create(&interruptConfig, 
                     &pInterrupt);

Configuration requise

Condition requise Valeur
Fin de la prise en charge Non disponible dans UMDF 2.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
Version UMDF minimale 1.11
En-tête wudfddi.h
DLL WUDFx.dll

Voir aussi

IWDFDevice3

WUDF_INTERRUPT_CONFIG

WUDF_INTERRUPT_CONFIG_INIT