다음을 통해 공유


IPersistStream::Save 메서드(objidl.h)

개체를 지정된 스트림에 저장합니다.

구문

HRESULT Save(
  [in] IStream *pStm,
  [in] BOOL    fClearDirty
);

매개 변수

[in] pStm

개체를 저장해야 하는 스트림에 대한 IStream 포인터입니다.

[in] fClearDirty

저장이 완료되면 변경 플래그를 지울지 여부를 나타냅니다. TRUE이면 플래그를 지워야 합니다. FALSE이면 플래그가 변경되지 않은 상태로 유지되어야 합니다.

반환 값

이 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 설명
S_OK
메서드가 완료되었습니다.
STG_E_CANTSAVE
개체가 스트림에 자신을 저장할 수 없습니다. 예를 들어 이 오류는 개체에 스트림으로 직렬화할 수 없거나 ISequentialStream::Write 호출이 STG_E_CANTSAVE 반환된 다른 개체를 포함하고 있음을 나타낼 수 있습니다.
STG_E_MEDIUMFULL
스토리지 디바이스에 남은 공간이 없으므로 개체를 저장할 수 없습니다.

설명

IPersistStream::Save는 개체를 지정된 스트림에 저장하고 개체가 더티 플래그를 다시 설정해야 하는지 여부를 나타냅니다.

검색 포인터는 개체가 데이터 쓰기를 시작해야 하는 스트림의 위치에 배치됩니다. 개체는 ISequentialStream::Write 메서드를 호출하여 데이터를 작성합니다.

종료 시 개체 데이터를 바로 지나서 검색 포인터를 배치해야 합니다. 오류가 반환되면 검색 포인터의 위치가 정의되지 않습니다.

발신자에게 참고 사항

IPersistStream::Save를 직접 호출하는 대신 일반적으로 다음을 수행하는 OleSaveToStream 도우미 함수를 호출합니다.
  1. GetClassID를 호출하여 개체의 CLSID를 가져옵니다.
  2. WriteClassStm 함수를 호출하여 개체의 CLSID를 스트림에 씁니다.
  3. IPersistStream::Save를 호출합니다.
이러한 메서드를 직접 호출하는 경우 IPersistStream::Save를 호출하기 전에 CLSID 다음에 다른 데이터를 스트림에 쓸 수 있습니다.

IPersistStream의 OLE 제공 구현은 동일한 패턴을 따릅니다.

구현자에 대한 참고 사항

IPersistStream::Save 메서드는 CLSID를 스트림에 쓰지 않습니다. 호출자는 CLSID를 작성합니다.

IPersistStream::Save 메서드는 스트림에서 읽고, 쓰고, 검색할 수 있습니다. 그러나 항목에 대한 검색 포인터 앞에 있는 스트림의 위치를 검색해서는 안됩니다.

URL 모니커 노트

URL 모니커를 스트림에 저장합니다. URL 모니커의 이진 형식은 유니코드의 URL 문자열입니다(전체 또는 부분 URL 문자열일 수 있습니다. 자세한 내용은 CreateURLMonikerEx 참조). 이는 ULONG 문자 수와 그 뒤에 많은 유니코드 문자로 표시됩니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

IPersistStream