|
2 / 2 / 0
Регистрация: 19.03.2020
Сообщений: 30
|
|||||||||||
Как через WriteFileEx записать файл асинхронно?19.03.2020, 10:15. Показов 6069. Ответов 29
Метки нет (Все метки)
Пробуем такой пример, для асинхронной записи файла, но работает синхронно.
Замеряем время исполнения WriteFileEx, первый раз отрабатывает меньше миллисекунды, в последующие разы она работает порядка 100-200 мс. Приведенный код запускаем в цикле по нажатию на кнопку. Подскажите как исправить код, чтобы он работал асинхронно. Делаем в конструкторе, файл открывается один раз.
0
|
|||||||||||
| 19.03.2020, 10:15 | |
|
Ответы с готовыми решениями:
29
WriteFileEx - не пишет в файл.
Как записать данные в файл через пробел |
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,136
|
|||
| 24.03.2020, 08:55 | |||
0
|
|||
|
2 / 2 / 0
Регистрация: 19.03.2020
Сообщений: 30
|
|
| 14.05.2020, 02:08 [ТС] | |
|
Ygg, а вы можете подсказать по такому вопросу. При активном тестировании программы выявилось странное поведение функции SetFileValidData. У меня программа в цикле создает сразу большой файл 8 гиг логически, потом заполняет, к примеру 100 мб( размер настраивается пользователем), потом делаем SetFileValidData и файл на диске сокращается до заданного размера. На диске свободно 80 гб и примерно после 8-9 итераций функция SetFileValidData начинает выдавать ошибку 112, которая говорит, что место кончилось на диске. Однако, наблюдая за работой программы, в папке вижу, что файлы сокращаются и сам комп показывает, что свободно достаточно места.
Можете подсказать какая тут может быть ошибка, почему виндовс считает, что место кончилось.
0
|
|
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,136
|
||
| 14.05.2020, 10:48 | ||
|
Добавлено через 20 минут Попробуйте в программе отключить запись и потестировать именно SetFileValidData. Или отдельным приложением. Определите максимальный размер одного файла создаваемого при помощи SetFileValidData (80ГБ, 70ГБ ?). Потом попробуйте создать несколько более мелких файлов и убедитесь, что доступен тот же объём. Потом попробуйте SetFileValidData для усечения файлов. Создать большой, уменьшить, создать ещё один большой, уменьшить и так далее.
0
|
||
|
2 / 2 / 0
Регистрация: 19.03.2020
Сообщений: 30
|
|
| 14.05.2020, 17:40 [ТС] | |
|
Ygg, бага была в том, что я создавал локально переменную на структуру OVERLAPPED Overlap, и после выполнения writefileex выход был из функции, она по идее разрушалась.
1
|
|
|
2 / 2 / 0
Регистрация: 19.03.2020
Сообщений: 30
|
||||||
| 04.06.2020, 09:33 [ТС] | ||||||
Подскажите где тут ошибка в этом тестовом примере.
1
|
||||||
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,136
|
|||||||||||
| 04.06.2020, 14:43 | |||||||||||
|
sd3fdd454, у меня в тесте работает, вроде бы даже как положено.
Да, для WriteFileEx возвращается TRUE, для WriteFile возвращается FALSE и пендинг. Время записи в начале меньше, потом растёт, но устаканивается на 200 мс. Скорее всего это дисковый кэш. Установка привелегий работает только при запуске от имени администратора. код
результат
0
|
|||||||||||
|
2 / 2 / 0
Регистрация: 19.03.2020
Сообщений: 30
|
||||
| 05.06.2020, 08:42 [ТС] | ||||
|
Добавлено через 49 секунд
0
|
||||
|
2737 / 894 / 331
Регистрация: 10.02.2018
Сообщений: 2,136
|
||
| 05.06.2020, 09:54 | ||
|
0
|
||
|
2 / 2 / 0
Регистрация: 19.03.2020
Сообщений: 30
|
|
| 16.01.2021, 14:03 [ТС] | |
|
Тут попробовал запись через WriteFileEx, указывая размер буфера не кратный 512. Завершается ошибкой, getlasterror выдает параметр задан неверно. Подскажите почему так или эта функция не будет так работать ?
0
|
|
|
844 / 353 / 68
Регистрация: 20.11.2012
Сообщений: 852
|
|
| 16.01.2021, 15:04 | |
Сообщение было отмечено sd3fdd454 как решение
Решение
Если файл открыт с "FILE_FLAG_NO_BUFFERING", то размер буфера должен быть кратен размеру сектора.
MSDN
0
|
|
| 16.01.2021, 15:04 | |
|
Как записать числа в файл через пробел? Как записать файл в BLOB-поле через TpFIBDataset?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|