小弟最近在做个功能,里面有辨别飞天的USB KEY是否插入和拔出,因为我希望是即时获得消息,所以没有用循环,而是用了WINDOWS消息OnDeviceChange(UINT nEventType,DWORD dwData).
在消息处理里面,通过以下代码来做检测:
switch(nEventType)
{
case DBT_DEVICEARRIVAL: //设备插入
....
break; case DBT_DEVICEREMOVECOMPLETE: //设备拔除
....
break;
} 发现识别不了,然后又调试了一下,发现U盘插入和拔除都会发给OnDeviceChange(UINT nEventType,DWORD dwData)函数中nEventType参数一个整型7,现在也不知道该怎么思考. 有达人做过这块的可以给点建议吗?
在消息处理里面,通过以下代码来做检测:
switch(nEventType)
{
case DBT_DEVICEARRIVAL: //设备插入
....
break; case DBT_DEVICEREMOVECOMPLETE: //设备拔除
....
break;
} 发现识别不了,然后又调试了一下,发现U盘插入和拔除都会发给OnDeviceChange(UINT nEventType,DWORD dwData)函数中nEventType参数一个整型7,现在也不知道该怎么思考. 有达人做过这块的可以给点建议吗?
bool result;
if (message == WM_DEVICECHANGE)
{
while (!result && (i_number < 10))
{
//Sleep(1000);
i_number ++;
status = EPS_OpenDevice( &ctx, Flags );
if(status!=EPS_SUCCESS)
{
EPS_CloseDevice(&ctx);
continue;
}
else
{
result = true;
EPS_CloseDevice(&ctx) ;
break;
}
}
if (!result)
{
::MessageBox(NULL," USB钥匙被拔出,进入自动加密模式! ","提示信息",MB_OK);
SendMessage(WM_VERIFY,0,0);
}
}
先获取所有HIDs的设备信息,找出与你这个设备 Vendor ID 和 Product ID相匹配的设备。
个人一点建议。