Réception d’événements dans un service
Un service qui est une application console peut inscrire un Gestionnaire de contrôle de console pour recevoir une notification lorsqu’un utilisateur se déconnecte. Toutefois, aucun événement de console n’est envoyé lorsqu’un utilisateur interactif ouvre une session. Pour plus d’informations sur la réception d’une notification lorsqu’un utilisateur ouvre une session, consultez création d’un package de notifications Winlogon.
Le système diffuse les événements de changement d’appareil à tous les services. Ces événements peuvent être reçus par un service dans une procédure de fenêtre ou dans son gestionnaire de contrôle de service. Pour spécifier les événements que votre service doit recevoir, utilisez la fonction RegisterDeviceNotification .
Veillez à gérer Plug-and-Play événements d’appareil aussi rapidement que possible. Dans le cas contraire, le système risque de ne plus répondre. Si votre gestionnaire d’événements doit effectuer une opération qui peut bloquer l’exécution (par exemple, les e/s), il est préférable de démarrer un autre thread pour effectuer l’opération de façon asynchrone.
Lorsqu’un service appelle RegisterDeviceNotification, le service spécifie également un handle de fenêtre ou un handle d’état de service. Si un service spécifie un handle de fenêtre, la procédure de fenêtre reçoit les événements de notification. Si un service spécifie son descripteur d’État du service, son gestionnaire de contrôle des services reçoit les événements de notification. Pour plus d’informations, consultez HandlerEx.
Les descripteurs de notification de périphérique retournés par RegisterDeviceNotification doivent être fermés en appelant la fonction UnregisterDeviceNotification lorsqu’ils ne sont plus nécessaires.