社区
硬件/系统
帖子详情
WM_DEVICECHANGE得到的消息,如何判断新设备是否是u盘??是否是光驱
0313700000
2005-07-22 05:46:33
111
...全文
2371
5
打赏
收藏
WM_DEVICECHANGE得到的消息,如何判断新设备是否是u盘??是否是光驱
111
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
0313700000
2005-08-08
打赏
举报
回复
已经解决了,GetDriveType只能得到小容量的,大容量的u盘使用这个函数判断不出来
谢谢
Joe
2005-07-24
打赏
举报
回复
GetLogicalDrives();得到所有的盘符.
GetDriveType(DriveItem);的返回值为Removable即为U盘
saliors
2005-07-23
打赏
举报
回复
LRESULT CTestUSBDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_DEVICECHANGE) //0x8000,0x8004
{
CString str;
DEV_BROADCAST_HDR* dhr = (DEV_BROADCAST_HDR *)lParam;
switch(wParam)
{
case DBT_CONFIGCHANGECANCELED:
TRACE("DBT_CONFIGCHANGECANCELED");
break;
case DBT_CONFIGCHANGED:
TRACE("DBT_CONFIGCHANGED");
break;
case DBT_DEVICEQUERYREMOVE:
TRACE("DBT_DEVICEQUERYREMOVE");
break;
case DBT_DEVICEQUERYREMOVEFAILED:
TRACE("DBT_DEVICEQUERYREMOVEFAILED");
break;
case DBT_DEVICEREMOVEPENDING:
TRACE("DBT_DEVICEREMOVEPENDING");
break;
case DBT_DEVICETYPESPECIFIC:
TRACE("DBT_DEVICETYPESPECIFIC");
break;
case DBT_QUERYCHANGECONFIG:
TRACE("DBT_QUERYCHANGECONFIG");
break;
case DBT_USERDEFINED:
TRACE("DBT_USERDEFINED");
break;
case DBT_DEVICEARRIVAL:
if(dhr->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)dhr;
if(lpdbv->dbcv_flags & DBTF_MEDIA)
{
str.Format("Drive %c 插入", FirstDriveFromMask(lpdbv ->dbcv_unitmask));
//AfxMessageBox(str);
}
else
{
char ch = FirstDriveFromMask(lpdbv ->dbcv_unitmask);
str.Format("%c:\\",ch);
}
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if(dhr->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)dhr;
if(lpdbv->dbcv_flags & DBTF_MEDIA)
{
str.Format("Drive %c 拔除",FirstDriveFromMask(lpdbv ->dbcv_unitmask));
}
else
{
str.Format("Drive %c 拔除",FirstDriveFromMask(lpdbv ->dbcv_unitmask));
}
//AfxMessageBox(str);
}
break;
default:
break;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
oyljerry
2005-07-23
打赏
举报
回复
还可以通过判断设备容量等来区分
AntonlioX
2005-07-22
打赏
举报
回复
可以得到设备的类型 判断它是不是光盘
如果不是 那就是u盘
====
个人观点 如果有误 请包含
vc++监听
U盘
的插拔事件以及获取盘符
查了好久的资料 1 监听USB的插拔事件,以及获取盘符 2 网上其他方法接入
光驱
类
U盘
时,会触发多次插拔.此demo可以避免. 3 demo很简单,用2005编译的.
HARDGOUZI_visualbasic_
硬件监测程序,是一个监测硬件变动的钩子程序,例如
U盘
插入、显卡更换、光盘插入等
vb 检测usb
设备
一个VB检测USB
设备
的练习实例,亦可检测到
光驱
等外设
C#监控usb
设备
插拔--已经测试
ConsoleApp---TestUSB
Device
Find监听usb插拔。WPFApp---USB
Device
find监听usb插拔。
VC++实现USB 硬盘等硬件插拔检测
首先捕捉
WM
_
DEVICE
CHANGE
消息
,该
消息
在usb插拔时均有触发。 MFC下 添加
消息
处理函数afx_msg BOOL On
Device
Change
( UINT nEventType, DWORD dwData ); 添加
消息
映射BEGIN_MESSAGE_MAP() ... ON_
WM
_
DEVICE
CHANGE
() END_MESSAGE_MAP() Win32 在
硬件/系统
2,644
社区成员
17,237
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章