c++实现“扫描检测硬件改动”
这里需要用到cfgmgr32.h,参考了网上好几篇博文。
#include <windows.h>
#include <stdio.h>
#include <cfgmgr32.h>
#pragma comment(lib,"setupapi.lib") int main()
{
DEVINST devInst;
CONFIGRET status; status = CM_Locate_DevNode(&devInst, NULL, CM_LOCATE_DEVNODE_NORMAL); if (status != CR_SUCCESS) {
printf("CM_Locate_DevNode failed: %x\n", status);
return FALSE;
} status = CM_Reenumerate_DevNode(devInst, 0); if (status != CR_SUCCESS) {
printf("CM_Reenumerate_DevNode failed: %x\n", status);
} return 0;
}
网上的文章基本上没提到要引入lib,我用VS2010测试会报错,提示“...error LNK2019: 无法解析的外部符号 __imp__CM_Reenumerate_DevNode@8...”、“...error LNK2019: 无法解析的外部符号 __imp__CM_Locate_DevNodeA@12...”
然后继续查资料,提到要引入lib,按照操作了,vs2010又提示错误“无法打开文件 cfgmgr32.lib” 随后在stackoverflow找到答案了,参考 https://stackoverflow.com/questions/27178969/why-cant-i-find-cfgmgr32-lib-in-the-windows-sdk
以上是最终版,经测试在设备管理器里卸载某设备,执行该程序可以实现等同扫描硬件改动的效果。
参考链接:
https://stackoverflow.com/questions/33420994/windows-usb-device-refresh-in-c-c
https://docs.microsoft.com/en-us/windows/desktop/devinst/cfgmgr32-h
https://bbs.csdn.net/topics/30248104
c++实现“扫描检测硬件改动”的更多相关文章
- c#实现"扫描检测硬件改动"
public static class Win32Api { public const int CM_LOCATE_DEVNODE_NORMAL = 0x00000000; public const ...
- 检测硬件的批处理命令,检测硬件bat,一键获取电脑硬件信息
警告:运行BAT源码是一种危险的动作,如果你不熟悉,请不要尝试! 批处理语言: 简体中文 授权方式: 免费软件 运行环境: Windows平台 检测硬件批处理命令.一键获取.直接双击就可以查看 @ec ...
- iOS中检测硬件和传感器
首先要知道,你需要查看所需的硬件或传感器是否存在,而不是假设设备有哪些功能.举个例子,你不能假设只有iPhone才有麦克风,而应该使用API来查看麦克风是否存在.下面这段代码的第一个优势在于,它能自动 ...
- 分享一个windows下检测硬件信息的bat脚本
文件名必须以.bat结尾,如果出现闪退,请右击鼠标,以管理身份运行即可 @echo offcolor 0atitle 硬件检测 mode con cols=90sc config winmgmt st ...
- VC++检测硬件设备状态
首先捕捉WM_DEVICECHANGE消息,该消息在usb插拔时均有触发. MFC下 添加消息处理函数afx_msg BOOL OnDeviceChange( UINT nEventType, DWO ...
- 单片机基础——使用GPIO扫描检测按键
1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- 检测硬件RDMA卡是否存在
1.检查网卡是否安装成功: # lspci | grep Mellanox 83:00.0 Ethernet controller: Mellanox Technologies MT27710 Fam ...
- 如何使用 jest 和 lint-staged 只检测发生改动的文件
我们现在在推进 EPC 的过程中,单元测试是必备的技能,在本地的 Git commit 之前进行单测非常有必要,总不能把所有的单测的压力都放在流水线上. 毕竟在流水线运行单测的成本还是挺高的,从 pu ...
- Docker环境复现利用Redis未授权访问漏洞 >> 批量扫描检测利用
关于Redis Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库 ...
随机推荐
- [Java in NetBeans] Lesson 13. Multidimensional Arrays
这个课程的参考视频和图片来自youtube. 主要学到的知识点有: 1. Multidimensional Array: Array that has more than one dimension. ...
- [LeetCode] 610. Triangle Judgement_Easy tag: SQL
A pupil Tim gets homework to identify whether three line segments could possibly form a triangle. Ho ...
- CentOS下samba配置心得(smb和nmb都要启动)
印象中以前多次配置成功过,重新配置就把以前的资料找出来: yum安装 samba samba-client samba-swat,然后配置参见:http://www.cnblogs.com/mchin ...
- Thinkphp 3.2 验证码图片显示错误解决方法
在调用验证码之前加上 ob_clean(); 不显示验证码的代码: public function verify(){ $verify = new \Think\Verify(); $verify-& ...
- CSU 1859 Gone Fishing(贪心)
Gone Fishing [题目链接]Gone Fishing [题目类型]贪心 &题解: 这题要先想到枚举走过的湖,之后才可以贪心,我就没想到这,就不知道怎么贪心 = = 之后在枚举每个湖的 ...
- node.js连接MongoDB数据库,db.collection is not a function完美解决
解决方法一. mongodb数据库版本回退: 这个错误是出在mongodb的库中,在nodejs里的写法和命令行中的写法不一样,3.0的api已经更新和以前的版本不不一样,我们在npm中没指定版本号的 ...
- PM2管理工具的使用
linux上PM2可以管理服务程序,防止程序无故关闭,具有程序守护功能,自动重启服务器程序,监控程序等好处,很方便,具体自己去体会! 官网地址: http://pm2.keymetrics.io/ ...
- innerText 与 innerHtml的区别
j基本语法类似: innerHTML/innerText ->给除了表单元素的标签赋值内容 document.getElementById("div1").innerHTML ...
- Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联
2018-11-10 22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...
- 【Hive学习之七】Hive 运行方式&权限管理
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...