Advertisement

获取USB信息的VC++方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文章介绍如何使用VC++编程语言获取计算机上USB设备的相关信息,包括设备名称、制造商等详细内容。 USB设备种类繁多,因此对它们的查找与读写变得非常重要。然而,关于如何进行USB操作的信息却相对较少。这里通过VC++展示了一些获取USB信息的方法。 一、枚举USB设备 可以通过以下步骤来实现:首先枚举USB控制器;接着遍历该控制器上的所有HUB(集线器);然后逐一检查每个端口以获得连接的设备信息。具体操作如下: - 为每一个主控器创建一个路径名,例如使用 \\\\.\\HCD1 和 \\\\.\\HCD2。 - 使用 `CreateFile` 函数打开这些控制器,并通过 `DeviceIoControl` 获取驱动程序名称和与之相连的HUB设备信息。 - 对于每个找到的HUB,再次调用 `CreateFile` 打开它并获取连接到该HUB的所有设备的信息。 二、枚举HID(人机接口)设备 这类设备包括USB鼠标和游戏手柄等。通过使用API函数 `HidD_GetHidGuid(&guidHID)` 来获得GUID,然后利用 `SetupDiEnumDeviceInterfaces` 函数来判断是否有相应的硬件连接到系统中。 如果发现有符合标准的设备,则可以进一步调用 `SetupDiGetDeviceInterfaceDetail` 获取其详细路径信息。接着打开该文件并使用 `HidD_GetAttributes` 来获取基本属性,或者通过发送特定命令给驱动程序(例如利用 `DeviceIoControl` 函数)来获得更详尽的信息。 在本示例代码中,如果计算机上安装了USB游戏手柄,则可以成功读取其信息。然而,在Windows XP操作系统下却无法正确识别出连接的USB鼠标。 三、枚举U盘 首先使用 API `GetDriveType` 来判断设备类型;如果是可移动存储(即返回值为REMOVABLE),则很可能是U盘。接下来,通过调用 `CreateFile` 函数打开该设备,并利用带有参数 IOCTL_STORAGE_QUERY_PROPERTY 的 `DeviceIoControl` 请求来获取有关其属性的详细信息。 四、总结 此示例项目已经能够在Windows XP环境下使用Visual C++ 6.0和XP DDK工具链成功编译运行。由于USB硬件种类繁多且控制软件各异,使得访问这些端口上的设备比串行或并行接口更为复杂。 本段落仅提供了基本的实现方案,并未涵盖所有问题(如某些特定鼠标型号在Windows XP上无法被正确识别等)。参考了诸如 USBPort 和 USBview 等开源项目。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • USBVC++
    优质
    本文章介绍如何使用VC++编程语言获取计算机上USB设备的相关信息,包括设备名称、制造商等详细内容。 USB设备种类繁多,因此对它们的查找与读写变得非常重要。然而,关于如何进行USB操作的信息却相对较少。这里通过VC++展示了一些获取USB信息的方法。 一、枚举USB设备 可以通过以下步骤来实现:首先枚举USB控制器;接着遍历该控制器上的所有HUB(集线器);然后逐一检查每个端口以获得连接的设备信息。具体操作如下: - 为每一个主控器创建一个路径名,例如使用 \\\\.\\HCD1 和 \\\\.\\HCD2。 - 使用 `CreateFile` 函数打开这些控制器,并通过 `DeviceIoControl` 获取驱动程序名称和与之相连的HUB设备信息。 - 对于每个找到的HUB,再次调用 `CreateFile` 打开它并获取连接到该HUB的所有设备的信息。 二、枚举HID(人机接口)设备 这类设备包括USB鼠标和游戏手柄等。通过使用API函数 `HidD_GetHidGuid(&guidHID)` 来获得GUID,然后利用 `SetupDiEnumDeviceInterfaces` 函数来判断是否有相应的硬件连接到系统中。 如果发现有符合标准的设备,则可以进一步调用 `SetupDiGetDeviceInterfaceDetail` 获取其详细路径信息。接着打开该文件并使用 `HidD_GetAttributes` 来获取基本属性,或者通过发送特定命令给驱动程序(例如利用 `DeviceIoControl` 函数)来获得更详尽的信息。 在本示例代码中,如果计算机上安装了USB游戏手柄,则可以成功读取其信息。然而,在Windows XP操作系统下却无法正确识别出连接的USB鼠标。 三、枚举U盘 首先使用 API `GetDriveType` 来判断设备类型;如果是可移动存储(即返回值为REMOVABLE),则很可能是U盘。接下来,通过调用 `CreateFile` 函数打开该设备,并利用带有参数 IOCTL_STORAGE_QUERY_PROPERTY 的 `DeviceIoControl` 请求来获取有关其属性的详细信息。 四、总结 此示例项目已经能够在Windows XP环境下使用Visual C++ 6.0和XP DDK工具链成功编译运行。由于USB硬件种类繁多且控制软件各异,使得访问这些端口上的设备比串行或并行接口更为复杂。 本段落仅提供了基本的实现方案,并未涵盖所有问题(如某些特定鼠标型号在Windows XP上无法被正确识别等)。参考了诸如 USBPort 和 USBview 等开源项目。
  • Qt USB
    优质
    简介:本教程介绍如何使用 Qt 框架编写程序来获取和管理计算机上的 USB 设备信息,涵盖设备检测、属性读取等操作。 使用QT实现获取USB设备的信息,并将这些信息显示到用户界面上的完整工程示例。
  • C# USB
    优质
    本教程详细介绍如何使用C#编程语言获取并操作计算机上的USB设备信息,包括检测新连接的USB设备和访问其属性。 C#结合USB进行数据的接收和发送可以作为学习参考。
  • VC/MFC中设置和日期时间
    优质
    本文档介绍了如何在VC/MFC环境中有效地读取、设置系统及应用程序中的日期与时间信息。通过使用MFC类库提供的接口函数,可以实现对日期时间数据的操作,并提供了多种格式化输出方式,帮助开发者轻松应对各种需求场景。 在使用VC/MFC开发应用程序时,可以利用日期控件来设置和获取日期时间信息。这种方法能够方便地处理与显示日期相关的操作。
  • AndroidSIM卡
    优质
    本文将详细介绍在Android设备中如何编程式地获取SIM卡的相关信息,包括IMSI号、ICCID号等,并提供示例代码。 如何在Android设备上获取SIM卡的信息,包括手机平台、运营商等相关数据。
  • AndroidSIM卡
    优质
    本文介绍了如何在Android设备中通过编程方式获取SIM卡的相关信息,包括IMSI号、ICCID号等,并提供了相应的代码示例。 如何在Android设备上获取SIM卡的信息,包括手机平台和运营商等相关数据。
  • C# WinForm中USB外设
    优质
    本文介绍了在C# WinForm应用程序中如何获取连接到计算机上的USB外设的信息,包括设备名称、制造商和序列号等。 该项目采用WMI技术进行开发。
  • JavaCV摄像头
    优质
    本文章介绍了如何使用JavaCV库来访问和获取计算机上连接的所有摄像头的信息,包括型号、分辨率等,并提供了详细的操作步骤与示例代码。 通过JavaCV让软件能够获取本地电脑的摄像头信息。通过JavaCV使软件可以访问并获得来自本地计算机的摄像头数据。简而言之,利用JavaCV技术可以让程序读取到连接在本机上的摄像头的相关信息。
  • 安卓设备USB外设
    优质
    本项目旨在为安卓设备开发一个实用工具,用于高效便捷地获取连接到设备上的USB外设详细信息,便于用户管理和调试。 使用带OTG功能的安卓设备读取USB外设信息可以通过AS调试工具获取。以下是过滤后的示例输出: 厂商/VendorId: 0x10C4 产品/ProductId: 0xEA60 设备/DeviceId: 0x7D2 接口数/InterfaceCount: 1 描述/describeContents = 0 设备类/DeviceClass: 0 设备子类/DeviceSubclass: 0 设备名称/DeviceName: /dev/bus/usb/002/002 设备协议/DeviceProtocol: 0 哈希码/hashCode: 0xFB393B2 ---------- 接口信息 ---------- 接口ID: 0 接口类/InterfaceClass: 255 接口子类/InterfaceSubclass: 0 接口协议/InterfaceProtocol: 0 端点数/EndpointCount:2 ----- 端点0 ----- 数据方向/Direction: 输入 类型/Type: 2 描述/describeContents: 0 地址/Address: 0x81 属性/Attributes: 2 区间/Interval: 0 最大包大小/MaxPacketSize: 64 ----- 端点1 ----- 数据方向/Direction: 输出 类型/Type: 2 描述/describeContents: 0 地址/Address: 0x1 属性/Attributes: 2 区间/Interval: 0 最大包大小/MaxPacketSize: 64
  • 摄像头三种
    优质
    本文介绍了如何通过编程和系统设置来获取计算机或移动设备上摄像头的基本信息,包括使用JavaScript、Python以及操作系统的命令行工具等三种实用的方法。 获取摄像头可以通过使用vfw、DirectShowLib或AForge这些库来实现。