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中串口 ...
随机推荐
- 【OpenJ_Bailian - 2192】Zipper(dfs)
Zipper Descriptions: Given three strings, you are to determine whether the third string can be forme ...
- B - Archer
Problem description SmallR is an archer. SmallR is taking a match of archer with Zanoes. They try to ...
- Android内存堆上限Android的缺省值是16M(某些机型是24M)
转自: http://www.cnblogs.com/jacktu/archive/2010/12/30/1921475.html 大家都知道Android的上层应用是基于 Dalvik Virtua ...
- gcc 编译 c++ 程序(转载)
单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */ #include <iostream& ...
- XDocument
XDocument学习(Winform) using System; using System.Collections.Generic; using System.ComponentModel; us ...
- AJPFX总结关于JVM的基础知识
写在前面 之前老大让做一些外包面试,我的问题很简单: 介绍一下工作中解决过比较 有意思的问题. HashMap使用中需要注意的点. 第一个问题主要是想了解一下对方项目经验的含金量,第二个问题则是测试下 ...
- [Luogu1848][USACO12OPEN]书架Bookshelf DP+set+决策单调性
题目链接:https://www.luogu.org/problem/show?pid=1848 题目要求书必须按顺序放,其实就是要求是连续的一段.于是就有DP方程$$f[i]=min\{f[j]+m ...
- [SPOJ1812]Longest Common Substring II 后缀自动机 多个串的最长公共子串
题目链接:http://www.spoj.com/problems/LCS2/ 其实两个串的LCS会了,多个串的LCS也就差不多了. 我们先用一个串建立后缀自动机,然后其它的串在上面跑.跑的时候算出每 ...
- GCC的函数声明问题
Thinking in C++ 第四章 GCC 不需要再MAIN函数前声明 编译也能通过. G++不行.
- 微信小程序组件解读和分析:十、input输入框
input输入框组件说明: 本文介绍input 输入框的各种参数及特性. input输入框示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 01 02 03 04 0 ...