Linux 中使用 C++ 的 HDIO_GETGEO 和 HDIO_GET_IDENTITY

Linux 中使用 C++ 的 HDIO_GETGEO 和 HDIO_GET_IDENTITY

谁能解释HDIO_GETGEO和之间的核心区别HDIO_GET_IDENTITY

来自 Linux 文档和本文档标题为:HDIO_ ioctl 调用摘要。,我知道前者用于“获取设备几何形状”,后者用于“获取 IDE 标识信息”。

在 HDIO 摘要文档中,据说“struct hd_geometry”对象作为参数传递给“ioctl”调用,并且它将包含“扇区数”。

但是,HDIO_GET_IDENTITY返回一个无符号字符数组。但从这个问题,我希望struct hd_driveid包含每个扇区的字节数和其他信息。我在某处读到hd_driveid可以作为参数传递给ioctlif 的HDIO_GET_IDNTITY调用中使用的内容。

我需要澄清所有这些疑问..

另外,HDIO_ ioctl call我应该使用哪个来获取 Linux 中硬盘的扇区数和每个扇区的字节数?

答案1

GEGEO 返回 BIOS 驱动器几何结构,该几何结构已过时。 IDENTITY 返回原始 ATA 设备标识扇区。您不应该使用其中任何一个。相反,只需从文件 /sys/block/sda/size 和 /sys/block/sda/queue/hw_sector_size 中读取即可。前者以“扇区”为单位给出大小,就好像扇区大小为 512 字节(即使不是 512 字节),后者给出驱动器的实际扇区大小。如果您想要逻辑扇区大小,请使用逻辑块大小。

相关内容