Сообщение Re: Можно ли изменить размер файла в режиме ядра? от 20.10.2014 18:04
Изменено 20.10.2014 18:10 ononim
S>И того сейчас так
S>strlen(origBuf) = strlen(swappedBuffer) = 64 байт
S>в реале, для нашего примера, должно быть так
S>strlen(origBuf) = 55 байт, а strlen(swappedBuffer) = 64 байт
S>нужно как-то такое обойти, но не могу найти или придумать что-либо как усечь размер origBuf до нужно нам размера.
S>Вообще можно смухлевать в драйвере с размерами файлов?
FLT_CALLBACK_DATA::IoStatus::Information, не?
+ еще надо будет подмухлевывать результаты IRP_MJ_QUERY_INFORMATION дабы EndOfFile возвращать корректный в FILE_BASIC_INFORMATION. А еще — IRP_MJ_DIRECTORY_CONTROL, потому что в списке файлов в директории тоже размер возвращается.
Для затравки хватит, а потом придет x64 и все толком расскажет, если сами к тому времени не нагуглите примеры, которых, я уверен, в инете валом.
S>strlen(origBuf) = strlen(swappedBuffer) = 64 байт
S>в реале, для нашего примера, должно быть так
S>strlen(origBuf) = 55 байт, а strlen(swappedBuffer) = 64 байт
S>нужно как-то такое обойти, но не могу найти или придумать что-либо как усечь размер origBuf до нужно нам размера.
S>Вообще можно смухлевать в драйвере с размерами файлов?
FLT_CALLBACK_DATA::IoStatus::Information, не?
+ еще надо будет подмухлевывать результаты IRP_MJ_QUERY_INFORMATION дабы EndOfFile возвращать корректный в FILE_BASIC_INFORMATION. А еще — IRP_MJ_DIRECTORY_CONTROL, потому что в списке файлов в директории тоже размер возвращается.
Для затравки хватит, а потом придет x64 и все толком расскажет, если сами к тому времени не нагуглите примеры, которых, я уверен, в инете валом.
Re: Можно ли изменить размер файла в режиме ядра?
S>И того сейчас так
S>strlen(origBuf) = strlen(swappedBuffer) = 64 байт
S>в реале, для нашего примера, должно быть так
S>strlen(origBuf) = 55 байт, а strlen(swappedBuffer) = 64 байт
S>нужно как-то такое обойти, но не могу найти или придумать что-либо как усечь размер origBuf до нужно нам размера.
S>Вообще можно смухлевать в драйвере с размерами файлов?
FLT_CALLBACK_DATA::IoStatus::Information, не?
+ еще надо будет подмухлевывать результаты IRP_MJ_QUERY_INFORMATION дабы EndOfFile возвращать корректный в FILE_STANDARD_INFORMATION. А еще — IRP_MJ_DIRECTORY_CONTROL, потому что в списке файлов в директории тоже размер возвращается. Изменение размера файла делается при помощи IRP_MJ_SET_INFORMATION/FileEndOfFileInformation — уверен вы не хотите чтобы приложения падали, увидев в только что отращенном хвосте файла некий мусор вместо ожидаемых нуликов.
Для затравки хватит, а потом придет x64 и все толком расскажет, если сами к тому времени не нагуглите примеры, которых, я уверен, в инете валом.
S>strlen(origBuf) = strlen(swappedBuffer) = 64 байт
S>в реале, для нашего примера, должно быть так
S>strlen(origBuf) = 55 байт, а strlen(swappedBuffer) = 64 байт
S>нужно как-то такое обойти, но не могу найти или придумать что-либо как усечь размер origBuf до нужно нам размера.
S>Вообще можно смухлевать в драйвере с размерами файлов?
FLT_CALLBACK_DATA::IoStatus::Information, не?
+ еще надо будет подмухлевывать результаты IRP_MJ_QUERY_INFORMATION дабы EndOfFile возвращать корректный в FILE_STANDARD_INFORMATION. А еще — IRP_MJ_DIRECTORY_CONTROL, потому что в списке файлов в директории тоже размер возвращается. Изменение размера файла делается при помощи IRP_MJ_SET_INFORMATION/FileEndOfFileInformation — уверен вы не хотите чтобы приложения падали, увидев в только что отращенном хвосте файла некий мусор вместо ожидаемых нуликов.
Для затравки хватит, а потом придет x64 и все толком расскажет, если сами к тому времени не нагуглите примеры, которых, я уверен, в инете валом.