16,471
社区成员
发帖
与我相关
我的任务
分享
//截获U盘插入消息
LRESULT CFileRecoveryDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
if(message == WM_DEVICECHANGE)
{
UINT Event = (UINT) wParam;
DWORD dwData = (DWORD) lParam;
PDEV_BROADCAST_HDR pDev_Hdr = (PDEV_BROADCAST_HDR)lParam;
switch(Event)
{
case(DBT_DEVICEARRIVAL):
switch(pDev_Hdr->dbch_devicetype)
{
case(DBT_DEVTYP_VOLUME): //U盘插入消息
GetAllDrives();
break;
}
break;
case(DBT_DEVICEREMOVECOMPLETE):
switch(pDev_Hdr->dbch_devicetype)
{
case(DBT_DEVTYP_VOLUME): //U盘拔出消息
PDEV_BROADCAST_VOLUME pDev_Vol = (PDEV_BROADCAST_VOLUME)pDev_Hdr;
//获取拔出U盘的盘符
DWORD dwDrive = pDev_Vol->dbcv_unitmask;
int i = 0;
for (i = 0 ; i < 32 ; i++)
{
if (dwDrive & (1 << i) ) //找到第一个可用的逻辑盘符
break;
}
Delete_A_Drive('A' + i);
break;
}
break;
default:
break;
}
return(0);
}
return CDialog::WindowProc(message, wParam, lParam);
}