USB设备为数据卡,数据卡上有一个虚拟的光驱,数据卡插入PC机后会有一个Autorun的程序从光盘启动提示安装驱动。如果在这个程序运行的时候拔掉数据卡,那么下次再插入数据卡的时候,虚拟的光驱就不会出来了,这个是由于什么原因造成的呢?
我在autorun的程序中加入了OnDeviceChange(),由于是非法拔出的,因此windows只能检测到DEVICEREMOVECOMPLETE ,但是当前运行的程序文件是在光盘上,这个时候光盘已经不存在了。
BOOL CAutorunDlg::OnDeviceChange( UINT nEventType, DWORD dwData )
{
    PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)dwData;    switch(nEventType)
    {
    case DBT_DEVICEREMOVECOMPLETE :
        if(lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)
        {
            EndDialog(0); 
        }
        break;
    default:
        break;    }
    return 0;
}