CopyFile2 함수(winbase.h)

기존 파일을 새 파일에 복사하고, 콜백 함수를 통해 애플리케이션에 진행 상황을 알립니다.

구문

HRESULT CopyFile2(
  [in]           PCWSTR                        pwszExistingFileName,
  [in]           PCWSTR                        pwszNewFileName,
  [in, optional] COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters
);

매개 변수

[in] pwszExistingFileName

기존 파일의 이름입니다.

이 제한을 32,767자로 확장하려면 경로 앞에 "\?"를 추가합니다. 자세한 내용은 파일 이름 지정, 경로 및 네임스페이스를 참조하세요.

팁 Windows 10 버전 1607부터 "\\?\" 앞에 추가하지 않고 MAX_PATH 문자 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 파일, 경로 및 네임스페이스의 "최대 경로 제한" 섹션을 참조하세요.
 
lpExistingFileName이 없으면 CopyFile2 함수가 실패하면 가 반환됩니다HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND).

[in] pwszNewFileName

새 파일의 이름입니다.

이 제한을 32,767자로 확장하려면 경로 앞에 "\?"를 추가합니다. 자세한 내용은 파일 이름 지정, 경로 및 네임스페이스를 참조하세요.

팁 Windows 10 버전 1607부터 "\\?\" 앞에 추가하지 않고 MAX_PATH 문자 제한을 제거하도록 옵트인할 수 있습니다. 자세한 내용은 파일, 경로 및 네임스페이스의 "최대 경로 제한" 섹션을 참조하세요.
 

[in, optional] pExtendedParameters

COPYFILE2_EXTENDED_PARAMETERS 구조체의 선택적 주소입니다.

반환 값

함수가 성공하면 SUCCEEDED 매크로에 전달되면 반환 값이 TRUE를 반환합니다.

반환 코드 Description
S_OK
복사 작업이 성공적으로 완료되었습니다.
HRESULT_FROM_WIN32(ERROR_REQUEST_PAUSED)
CopyFile2ProgressRoutine 콜백 함수의 COPYFILE2_PROGRESS_PAUSE 반환에 의해 복사 작업이 일시 중지되었습니다.
HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)
CopyFile2ProgressRoutine 콜백 함수에서 COPYFILE2_PROGRESS_CANCEL 또는 COPYFILE2_PROGRESS_STOP 반환에 의해 복사 작업이 일시 중지되었습니다.
HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)
pExtendedParameters 매개 변수를 통해 전달된 COPYFILE2_EXTENDED_PARAMETERS 구조체의 dwCopyFlags 멤버는 COPY_FILE_FAIL_IF_EXISTS 플래그를 포함하고 충돌하는 이름이 존재합니다.
HRESULT_FROM_WIN32(ERROR_FILE_EXISTS)
pExtendedParameters 매개 변수를 통해 전달된 COPYFILE2_EXTENDED_PARAMETERS 구조체의 dwCopyFlags 멤버는 COPY_FILE_FAIL_IF_EXISTS 플래그를 포함하고 충돌하는 이름이 존재합니다.

설명

이 함수는 확장 특성, OLE 구조적 스토리지, NTFS 파일 시스템 대체 데이터 스트림 및 파일 특성을 유지합니다. 기존 파일에 대한 보안 특성은 새 파일에 복사되지 않습니다. 보안 특성을 복사하려면 SHFileOperation 함수를 사용합니다.

대상 파일이 이미 있고 FILE_ATTRIBUTE_HIDDEN 또는 FILE_ATTRIBUTE_READONLY 특성 집합이 있는 경우 이 함수는 와 함께 HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) 실패합니다.

이 함수를 사용하는 애플리케이션을 컴파일하려면 _WIN32_WINNT 매크로를 _WIN32_WINNT_WIN8 이상으로 정의합니다. 자세한 내용은 Windows 헤더 사용을 참조하세요.

Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술을 통해 지원됩니다.

기술 지원됨
SMB(서버 메시지 블록) 3.0 프로토콜 예
SMB 3.0 TFO(투명 장애 조치(failover)) 예
SO(스케일 아웃 파일 공유)를 사용하는 SMB 3.0 예
CsvFS(클러스터 공유 볼륨 파일 시스템) 예
ReFS(Resilient File System) 예

Windows 10 버전 1903 및 Windows Server 2022부터 pExtendedParameters 인수에서 이 함수에 전달된 COPYFILE2_EXTENDED_PARAMETERS 구조체의 dwCopyFlags 필드에 COPY_FILE_REQUEST_COMPRESSED_TRAFFIC 새 값이 지원됩니다. 이 새 값은 복사 작업 중에 기본 전송 채널이 데이터를 압축할 것을 요청합니다. 요청은 모든 매체에 대해 지원되지 않을 수 있으며, 이 경우 무시됩니다. 압축 특성 및 매개 변수(계산 복잡성, 메모리 사용량)는 이 API를 통해 구성할 수 없으며 다른 OS 릴리스 간에 변경될 수 있습니다. Windows 10 협상된 SMB 프로토콜 버전이 SMB v3.1.1 이상인 SMB 공유에 있는 파일에 대해 플래그가 지원됩니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

COPYFILE2_EXTENDED_PARAMETERS

파일 관리 함수