//外设消息定义
DEV_BROADCAST_HDR *dev = (DEV_BROADCAST_HDR *)lParam;
DEV_BROADCAST_VOLUME *dev_vol;
DWORD unitmask;
char label[4] = { 0, ':', '\\', 0 };
DISK_INFO diskinfo;
UINT disktype;
int i;
int ret;
switch (wParam)
{
case DBT_DEVICEARRIVAL:// 插入消息
{
switch (dev->dbch_devicetype)
{
case DBT_DEVTYP_VOLUME:
{
dev_vol = (DEV_BROADCAST_VOLUME *)dev;
unitmask = dev_vol->dbcv_unitmask;
for (i = 0; i < 26 && unitmask; i++)
{
if (unitmask & 0x01)
{
label[0] = 'A' + i;
label[2] = 0;
switch (dev_vol->dbcv_flags)
{
case 0:
//U盘被插入 卷标为label
break;
default:
break;
}
}
unitmask >>= 1;
}
}
break;
}
}
break;
case DBT_DEVICEREMOVECOMPLETE:
{
//设备卸载或者拔出
switch (dev->dbch_devicetype)
{
case DBT_DEVTYP_VOLUME:
{
dev_vol = (DEV_BROADCAST_VOLUME *)dev;
unitmask = dev_vol->dbcv_unitmask;
for (i = 0; i < 26 && unitmask; i++)
{
if (unitmask & 0x01) {
label[0] = 'A' + i;
label[2] = 0;
switch (dev_vol->dbcv_flags)
{
case 0:
//U盘被拔出 卷标为label
break;
default:
break;
}
}
unitmask >>= 1;
}
}
break;
}
}
break;
}