Implémentation d’IAdapterPowerManagement
Lorsque vous implémentez l’interface IAdapterPowerManagement pour votre pilote, reportez-vous à l’implémentation de la classe CAdapterCommon dans les exemples de pilotes audio du Kit de pilotes Microsoft Windows (WDK). Cette classe gère les interruptions de périphérique et exécute d’autres fonctions communes à tous les pilotes d’adaptateur audio. La classe CAdapterCommon de votre adaptateur doit hériter de l’interface IAdapterPowerManagement et prendre en charge cette interface dans sa méthode NonDelegatingQueryInterface . (Pour plus d’informations sur les interfaces de non-suppression, consultez la description de l’interface INonDelegatingUnknown .)
Vous pouvez utiliser la définition de IMP_IAdapterPowerManagement du fichier d’en-tête Portcls.h pour ajouter les déclarations de fonction pour les méthodes IAdapterPowerManagement::P owerChangeState, IAdapterPowerManagement::QueryPowerChangeState et IAdapterPowerManagement::QueryDeviceCapabilities à la définition de classe CAdapterCommon de votre pilote.
Lors de l’appel du pilote système PortCls à la routine de démarrage d’un appareil de l’adaptateur (voir Démarrage d’un appareil), l’adaptateur doit inscrire son interface IAdapterPowerManagement auprès de PortCls en appelant PcRegisterAdapterPowerManagement. Pour obtenir un exemple de code, consultez la fonction StartDevice dans l’exemple de pilote Sysvad, qui est décrit dans Exemples de pilotes audio. Le premier paramètre de la fonction PcRegisterAdapterPowerManagement est un pointeur IUnknown vers l’objet CAdapterCommon du pilote de l’adaptateur. PortCls interroge cet objet pour son interface IAdapterPowerManagement .
Lorsque PortCls appelle la méthode IAdapterPowerManagement::P owerChangeState du pilote de l’adaptateur pour modifier l’état d’alimentation du périphérique, le pilote de l’adaptateur doit mettre en cache le nouvel état d’alimentation du périphérique dans l’objet CAdapterCommon de l’adaptateur. Lors de l’appel CAdapterCommon::Init (voir l’implémentation dans les exemples de pilotes d’adaptateur de WDK), le pilote doit définir l’état d’alimentation initial sur PowerDeviceD0 (décrit dans DeviceState) avant de revenir d’une initialisation réussie. Le pilote doit écrire sur le matériel uniquement s’il est connu pour être dans un état d’alimentation approprié.
Avant de mettre hors tension en réponse à un appel PowerChangeState , le pilote de l’adaptateur doit placer les sorties audio dans un état qui empêche le bruit du haut-parleur de se produire lorsque l’alimentation s’éteint. Par exemple, le processus d’arrêt peut inclure la montée en puissance des sorties DAC à zéro, la désactivation des DAC et la désactivation des lignes MIDI.