|
虽然简单,但是实用
4 M9 s# K- G* s( g( o/ g, CHDEVINFO hDevInfo;7 x7 s* M/ u% \7 I
SP_DEVINFO_DATA DeviceInfoData;; r- u9 S$ [4 a8 S) T; L
DWORD i,j;
7 |2 g0 H3 W5 X, d8 n int ret=0;* f' V7 b# x3 S3 W9 t- V+ W
$ J3 ]1 I- Z6 @2 }$ U. P4 ]9 I
hDevInfo = SetupDiGetClassDevs((LPGUID) &GUID;_DEVCLASS_MOUSE, 0, 0,DIGCF_PRESENT);//DIGCF_PROFILE);//
( @7 `! [9 G' L6 a' z* K" m/*6 C5 n" M1 `/ T+ ^
GUID_DEVCLASS_FDC软盘控制器' K5 Q2 b B9 T) h! f( _; x
GUID_DEVCLASS_DISPLAY显示卡$ v, E- J1 [& Q$ S
GUID_DEVCLASS_CDROM光驱& ^6 T9 R5 n$ j9 e3 \/ v9 W; d) @
GUID_DEVCLASS_KEYBOARD键盘
! t; ]2 C% R% Z$ J- M GUID_DEVCLASS_COMPUTER计算机0 ^8 K: a. ~2 [( T7 T3 h* R* Q0 S' G+ v7 J
GUID_DEVCLASS_SYSTEM系统
: C3 E3 R w1 e( q! A/ f$ P. b9 I GUID_DEVCLASS_DISKDRIVE磁盘驱动器5 k, i( d# C3 {/ h0 o# z' q
GUID_DEVCLASS_MEDIA声音、视频和游戏控制器
( `* ~1 y$ a9 M GUID_DEVCLASS_MODEMMODEM
( u* c5 Y" {" Y GUID_DEVCLASS_MOUSE鼠标和其他指针设备0 c! {3 E" m, E9 A4 Y C
GUID_DEVCLASS_NET网络设备器
" ^8 z/ w4 K' x0 p2 e GUID_DEVCLASS_USB通用串行总线控制器, N2 q0 x! C6 \" ~7 J
GUID_DEVCLASS_FLOPPYDISK软盘驱动器( W+ A7 E" N3 B4 Y$ u# `
GUID_DEVCLASS_UNKNOWN未知设备; Y6 x9 b2 u+ x& v
GUID_DEVCLASS_SCSIADAPTERSCSI 和 RAID 控制器
% Y* }8 l/ s' ?6 d& h5 E GUID_DEVCLASS_HDCIDE ATA/ATAPI 控制器
j) n/ H, F2 x% Z GUID_DEVCLASS_PORTS端口(COM 和 LPT)
3 c$ q: k! \' T" W: s4 S GUID_DEVCLASS_MONITOR监视器
# D/ m+ y' v5 Z) R */
( U/ D* N) J% {3 E5 o6 h if (hDevInfo == INVALID_HANDLE_VALUE){
0 i: `" n( N7 Z% V" g // Insert error handling here.1 J0 x! j. C* V, W% T
// return ;8 w1 v; J6 l z" C
}7 @' n' Q3 E% a: @9 u
// Enumerate through all devices in Set.
1 V; |) D( Q% b+ M# I6 p" t; f# k DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);' d( u0 w6 v E
for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData;);i++) {, p, ]1 t! ~& z2 `
8 {$ ^7 K) ~7 I+ K1 Z0 w
DWORD DataT;
% ~$ O; a' N8 u2 O; J l: k; |: Y //LPTSTR buffer = NULL;
]- `* ^% `" s5 G* e char buffer[2048];" y* h4 E) n5 N+ k! [0 ~% H4 O
DWORD buffersize =sizeof(buffer);# e" Y& }( h; U* u
while (!SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData;, SPDRP_FRIENDLYNAME, &DataT;, (PBYTE)buffer, buffersize, &buffersize;))6 E0 l C C$ Z) F; [+ {
{
8 V, B: `' `1 O$ D if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)& |, `6 P6 ^# P
{2 I6 m' i( `- G( @
// Change the buffer size.
8 {5 S, h1 z; e" l& M //if (buffer) LocalFree(buffer);: p7 v( R I/ S$ E M$ U* ~4 ^
//buffer = (PSP_INF_INFORMATION)LocalAlloc(LPTR,buffersize);/ U4 i1 k7 {- n0 i" k l
// <!--[if !supportEmptyParas]--><!--[endif]-->2 b0 X4 \* p5 C0 Z; ]
}0 X! ]* E1 F2 N" d4 P
else {0 [# r( O2 p- u" T
; `1 |% i6 h; r6 D. B J // Insert error handling here.5 Q( O" t8 T9 Q3 ?" B/ R
break;
0 q* I* ?2 O* p* ^% a }
3 M$ h& Y0 t- | P, d }
) \+ I. a* n; S) R' D8 s if (buffer != NULL && i == 0)
4 Q5 B4 W9 g6 U: B) z' ?+ M: O) e, c {
* J% g+ F/ O4 p: L$ E// temp.Format("");
* l# {6 ^& F6 u) J" Q5 N// str += temp;
2 J+ Z4 J. l, a! F* |- K }
4 F: T' u. f8 G6 e) w; V// temp.Format("%s",buffer);
& |% _# M* n7 Y: x" q( e% ~// str += temp;9 K7 e8 n) i& z) X
if (buffer) Lo& q. x( G% d/ f3 ]7 r( |; P9 C
0 Q5 F& A3 Q, s2 L1 n3 G$ B
/ t2 J6 ^7 z1 |' }& F5 Q v8 R( M8 N资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见& n" g$ y/ j# ^9 R
: Z+ \. e" ?1 g$ e2 ]! w
3 L* D3 r4 ]1 M; ~% V/ M& U
# H) f, P0 i4 q9 L' c* A7 D本资源由Java自学网收集整理【www.javazx.com】 |
|