监控USB设备插入/拔出写法2
生活随笔
收集整理的這篇文章主要介紹了
监控USB设备插入/拔出写法2
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
//檢測設(shè)備增加移除相關(guān)消息
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)//有新設(shè)備插入系統(tǒng){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(); //全部轉(zhuǎn)成大寫 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設(shè)備移除,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設(shè)備插入,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設(shè)備移除,VID["+strDevid +"],PID[" +strDepid+"]");// TipTesttype("USB設(shè)備移除,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;
}
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的监控USB设备插入/拔出写法2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 检测到USB设备插入写法1
- 下一篇: C++和服务器交互的几个文件代码