Поделиться через


структура COPYFILE2_EXTENDED_PARAMETERS_V2 (winbase.h)

Содержит обновленные, дополнительные функциональные возможности за пределами структуры COPYFILE2_EXTENDED_PARAMETERS для функции CopyFile2.

Синтаксис

typedef struct COPYFILE2_EXTENDED_PARAMETERS_V2 {
  DWORD                         dwSize;
  DWORD                         dwCopyFlags;
  BOOL                          *pfCancel;
  PCOPYFILE2_PROGRESS_ROUTINE   pProgressRoutine;
  PVOID                         pvCallbackContext;
  DWORD                         dwCopyFlagsV2;
  ULONG                         ioDesiredSize;
  ULONG                         ioDesiredRate;
  LPPROGRESS_ROUTINE            pProgressRoutineOld;
  PCOPYFILE2_CREATE_OPLOCK_KEYS SourceOplockKeys;
#if ...
  PVOID                         reserved[6];
#elif
  PVOID                         reserved[7];
#else
  PVOID                         reserved[8];
#endif
} COPYFILE2_EXTENDED_PARAMETERS_V2;

Члены

dwSize

Содержит размер этой структуры, sizeof(COPYFILE2_EXTENDED_PARAMETERS_V2).

dwCopyFlags

Содержит сочетание нулевых или более этих значений флага.

Ценность Значение
COPY_FILE_FAIL_IF_EXISTS
0x00000001
Если целевой файл существует, операция копирования завершается сбоем немедленно. Если файл или каталог существует с именем назначения, вызов функции copyFile2 CopyFile 2 завершится ошибкой HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS) или HRESULT_FROM_WIN32(ERROR_FILE_EXISTS). Если COPY_FILE_RESUME_FROM_PAUSE также указан, то сбой активируется только в том случае, если целевой файл не имеет допустимого заголовка перезапуска.
COPY_FILE_RESTARTABLE
0x00000002
Файл копируется таким образом, что его можно перезапустить, если используются те же исходные и целевые имена файлов. Это медленнее.
COPY_FILE_OPEN_SOURCE_FOR_WRITE
0x00000004
Файл копируется и исходный файл открывается для доступа на запись.
COPY_FILE_ALLOW_DECRYPTED_DESTINATION
0x00000008
Копия будет предпринята, даже если целевой файл не может быть зашифрован.
COPY_FILE_COPY_SYMLINK
0x00000800
Если исходный файл является символьной ссылкой, то целевой файл также является символьной ссылкой, указывающей на тот же файл, что и исходная символьная ссылка.
COPY_FILE_NO_BUFFERING
0x00001000
Копирование выполняется с помощью небуферированных операций ввода-вывода, обходя ресурсы системного кэша. Этот флаг рекомендуется использовать для очень больших копий файлов. Не рекомендуется приостановить копии, использующие этот флаг.
COPY_FILE_REQUEST_SECURITY_PRIVILEGES
0x00002000
Выполняется попытка копирования, указывая ACCESS_SYSTEM_SECURITY исходного файла и ACCESS_SYSTEM_SECURITY \| WRITE_DAC \| WRITE_OWNER для целевого файла. Если эти запросы запрещены, запрос на доступ будет сокращен до самого высокого уровня привилегий, для которого предоставляется доступ. Дополнительные сведения см. в доступа SACL. Это можно использовать для разрешения обратного вызова CopyFile2ProgressRoutine для выполнения операций, требующих более высоких привилегий, таких как копирование атрибутов безопасности для файла.
COPY_FILE_RESUME_FROM_PAUSE
0x00004000
Целевой файл проверяется, был ли он скопирован с помощью COPY_FILE_RESTARTABLE. Если это так, копия возобновляется. Если файл не будет полностью скопирован.
COPY_FILE_NO_OFFLOAD
0x00040000
Не пытайтесь использовать механизм разгрузки копирования Windows. Обычно это не рекомендуется.
COPY_FILE_IGNORE_EDP_BLOCK
0x00400000
Вместо блокировки файл следует скопировать и зашифровать в месте назначения, если он поддерживается целевой файловой системой. поддерживается в Windows 10 и более поздних версиях.
COPY_FILE_IGNORE_SOURCE_ENCRYPTION
0x00800000
Игнорировать зашифрованное состояние исходного файла. поддерживается в Windows 10 и более поздних версиях.
COPY_FILE_DONT_REQUEST_DEST_WRITE_DAC
0x02000000
Не запрашивайте WRITE_DAC для доступа к целевому файлу. поддерживается в Windows 10 и более поздних версиях.
COPY_FILE_OPEN_AND_COPY_REPARSE_POINT
0x00200000
Всегда копируйте точку повторного определения независимо от типа. Это ответственность вызывающего, чтобы понять смысл точки повторного анализа. поддерживаемые в Windows 10 сборки 19041 и более поздних версий.
COPY_FILE_DIRECTORY
0x00000080
Указывает, что исходный файл является файлом каталога. При условии исходный файл открывается с FILE_OPEN_FOR_BACKUP_INTENT. Файл каталога будет иметь свои альтернативные потоки данных, сведения о точке повторного анализа и EAs, скопированные как обычный файл. Поддерживаемые в Windows 10 сборки 19041 и более поздних версий.
COPY_FILE_SKIP_ALTERNATE_STREAMS
0x00008000
Не копируйте альтернативные потоки данных. Поддерживаемые в Windows 10 сборки 19041 и более поздних версий.
COPY_FILE_DISABLE_PRE_ALLOCATION
0x04000000
Перед выполнением копирования не следует предварительно выделить размер целевого файла. Поддерживаемые в Windows 10 сборки 19041 и более поздних версий.
COPY_FILE_ENABLE_LOW_FREE_SPACE_MODE
0x08000000
Включите режим LowFreeSpace. Не используются перекрывающиеся устройства ввода-вывода. Не выполняется попытка разгрузки ODX и SMB. Поддерживаемые в Windows 10 сборки 19041 и более поздних версий.
COPY_FILE_REQUEST_COMPRESSED_TRAFFIC
0x10000000
Запрос базового канала передачи сжимает данные во время операции копирования. Запрос может не поддерживаться для всех носителей, в этом случае он игнорируется. Атрибуты сжатия и параметры (вычислительные сложности, использование памяти) не настраиваются с помощью этого API и могут изменяться между различными выпусками ОС.

Этот флаг появился в Windows 10 версии 1903 и Windows Server 2022. В Windows 10 флаг поддерживается для файлов, размещенных в общих папках SMB, где согласованная версия протокола SMB — SMB версии 3.1.1 или более поздней.
COPY_FILE_ENABLE_SPARSE_COPY
0x20000000
Включите сохранение разреженного состояния файла во время копирования. поддерживается в Windows 11, сборка 22H2 и более поздние версии.

pfCancel

Если для этого флага задано значение TRUE во время операции копирования, операция копирования отменяется.

pProgressRoutine

Необязательный адрес функции обратного вызова типа PCOPYFILE2_PROGRESS_ROUTINE, вызываемой при каждом копировании другой части файла. Этот параметр может быть NULL. Дополнительные сведения о функции обратного вызова хода выполнения см. в функции обратного вызова CopyFile2ProgresSRoutine. Если предоставляются оба pProgressRoutineOld и pProgressRoutine, pProgressRoutineOld имеет приоритет.

pvCallbackContext

Указатель на сведения о контексте для конкретного приложения, передаваемые в CopyFile2ProgressRoutine.

dwCopyFlagsV2

Содержит сочетание нулевых или более этих значений флага.

Ценность Значение
COPY_FILE2_V2_DONT_COPY_JUNCTIONS
0x00000001
Отключение соединений копирования.

ioDesiredSize

Необязательный. Запрошенный размер (в байтах) для каждой операции ввода-вывода (т. е. один цикл чтения и записи при копировании файла). Это может быть сокращено, если недостаточно памяти доступно. Если ноль, используется размер по умолчанию. Это может быть проигнорировано, если ioDesiredRate также предоставляется

ioDesiredRate

Необязательный. Запрошенная средняя скорость ввода-вывода в килобайтах в секунду. Если ноль, копии выполняются как можно быстрее.

pProgressRoutineOld

SourceOplockKeys

reserved[6]

reserved[7]

reserved[8]

pProgressRoutineOld. Необязательный. Адрес старой функции обратного вызова типа LPPROGRESS_ROUTINE, вызываемой при каждом копировании другой части файла. Этот параметр может быть NULL. Дополнительные сведения о функции обратного вызова хода выполнения см. в LPPROGRESS_ROUTINE обратном вызове. Если предоставляются оба pProgressRoutineOld и pProgressRoutine, pProgressRoutineOld имеет приоритет.

Замечания

Чтобы скомпилировать приложение, использующее эту структуру, определите макрос _WIN32_WINNT как _WIN32_WINNT_WIN8 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2012 [классические приложения | Приложения UWP]
заголовка winbase.h (включая Windows.h)

См. также

CopyFile2

COPYFILE2_EXTENDED_PARAMETERS

CopyFile2ProgressRoutine

структуры управления файлами

LPPROGRESS_ROUTINE

Использование заголовков Windows