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