C# 监视USB插拔,并获取U盘的磁盘号 有异常求助

问题描述

要获取U盘的磁盘号,比如HD0,HD1,HD2。我思路是这样,截获插拔消息,然后用ManagementClass(@Win32_Diskdrive")的GetInstances()来得到。但是有问题如下简洁代码如下:constintWM_DEVICECHANGE=0x2190;constintDBT_DEVICEARRIVAL=0x8000;constintDBT_DEVICEREMOVECOMPLETE=0x8004;protectedoverridevoidWndProc(refMessagem){ManagementClassDiskClass=newManagementClass(@"Win32_Diskdrive");try{if(m.WParam.ToInt32()==DBT_DEVICEARRIVAL){ManagementObjectCollectionMoc=DiskClass.GetInstances();}if(m.WParam.ToInt32()==DBT_DEVICEREMOVECOMPLETE){ManagementObjectCollectionMoc=DiskClass.GetInstances();}}catch(Exceptionex){}报错消息如下:请各位大神告诉我这个菜鸡解决方案。谢谢。我只有15分。不好意思

解决方案

解决方案二:
自己顶个,望大神指导
解决方案三:
自己再顶个,恳请各位高手帮忙
解决方案四:
求各位高手指导。

时间: 2024-07-28 20:03:36

C# 监视USB插拔,并获取U盘的磁盘号 有异常求助的相关文章

wpf/winform通过WMI实现USB设备拔插检视

文用到的开源类,百度云下载:链接:http://pan.baidu.com/s/1kVJfGsJ   密码:tkna 1.首先USB工具类DriveDetector.cs: using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Text; using System.Threading.Tasks; namespace StarsCloud.C

USB及手机平板设备插拔响应解决方案

USB及手机平板设备插拔响应解决方案 (一).基本原理:WM_DEVICECHANGE 消息响应 一般WM_DEVICECHANGE只发给顶层窗口.你可以自己创建一个隐藏的顶层窗口来接收这个消息. (二).在VC6中,一般要手动添加这个消息的映射代码,分三步,过程如下: 第1步:在窗口类的.h文件中增加:.         afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);         第2步:在窗口类的.cpp文件中增加:

如何让移动硬盘插拔自如

  故障分析:我们在插拔移动硬盘的时候,当你使用之后, 需要在任务栏托盘区中的删除硬件图标将移动硬盘的图标删除掉.而经常会出现提示[现在无法停止通用卷设备.请稍候再停止该设备.]有时候会发现无法通过任务栏托盘区中的删除硬件图标将之删除掉,大部分人都会选择直接拔出来移动硬盘,而强行插拔又担心会损坏移动硬盘中的数据.如图所示: 故障解决: 一.xp系统操作步骤如下:在打开的 "系统属性"窗口中单击顶部的"硬件"标签,再单击其中的"设备管理器"按钮打开

u盘-Linux系统下,怎样用C语言判断U盘插入和拔出,并获取U盘路径?

问题描述 Linux系统下,怎样用C语言判断U盘插入和拔出,并获取U盘路径? Linux系统下,用C语言判断U盘插入和拔出,并获取U盘路径.名字和容量等信息.请大神们指点指点. 解决方案 首先U盘是块设备,有专门的工具(fdisk,blockdev)可以查看U盘(/dev/sda)的具体信息,也可以通过 C语音open("/dev/sda", ...);ioctl(...)来获取U盘信息. u盘插入后,一般会出现类似/dev/sda或者/dev/block/下面的某个设备,相应的拔出会

PHP基于反射机制实现插件的可插拔设计详解_php技巧

本文实例讲述了PHP基于反射机制实现插件的可插拔设计.分享给大家供大家参考,具体如下: 说PHP和ASP等同的朋友们可以就此打住了,PHP支持反射,而且还是非常的强大.好了,我们开始今天的话题. 功能描述: 页面拥有一个主导航菜单,里头有默认连接若干. 插件统一存放在一个目录,插件载入后会自动在导航菜单中增加上自己所需的链接. 插件载入时可执行一定的操作. 动态增删插件无需改动代码. 最终效果: 首页,插件1,插件2 "首页"是系统自带的菜单项."插件1"和&quo

我心中的核心组件(可插拔的AOP)~第一回 日志记录组件之自主的Vlog

对于.net环境而言,日志的开源组件有很多,像Nlog,log4net等等,而我今天要介绍的是我的日志组件VLog,呵呵,事实上实现原理与作用都大同小异. 作用:记录程序运行中的相关信息 特点:提供了消息日志,错误日志,调试日志,警告日志,崩溃日志等等 优势:提供了多种日志实现的方式,如SQL数据库,XML文本,WIN日志等等 配置:它可以通过配置文件进行设置,提供了日志级别和记录方式等参数 说明:VLog项目层次分明,一个接口,一个基类,5个实现的功能类,一切都是那么自然,下面看一下结构图:

我心中的核心组件(可插拔的AOP)~第四回 异常拦截器

之前说过有关拦截器的文章,第二回  缓存拦截器,事实上,在那讲里说的最多是AOP和缓存组件,对于拦截的概念并没有详细的说明,这一讲,不说AOP,主要说一下拦截器,拦截器Interception,主要是在方法执行前或者执行后,动态添加一些行为,而这个行为主要包含缓存,日志,异常处理及你可以想到的所有的一切,呵呵. 这一讲是异常拦截器,它的主要意义在于,当你的一个方法被执行时,你可以通过配置文件去管理这个方法执行前与执行后是否附加统一异常处理行为. 拦截器组件我们还是用Unity.Intercept

我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器

AOP面向切面的编程,也称面向方面的编程,我更青睐于前面的叫法,将一个大系统切成多个独立的部分,而这个独立的部分又可以方便的插拔在其它领域的系统之中,这种编程的方式我们叫它面向切面,而这些独立的部分,我们很早之前叫它部件,在SOA里,它叫做服务,而我认为叫它模块更加贴切,确实,这些与领域无关的东西,是像是一个个的功能模块. 之前讲过一个日志组件,有兴趣的同学可以查看:第一回 日志记录组件 今天主要说一下缓存组件,就是缓存模块,这些模块可以很方便的为每个方法添加缓存机制,事实上是在方法体执行之前,

stm32-STM32的JTAG下载器插拔后程序复位

问题描述 STM32的JTAG下载器插拔后程序复位 在用JTAG调试程序时,拔掉或者插上JTAG后,程序复位,有没有人遇到过此类情况,该怎么解决? 解决方案 http://www.51hei.com/mcu/1954.html