我需要在Win和* nix机器上获取硬盘的规格。我在Linux上使用<hdreg.h>
这样的:如何在Linux中使用C++获取硬件信息
static struct hd_driveid hd;
int device;
if ((device = open("/dev/sda", O_RDONLY | O_NONBLOCK)) < 0)
{
cerr << "ERROR: Cannot open device /dev/sda \n";
exit(1);
}
if (!ioctl(device, HDIO_GET_IDENTITY, &hd))
{
cout << hd.model << endl;
cout << hd.serial_no << endl;
cout << hd.heads << endl;
}
我需要hd_driveid
告诉我有关磁盘的更多信息。我想知道:
- 分区数
- 每个分区的规格(格式,标签,标志,尺寸,起点,轨道数量等)
- 每缸曲目数
- 总轨道数
- 最大块大小
- 最小块大小
- 默认块大小
- 设备
我的问题的总大小为:
- 是否有一个共同的 (独立平台)的方式来 连接硬件?我想使用 相同的代码为赢和* nix。 (即使 没有办法将 嵌入到cpp的汇编代码中)
- 如果没有,我如何在* nix中获得上述信息?
某些系统没有分区......有些(通常在* BSD中)使用“分片”,而其他分区可能只是使用完整的硬盘。 (即未分区)。 – Arafangion 2011-03-04 13:36:59