Implémentation de IAdapterPowerManagement

lors de l’implémentation de l’interface IAdapterPowerManagement pour votre pilote, reportez-vous à l’implémentation de la classe CAdapterCommon dans l’exemple de pilotes audio dans le Kit de pilote de Windows Microsoft (WDK). Cette classe gère les interruptions de périphérique et effectue d’autres fonctions qui sont communes à tous les pilotes de carte 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 nondelegating, 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 :: QueryPowerChangeStateet IAdapterPowerManagement :: QueryDeviceCapabilities à la définition de classe CAdapterCommon de votre pilote.

Pendant l’appel du pilote système PortCls à la routine de démarrage d’un 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 .

Quand PortCls appelle la méthode IAdapterPowerManagement ::P owerchangestate du pilote de l’adaptateur pour changer l’état d’alimentation de l’appareil, le pilote de l’adaptateur doit mettre en cache le nouvel état d’alimentation de l’appareil dans l’objet CAdapterCommon de la carte. Pendant l’appel de CAdapterCommon :: init (consultez 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 retourner une initialisation réussie. Le pilote doit écrire sur le matériel uniquement s’il est 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 de l’orateur de se produire lorsque l’alimentation est désactivée. Par exemple, le processus d’arrêt peut inclure l’augmentation de la valeur des sorties de la DAC, la désactivation du DAC et la mise en sourdine des lignes MIDI.