最近需要對乙個加密狗進行檢測,裝置資訊如下:
看到hid#vid_3689&pid_8762
這一段,覺得可以先遍歷所有的裝置:
然後再篩選出裡面所有的 hid 型別的裝置:
下面是**:
// test_console.cpp : 定義控制台應用程式的入口點。
//#include
"stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
extern
"c"#pragma comment(lib,"hid.lib")
#pragma comment(lib,"setupapi.lib")
using
namespace std;
void
enumhiddevice()
// 遍歷 hid 裝置
int idev =0;
while
(true)
; did.cbsize =
sizeof
(did);if
(!setupdienumdeviceinte***ces
( hdev,
// 裝置資訊集控制代碼
null
,// 列舉所有裝置介面(不限制型別)
&hidguid,
// 接收介面guid
idev,
// 下標
&did // [out] 指向 sp_device_inte***ce_data 結構體的指標))
// 初始化 sp_device_inte***ce_detail_data
dword buf_didd =
256;
psp_device_inte***ce_detail_data pdidd =
(psp_device_inte***ce_detail_data)
localalloc
(lptr,buf_didd)
; pdidd-
>cbsize =
sizeof
(*pdidd);if
(!setupdigetdeviceinte***cedetail
( hdev,
// 裝置資訊集控制代碼
&did,
// sp_device_inte***ce_data 結構體的指標
pdidd,
// [out] sp_device_inte***ce_detail_data
buf_didd,
// sp_device_inte***ce_detail_data 對應的緩衝區大小
null
,// [out] sp_device_inte***ce_data 緩衝區大小
null))
cout <<
"pdidd->devicepath = "
<< pdidd-
>devicepath << endl;
// 建立裝置
handle hdevhandle =
createfile
( pdidd-
>devicepath,
// 裝置名稱
generic_read | generic_write,
// 訪問許可權
file_share_read | file_share_write,
// 分享許可權
null
,// 返回的控制代碼不能被繼承
open_existing,
// 僅當裝置存在時開啟
file_attribute_normal,
// 不設定其他屬性
null
// 不設定擴充套件屬性);
if(invalid_handle_value == hdevhandle)
// 獲取裝置介面的 pid、vid
hidd_attributes hidattributes =
;
hidattributes.size =
sizeof
(hidattributes);if
(!hidd_getattributes
( hdevhandle,
// 裝置控制代碼
&hidattributes // [out] hidd_attributes 結構體指標))
// 判斷域之天加密狗:usb\\vid_3689&pid_8762
cout <<
"hidattributes.productid = "
<< hidattributes.productid << endl;
cout <<
"hidattributes.vendorid = "
<< hidattributes.vendorid << endl;
if(hidattributes.productid ==
8762
&& hidattributes.vendorid ==
3689
)// 清理
closehandle
(hdevhandle)
;localfree
(pdidd)
; idev++
; cout << endl;
}// 清理
setupdidestroydeviceinfolist
(hdev);}
int_tmain
(int argc, _tchar* ar**)
效果圖:(我現在沒有加密狗,自然檢測不到咯 ?)
遍歷PCI裝置
pc機在啟動的時候,都會看到乙個pci裝置清單,可以看到機器中的所有pci裝置,其實搜尋pci裝置的程式並不難編,本文通過乙個例項說明如何遍歷pci裝置。工作環境 ms dos 6.22,djgpp rhide 1 了解pci裝置 pci的含義是外設部件互連 peripheral component...
遍歷PCI裝置
原文 該文在2011年3月11日做過修改,其中 已為完整 pc機在啟動的時候,都會看到乙個pci裝置清單,可以看到機器中的所有pci裝置,其實搜尋pci裝置的程式並不難編,本文通過乙個例項說明如何遍歷pci裝置。工作環境 ms dos 6.22,djgpp rhide 1 了解pci裝置 pci的含...
遍歷系統硬體裝置資訊
以下 段演示如何顯示已經安裝的所有硬體裝置的列表 include include include include include int main int argc,char argv char envp enumerate through all devices in set.deviceinfo...