如何得到USB设备的插拔消息

zhangjj2 2004-10-07 09:28:01
怎样才能在USB设备的插拔时,程序能够得到通知
...全文
782 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr-Chen 2005-06-22
  • 打赏
  • 举报
回复
http://website.9team.com/3871/3871176.htm
老夏Max 2005-06-22
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4081/4081250.xml?temp=.6566736
wildwind_ssj 2005-04-07
  • 打赏
  • 举报
回复
Thanks wlzqi(wlzqi)
newbikiki 2004-10-14
  • 打赏
  • 举报
回复
给我一份:tsh3000@163.com
shadowWind 2004-10-12
  • 打赏
  • 举报
回复
mark
fengnanman 2004-10-11
  • 打赏
  • 举报
回复
楼上的,能不能也给我一份,fengnan_man@163.com
先谢谢了。
wlzqi 2004-10-11
  • 打赏
  • 举报
回复
重载WindowProc

LRESULT CXXXXDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
switch(message)
{
case WM_DEVICECHANGE:
{
if (wParam==32768)//发现USB设备
{
发现USB设备
}
}break;

}
return CDialog::WindowProc(message, wParam, lParam);
}
arran9317 2004-10-10
  • 打赏
  • 举报
回复
楼上的,能不能给俺也给一份,arran_99325@163.com
谢谢了!!!
Cocoky 2004-10-10
  • 打赏
  • 举报
回复
WM_DEVICECHANGE

The WM_DEVICECHANGE device message notifies an application of a change to the hardware configuration of a device or the computer.

A window receives this message through its WindowProc function.


LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_DEVICECHANGE
WPARAM wParam, // device-change event
LPARAM lParam // event-specific data
);
Parameters
wParam
Event that has occurred. This parameter can be one of the following values. Value Meaning
DBT_CONFIGCHANGECANCELED A request to change the current configuration (dock or undock) has been canceled.
DBT_CONFIGCHANGED The current configuration has changed, due to a dock or undock.
DBT_CUSTOMEVENT A custom event has occurred.

Windows NT 4.0 and Windows 95: This value is not supported.


DBT_DEVICEARRIVAL A device or piece of media has been inserted and is now available.
DBT_DEVICEQUERYREMOVE Permission is requested to remove a device or piece of media. Any application can deny this request and cancel the removal.
DBT_DEVICEQUERYREMOVEFAILED A request to remove a device or piece of media has been canceled.
DBT_DEVICEREMOVECOMPLETE A device or piece of media has been removed.
DBT_DEVICEREMOVEPENDING A device or piece of media is about to be removed. Cannot be denied.
DBT_DEVICETYPESPECIFIC A device-specific event has occurred.
DBT_DEVNODES_CHANGED A device has been added to or removed from the system.

Windows NT 4.0 and Windows Me/98/95: This value is not supported.


DBT_QUERYCHANGECONFIG Permission is requested to change the current configuration (dock or undock).
DBT_USERDEFINED The meaning of this message is user-defined.

lParam
Pointer to a structure that contains event-specific data. Its format depends on the value of the wParam parameter. For more information, refer to the documentation for each event.
Return Values
Return TRUE to grant the request.

Return BROADCAST_QUERY_DENY to deny the request.

Remarks
For devices that offer software-controllable features, such as ejection and locking, the system typically sends a DBT_DEVICEREMOVEPENDING message to let applications and device drivers end their use of the device gracefully. If the system forcibly removes a device, it may not send a DBT_DEVICEQUERYREMOVE message before doing so.

Requirements
Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation 4.0, Windows Me, Windows 98, and Windows 95.
Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT Server 4.0.
Header: Declared in Winuser.h; include Windows.h.


yo_jo 2004-10-10
  • 打赏
  • 举报
回复
呵呵,厚个脸皮蹭宝贝->yoyo_jojo@126.com
zhangnanonnet 2004-10-10
  • 打赏
  • 举报
回复
我也要一份看看,谢谢
zhangnan@vip.sina.com
pepsi1980 2004-10-10
  • 打赏
  • 举报
回复
楼上2个,不好意思,等我这个星期天去女朋友那里才能发给你们,稍安毋躁:)
zhangjj2 2004-10-09
  • 打赏
  • 举报
回复
上楼的高手,请给我发一份吧,邮箱 zhangjj2@yeah.net
konista 2004-10-08
  • 打赏
  • 举报
回复
case WM_DEVICECHANGE:
{
if (wParam == DBT_DEVICEARRIVAL)
{
....
}
else if (wParam == DBT_DEVICEREMOVECOMPLETE)
{
....
}
break;
}
smallcrocodile 2004-10-08
  • 打赏
  • 举报
回复
高难度的问题,等待...
zhjie374 2004-10-08
  • 打赏
  • 举报
回复
帮你顶下!我也很想知道
碧螺春的马甲 2004-10-08
  • 打赏
  • 举报
回复
简单来说,先向系统注册一下,然后等着插拔消息。

具体参见 usbview
pepsi1980 2004-10-08
  • 打赏
  • 举报
回复
我在http://www.pudn.com/这个网站上看到过这样的代码,能实时监控USB的插拔,你去找找看。找不到给我留言,我回去翻硬盘:)
dropingleaf 2004-10-07
  • 打赏
  • 举报
回复
帮你顶一下吧!
将可移动设备连入系统时,系统的后台中会依次发生如下事件: l 内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)。 l udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新创建的设备节点可以被普通用户访问。 l hotplug装入了相应的内核模块之后,会把这一消息通知给hald。 l hald在受到hotplug和udev发出的消息之后,认为新硬件已经正式被系统认可了。此时它会通过一系列精心编写的规则文件(就是传说中的xxx-policy.fdi),把发现新硬件的消息通过dbus发送出去,同时还会调用update-fstab或fstab-sync来更新/etc/fstab,为相应的设备节点创建适合的挂载点。 l 卷管理器会监听dbus中发现新硬件的消息。根据所插入的硬件(区分U盘和数码相机等)不同,卷管理器会先将相应的设备节点挂载到hald创建的挂载点上,然后再打开不同的应用程序。 当然,如果是在CDROM中插入光盘,过程可能比较简单。因为CDROM本身就是一个固定的硬件,无需hotplug和udev的协助: l hald会自己监视CDROM,并且将光盘托架开合的消息通过dbus发出去。 l 卷管理器负责检查CDROM中的盘片内容,进行挂载,并调用合适的应用程序。 要注意,hald的工作是从上游得到硬件就绪的消息,然后将这个消息转发到dbus中。尽管它会调用程序来更新fstab,但实际上它自己并不执行挂载的工作。
  ChipGenius是一款USB设备芯片型号检测工具,可以自动查询U盘、MP3/MP4、读卡器、移动硬盘等一切USB设备的主控芯片型号、制造商、品牌、并提供相关资料下载地址。当然也可以查询USB设备的VID/PID信息、设备名称、接口速度、序列号、设备版本等。   软件绿色小巧,即插即用,是数码消费者、电子爱好者、DIY人士和数码维修人员身边的好帮手。    -------------------------------------- 应用举例: 1、快速修复U盘:不用拆机即可查询U盘的芯片型号,快速找到对应的量产工具 2、帮你识别假冒U盘:还怕买到假冒U盘吗?随时带上我吧(配合MyDiskTest更佳) 3、专业选购MP3:MP3主控方案一般厂家都不说,而芯片又是选购MP3的重要指标 4、识别假IPOD:我一直怀疑自已的IPOD是假的,又无法拆开,这个任务交给我搞定 5、维修好帮手:数码维修人员整天和数码产品打交道,我的出现就是你的得力助手 6、其它USB存储:买读卡器、移动硬盘、USB-Hub....,从专业角度帮你挑选对比 7、其它USB外设:摄像头、USB鼠标、打印机、USB声卡....,免拆壳哦 8、主板芯片组:看芯片型号、找驱动、查主板性能,有我更轻松 9、后续还有更多神秘功能,等你来发掘...... -------------------------------------- 版本更新: V3.00 1、新增在线升级功能,检测设备的准确性大幅提升 2、修订繁体语言的描述,更加符合语法习惯 V2.72 1.修正英文界面版本号显示为2.64的小bug 2.增加繁体中文语言界面 V2.70 1.改进了检测算法,结果更加准确,增强了实用性 2.修正了一些极小的细节问题 3.新增大量国外存储设备识别信息 V2.64 1.修正未分区的移动硬盘出现盘符 *: 问题 2.人性化的自动选定第一个USB存储设备,若没有,自动选择第一个USB外设,若还没有,则选定第一个USB主板控制器 V2.60 1、优化了启动加载数据库的过程,在启动过程中插拔设备不会造成程序锁死 2、改善了对非中文或英文操作系统的支持,可以在没有中文字库的机器上运行 V2.50 1、增加英文语言界面,并可根据操作系统自动识别 2、修正Windows系统下大字体界面变形的问题 3、改正了某些库里没有产品厂家和名称显示为空白的问题。 V2.38 1、优化了内存占用 2、修正界面显示一小Bug 3、新增一些非存储USB设备识别 v2.30 1、更正了在Win2000系统下对带有虚拟光盘(USB-CDROM)的U盘支持不好的问题 2、对于同一设备带有多个序列号的情况(每个盘符对应的设备序列号不同)能够分别准确识别 3、修正了多盘符驱动器(如多合一读卡器之类)时列表混乱的问题 4、进一步优化视觉体验,改进了提示设备名称的算法,更美观 v2.20 1、改变界面显示算法,彻底摆脱了巨大而且烦人的OCX"库"文件! 2、修正两个关于界面的小bug 3、增加了鼠标指向超长的设备名称时弹出提示标签显示设备完整名称 V2.10 优化系统资源占用率 V2.03 1.识别包含虚拟光盘的设备不需重新插拔即可得到虚拟光盘的盘符 2.从根本上杜绝了盘符出现[*:]的问题,只要Windows认盘,ChipGenius就能识别,识别过程中某些情况偶尔出现[*:],不过几秒之内一定能得到正确的盘符 3.改进了界面一个小bug,在Win2000下显示更清爽(因为旧版本在某些情况下显示会一团糟……) V2.01 1.改进了识别算法,获取驱动器号的速度加快n倍 2.在精简版WindowsXP下实现实时监测设备插入拔出 3.大大降低了静态时的CPU占用率(从原来的40%左右降低到小于8%) 4.专门针对多盘符设备优化,大大加快了检测多合一读卡器的速度 5.优化界面显示,不会出现字符串长到文本框外面去的问题 V1.70 优化了数据库装载,加快启动速度。增加了一个节日彩蛋^_^ V1.68 修正一处小Bug,微调了软件界面 V1.67 支持在WinXP精简版下运行 V1.59 增加设备版本查询,增加相关方案资料下载链接地址 V1.50 增强了对带有虚拟光盘(USB-CDROM)的U盘识别能力,修改了两个小Bug -------------------------------------- 问题反馈:http://bbs.mydigit.cn/read.php?tid-18285.html -------------------------------------- 欢迎USB设备厂商为我们提供最新信息,联系邮箱:mydigit@vip.163.com -------------------------------------- 使用声明: 我们不保证ChipGenius检测信息的准确性,查询结果仅供参考。

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧