如何捕获USB设备被插拔并给出提示

韦翔罂 2011-12-16 11:47:11
麻烦大了,BOSS要求USB设备插拔的时候驱动程序或者DLL能给出提示,寻找相关技术资料未果,请各路高手热心指点,万分感谢!
...全文
1033 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_new_man 2011-12-21
  • 打赏
  • 举报
回复
用线程 按GUID 枚举 有就说明连接
韦翔罂 2011-12-17
  • 打赏
  • 举报
回复
nanjun520 我按你的做了测试,结果发现除了注册的那个USB设备 其他设备插拔事件也都被响应了,这是怎么回事?我要的只是那个指定的设备的插拔响应,请指点,谢谢
yuucyf 2011-12-16
  • 打赏
  • 举报
回复
处理WM_DEVICECHANGE消息.
nanjun520 2011-12-16
  • 打赏
  • 举报
回复
监听 设备到达离开 消息,驱动的 我 没做过,windows的 我倒是弄过,给你 帖一下 我的 代码 不知道对你有用没。
static const GUID GUID_DEVINTERFACE = { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED }}; // usb设备guid

//注册监听消息(只监听USB设备变化)
HDEVNOTIFY hDevNotify;
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
ZeroMemory( ¬ificationFilter, sizeof(NotificationFilter) );
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE;//指定要检测的设备的guid,这里是usb设备的
hDevNotify = RegisterDeviceNotification(this->m_hWnd, ¬ificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);//注册设备通知窗口

LRESULT CAutoMonitorDlg::WindowProc(UINT message,WPARAM wParam,LPARAM lParam)
{//这是windows的窗口消息函数
switch (message)
{
case WM_DEVICECHANGE:
OnMyDeviceChange(wParam, lParam);//处理usb设备改变的消息
break;
default:
break;
}
return CDialog::WindowProc(message,wParam,lParam);
}
void CAutoMonitorDlg::OnMyDeviceChange(WPARAM wParam, LPARAM lParam)//处理usb设备改变的消息
{
switch (wParam)
{
case DBT_DEVICEARRIVAL:
onDeviceArrival((PDEV_BROADCAST_HDR)lParam);//设备达到的处理函数
break;
case DBT_DEVICEREMOVECOMPLETE:
onDeviceLeave((PDEV_BROADCAST_HDR)lParam);//设备离开的处理函数
break;
}
}
韦翔罂 2011-12-16
  • 打赏
  • 举报
回复
嗯,建个窗体应该可行,但是如何在DLL中建窗体、如何在运行中隐藏它、如何让它响应这个消息?还请指点!
yayafu 2011-12-16
  • 打赏
  • 举报
回复
可以建个窗体嘛
haogeai123 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huangyinghua 的回复:]
窗体消息?可是DLL程序没有窗体啊怎么办?
[/Quote]那就用钩子,肯定没问题。
韦翔罂 2011-12-16
  • 打赏
  • 举报
回复
窗体消息?可是DLL程序没有窗体啊怎么办?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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