WriteFile () Win32 вызов с размером входного буфера = 512 Сбой., Когда я пытаюсь записать на диск, который имеет байтов на сектор = 4096. [диск 3 ТБ]. Тот же WriteFile с размером входного буфера = 4096 работает нормально.,
Может ли любое тело объяснить это поведение?
Для низкоуровневых операций ввода-вывода ваш буфер должен быть целым числом, кратным размеру сектора. В твоем случае, k*4096
, Скорее всего, ваш жесткий диск не был изготовлен давно. Они называются «расширенный формат» и имеют 4096 байт на сектор. Мой не возражает, если я установлю его на 512, потому что он старый. Попробуйте использовать GetDiskFreeSpace
функция, чтобы узнать больше о вашем жестком диске.
Других решений пока нет …