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바이트가 아니더라도) "섹터" 단위로 크기를 제공하고, 후자는 드라이브의 실제 섹터 크기를 제공합니다. 논리 섹터 크기를 원하면 논리 블록 크기를 사용하십시오.

관련 정보