![Linux에서 C++의 HDIO_GETGEO 및 HDIO_GET_IDENTITY 사용](https://linux55.com/image/68184/Linux%EC%97%90%EC%84%9C%20C%2B%2B%EC%9D%98%20HDIO_GETGEO%20%EB%B0%8F%20HDIO_GET_IDENTITY%20%EC%82%AC%EC%9A%A9.png)
HDIO_GETGEO
누구든지 사이의 핵심 차이점을 설명할 수 있습니까 HDIO_GET_IDENTITY
?
Linux 문서와 이 문서에서 다음과 같은 제목이 붙었습니다.HDIO_ ioctl 호출 요약., 전자는 "장치 형상 가져오기"에 사용되고 후자는 "IDE 식별 정보 가져오기"에 사용되는 것으로 알고 있습니다.
HDIO 요약 문서에서는 "struct hd_geometry" 객체가 "ioctl" 호출에 매개변수로 전달되며 "섹터 수"를 포함한다고 나와 있습니다.
그러나 HDIO_GET_IDENTITY
부호 없는 문자 배열이 반환됩니다. 하지만이 문제struct hd_driveid
, 섹터당 바이트 수 및 기타 정보를 포함하고 싶습니다 . if 호출에 사용할 hd_driveid
매개변수로 이것이 전달될 수 있다는 내용을 어디선가 읽었습니다 .ioctl
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바이트가 아니더라도) "섹터" 단위로 크기를 제공하고, 후자는 드라이브의 실제 섹터 크기를 제공합니다. 논리 섹터 크기를 원하면 논리 블록 크기를 사용하십시오.