CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  硬件/系统

如何得到USB设备加载消息?

楼主junshen56(军神)2003-09-01 21:35:27 在 VC/MFC / 硬件/系统 提问

我要做一个程序对USB盘(硬盘和优盘)上的文件读写进行监控。得到盘符后的文件监控已经完成,可是我不知道开机后USB设备再联机,我如何取得消息。请各位大虾不吝赐教。  
   
  问题点数:0、回复次数:4Top

1 楼afc(afc)回复于 2003-09-01 22:03:14 得分 0

MSDN里查一下RegisterDeviceNotificationTop

2 楼masterz(www.fruitfruit.com)回复于 2003-09-02 14:07:00 得分 0

class   CWinHidden   :    
  public   CWindowImpl<CWinHidden,   CWindow,   CNullTraits>  
  {  
  BEGIN_MSG_MAP(CWinHidden)  
  MESSAGE_HANDLER(WM_DEVICECHANGE,   OnDeviceChange)  
  MESSAGE_HANDLER(WM_CREATE,   OnCreate)  
  END_MSG_MAP()  
  public:  
  LRESULT   OnDeviceChange(UINT   uMsg,   WPARAM   wParam,   LPARAM   lParam,   BOOL&   bHandled)  
  {  
  //   TODO   :   Add   Code   for   message   handler.   Call   DefWindowProc   if   necessary.  
  OutputDebugString("device   changed");  
  //   you   can   store   a   pointer   to   your   control   class   eg   pMyControl  
  //then   call   pMyControl->OnDeviceChange(...);  
  return   0;  
  }  
   
  LRESULT   OnCreate(UINT   uMsg,   WPARAM   wParam,   LPARAM   lParam,   BOOL&   bHandled)  
  {  
  //   TODO   :   Add   Code   for   message   handler.   Call   DefWindowProc   if   necessary.  
  RegisterEvent(__FILE__,__LINE__);  
   
  return   0;  
  }  
  void   RegisterEvent(const   char*   fn,int   ln)  
  {  
  DEV_BROADCAST_DEVICEINTERFACE   header   =   {0};  
  header.dbcc_size   =   sizeof(DEV_BROADCAST_DEVICEINTERFACE);  
  header.dbcc_devicetype   =   DBT_DEVTYP_DEVICEINTERFACE;  
  char   tmp[256];  
  if(NULL==RegisterDeviceNotification(m_hWnd,   &header,   DEVICE_NOTIFY_WINDOW_HANDLE))  
  {  
  sprintf(tmp,"%s:%d   RegisterDeviceNotification   failed",fn,ln);  
  }  
  else  
  {  
  sprintf(tmp,"%s:%d   RegisterDeviceNotification   succeeded",fn,ln);  
  }  
  OutputDebugString(tmp);  
   
  }  
   
  };Top

3 楼junshen56(军神)回复于 2003-09-03 00:44:53 得分 0

还有更完整的例程吗?  
  能否说明一下如何得到消息呢?  
  yanzlee@yahoo.com.cnTop

4 楼nicepose(小小)回复于 2003-09-03 12:58:01 得分 0

WM_DEVICECHANGE  
  然后根据wParam   lParam   可以得到哪个文件/设备发生change  
  下面的检查com口设备change情况的代码  
  LRESULT   CSystemTray::WindowProc(UINT   message,   WPARAM   wParam,   LPARAM   lParam)    
  {  
  if   (message   ==   WM_DEVICECHANGE)  
  {  
  if(wParam   ==   DBT_DEVICEARRIVAL)  
  {  
                              if(((DEV_BROADCAST_HDR*   )lParam)->dbch_devicetype   ==   DBT_DEVTYP_PORT)  
          {  
  PTCHAR   pStr;  
  pStr   =   ((DEV_BROADCAST_PORT*   )lParam)->dbcp_name;  
                                                        ...  
                              }  
  }  
  if(wParam   ==   DBT_DEVICEREMOVECOMPLETE)  
  {  
          if(((DEV_BROADCAST_HDR*   )lParam)->dbch_devicetype   ==   DBT_DEVTYP_PORT)  
          {  
  PTCHAR   pStr;  
  pStr   =   ((DEV_BROADCAST_PORT*   )lParam)->dbcp_name;  
                                                        ...  
             
          }  
  }  
  }  
  }  
   
  一般情况都不用RegisterDeviceNotification  
  用以上方法就可以KO了  
  Top

相关问题

  • 在RedHat下如何加载USB设备,如优盘(100P)。。。
  • 怎样调整X Window显示的分辨率?怎样加载USB接口的设备?
  • 如何在NT/2000/XP中加载虚拟设备?
  • 控件加载和两个EXE发消息问题
  • 急!!! 程序怎样获得USB设备的插入通知消息?
  • DLL中如何处理系统消息?USB设备拔下、插上的系统消息是什么?
  • 谁知道USB 网卡的系统消息或者系统有新设备时候发出的windows消息
  • 谁知道USB 网卡的系统消息或者系统有新设备时候发出的windows消息
  • 谁知道USB 网卡的系统消息或者系统有新设备时候发出的windows消息
  • 谁知道USB 网卡的系统消息或者系统有新设备时候发出的windows消息

关键词

  • usb
  • 消息
  • 文件
  • ondevicechange
  • dbt
  • lparam
  • wparam
  • deviceinterface
  • devicechange
  • 设备

得分解答快速导航

  • 帖主:junshen56

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo