다음을 통해 공유


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

CopyTo 메서드는 스트림의 현재 검색 포인터에서 다른 스트림의 현재 검색 포인터로 지정된 바이트 수를 복사합니다.

구문

HRESULT CopyTo(
  [in]  IStream        *pstm,
  [in]  ULARGE_INTEGER cb,
  [out] ULARGE_INTEGER *pcbRead,
  [out] ULARGE_INTEGER *pcbWritten
);

매개 변수

[in] pstm

대상 스트림에 대한 포인터입니다. pstm이 가리키는 스트림은 새 스트림 또는 원본 스트림의 클론일 수 있습니다.

[in] cb

원본 스트림에서 복사할 바이트 수입니다.

[out] pcbRead

이 메서드가 원본에서 읽은 실제 바이트 수를 기록하는 위치에 대한 포인터입니다. 이 포인터를 NULL로 설정할 수 있습니다. 이 경우 이 메서드는 읽은 실제 바이트 수를 제공하지 않습니다.

[out] pcbWritten

이 메서드가 대상에 쓴 실제 바이트 수를 기록하는 위치에 대한 포인터입니다. 이 포인터를 NULL로 설정할 수 있습니다. 이 경우 이 메서드는 작성된 실제 바이트 수를 제공하지 않습니다.

반환 값

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

반환 코드 설명
S_OK 스트림 개체가 성공적으로 복사되었습니다.
E_PENDING 비동기 스토리지만 해당: 복사할 데이터의 일부 또는 전체를 현재 사용할 수 없습니다.
STG_E_INVALIDPOINTER 포인터 매개 변수 중 하나의 값이 잘못되었습니다.
STG_E_MEDIUMFULL 스토리지 디바이스에 남은 공간이 없으므로 스트림이 복사되지 않습니다.
STG_E_REVERTED 개체가 트랜잭션 트리에서 위의 되돌리기 작업에 의해 무효화되었습니다.

설명

CopyTo 메서드는 지정된 바이트를 한 스트림에서 다른 스트림으로 복사합니다. 스트림을 자체에 복사하는 데 사용할 수도 있습니다. 각 스트림 instance 검색 포인터는 읽거나 쓴 바이트 수에 맞게 조정됩니다. 이 메서드는 ISequentialStream::Read를 사용하여 cb 바이트를 메모리로 읽은 다음 ISequentialStream::Write를 사용하여 대상 스트림에 즉시 쓰는 것과 같습니다. 하지만 IStream::CopyTo가 더 효율적입니다.

대상 스트림은 IStream::Clone 메서드를 호출하여 만든 원본 스트림의 복제본일 수 있습니다.

IStream::CopyTo에서 오류를 반환하는 경우 검색 포인터가 원본 또는 대상에 대해 유효하다고 가정할 수 없습니다. 또한 pcbReadpcbWritten 값은 반환되더라도 의미가 없습니다.

IStream::CopyTo가 성공적으로 반환되면 읽고 쓴 실제 바이트 수가 동일합니다.

현재 검색 포인터에서 원본의 나머지 부분을 복사하려면 cb 매개 변수의 최대 큰 정수 값을 지정합니다. 검색 포인터가 스트림의 시작인 경우 이 작업은 전체 스트림을 복사합니다.

요구 사항

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

추가 정보

ISequentialStream::Read

ISequentialStream::Write

IStream - 복합 파일 구현

IStream::Clone