gpt4 book ai didi

c# - 如何在服务中获取 USB 磁盘驱动器插入和移除事件,而不会听到我的硬盘驱动器在某些操作系统上被重复访问?

转载 作者:行者123 更新时间:2023-11-30 15:50:48 25 4
gpt4 key购买 nike

我在我的 Windows 服务中使用此代码来接收插入和移除 USB 磁盘驱动器的通知:

WqlEventQuery query = new WqlEventQuery("__InstanceOperationEvent", 
"TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.DriveType=2");
query.WithinInterval = TimeSpan.FromSeconds(1);
_deviceWatcher = new ManagementEventWatcher(query);
_deviceWatcher.EventArrived += new EventArrivedEventHandler(OnDeviceEventArrived);
_deviceWatcher.Start();

它适用于 XP 和 Vista,但在 XP 上,我可以听到每秒访问硬盘驱动器的非常明显的声音。是否有另一个 WMI 查询可以给我没有声音效果的事件?

最佳答案

不确定这是否适用于您的情况,但我们一直在 C# 代码中使用 RegisterDeviceNotification(我无法在此处发布)来检测何时插入 USB 设备。您必须导入一些 native 函数但它通常运作良好。最简单的方法是首先使其在 C++ 中运行,然后查看您必须将哪些内容移至 C#。

koders 代码搜索上有一些东西似乎是一个完整的 C# 设备管理模块,可能会有所帮助:

http://www.koders.com/csharp/fidEF5C6B3E2F46BE9AAFC93DB75515DEFC46DB4101.aspx

关于c# - 如何在服务中获取 USB 磁盘驱动器插入和移除事件,而不会听到我的硬盘驱动器在某些操作系统上被重复访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/106554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com