//检测设备增加移除相关消息
LRESULT CMiniHidTestDlg::OnMyDeviceChange(WPARAM wParam, LPARAM lParam)
{
CString pDevName ="",strDevInfo,strDevid="",strDepid ="";
int npos;
int ivid,ipid,idvid,idpid;
bool bInsert =false;
bool bRemove =false;
if ( DBT_DEVICEARRIVAL == wParam || DBT_DEVICEREMOVECOMPLETE == wParam ) {
PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)lParam;
PDEV_BROADCAST_DEVICEINTERFACE pDevInf;
PDEV_BROADCAST_HANDLE pDevHnd;
PDEV_BROADCAST_OEM pDevOem;
PDEV_BROADCAST_PORT pDevPort;
PDEV_BROADCAST_VOLUME pDevVolume;
if(wParam==DBT_DEVICEARRIVAL)//有新设备插入系统
{
bInsert =true;
}else if (wParam ==DBT_DEVICEREMOVECOMPLETE)
{
bRemove =true;
}
switch( pHdr->dbch_devicetype ) {
case DBT_DEVTYP_DEVICEINTERFACE:
pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)pHdr;
strDevInfo =pDevInf->dbcc_name;
strDevInfo.MakeUpper(); //全部转成大写
npos =strDevInfo.Find("HID#VID_",0);
if (npos >0 )
{
strDevInfo =strDevInfo.Mid(12);
npos =strDevInfo.Find("#",0);
if (npos >0)
{
strDevInfo =strDevInfo.Mid(0,npos);
npos =strDevInfo.Find("&",0);
if (npos >0)
{
strDevid =strDevInfo.Mid(0,npos);
strDepid =strDevInfo.Mid(npos +5,strDevInfo.GetLength() -(npos +5));
}
}
}
if (strDepid.GetLength() >0)
{
sscanf(system_config.susbvid,"%x",&ivid);
sscanf(system_config.susbpid,"%x",&ipid);
sscanf(strDevid,"%x",&idvid);
sscanf(strDepid,"%x",&idpid);
if ((bOpScucess) && (ivid ==idvid) && (ipid ==idpid) && bRemove) //如果打开了
{
bOpScucess =false;
AddListString("USB设备移除,VID["+strDevid +"],PID[" +strDepid+"]");
nReadTimeOut =TRUE;
Sleep(100);
TipSucess("USB移除",FALSE);
ClearALLResult();
// ResetContent();
TerminateThread(m_hOneSendThread,0);
CheckUsbResult();
EnableButton(true);
if(m_bOpenThreadBeginStart)
{
StopThreadBeginStart();
nBrushTimes=0,nFailTimes=0,nSuecessTimes=0;
}
if(m_bCreateSendThread)
{
StopThread();
}
}else
{
if ( (ivid ==idvid) && (ipid ==idpid) && bInsert)
{
AddListString("USB设备插入,VID["+strDevid +"],PID[" +strDepid+"]");
TipSucess("USB插入",TRUE);
TipTesttype("USB插入",TRUE);
nReadTimeOut =FALSE;
Sleep(1000);
CheckUsbResult();
startAut();
if (m_chk_auto.GetCheck())
{
}
//OnTestAll();
//TestStart(0);
}
else
{
AddListString("USB设备移除,VID["+strDevid +"],PID[" +strDepid+"]");
// TipTesttype("USB设备移除,VID["+strDevid +"],PID[" +strDepid+"]");
bOpScucess =false;
nReadTimeOut =TRUE;
TipSucess("USB移除",FALSE);
TipTesttype("USB移除",false);
ClearALLResult();
Sleep(100);
ResetContent();
CheckUsbResult();
EnableButton(true);
TerminateThread(m_hOneSendThread,0);
}
}
}
break;
case DBT_DEVTYP_HANDLE:
pDevHnd = (PDEV_BROADCAST_HANDLE)pHdr;
break;
case DBT_DEVTYP_OEM:
pDevOem = (PDEV_BROADCAST_OEM)pHdr;
break;
case DBT_DEVTYP_PORT:
pDevPort = (PDEV_BROADCAST_PORT)pHdr;
break;
case DBT_DEVTYP_VOLUME:
pDevVolume = (PDEV_BROADCAST_VOLUME)pHdr;
break;
}
}
return 0;
}
监控USB设备插入/拔出写法2
最新推荐文章于 2022-03-26 20:55:07 发布