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;
}
我在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;
}
解决方案 »
- 求助 :要做一个可以修改任意一行行高的CListCtrl,求大侠们指点
- GetRuntimeClass
- MFC初学问题
- 请教 vb里一个浏览目录的控件 在vc里怎么实现呢
- 在VC++中用什么的类型变量来绑定数据库中的时间和日期字段
- 在动态创建的CWnd控件上如何得到输入焦点,高手帮忙啊!
- 对一个小数取整?
- 最新的Platform SDK 中的Help 下的帮助文件用什么可以打开啊!·不是CHM了!:(
- 我用vc编写了一个socket服务器端的软件,客户端用c++builder调用,可是单数时能收到,其余收不到,不只为何
- 高手们的联系方法
- 论坛发疯了
- 什么情况下recv返回的数据长度同我用sniffer抓包的数据长度不一样
设备的驱动,基本上绕过去了,但是本质的原因没有找到。希望高手指点一下。谢谢。