-
p © (21.02.15 15:21) [0]Написано чтоThe length specified in the Length parameter must be a nonnegative multiple of the volume's sector size
Подкажите что это значит или как правильно переводится?
Я так понял что размер буфера для чтения должен быть не меньше размера сектора этого самогоvolume
и должен быть кратным размера сектора? -
Rouse_ © (21.02.15 15:55) [1]Кратен размеру сектора и не меньше чем адрес логического раздела.
-
Rouse_ © (21.02.15 15:56) [2]В противном случае получишь AD C0000005
-
p © (21.02.15 16:08) [3]
> Rouse_ © (21.02.15 15:55) [1]
>
> не меньше чем адрес логического раздела
А так если - Кратен размеру сектора и не меньше чем размер кластера ? -
p © (21.02.15 16:12) [4]Минимальный размер буфера
BufferLength = max(Length, 512);
-
p © (21.02.15 16:15) [5]И подогнать к размеру сектораif ( BufferLength % 512 != 0 )
BufferLength = BufferLength + (512 - (BufferLength % 512));
Так правильно? -
p © (21.02.15 16:24) [6]
> p © (21.02.15 16:08) [3]
Все я вроде все вкурил, Спасибо Rouse -
Rouse_ © (21.02.15 19:10) [7]
> Так правильно?
Нет, там блоками читаться данные будут и будет ошибка. Вообще основная проблема у тебя должна быть не с размером, а со стартовым адресом.
Что за дровина у тебя? Фильтр (верхний/нижний) или мини? -
Rouse_ © (21.02.15 19:11) [8]А... пардон, дельфевый код, значит в третьем кольце работаешь. Тогда не страшно :)
-
p © (21.02.15 20:37) [9]Мини фильтр, из юзера передаю данные в дровину, а FltReadFile вызываю в kernel mode