IPersistStorage::Save 메서드(objidl.h)
개체와 개체에 포함된 중첩된 개체를 지정된 스토리지 개체에 저장합니다. 개체가 NoScribble 모드로 전환됩니다.
구문
HRESULT Save(
[in] IStorage *pStgSave,
[in] BOOL fSameAsLoad
);
매개 변수
[in] pStgSave
개체를 저장할 스토리지에 대한 IStorage 포인터입니다.
[in] fSameAsLoad
IPersistStorage::InitNew, IPersistStorage::Load 또는 IPersistStorage::SaveCompleted 호출 중 하나로 개체에 전달된 현재 스토리지인지 여부를 나타냅니다.
이 매개 변수는 다른 이름으로 저장 또는 복사 저장 작업을 수행하거나 전체 저장을 수행할 때 FALSE로 설정됩니다. 후자의 경우 이 메서드는 임시 파일에 저장하고, 원래 파일을 삭제하고, 임시 파일의 이름을 바꿉니다.
이 매개 변수는 메모리 부족 상황에서 전체 저장을 수행하거나 더티 구성 요소만 저장되는 빠른 증분 저장을 수행하기 위해 TRUE로 설정됩니다.
반환 값
이 메서드는 다음 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
메서드가 완료되었습니다. |
|
디스크에 공간이 부족하여 개체가 저장되지 않았습니다. |
|
디스크 공간 부족 이외의 오류로 인해 개체를 저장할 수 없습니다. |
설명
이 메서드는 개체와 개체에 포함된 중첩된 개체를 지정된 스토리지에 저장합니다. 또한 개체를 NoScribble 모드로 배치합니다. 따라서 IPersistStorage::SaveCompleted 메서드에 대한 후속 호출이 개체를 표준 모드로 반환할 때까지 개체는 스토리지에 쓸 수 없습니다.
스토리지 개체가 로드되거나 생성된 개체와 같으면 저장 작업에서 스토리지 개체에 증분 변경 내용을 작성할 수 있습니다. 그렇지 않으면 전체 저장을 수행해야 합니다.
이 메서드는 IPersistStorage::Save 메서드, OleSave 함수 또는 IStorage::CopyTo 메서드를 재귀적으로 호출하여 중첩된 개체를 저장합니다.
이 메서드는 IStorage::Commit 메서드를 호출하지 않습니다. 또한 CLSID를 스토리지 개체에 쓰지 않습니다. 이러한 두 작업은 모두 호출자의 책임입니다.
발신자에 대한 참고 사항
IPersistStorage::Save를 직접 호출하는 대신 일반적으로 다음 단계를 수행하는 OleSave 도우미 함수를 호출합니다.- WriteClassStg 함수를 호출하여 개체의 클래스 식별자를 스토리지에 씁니다.
- IPersistStorage::Save 메서드를 호출합니다.
- 필요한 경우 스토리지 개체에서 IStorage::Commit 메서드를 호출합니다.
포함된 개체가 IPersistStorage::Save 메서드를 중첩된 개체에 전달하는 경우 중첩된 개체에 대해 이 메서드를 호출하기 전에 해당 IPersistStorage::SaveCompleted 메서드에 대한 호출을 받아야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | objidl.h |