Partager via


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

La méthode Notify doit être appelée à partir de la routine de service d’interruption du pilote miniport (ISR) lorsqu’une interruption matérielle s’est produite. Cet appel demande au pilote de port d’appeler le pilote miniport avec un appel de procédure différée (DPC) tandis 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é en tant que NULL. Pour plus d’informations, consultez la section Remarques suivante.

Valeur de retour

Aucun

Remarques

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

  • Si le paramètre pServiceGroup n’est pasNULL, la méthode Notify appelle la méthode RequestService sur l’objet IServiceGroup auquel pointe ce paramètre.
  • Si pServiceGroup est NULL :
    • La méthode Notify appelle la méthode RequestService sur l’objet IServiceGroup du pilote miniport. Il s’agit de l’objet IServiceGroup généré par le pilote miniport pendant l’appel IMiniportDMus ::Init. Le pilote miniport peut également avoir enregistré cet objet tôt (autrement dit, avant le retour de Init) en appelant IPortDMus ::RegisterServiceGroup.
    • La méthode Notify appelle également la méthode RequestService sur l’objet IServiceGroup appartenant à chacun des flux du pilote miniport. Il s’agit de l’objet IServiceGroup généré par la méthode IMiniportDMus ::NewStream.
Le pilote miniport appelle généralement Notify pour avertir le pilote de port que le périphérique audio a généré une interruption matérielle. Lorsqu’une interruption signale, par exemple, que certains registres doivent être lus, l’ISR du pilote miniport ne peut pas accéder au graphique MXF (filtre de transformation MIDI) au niveau du runtime IRQL élevé. Au lieu de cela, le pilote miniport peut stocker les données d’entrée (un octet de données MIDI, par exemple) à partir de l’inscription, appeler Notify, et attendre que le pilote de port puisse y revenir avec un DPC.

Lorsque l’ISR du pilote miniport appelle Notify, le pilote de port reçoit la notification au niveau de l’irQL d’interruption matérielle élevée et place une DPC dans la file d’attente. Lorsque IRQL tombe sur le DISPATCH_LEVEL, le DPC du pilote de port se déclenche et assure le service du 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 de NULL pour signer que le pilote miniport peut désormais placer le message MIDI précédemment stocké dans le graphique MXF, car le runtime d’intégration a été supprimé à 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, consultez Fournir des informations de contexte ISR). Lorsque l’interruption se produit, le système d’exploitation appelle l’ISR et passe ServiceContext en tant que paramètre d’appel à l’ISR. Bien que la signification du paramètre ServiceContext soit connue uniquement pour le 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 sur l’objet miniport.

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

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête dmusicks.h (include Dmusicks.h)
IRQL N’importe quel niveau

Voir aussi

IMXF ::P utMessage

IMiniportDMus ::Init

IMiniportDMus ::NewStream

IPortDMus

IPortDMus ::RegisterServiceGroup

IServiceGroup