如何使用设备ID获取USB硬件ID?

2024-01-10

如何使用设备ID获取USB设备的硬件ID...我使用的是vc++6.0,操作系统是xp。 使用wmi可以吗?


终于解决了我的问题...谢谢你的回复... 我在这里发布代码,它可能对某人有用...通过这段代码,我们可以获取与我们系统连接的设备的所有硬件ID。

HDEVINFO hDevInfo;
   SP_DEVINFO_DATA DeviceInfoData;
   DWORD i;

   // Create a HDEVINFO with all present devices.
   hDevInfo = SetupDiGetClassDevs(NULL,
       0, // Enumerator
       0,
       DIGCF_PRESENT | DIGCF_ALLCLASSES );

   if (hDevInfo == INVALID_HANDLE_VALUE)
   {
       //Error handling here.
       printf("Error Details:[%s]\n","INVALID_HANDLE_VALUE");
       return 1;
   }

   // Enumerate through all devices in Set.

   DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
   for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,
       &DeviceInfoData);i++)
   {
       DWORD DataT;
       LPTSTR buffer = NULL;
       LPTSTR hwbuffer=NULL;
       DWORD buffersize = 0;

       //
       // Call function with null to begin with, 
       // then use the returned buffer size (doubled)
       // to Alloc the buffer. Keep calling until
       // success or an unknown failure.
       //
       //  Double the returned buffersize to correct
       //  for underlying legacy CM functions that 
       //  return an incorrect buffersize value on 
       //  DBCS/MBCS systems.
       // 
       while (!SetupDiGetDeviceRegistryProperty(
           hDevInfo,
           &DeviceInfoData,
           SPDRP_HARDWAREID,
           &DataT,
           (PBYTE)buffer,
           buffersize,
           &buffersize))
       {

           if (GetLastError() == 
               ERROR_INSUFFICIENT_BUFFER)
           {
               // Change the buffer size.
               if (buffer) LocalFree(buffer);
               // Double the size to avoid problems on 
               // W2k MBCS systems per KB 888609. 
              buffer = (char*)LocalAlloc(LPTR,buffersize * 2);
           }
           else
           {
               //Error handling here.
               //printf("Error Details:[%s]\n",GetLastError());
               break;
           }
       }
        printf("Test Result:[%s]\n",buffer);



       if (buffer) LocalFree(buffer);
   }


   if ( GetLastError()!=NO_ERROR &&
        GetLastError()!=ERROR_NO_MORE_ITEMS )
   {
       // Error handling here.
       printf("Error Details:[%s]\n",GetLastError());
       return 1;
   }

   //  Cleanup
   SetupDiDestroyDeviceInfoList(hDevInfo);


   return 0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用设备ID获取USB硬件ID? 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲

随机推荐

  • 用于修复损坏的序列化 PHP 数据的正则表达式/代码。

    我有一个巨大的多维数组 已由 PHP 序列化 它已存储在MySQL中 数据字段不够大 末尾已被切断 我需要提取数据 unserialize行不通 有人知道可以关闭所有数组的代码 重新计算字符串长度 手动处理的数据太多了 非常感谢 这是重新计
  • 附加到 asp.net 母版页中的默认标题

    我正在使用 MVC 将标题添加到带有内容占位符的母版页 默认的MVC母版页模板使用以下代码 当我尝试将默认文本添加到内容容器的前面时 它不会在最终呈现的页面中显示文本 我试图让页面显示带有附加 contentp
  • Jquery 滚动到具有相同类的下一个/上一个 div

    我有几个 div 都具有相同的类 帖子 并且我有一个简单的向上和向下导航
  • Python浮点精度和

    我在 python 中有以下数组 n 565387674 45 321772103 48 321772103 48 214514735 66 214514735 65 357524559 41 如果我将所有这些元素相加 我会得到 sum n
  • 使用shutil移动文件时出错

    我正在尝试创建一个简单的函数 查找以某个字符串开头的文件 然后将它们移动到新目录 但我不断从shutil IOError Errno 2 没有这样的文件或目录 18 1 pdf 即使该文件存在 import os import shutil
  • 组件中未定义渲染函数或模板:匿名

    我遇到这样的问题 重新加载页面后出现错误 组件中未定义渲染函数或模板 匿名 我认为该错误是由于 socket io 造成的 这个错误不是发生在本地机器上 而是发生在生产上 这是怎么回事 开发者 https dev jujuway com u
  • 如何在Python中编写字符串文字而不必转义它们?

    有没有一种方法可以在Python中声明一个字符串变量 这样它里面的所有内容都会自动转义 或者有它的文字字符值 I m not询问如何用斜杠转义引号 这是显而易见的 我要求的是一种通用的方法 用于将所有内容都放入字符串文字中 这样我就不必手动
  • 在查询中使用 TOP 1 时出现问题

    我编写了以下查询来获取日期 删除它的时间部分并添加我想要的时间 如果我在没有 TOP 子句的情况下运行此查询 则效果很好 但是当我添加它时 它返回以下异常 从字符串转换日期和 或时间时转换失败 这是查询 SELECT TOP 1 CONVE
  • C# List .ConvertAll 效率和开销

    我最近了解了 List 的 ConvertAll 扩展 我今天在工作中在代码中使用了几次它 将我的大量对象列表转换为其他对象的列表 看起来效果真的很好 但是 我不确定与仅迭代列表和转换对象相比 这有多高效或多快 ConvertAll 是否使
  • Android 应用内计费、非消耗品

    我正在实施应用内计费 用户将能够购买优质内容的访问权限 这是典型的非消耗品 假设优质内容是问题应用程序中的额外问题或类别 我用过this http www techotopia com index php Integrating Googl
  • 如何设置UILabel发光效果的颜色?

    我们通常可以设置fontColorUILabel 的实现方式 label textColor self someTextColor 和阴影 发光 label layer shadowColor self someGlowColor labe
  • 如何在shell脚本中调用函数?

    我有一个有条件调用函数的 shell 脚本 例如 if choice true then process install elif choice false then process exit fi process install comm
  • 通过句子或段落训练和评估 spaCy 模型

    观察 段落 I love apple I eat one banana a day句子 I love apple I eat one banana a day这一段有两句话 I love apple and I eat one banana
  • 无法添加实体类型“X”的种子实体,因为没有为所需属性“..ID”提供值

    我在玩机智EF Core 2 1 预览 2 我在使用 HasData Seed 方法时遇到问题OnModelCreating ModelBuilder modelBuilder 我的模型是简单的 POCO 类 没有注释 public cla
  • 无法使用“Regex::replace()”来替换编号的捕获组

    我正在将复数器移植到 Rust 但在使用正则表达式时遇到了一些困难 我无法获取Regex replace 正如我所期望的那样 替换编号捕获组的方法 例如 以下显示空字符串 let re Regex new m l ouse unwrap p
  • 从文件开头删除字节数

    我想复制一个没有前 256 个字节的文件 有没有一个好的方法可以用 python 来做到这一点 我猜想简单的方法是用计数器读取字节 然后仅在达到 256 时才开始复制 我希望有更优雅的方式 Thanks with open input rb
  • 如何在复杂数据的情况下分离行

    说实话这个问题本来就不是我的 这个问题 https stackoverflow com q 67871768 2884859促使我把它放在一个简化的案例中 因此 我必须根据分隔符将输入到单元格 列中 的数据分隔成单独的行 即 在目前的情况下
  • 我从脚本创建了文本区域扩展器,但之后它没有扩展

    不知道标题是否正确 我使用一个脚本创建了一张包含 5 个文本区域且 class expand 的表 当我写入时 该文本区域会扩展 但随后不起作用 写完之后有调用jquery插件的方法吗 在我尝试不创建文本区域之前 我在 html 文件中写入
  • Bash 脚本将文本文件与文件名中的特定子字符串连接起来

    在某个目录中 我有许多包含一堆文本文件的目录 我正在尝试编写一个脚本 仅将每个目录中文件名中包含字符串 R1 的文件连接到该特定目录中的一个文件中 以及将那些文件名中包含 R2 的文件连接到另一个 这是我写的 但它不起作用 bin bash
  • 如何使用设备ID获取USB硬件ID?

    如何使用设备ID获取USB设备的硬件ID 我使用的是vc 6 0 操作系统是xp 使用wmi可以吗 终于解决了我的问题 谢谢你的回复 我在这里发布代码 它可能对某人有用 通过这段代码 我们可以获取与我们系统连接的设备的所有硬件ID HDEV