首页 > 后端开发 > C++ > C# Windows 服务如何检测 USB 驱动器的插入和拔出?

C# Windows 服务如何检测 USB 驱动器的插入和拔出?

Susan Sarandon
发布: 2025-01-14 07:46:42
原创
448 人浏览过

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

构建用于 USB 驱动器检测的响应式 C# Windows 服务

许多分布式应用程序需要对 USB 驱动器的插入和移除做出反应。本文演示如何创建可靠地实现此目的的 C# Windows 服务。 我们将利用 Windows Management Instrumentation (WMI) API,与不适合服务的 WndProc 等方法相比,它提供卓越的可靠性和兼容性。

以下代码片段提供了基于 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>
登录后复制

此代码建立一个监听 Win32_VolumeChangeEvent 事件的观察者,其中 EventType 为 2(表示媒体插入)。

事件处理和响应

watcher_EventArrived 事件处理程序(未显示)将包含响应驱动器插入的逻辑。这可能涉及启动分布式应用程序或执行其他必要的操作。

鲁棒性和错误处理

实施全面的错误处理和异常管理对于确保服务持续运行至关重要,即使遇到意外错误也是如此。 这应该合并到 watcher_EventArrived 方法中。

扩展功能

这个基本示例可以针对各种场景进行定制。 您可以修改事件处理,为不同的媒体类型创建多个观察程序,并添加用于驱动器删除的事件处理(EventType = 3)。

WMI 使 Windows 服务能够动态响应 USB 驱动器事件,从而产生更具响应性和适应性的分布式应用程序。

以上是C# Windows 服务如何检测 USB 驱动器的插入和拔出?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板