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、セクタあたりのバイト数、その他の情報を含めたいです。 if呼び出しに使用するhd_driveidパラメータとしてこれを渡すことができるという内容をどこかで読みました。ioctlHDIO_GET_IDNTITY

このような疑惑をすべて明らかにしなければならないのに…

また、HDIO_ ioctl callLinuxでハードディスクのセクタ数とセクタあたりのバイト数を取得するには、どちらを使用する必要がありますか?

ベストアンサー1

GEGEO は廃止予定の BIOS ドライブ構造を返します。 IDENTITY 生 ATA デバイス識別セクタを返します。そのうちのどれも使用しないでください。代わりに、/sys/block/sda/size および /sys/block/sda/queue/hw_sector_size ファイルからお読みください。前者は、セクタサイズが512バイトであるかのように(512バイトでなくても)「セクタ」単位でサイズを提供し、後者はドライブの実際のセクタサイズを提供します。論理セクタサイズが必要な場合は、論理ブロックサイズを使用してください。

おすすめ記事