windows枚举串口
1. 枚举键值
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
2. SETUPAPI方式
int EnumPortsWdm()
{
int i, dwDetDataSize;
TCHAR fname[], locinfo[];
HDEVINFO hDevInfo;
SP_DEVICE_INTERFACE_DETAIL_DATA* pDetData;
SP_DEVICE_INTERFACE_DATA ifcData;
SP_DEVINFO_DATA devdata; static const GUID ___GUID_CLASS_COMPORT = \
{ 0x86E0D1E0L, 0x8089, 0x11D0, { 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73 } };
/*static const GUID ___GUID_CLASS_COMPORT = \
{ 0xAD498944, 0x762F, 0x11D0, { 0x8D, 0xCB, 0x00, 0xC0, 0x4F, 0xC3, 0x35, 0x8C } };*/ hDevInfo = SetupDiGetClassDevs( &___GUID_CLASS_COMPORT, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
if ( hDevInfo == INVALID_HANDLE_VALUE )
{
return -;
} dwDetDataSize = sizeof( SP_DEVICE_INTERFACE_DETAIL_DATA ) + ;
pDetData = ( SP_DEVICE_INTERFACE_DETAIL_DATA* )calloc( , dwDetDataSize );
if ( !pDetData )
{
SetupDiDestroyDeviceInfoList( hDevInfo );
return -;
} ifcData.cbSize = sizeof( SP_DEVICE_INTERFACE_DATA );
pDetData->cbSize = sizeof( SP_DEVICE_INTERFACE_DETAIL_DATA ); for ( i = ; SetupDiEnumDeviceInterfaces( hDevInfo, NULL, &___GUID_CLASS_COMPORT, i, &ifcData ); i ++ )
{
memset( &devdata, , sizeof( SP_DEVINFO_DATA ) );
devdata.cbSize = sizeof( SP_DEVINFO_DATA ); if ( !SetupDiGetDeviceInterfaceDetail( hDevInfo, &ifcData, pDetData, dwDetDataSize, NULL, &devdata ) )
{
break;
} MessageBox( NULL, pDetData->DevicePath, TEXT( "PATH" ), MB_OK );
if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &devdata, SPDRP_FRIENDLYNAME, NULL, ( PBYTE )fname, sizeof( fname ), NULL ) )
{
MessageBox( NULL, fname, TEXT( "NAME" ), MB_OK );
} if ( SetupDiGetDeviceRegistryProperty( hDevInfo, &devdata, SPDRP_LOCATION_INFORMATION, NULL, ( PBYTE )locinfo, sizeof( locinfo ), NULL ) )
{
if ( StrCmpN( locinfo, TEXT( "USB" ), ) == )
{
MessageBox( NULL, TEXT( "USB" ), TEXT( "TYPE" ), MB_OK );
}
}
} free( pDetData );
SetupDiDestroyDeviceInfoList( hDevInfo );
return ;
}
windows枚举串口的更多相关文章
- windows driver 枚举串口
//枚举串口 NTSTATUS status; HANDLE hKey = NULL; OBJECT_ATTRIBUTES oa; UNICODE_STRING strPath = RTL_CONST ...
- Windows API串口编程详解
(一)Windows API串口通信编程概述 Windows环境下的串口编程与DOS环境下的串口编程有很大不同.Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Window ...
- Windows下串口编程
造冰箱的大熊猫@cnblogs 2019/1/27 将Windows下串口编程相关信息进行下简单小结,以备后用. 1.打开串口 打开串口使用CreateFile()函数.以打开COM6为例: HAN ...
- .NET Core 跨平台 串口通讯 ,Windows/Linux 串口通讯,flyfire.CustomSerialPort 的使用
目录 1,前言 2,安装虚拟串口软件 3,新建项目,加入 flyfire.CustomSerialPort 4,flyfire.CustomSerialPort 说明 5,开始使用 flyfire.C ...
- Linux/windows com串口 java 接收数据 并解析 web程序
1.首先应公司要求再 com 口本来使用 .net 由于 .net 适用 linux 太麻烦 改为java 准备工作 准备 RXTXconmm.jar(版本很重要) 因为版本问题我搞了一天. 主要讲述 ...
- [Windows] Windows API 串口通信
Windows 中通过Windows API 进行串口通信主要有以下步骤: 打开串口 配置串口 读写串口 关闭串口 打开串口 关键API: CreateFile Windows 中进行设备的操作,第一 ...
- C# RFID windows 服务 串口方式
话说RFID以前很火所以整理一下一年前自己处理的RFID程序,放源码. 一开始觉得他是个很神奇的东西. 包含串口通讯和网络通讯. 由于网络通讯设备太贵,所以国内的设备基本上都是在外置一个比较便宜的模块 ...
- 获取Windows系统中的所有可用和在用串口
目的:获取Windows系统中的所有可用和在用串口 方法:注册表查询法 优点:简单.实用.快速.无遗漏,无多余结果. 说明:另外还有8种方法可以枚举串口,但都不如此法. 代码和详细注释如下: //-- ...
- 使用Windows API进行串口编程
使用Windows API进行串口编程 串口通信一般分为四大步:打开串口->配置串口->读写串口->关闭串口,还可以在串口上监听读写等事件.1.打开和关闭串口Windows中串口 ...
随机推荐
- 构造 BestCoder Round #52 (div.2) 1001 Victor and Machine
题目传送门 题意:有中文版的 分析:首先要知道机器关闭后,w是清零的.所以一次(x + y)的循环弹出的小球个数是固定的,为x / w + 1,那么在边界时讨论一下就行了 收获:这种题目不难,理解清楚 ...
- Jquery操作常用表单元素
由于对前端的东西不是很熟练,导致jquery操作表单的东西总是忘记,每次用都要查一下,效率低下,记录下来,以便下次使用. CheckBox checkbox改变事件 $('#IsAllSearch') ...
- SpringBoot_整合视图层技术
SpringBoot整合视图层技术 在目前的企业级应用开发中,前后端分离是趋势,但是视图层技术还占有一席之地.Spring Boot对视图层技术提供了很好的支持,官方推荐使用的模板引擎是Thymele ...
- SQL常用系统信息语句
一.查询指定表外键约束 SELECT A.name AS 约束名 , OBJECT_NAME(B.parent_object_id) AS 外键表 , D.name AS ...
- Android拍照得到全尺寸图片并进行压缩/拍照或者图库选择 压缩后 图片 上传
http://www.jb51.net/article/77223.htm https://www.cnblogs.com/breeze1988/p/4019510.html
- 网盘资源搜索的一些知识 C#
针对互联网盘上的资源进行搜索查找.写一个网盘资源搜索的要点主要有以下几点. 1.这个网盘资源搜索的原理就是利用互联网搜索引擎的site 命令. 其次就是针对网页链接进行提取以及处理. 首先就是编写一个 ...
- avd manager或sdk manager无法打开
最近开始搞安卓,使用AS启动项目时老是报各种错误,而网上这方面的资料很多都解决不了.只能边实验边做. 定位到avd manager或sdk manager无法打开,网上找了很多资料,都不能解决,知道看 ...
- 老潘 - ListView分析 - 学以致用篇(一)
ListView分析学以致用篇(1) 在我们查看别人的博客的时候,一个人是一个风格的.先说下我的风格,我喜欢思想类比,然后介绍知识,不太喜欢填鸭式的灌输.如果只是想单纯的从我的博客中直接看到代码,我个 ...
- iOS之NSAttributedString-------字符属性
NSAttributedString 字符属性 字符属性可以应用于 attributed string 的文本中. NSString *const NSFontAttributeName;(字体) N ...
- Katalon Studio 安装 配置 简单使用
本教程只针对Katalon Studio进行演示操作. 一.下载 Katalon 官网下载地址:https://www.katalon.com/download/ (需要注册账号) 二.解压.配置 直 ...