首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何监控U盘插入 和拔出

2012-04-04 
怎么监控U盘插入 和拔出如题.想做个WIN32的程序,监控U盘的插入 和拔出。 插入U盘的时候能知道U盘的盘符,拔

怎么监控U盘插入 和拔出
如题.想做个WIN32的程序,监控U盘的插入 和拔出。 插入U盘的时候能知道U盘的盘符,拔出的时候一样。
在WIN32的控制台程序里面要怎么写的?用的是VS2010。

[解决办法]
http://topic.csdn.net/u/20120122/00/997441c7-2803-435a-abb1-d07879a44d84.html
楼主看下吧
[解决办法]
LRESULT CUMonDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
if (message == WM_DEVICECHANGE)
{
DealDeviceChange(wParam, lParam);
}

return CDialog::WindowProc(message, wParam, lParam);
}

BOOL CUMonDlg::DealDeviceChange(WPARAM wParam, LPARAM lParam)
{
BOOL bRes = TRUE;
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;

switch (wParam)
{
case DBT_DEVICEARRIVAL:
if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
TCHAR szDisk[4] = {0};
FirstDriveFromMask(lpdbv->dbcv_unitmask, szDisk);
_tcscat(szDisk, TEXT(":\\"));

if (PathFileExists(szDisk))
{
UINT nDriveType = GetDriveType(szDisk);

if (nDriveType == DRIVE_REMOVABLE)
{
Sleep(1000);
StartCopyThread();
_tcscpy(m_szDisk, szDisk);
}
}
}
break;

case DBT_DEVICEREMOVECOMPLETE:
break;

default:
break;
}

return bRes;
}

热点排行