다음을 통해 공유


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

파일 관리 함수