Конференция "WinAPI" » В MSDN про FltReadFile
 
  • 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
 
Конференция "WinAPI" » В MSDN про FltReadFile
Есть новые Нет новых   [118595   +8][b:0][p:0.001]