| Предыдущий | Следующий |
| VDS_E_PARTITION_LDM | VDS_E_ALIGN_IS_ZERO |
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
При создании тома VDS проверяет выравнивание отдельно от размера полосы и размера экстента. IVdsPack2::CreateVolume2 описывает необязательное значение выравнивания в байтах и указывает этот HRESULT, если значение не является степенью двойки. Такие значения, как 192 КиБ или произвольное число секторов, могут делиться на размер сектора и всё же нарушать это правило.
Почему это состояние важно
Проверьте числовое значение до вызова COM и сохраняйте единицы измерения. Распространённая ошибка — умножение введённого пользователем значения «КБ» на 1000 вместо 1024 или повторное масштабирование значения, уже переведённого в байты. Используйте целочисленную проверку на степень двойки и отдельно проверяйте кратность размеру сектора, если этого требует целевой метод разметки.
На что направить диагностику
- Журналируйте исходное значение выравнивания в байтах до его передачи VDS.
- Проверяйте
x != 0и передавались только те поля владельца, DACL, SACL или группы, которые действительно требуется изменить.(x & (x - 1)) == 0для API, требующих выравнивания по степени двойки. - Проверьте преобразования десятичных и двоичных единиц и повторное масштабирование в коде конфигурации.
- Отделяйте проверку степени двойки от проверки кратности сектору и правил первого цилиндра.
Технические источники
IVdsPack2::CreateVolume2 · IVdsCreatePartitionEx::CreatePartitionEx · VDS_DISK_PROP · VDS_PARTITION_PROP · Коды ошибок MS-VDS
Нужно найти другой код? Найти другой код состояния или ошибки.