Activation et désactivation d’une instance d’interface d’appareil
Une fois l’appareil démarré, le pilote qui a inscrit l’interface appelle IoSetDeviceInterfaceState pour activer une interface instance. Le pilote transmet le nom de lien symbolique retourné par IoRegisterDeviceInterface avec la valeur booléenne TRUE pour activer l’interface instance.
Si le pilote parvient à démarrer son appareil, il doit appeler cette routine lors de la gestion de la demande de IRP_MN_START_DEVICE du gestionnaire de Plug-and-Play (PnP).
Une fois la demande de IRP_MN_START_DEVICE terminée, le gestionnaire PnP émet des notifications d’arrivée de l’interface d’appareil à tous les composants en mode noyau ou en mode utilisateur qui les ont demandées. Pour plus d’informations, consultez Inscription à la notification de modification de l’interface d’appareil.
Pour désactiver une interface d’appareil instance, un pilote appelle IoSetDeviceInterfaceState, en passant le SymbolicLinkName retourné par IoRegisterDeviceInterface et FALSE comme valeur d’Enable.
Un pilote doit désactiver les interfaces d’un appareil lorsqu’il gère une demande IRP_MN_SURPRISE_REMOVAL ou IRP_MN_REMOVE_DEVICE pour l’appareil. Si un pilote ne désactive pas les interfaces d’un appareil lorsqu’il gère ces IIP de suppression, il ne doit pas tenter de le faire par la suite, car le gestionnaire PnP désactive les interfaces lorsqu’il supprime l’appareil.
Un pilote ne doit pas désactiver les interfaces lorsque l’appareil est arrêté (IRP_MN_STOP_DEVICE) ; au lieu de cela, il doit laisser toutes les interfaces d’appareil activées et mettre en file d’attente les demandes d’E/S jusqu’à ce qu’il reçoive une autre demande IRP_MN_START_DEVICE . De même, un pilote ne doit pas désactiver ses interfaces lorsque l’appareil est mis en veille. Il doit mettre en file d’attente les demandes d’E/S jusqu’à ce que l’appareil se réveille. Pour plus d’informations, consultez Prise en charge des appareils dotés de fonctionnalités Wake-Up.