Многие современные типы хранилищ используют Thin provisioning для выделения блоков. Мне нужно получить Block allocation map для дискового устройства. Существует FSCTL_GET_VOLUME_BITMAP, чтобы получить точечную растровую карту, но она специфична для файловой системы, и мне нужен подход, который не является специфичным для FS. Начиная с Windows 8 Windows is sending "TRIM and Unmap" hints to storage media to track allocated blocks.Как определить, какие блоки выделены для дискового устройства?
Unmap является командой SCSI, с помощью которого приложение или система может общаться в стек для хранения и диск, что определенный сектор или диапазона секторов в настоящее время не используется, в том числе секторов, которые были ранее в использование файлов, которые впоследствии были удалены.
Так что это должно быть возможно. К сожалению, мне не удалось найти Disk Management Control Code или функцию управления дисками, чтобы получить его. Может быть, кто-то знает, как это получить?
Я не думаю, что есть стандартный метод. Базовое хранилище может реализовать тонкую настройку любым способом. Trim и Unmap позволяют ОС предоставлять информацию на устройство хранения, а не наоборот. –
Если у вас есть диски SCSI, команда GET LBA STATUS, введенная в SBC-3, является способом получения низкоуровневых сопоставлений с самого устройства. –
@ gubblebozer Спасибо! Это можно принять. Похоже, IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES может выполнять эту работу –