Как я могу получить размер физического сектора диска, на котором нет распознанных томов?

5254
Ben N

Windows может сообщить мне размер логического и физического сектора диска, отвечающего за раздел / том, с помощью fsutil fsinfo sectorinfo x:команды (где xнаходится моя буква диска). Как я могу получить эту информацию для диска, на котором нет букв или томов?

Я использую Windows 8.1 Pro, но я надеюсь, что ответ будет работать как минимум для Windows 7.

Вещи, о которых я знаю, но это не помогает

  • wmic partition get BlockSize, Nameэто неправильно, потому что это только дает размер логического сектора, а также не работает, если нет разделов на диске.
  • wmic diskdrive get BytesPerSector, Nameснова только дает мне размер логического сектора, но работает на всех жестких дисках. Кажется, не существует свойства, Win32_DiskDriveкоторое имеет физический размер.
  • fsutil fsinfo ntfsinfo \\?\Volume{...}\ работает только для дисков с разделами и NTFS разделов.
  • sectorinfoВерсия выше, не работает на всех с этим специальным синтаксисом громкости ( Error: The system cannot find the path specified.).
  • Системная информация ( msinfo32) показывает только логические байты на сектор.
  • Диспетчер устройств не отображает ничего, связанного с геометрией привода.

Я не хочу инициализировать диск или создавать на нем том, потому что это могло бы уничтожить содержимое, которое Windows не видит.

Я также знаю о IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, но использование этого потребовало бы написания и компиляции программы. Желательно без сторонних инструментов, как найти размер физического сектора жесткого диска в Windows?

4
`wmic diskdrive get BytesPerSector, Name снова дает мне только размер логического сектора` Как вы это определили? [Этот ответ] (http://superuser.com/a/374453) на похожий вопрос показывает, что `wmic diskdrive get BytesPerSector` возвращает 4096 для диска в XP, в то время как XP даже не поддерживает 512e (4K физический / 512 логический) ) насколько я помню. dxiv 8 лет назад 0
@dxiv Ну, он определенно получает логические байты на сектор на моей машине (512): `fsutil fsinfo sectorinfo` говорит, что у меня 512 логических и 4K физических. Кроме того, не ОС определяет логичность. Ben N 8 лет назад 0
[Политика поддержки Microsoft для жестких дисков 4K-сектора в Windows] (https://support.microsoft.com/en-us/kb/2510009): `Любые диски с большим сектором, такие как 4K, 512E или любые другие 512 собственных дисков не поддерживаются Microsoft ни в одной версии операционной системы для Windows XP. Насколько я понимаю, `wmic` никогда не будет неверно представлять размер логического сектора как 4K под XP. Что только оставляет возможность для 4K быть размером физического сектора в этом сценарии. Может быть, все изменилось позже. Извините, у меня нет 4K-диска, пригодного для тестирования сейчас. dxiv 8 лет назад 0

1 ответ на вопрос

5
Ben N

При написании этого другого ответа я нашел решение: PowerShell! Get-DiskКомандлет возвращает информацию обо всех дисках, подключенных в данный момент, даже если они даже не распределяли. Чтобы увидеть информацию об известных дисках, используйте эту команду:

Get-Disk | Format-List 

Один из моих дисков (на самом деле это смонтированный VHD-файл, потому что у меня нет чистого диска под рукой) выглядит так:

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 

Обратите внимание, как это PartitionStyleпроисходит RAW- я еще даже не инициализировал этот диск! PhysicalSectorSizeСобственность размер физического сектора в байтах.

Get-PhysicalDiskКомандлет делает что - то подобное, но возвращает гораздо больше информации. Оба командлета поддерживаются начиная с Windows 8.

Отличный ответ, позор, что он не поддерживается в Windows 7. Hashim 6 лет назад 0