Implémentation d’IPowerNotify
Si les objets miniport de votre pilote (voir Interfaces d’objet miniport audio) ou les objets stream (voir Interfaces d’objet de flux audio) doivent connaître les modifications d’état d’alimentation, ils peuvent prendre en charge l’interface IPowerNotify dans leurs méthodes QueryInterface et recevoir une notification du pilote système PortCls chaque fois qu’un changement d’alimentation se produit.
Lorsque l’état d’alimentation change, PortCls appelle la méthode IPowerNotify::P owerChangeNotify pour notifier individuellement chacun des objets miniport et stream qui prennent en charge l’interface IPowerNotify . Pendant l’appel PowerChangeNotify , un objet miniport doit mettre en cache le nouvel état d’alimentation de l’appareil. Pendant l’appel CAdapterCommon::Init (par exemple, consultez l’implémentation de l’exemple d’adaptateur Msvad dans le Kit de pilotes Microsoft Windows [WDK]), le pilote miniport doit définir son état d’alimentation mis en cache sur la valeur initiale PowerDeviceD0.
Avant d’appeler PowerChangeState pour mettre hors tension, PortCls appelle IPowerNotify::P owerChangeNotify pour permettre au pilote miniport d’enregistrer tout contexte d’appareil nécessaire. Ce contexte peut inclure les valeurs d’inscription matérielle qui incarnent la topologie de filtre et les paramètres de la ligne de mixage actuels, par exemple. Après avoir appelé PowerChangeState pour mettre sous tension, PortCls appelle PowerChangeNotify afin que le pilote miniport puisse restaurer le contexte enregistré.
Lors de la mise hors tension, PortCls interrompt tous les flux de données audio actifs avant d’appeler PowerChangeNotify. Lors de la mise sous tension, PortCls appelle PowerChangeNotify avant de redémarrer les flux de données audio en pause.
Les classes d’objets miniport et stream de votre pilote miniport peuvent hériter de l’interface IPowerNotify et prendre en charge cette interface dans leur méthode NonDelegatingQueryInterface . Vous pouvez utiliser la définition IMP_IPowerNotify du fichier d’en-tête Portcls.h pour ajouter la déclaration de fonction de la méthode PowerChangeNotify à la définition de classe pour les objets de miniport et de flux de votre pilote.