Changements d’alimentation et d’état dans AVStream
Quand AVStream reçoit une demande de IRP_MN_SET_POWER , il appelle la routine de rappel AVStrMiniDeviceSetPower d’un minidriver, si le minidriver en a fourni une.
Quand AVStream reçoit une requête définie de la propriété KSPROPERTY_CONNECTION_STATE , il appelle la routine de rappel AVStrMiniPinSetDeviceState d’un minidriver, si le minidriver en a fourni une.
Lorsque le système sort d’un état de veille, AVStream peut appeler les routines de rappel AVStrMiniPinSetDeviceState et AVStrMiniDeviceSetPower d’un minidriver dans l’ordre attendu. Par exemple, AVStrMiniPinSetDeviceState peut être appelé beforeAVStrMiniDeviceSetPower.
Par conséquent, le conducteur doit être prêt à gérer une telle inversion de l’ordre de rappel attendu.
Cette inversion ne se produit pas lorsque le système est mis sous tension dans un état de veille. Lors de la mise hors tension, ces deux routines de rappel se produisent toujours dans l’ordre attendu. Par exemple, AVStrMiniPinSetDeviceState est toujours appelé avant AVStrMiniDeviceSetPower.
Si cette inversion se produit, la séquence entière ressemble à ceci :
Tout d’abord, la séquence de mise sous tension se produit :
AVStrMiniPinSetDeviceState est appelé avec une demande de modification de l’état de l’appareil de KSSTATE_RUN à KSSTATE_PAUSE.
AVStrMiniDeviceSetPower est appelé avec une demande de changement d’état d’alimentation de D0 en D2/D3.
À ce stade, le système est en veille.
Ensuite, la séquence de mise sous tension se produit :
AVStrMiniDeviceSetPower est appelé avec une demande de changement d’état d’alimentation de D2/D3 en D0.
AVStrMiniPinSetDeviceState est appelé avec une demande de modification de l’état de l’appareil de KSSTATE_PAUSE en KSSTATE_RUN.
Dans ce scénario, les étapes 5 et 6 sont les étapes qui sont inversées de l’ordre attendu.
En outre, lorsqu’une application diffuse en continu et que le système lance une séquence de mise hors tension, un graphique de capture en cours d’exécution est toujours placé en pause. Si le graphique a déjà été arrêté, il reste arrêté.