You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QNX中编程获取硬盘序列号、厂商等详细信息?

QNX系统获取硬盘详细信息的方法

一、文件系统直接读取的方式

QNX支持通过/proc文件系统直接读取部分磁盘信息:

  • 读取/proc/diskinfo:可获取磁盘的设备节点、容量、分区等基础信息
  • 读取/proc/mounts:可获取磁盘对应的挂载路径,每行记录格式为[设备节点] [挂载路径] [文件系统类型] [挂载选项] ...,解析后能关联设备与文件系统路径

不过厂商、序列号这类更精细的硬件信息,还是需要通过devctl系统调用获取。

二、扩展devctl调用获取更多硬件信息

你当前仅使用了DCMD_CAM_DEV_SERIAL_NUMBER,QNX的sys/dcmd_cam.h提供了多个相关命令,可获取厂商、型号等信息:

  • DCMD_CAM_DEV_VENDOR:读取厂商名称
  • DCMD_CAM_DEV_PRODUCT:读取产品型号
  • DCMD_CAM_DEV_REVISION:读取固件版本
  • DCMD_CAM_DEV_TYPE:读取设备类型(如硬盘、闪存设备)

示例代码

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <devctl.h>
#include <sys/dcmd_cam.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Usage: %s <device-node>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    int fd = open(argv[1], O_RDONLY);
    if (fd == -1) {
        fprintf(stderr, "Failed to open device %s\n", argv[1]);
        perror("open");
        exit(EXIT_FAILURE);
    }

    char buf[256];
    int error;
    size_t buf_len = sizeof(buf);

    // 获取厂商名称
    error = devctl(fd, DCMD_CAM_DEV_VENDOR, buf, buf_len, NULL);
    if (!error) {
        printf("Vendor: %s\n", buf);
    } else {
        perror("Failed to get vendor");
    }

    // 获取产品型号
    error = devctl(fd, DCMD_CAM_DEV_PRODUCT, buf, buf_len, NULL);
    if (!error) {
        printf("Product Model: %s\n", buf);
    } else {
        perror("Failed to get product model");
    }

    // 获取序列号
    error = devctl(fd, DCMD_CAM_DEV_SERIAL_NUMBER, buf, buf_len, NULL);
    if (!error) {
        printf("Serial Number: %s\n", buf);
    } else {
        perror("Failed to get serial number");
    }

    close(fd);
    return EXIT_SUCCESS;
}

三、其他获取方式

  • 使用QNX自带工具diskinfo:直接执行diskinfo <设备节点>(如diskinfo /dev/hd0),会输出包含厂商、型号、序列号、分区表、容量等的完整磁盘信息,脚本或程序可调用该命令并解析输出结果。

内容的提问来源于stack exchange,提问作者Arun Nishad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:30:05