У функции CopyFile нет параметра для запроса небуферизованного копирования. В Win32 есть более гибкие варианты API, позволяющие задать соответствующее поведение при запуске операции.
Где передать флаг
В CopyFileEx для этого предусмотрен флаг COPY_FILE_NO_BUFFERING, который передаётся в параметре флагов функции. В CopyFile2 тот же запрос задаётся через поле dwCopyFlags структуры COPYFILE2_EXTENDED_PARAMETERS.
Пытаться включить FILE_FLAG_NO_BUFFERING в обработчике прогресса бесполезно: callback получает дескрипторы уже после их открытия. Сброс системного файлового кеша и выбор режима открытия — разные действия, поэтому флаг нужно указывать при инициации копирования.
Что означает режим без буферизации
Обход системного кэширования файлов не означает отключение всех уровней кеширования устройства и не гарантирует ускорение операции. Эффект зависит от задачи, размера и типа файлов, а также от носителя и его драйверов. Выбирайте подходящий API, проверяйте возвращаемые коды ошибок и измеряйте поведение на реальной конфигурации, чтобы убедиться, что режим соответствует требованиям.