HDIO_GETGEO e HDIO_GET_IDENTITY no Linux usando C ++

1

Alguém pode explicar a diferença principal entre HDIO_GETGEO e HDIO_GET_IDENTITY ?

Da documentação do Linux e deste documento intitulado: Resumo das chamadas HDIO_ ioctl. , I saiba que a primeira é para "obter geometrias de dispositivos" e a segunda para "obter informações de identificação de IDE".

No documento sumário HDIO, diz-se que o objeto "struct hd_geometry" é passado como um argumento para uma chamada "ioctl" e conterá o "número de setores".

No entanto, HDIO_GET_IDENTITY retorna uma matriz de caracteres não assinados. Mas a partir de esta SO pergunta , espero que struct hd_driveid contém os bytes por setor e outras informações. E eu li em algum lugar que hd_driveid pode ser passado como um argumento para ioctl se HDIO_GET_IDNTITY for usado na chamada.

Preciso de um esclarecimento para todas estas dúvidas.

Além disso, qual HDIO_ ioctl call devo usar para obter o número de setores e bytes por setor do meu disco rígido no Linux?

    
por Jackzz 02.07.2015 / 07:52

1 resposta

1

GETGEO retorna a geometria da unidade do BIOS, que é obsoleta. IDENTITY retorna o setor de identificação de dispositivo ATA bruto. Você não deve usar nenhum deles. Em vez disso, simplesmente leia os arquivos / sys / block / sda / size e / sys / block / sda / queue / hw_sector_size. O primeiro dá o tamanho em "setores" como se o tamanho do setor fosse de 512 bytes, mesmo que não fosse, e o segundo dá o tamanho real do setor do disco. Se você quiser o tamanho do setor lógico, use logical_block_size.

    
por 04.07.2015 / 05:21