Share via


IPersistStorage::Load 메서드(objidl.h)

기존 스토리지에서 개체를 로드합니다.

구문

HRESULT Load(
  [in] IStorage *pStg
);

매개 변수

[in] pStg

개체를 로드할 기존 스토리지에 대한 IStorage 포인터입니다.

반환 값

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

반환 코드 Description
S_OK
메서드가 완료되었습니다.
CO_E_ALREADYINITIALIZED
개체는 IPersistStorage::Load 메서드 또는 IPersistStorage::InitNew 메서드에 대한 이전 호출에 의해 이미 초기화되었습니다.
E_OUTOFMEMORY
메모리 부족으로 인해 개체가 로드되지 않았습니다.
E_FAIL
메모리 부족 이외의 이유로 인해 개체가 로드되지 않았습니다.

설명

이 메서드는 기존 스토리지에서 개체를 초기화합니다. 컨테이너 애플리케이션에서 이 메서드를 호출하면 개체가 로드된 상태에 배치됩니다. 기본 처리기에서 호출되는 경우 이 메서드는 개체를 실행 중 상태로 설정합니다.

개체가 로드되거나 실행되는 동안 기본 처리기 또는 개체 자체가 IStorage 포인터를 유지할 수 있습니다.

발신자에게 참고 사항

IPersistStorage::Load를 직접 호출하는 대신 일반적으로 다음을 수행하는 OleLoad 도우미 함수를 호출합니다.
  1. 개체 클래스의 초기화되지 않은 instance 만듭니다.
  2. IPersistStorage 인터페이스에 대한 새 instance 쿼리합니다.
  3. Load를 호출하여 기존 스토리지에서 개체를 초기화합니다.
또한 OleCreateFromData 함수 또는 OleCreateFromFile 함수를 호출하여 개체를 복합 파일에 삽입할 때(끌어서 놓기 또는 클립보드 붙여넣기 작업에서와 같이) 이 메서드를 간접적으로 호출합니다.

컨테이너는 개체에 대한 이후 작업에서 사용할 IPersistStorage 포인터를 캐시해야 합니다.

구현자에 대한 참고 사항

구현은 다음 단계를 수행하여 개체를 로드해야 합니다.
  1. 스토리지 개체에서 개체의 스트림을 열고 필요한 데이터를 개체의 내부 데이터 구조로 읽습니다.
  2. 개체의 더티 플래그를 지웁 수 있습니다.
  3. AddRef 메서드를 호출하고 전달된 스토리지 포인터를 캐시합니다.
  4. 개체가 이 스토리지에 자체 저장해야 하는 스트림 또는 스토리지에 대한 포인터를 열어 두고 캐시합니다.
  5. 개체에 필요한 다른 기본 초기화를 수행합니다.
3단계와 4단계는 개체가 메모리 부족 상황에서 자신을 저장할 수 있도록 하는 데 특히 중요합니다. 스토리지 및 스트림 인터페이스에 대한 포인터를 유지하면 메모리 부족으로 인해 이 스토리지에 대한 저장 작업이 실패하지 않습니다.

이 메서드의 구현은 IPersistStorage::InitNew 메서드 또는 IPersistStorage:: Load 메서드가 이미 초기화된 후 호출을 수신하는 경우 CO_E_ALREADYINITIALIZED 오류 코드를 반환해야 합니다.

요구 사항

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

추가 정보

IPersistStorage

OleLoad