内核技术中文网»首页 论坛 圈点 查看内容

0 评论

0 收藏

分享

linux c++ 调用libudev获取当前所有usbkey的信息

以下是一个示例代码,演示如何使用libudev库获取当前系统中所有USB设备的信息:

#include <iostream>
#include <libudev.h>

int main() {
    struct udev *udev = udev_new();
    if (!udev) {
        std::cerr << "Failed to create udev context" << std::endl;
        return 1;
    }

    struct udev_enumerate *enumerate = udev_enumerate_new(udev);
    if (!enumerate) {
        std::cerr << "Failed to create enumerate object" << std::endl;
        udev_unref(udev);
        return 1;
    }

    // 添加过滤条件,只匹配USB设备
    udev_enumerate_add_match_subsystem(enumerate, "usb");

    // 扫描设备
    udev_enumerate_scan_devices(enumerate);

    // 获取设备列表
    struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate);

    // 遍历设备列表并打印信息
    struct udev_list_entry *entry;

        udev_list_entry_foreach(entry, devices) {
            const char* path = udev_list_entry_get_name(entry);
            struct udev_device* device =
                udev_device_new_from_syspath(udev, path);

            const char* devnode =
                udev_device_get_devnode(device);
            const char* sysname =
                udev_device_get_sysname(device);

            std::cout << "Device Node: " << devnode << std::endl;         
            std::cout << "System Name: " << sysname << std::endl;

            // 获取usbkey的其他属性信息
            const char* vendor_id =
                udev_device_get_sysattr_value(device, "idVendor");
            const char* product_id =
                udev_device_get_sysattr_value(device, "idProduct");

            std::cout << "Vendor ID: " << vendor_id << std::endl;
            std::cout << "Product ID: " << product_id << std::endl;

            // 释放设备资源
            if (device)
                udev_device_unref(device);
        }

    // 释放资源
    udev_enumerate_unref(enumerate);
    udev_unref(udev);

    return 0;
}

请确保已安装libudev库,并在编译时链接libudev库。您可以使用以下命令进行编译:g++ -o usb_info demo.cpp -ludev。执行该程序后,将会输出当前系统中所有USB设备的设备节点、系统名称、厂商ID和产品ID等信息。<br/><br/><br/><p style="color:#CCCCCC;font-size:12px;">内容由零声教学AI助手提供,问题来源于学员提问</p>

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
主题 6339
回复 0
粉丝 0
扫码获取每晚技术直播链接
快速回复 返回顶部 返回列表