Como posso obter o tamanho do setor físico de uma unidade que não possui volumes reconhecidos?

4

O Windows pode me informar o tamanho do setor lógico e físico da unidade responsável por uma partição / volume por meio do comando fsutil fsinfo sectorinfo x: (em que x é a letra da minha unidade). Como posso obter essas informações para uma unidade que não tenha letras de unidade ou volumes de qualquer tipo?

Estou usando o Windows 8.1 Pro, mas espero que uma resposta funcione pelo menos para o Windows 7 também.

Coisas que eu conheço, mas que não ajudam

  • wmic partition get BlockSize, Name é errado porque apenas fornece o tamanho do setor lógico e também não funciona se não houver partições na unidade.
  • wmic diskdrive get BytesPerSector, Name novamente só me dá o tamanho do setor lógico, mas funciona em todos os discos rígidos. Não parece haver uma propriedade de Win32_DiskDrive que tenha o tamanho físico.
  • fsutil fsinfo ntfsinfo \?\Volume{...}\ só funciona para unidades com partições e partições NTFS para isso.
  • A versão sectorinfo acima não funciona com essa sintaxe de volume especial ( Error: The system cannot find the path specified. ).
  • Informações do sistema ( msinfo32 ) mostra apenas os bytes lógicos por setor.
  • O Gerenciador de dispositivos não parece listar nada relacionado à geometria da unidade.

Eu não quero inicializar a unidade ou criar um volume, porque isso iria acabar com o conteúdo que o Windows não está vendo.

Eu também sei sobre IOCTL_DISK_GET_DRIVE_GEOMETRY_EX , mas usando isso exigiria escrever e compilar um programa. De preferência sem ferramentas de terceiros, como posso encontrar o tamanho do setor físico de um disco rígido no Windows?

    
por Ben N 15.02.2016 / 02:14

1 resposta

5

Enquanto escrevia esta outra resposta , encontrei a solução: PowerShell! O cmdlet Get-Disk retorna informações sobre todas as unidades atualmente conectadas, mesmo que eles não estejam particionados ainda. Para ver informações sobre discos conhecidos, use este comando:

Get-Disk | Format-List

Uma das minhas unidades (na verdade, um arquivo VHD montado porque não tenho uma unidade de disco na mão) aparece assim:

UniqueId           : 6002248038B7BF29A1D79765E555C965
Number             : 1
Path               : \?\scsi#disk&ven_msft&prod_virtual_disk#2&<redacted>
Manufacturer       : Msft
Model              : Virtual Disk
SerialNumber       :
Size               : 100 MB
AllocatedSize      : 0
LogicalSectorSize  : 512
PhysicalSectorSize : 512
NumberOfPartitions : 0
PartitionStyle     : RAW
IsReadOnly         : False
IsSystem           : False
IsBoot             : False

Observe como o PartitionStyle é RAW - ainda não inicializei este disco! A propriedade PhysicalSectorSize é o tamanho físico do setor em bytes.

O cmdlet Get-PhysicalDisk faz algo semelhante, mas Retorna muito mais informações. Ambos os cmdlets são suportados a partir do Windows 8.

    
por 18.11.2016 / 20:36