我需要在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