检测U盘插入


  1 LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  2
  3 {
  4
  5 switch (message)
  6 {
  7
  8 case WM_CREATE:/*初始化*/
  9
  10 MessageBox(hWnd, "go!", "405 Studio", MB_OK);
  11
  12 break;
  13
  14 case WM_DEVICECHANGE:
  15
  16 if(wParam == DBT_DEVICEARRIVAL) //设备激活
  17 {
  18 PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
  19
  20 PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
  21
  22 char szMsg[80];
  23 wsprintf (szMsg, "Drive %c: Media has arrived./n",
  24 FirstDriveFromMask(lpdbv ->dbcv_unitmask));
  25
  26 MessageBox (hWnd, szMsg, "WM_DEVICECHANGE", MB_OK);
  27
  28 }
  29
  30 break;
  31
  32 default:
  33 return DefWindowProc (hWnd, message, wParam, lParam) ;
  34 }
  35
  36 return 0;
  37
  38 }
  原理很简单检测U盘是否被插入是通过监听WM_DEVICECHANGE消息来实现的。18,19行是从WM_DEVICECHANGE的lParam里获取盘符。
  FirstDriveFromMask是一个用返回盘符(A,B,C ....)的简单函数
  1 char FirstDriveFromMask (ULONG unitmask)
  2 {
  3 char i;
  4
  5 for (i = 0; i <26; ++i)
  6 {
  7 if (unitmask &0x1)
  8 break;
  9 unitmask = unitmask >>1;
  10 }
  11
  12 return (i + 'A');
  13 }

本文转自
http://hi.baidu.com/camark/blog/item/591abcc2190550180ef477c9.html
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值