码迷,mamicode.com
首页 > Windows程序 > 详细

windows枚举串口

时间:2016-07-13 13:45:00      阅读:730      评论:0      收藏:0      [点我收藏+]

标签:

1. 枚举键值

HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM

2. SETUPAPI方式

 1 int EnumPortsWdm()
 2 {
 3     int i, dwDetDataSize;
 4     TCHAR fname[256], locinfo[256];
 5     HDEVINFO hDevInfo;
 6     SP_DEVICE_INTERFACE_DETAIL_DATA* pDetData;
 7     SP_DEVICE_INTERFACE_DATA ifcData;
 8     SP_DEVINFO_DATA devdata;
 9 
10     static const GUID ___GUID_CLASS_COMPORT = 11     { 0x86E0D1E0L, 0x8089, 0x11D0, { 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73 } };
12     /*static const GUID ___GUID_CLASS_COMPORT = 13     { 0xAD498944, 0x762F, 0x11D0, { 0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C } };*/
14 
15 
16     hDevInfo = SetupDiGetClassDevs( &___GUID_CLASS_COMPORT, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
17     if ( hDevInfo == INVALID_HANDLE_VALUE )
18     {
19         return -1;
20     }
21 
22     dwDetDataSize = sizeof( SP_DEVICE_INTERFACE_DETAIL_DATA ) + 256;
23     pDetData = ( SP_DEVICE_INTERFACE_DETAIL_DATA* )calloc( 1, dwDetDataSize );
24     if ( !pDetData )
25     {
26         SetupDiDestroyDeviceInfoList( hDevInfo );
27         return -1;
28     }
29 
30     ifcData.cbSize = sizeof( SP_DEVICE_INTERFACE_DATA );
31     pDetData->cbSize = sizeof( SP_DEVICE_INTERFACE_DETAIL_DATA );
32 
33     for ( i = 0; SetupDiEnumDeviceInterfaces( hDevInfo, NULL, &___GUID_CLASS_COMPORT, i, &ifcData ); i ++ )
34     {
35         memset( &devdata, 0, sizeof( SP_DEVINFO_DATA ) );
36         devdata.cbSize = sizeof( SP_DEVINFO_DATA );
37 
38         if ( !SetupDiGetDeviceInterfaceDetail( hDevInfo, &ifcData, pDetData, dwDetDataSize, NULL, &devdata ) )
39         {
40             break;
41         }
42 
43         MessageBox( NULL, pDetData->DevicePath, TEXT( "PATH" ), MB_OK );
44         if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &devdata, SPDRP_FRIENDLYNAME, NULL, ( PBYTE )fname, sizeof( fname ), NULL ) )
45         {
46             MessageBox( NULL, fname, TEXT( "NAME" ), MB_OK );
47         }
48 
49         if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &devdata, SPDRP_LOCATION_INFORMATION, NULL, ( PBYTE )locinfo, sizeof( locinfo ), NULL ) )
50         {
51             if ( StrCmpN( locinfo, TEXT( "USB" ), 3 ) == 0 )
52             {
53                 MessageBox( NULL, TEXT( "USB" ), TEXT( "TYPE" ), MB_OK );
54             }
55         }
56     }
57 
58     free( pDetData );
59     SetupDiDestroyDeviceInfoList( hDevInfo );
60     return 0;
61 }

 

windows枚举串口

标签:

原文地址:http://www.cnblogs.com/javado/p/5666454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!