Maison >développement back-end >C++ >Comment un service Windows C# peut-il détecter l'insertion et le retrait d'une clé USB ?

Comment un service Windows C# peut-il détecter l'insertion et le retrait d'une clé USB ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-14 07:46:42446parcourir

How Can a C# Windows Service Detect USB Drive Insertion and Removal?

Création d'un service Windows C# réactif pour la détection de clé USB

De nombreuses applications distribuées doivent réagir à l'insertion et au retrait de clés USB. Cet article montre comment créer un service Windows C# qui y parvient de manière fiable. Nous exploiterons l'API Windows Management Instrumentation (WMI), offrant une fiabilité et une compatibilité supérieures par rapport aux méthodes telles que WndProc, qui ne conviennent pas aux services.

L'extrait de code suivant fournit une implémentation fondamentale basée sur WMI :

<code class="language-csharp">using System.Management;

// Create a ManagementEventWatcher to monitor for volume change events.
ManagementEventWatcher watcher = new ManagementEventWatcher();

// Define a WQL query to filter for volume insertion events (EventType = 2).
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");

// Attach an event handler to process detected events.
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);

// Assign the query to the watcher.
watcher.Query = query;

// Start monitoring.
watcher.Start();

// Wait for the next event.  Consider using a more robust loop for continuous monitoring.
watcher.WaitForNextEvent();</code>

Ce code établit un observateur qui écoute les Win32_VolumeChangeEvent événements où EventType vaut 2 (indiquant l'insertion d'un média).

Gestion et réponse des événements

Le gestionnaire d'événements watcher_EventArrived (non illustré) contiendra la logique pour répondre à l'insertion du lecteur. Cela peut impliquer de démarrer une application distribuée ou d'effectuer d'autres actions nécessaires.

Robustesse et gestion des erreurs

La mise en œuvre d'une gestion complète des erreurs et des exceptions est cruciale pour garantir le fonctionnement continu du service, même en cas d'erreurs inattendues. Cela devrait être intégré à la méthode watcher_EventArrived.

Extension des fonctionnalités

Cet exemple de base peut être personnalisé pour différents scénarios. Vous pouvez modifier la gestion des événements, créer plusieurs observateurs pour différents types de médias et ajouter une gestion des événements pour la suppression du lecteur (EventType = 3).

WMI permet aux services Windows de réagir dynamiquement aux événements du lecteur USB, ce qui donne lieu à des applications distribuées plus réactives et adaptables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn