IStorage::CopyTo 메서드(objidl.h)

CopyTo 메서드는 열려 있는 스토리지 개체의 전체 내용을 다른 스토리지 개체에 복사합니다.

구문

HRESULT CopyTo(
  [in] DWORD     ciidExclude,
  [in] const IID *rgiidExclude,
  [in] SNB       snbExclude,
  [in] IStorage  *pstgDest
);

매개 변수

[in] ciidExclude

rgiidExclude가 가리키는 배열의 요소 수입니다. rgiidExcludeNULL이면 ciidExclude가 무시됩니다.

[in] rgiidExclude

호출자가 알고 있고 복사하지 않거나 스토리지 개체가 지원하지 않지만 호출자가 나중에 명시적으로 복사할 상태인 IID(인터페이스 식별자) 배열입니다. 배열에는 스트림 개체만 복사해야 함을 나타내는 IStorage와 스토리지 개체만 복사해야 함을 나타내는 IStream이 포함될 수 있습니다. 배열 길이가 0이면 IStorage 개체에 의해 노출되는 상태만 복사됨을 나타냅니다. 개체의 다른 모든 인터페이스는 무시됩니다. NULL을 전달하면 개체의 모든 인터페이스가 복사됩니다.

[in] snbExclude

대상에 복사하지 않을 스토리지 또는 스트림 개체의 블록을 지정하는 문자열 이름 블록( SNB 참조)입니다. 이러한 요소는 대상에서 만들어지지 않습니다. IID_IStoragergiidExclude 배열에 있는 경우 이 매개 변수는 무시됩니다. 이 매개 변수는 NULL일 수 있습니다.

[in] pstgDest

이 스토리지 개체를 복사할 열린 스토리지 개체에 대한 포인터입니다. 대상 스토리지 개체는 원본 스토리지 개체와 IStorage 인터페이스의 다른 구현일 수 있습니다. 따라서 IStorage::CopyTo 는 대상 스토리지 개체의 공개적으로 사용 가능한 메서드만 사용할 수 있습니다. pstgDest가 거래 모드에서 열려 있는 경우 IStorage::Revert 메서드를 호출하여 되돌릴 수 있습니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
S_OK 스토리지 개체가 성공적으로 복사되었습니다.
E_PENDING 비동기 스토리지만 해당: 복사할 데이터의 일부 또는 전체를 현재 사용할 수 없습니다.
STG_E_ACCESSDENIED 대상 스토리지 개체는 원본 스토리지 개체의 자식입니다.
STG_E_INSUFFICIENTMEMORY 메모리 부족으로 인해 복사본이 완료되지 않았습니다.
STG_E_INVALIDPOINTER 스토리지 개체에 대해 지정된 포인터가 잘못되었습니다.
STG_E_INVALIDPARAMETER 매개 변수 중 하나가 잘못되었습니다.
STG_E_TOOMANYOPENFILES 열려 있는 파일이 너무 많기 때문에 복사본이 완료되지 않았습니다.
STG_E_REVERTED 스토리지 개체는 트랜잭션 트리에서 위의 되돌리기 작업에 의해 무효화되었습니다.
STG_E_MEDIUMFULL 스토리지 미디어가 가득 찼기 때문에 복사본이 완료되지 않았습니다.

설명

이 메서드는 원본 스토리지 개체에 포함된 요소를 대상에 이미 있는 요소와 병합합니다. 대상 스토리지 개체의 레이아웃은 원본 스토리지 개체와 다를 수 있습니다.

복사 프로세스는 재귀적이며 원본 내에 중첩된 요소에서 IStorage::CopyToIStream::CopyTo 를 호출합니다.

동일한 이름의 기존 스트림 위에 있는 스트림을 복사할 때 기존 스트림이 먼저 제거된 다음 원본 스트림으로 바뀝 있습니다. 동일한 이름의 기존 스토리지 위에 있는 스토리지를 복사할 때 기존 스토리지는 제거되지 않습니다. 따라서 복사 작업 후 대상 IStorage 에는 이름이 같은 최신 요소로 대체되지 않는 한 이전 요소가 포함됩니다.

스토리지 개체는 IRootStorage, IPropertyStorage 또는 IPropertySetStorage를 비롯한 IStorage 이외의 인터페이스를 노출할 수 있습니다. rgiidExclude 매개 변수를 사용하면 복사 작업에서 이러한 추가 인터페이스를 모두 제외할 수 있습니다.

기존 하위 저장소 또는 스트림 개체의 최신 또는 보다 효율적인 복사본을 사용하는 호출자는 복사 작업에서 이러한 개체의 현재 버전을 제외할 수 있습니다. snbExcludergiidExclude 매개 변수는 기존 스토리지 또는 스트림 스토리지 개체를 제외하는 두 가지 방법을 제공합니다.

발신자에 대한 참고 사항

IStorage::CopyTo 메서드를 사용하는 가장 일반적인 방법은 대부분의 전체 저장 및 다른 이름으로 저장 작업과 마찬가지로 원본에서 대상으로 모든 항목을 복사하는 것입니다.

다음 예제 코드에서는 원본 스토리지 개체에서 대상 스토리지 개체로 모든 항목을 복사하는 방법을 보여 줍니다.

pstg->CopyTo(0, Null, Null, pstgDest)
참고 문서 파일을 압축하려면 루트 스토리지 개체에서 CopyTo 를 호출하고 새 스토리지 개체에 복사합니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 objidl.h
라이브러리 Uuid.lib
DLL Ole32.dll

추가 정보

IStorage - 복합 파일 구현

IStorage::MoveElementTo

IStorage::Revert