当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/sherlock-merlin/p/10793522.html

相关文章:

  • 百度地图API获取数据
  • leetcode 338. 比特位计数(Counting Bits)
  • 2019-04-30vmware虚拟机安装macos 10.8格式为iso
  • 【Python爬虫】听说你又闹书荒了?豆瓣读书9.0分书籍陪你过五一
  • Player Settings-Web
  • c++11多线程笔记
  • 微软UWP应用,导航栏设计。
  • Python 之继承
  • 写给我即将出生小孩的第一封信
  • Centos6.5安装Redis3.2.8
  • SSH connect issue 'exec request failed on channel 0'
  • SQL0668N Operation not allowed for reason code 3 on table TEST. SQLSTATE=57016
  • 作用域插槽slot
  • nodejs模块
  • 智能制造主战场在哪?数字化车间建设尤为重要
  • emacs初体验
  • Java知识点总结(JavaIO-打印流)
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Promise初体验
  • sessionStorage和localStorage
  • 对象管理器(defineProperty)学习笔记
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 通信类
  • 项目实战-Api的解决方案
  • 说说我为什么看好Spring Cloud Alibaba
  • 组复制官方翻译九、Group Replication Technical Details
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #单片机(TB6600驱动42步进电机)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (27)4.8 习题课
  • (33)STM32——485实验笔记
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)人的集合论——移山之道
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET Core 成都线下面基会拉开序幕
  • .net 调用php,php 调用.net com组件 --
  • .net 获取url的方法
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • 。Net下Windows服务程序开发疑惑
  • @Transient注解
  • [20181219]script使用小技巧.txt
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [8481302]博弈论 斯坦福game theory stanford week 1