다음을 통해 공유


IRootStorage::SwitchToFile 메서드(objidl.h)

SwitchToFile 메서드는 스토리지 개체와 연결된 현재 파일을 새 파일에 복사합니다. 그런 다음 새 파일이 스토리지 개체 및 커밋되지 않은 변경 내용에 사용됩니다.

구문

HRESULT SwitchToFile(
  LPOLESTR pszFile
);

매개 변수

pszFile

새 파일의 파일 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다. 기존 파일의 이름이 될 수 없습니다. NULL인 경우 이 메서드는 고유한 이름을 가진 임시 파일을 만들고 IStorage::Stat를 호출하여 임시 파일의 이름을 검색할 수 있습니다.

반환 값

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

반환 코드 설명
S_OK 파일이 성공적으로 복사되었습니다.
STG_E_MEDIUMFULL 스토리지 디바이스의 공간이 부족하여 파일이 복사되지 않았습니다.
STG_E_ACCESSDENIED 호출자에게 스토리지 디바이스에 액세스할 수 있는 권한이 없기 때문에 파일이 복사되지 않았습니다.
STG_E_INVALIDPOINTER pszFile 포인터가 잘못되어 파일이 복사되지 않았습니다.
STG_E_FILEALREADYEXISTS 새 파일 이름(pszFile)이 기존 파일을 가리키기 때문에 파일이 복사되지 않았습니다.

설명

IRootStorage::SwitchToFile 메서드는 스토리지 개체와 연결된 파일을 복사합니다. COM 컨테이너는 SwitchToFile 을 호출하여 메모리 부족 상황에서 파일에 대한 전체 저장을 수행합니다. 일반적으로 이 작업은 일반적인 전체 저장 작업(즉, 임시 파일에 저장, 원래 파일 삭제, 임시 파일 이름 바꾸기)이 실패하고 E_OUTOFMEMORY 오류가 발생한 후에만 수행됩니다.

스토리지 개체 또는 그 안에 포함된 모든 항목이 다른 프로세스로 마샬링된 경우 SwitchToFile 메서드를 호출하는 것은 잘못되었습니다. SwitchToFile을 호출하기 전에 컨테이너는 로드되거나 실행되는 스토리지 개체 내의 모든 요소에 대해 IPersistStorage::HandsOffStorage 메서드를 호출해야 합니다. HandsOffStorage 메서드는 요소가 스토리지 포인터를 해제하고 핸드오프 스토리지 모드로 전환하도록 강제합니다. 또한 컨테이너는 이 루트 스토리지에 포함된 스트림 또는 스토리지에 대한 모든 포인터를 해제해야 합니다. 전체 저장 작업이 완료되면 컨테이너는 포함된 요소를 일반 스토리지 모드로 반환합니다.

구현자에 대한 참고 사항

사용자 고유의 스토리지 개체를 구현하는 경우 IRootStorage 메서드( QueryInterface, AddRefRelease 포함)는 추가 메모리 또는 파일 핸들을 사용하지 않아야 합니다.

요구 사항

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

추가 정보

IPersistStorage::HandsOffStorage

IPersistStorage::SaveCompleted

IStorage::Commit

IStorage::Stat