View Full Version : io设备


秦瑞明
04-08-2007, 05:48 PM
请问C#哪个类可以知道有哪个外设接上去
哪个硬盘号是有物理硬盘存在的
另外例如128,129号设备在不在如何查呢?
谢谢

t-xguo@prcvap.microsoft.com
04-09-2007, 07:09 AM
您好:
检测外设添加和删除有两种较普遍的方法:
1. hook WM_DEVICECHANGE 消息,The WParam parameter 包含了具体事件:包含DBT_DEVICEARRIVAL 等等。
2. 用WMI,即System.Management 命名空间。例如检测设备可以:
using System.Management;

WqlEventQuery eventQuery = new WqlEventQuery();
eventQuery.EventClassName = "__InstanceOperationEvent";
eventQuery.WithinInterval = new TimeSpan(0, 0, 1);
eventQuery.Condition = @"TargetInstance ISA 'Win32_USBControllerDevice' ";
ManagementEventWatcher eventWatcher = new ManagementEventWatcher(eventQuery);
eventWatcher.EventArrived += new EventArrivedEventHandler(eventWatcher_EventArrived);
eventWatcher.Start();

关于WMI详细介绍可参看MSDN。

您可以通过查询每个盘符所对应的硬盘物理编号来检测逻辑卷号对应的物理硬盘。

关于检测设备是否连接也可以使用WMI,简单示例:
ManagementObjectSearcher moSearch = new ManagementObjectSearcher("Select * from Win32_USBHub");
foreach (ManagementObject mo in moSearch.Get())
{
。。。。。//查询mo的具体属性。
}


郭轩
在线技术支持工程师
微软全球技术支持中心
---------------------------------------------------------------------------------------
我们的服务时间:周一至周五9:00-18:00(节假日除外)。我们将在两个工作日(48小时)内提供初始回应,并和您一起研究并解决问题。更多微软新闻组技术支持信息,请访问:http://support.microsoft.com/gp/newsgroupsupport/zh-cn.

回帖时,请在您的新闻组阅读器中使用“回复组(Reply to Group)”,这将帮助其他用户从您的提问中获益
---------------------------------------------------------------------------------------
本贴子以”现状”提供且没有任何担保,同时也没有授予任何权利。

t-xguo@prcvap.microsoft.com
04-11-2007, 10:25 AM
您好:

关于此主题,您是否还有疑问?如有任何疑问,欢迎在微软中文新闻组讨论。

郭轩
在线技术支持工程师
微软全球技术支持中心
---------------------------------------------------------------------------------------
我们的服务时间:周一至周五9:00-18:00(节假日除外)。我们将在两个工作日(48小时)内提供初始回应,并和您一起研究并解决问题。更多微软新闻组技术支持信息,请访问:http://support.microsoft.com/gp/newsgroupsupport/zh-cn.

回帖时,请在您的新闻组阅读器中使用“回复组(Reply to Group)”,这将帮助其他用户从您的提问中获益
---------------------------------------------------------------------------------------
本贴子以”现状”提供且没有任何担保,同时也没有授予任何权利。