VC6中处理WM_DEVICECHANGE,获得U盘盘符,但当U盘有CD-ROM分区时获得重复盘符,怎么解决?
WINDOWS XP下拦截WM_DEVICECHANGE消息
目的是检测有否U盘插入,并发U盘盘符显示在ListBox中
但当U盘有CD-ROM分区时,盘符发生重复怎么解决?
代码如下:
LRESULT OnDeviceChange(HWND hwnd,WPARAM wp,LPARAM lp)
{
PDEV_BROADCAST_HDR lpdb=(PDEV_BROADCAST_HDR)lp;
TCHAR c[3];
switch(wp)
{
case DBT_DEVICEARRIVAL:
if(lpdb->dbch_devicetype==DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv=(PDEV_BROADCAST_VOLUME)lpdb;
c[0]=FirstDriveFromMask(lpdbv->dbcv_unitmask)+32;
c[1]=':';
c[2]='\0';
SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)c);
}
break;
case DBT_DEVICEREMOVECOMPLETE:
SendMessage(hListBox,LB_RESETCONTENT,0,0);
FindU(hwnd);
break;
}
return 0;
}