IPortDMus ::Notify, méthode (dmusicks.h)

La Notify méthode doit être appelée à partir de la routine de service d’interruption (ISR) du pilote miniport lorsqu’une interruption matérielle s’est produite. Cet appel demande que le pilote de port rappelle le pilote miniport avec un appel de procédure différée (DPC) pendant que le pilote miniport gère l’interruption.

Syntaxe

void Notify(
  [in, optional] PSERVICEGROUP ServiceGroup
);

Paramètres

[in, optional] ServiceGroup

Pointeur vers un objet IServiceGroup . Ce paramètre est facultatif et peut être spécifié comme NULL. Pour plus d'informations, consultez la section Notes qui suit.

Valeur de retour

None

Remarques

La Notify méthode envoie une notification au groupe de services du pilote miniport :

  • Si le paramètre pServiceGroup n’est pas NULL, la Notify méthode appelle la méthode RequestService sur l’objet IServiceGroup vers lequel ce paramètre pointe.
  • Si pServiceGroup a la valeur NULL :
    • La Notify méthode appelle la méthode RequestService sur l’objet IServiceGroup du pilote miniport. Il s’agit de l’objet IServiceGroup que le pilote miniport génère pendant l’appel IMiniportDMus ::Init . Le pilote miniport peut également avoir inscrit cet objet tôt (c’est-à-dire avant le retour d’Init) en appelant IPortDMus ::RegisterServiceGroup.
    • La Notify méthode appelle également la méthode RequestService sur l’objet IServiceGroup appartenant à chacun des flux du pilote miniport. Il s’agit de l’objet IServiceGroup que la méthode IMiniportDMus ::NewStream génère.
Le pilote miniport appelle Notify généralement pour informer le pilote de port que le périphérique audio a généré une interruption matérielle. Lorsqu’une interruption signale, par exemple, qu’un registre doit être lu, l’ISR du pilote miniport ne peut pas accéder au graphe MXF (filtre de transformation MIDI) au niveau de l’IRQL avec élévation de privilèges. Au lieu de cela, le pilote miniport peut stocker les données d’entrée (un octet de données MIDI, par exemple) à partir du registre, appeler Notifyet attendre que le pilote de port y revienne avec un DPC.

Lorsque l’ISR du pilote miniport appelle Notify, le pilote de port reçoit la notification à l’irQL d’interruption matérielle élevée et place un DPC dans la file d’attente. Lorsque l’IRQL tombe sur le DISPATCH_LEVEL, le DPC du pilote de port déclenche et dessert le pilote miniport.

Dans le DPC, le pilote de port appelle IMXF ::P utMessage sur le flux d’entrée du pilote miniport avec un paramètre NULL pour indiquer que le pilote miniport peut maintenant placer le message MIDI précédemment stocké dans le graphique MXF, car l’IRQL est redesclé à DISPATCH_LEVEL.

Cette méthode est essentielle pour un minutage précis. La plupart des miniports appellent cette méthode en réponse à une interruption de notification après avoir effacé la source d’interruption. Bien que le pilote miniport soit libre d’utiliser d’autres méthodes pour déterminer quand appeler cette méthode, le minutage précis est important et doit être maintenu.

Lorsqu’un pilote d’adaptateur installe un ISR, il envoie un paramètre ServiceContext ainsi que le point d’entrée de l’ISR (pour plus d’informations, voir Fournir des informations sur le contexte ISR). Lorsque l’interruption se produit, le système d’exploitation appelle l’ISR et transmet ServiceContext en tant que paramètre d’appel à l’ISR. Bien que la signification du paramètre ServiceContext soit connue uniquement du développeur du pilote, il s’agit généralement d’un pointeur vers l’objet miniport. L’ISR utilise ce pointeur pour accéder aux informations relatives à l’objet miniport.

Le paramètre pServiceGroup suit les conventions de comptage de références pour les objets COM.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête dmusicks.h (inclure Dmusicks.h)
IRQL N’importe quel niveau

Voir aussi

IMXF ::P utMessage

IMiniportdMus ::init

IMiniportDMus ::NewStream

IPortDMus

IPortDMus ::RegisterServiceGroup

IServiceGroup