IPropertyStorage::Commit 메서드(propidlbase.h)
IPropertyStorage::Commit 메서드는 속성 스토리지 개체의 변경 내용을 부모 스토리지 개체에 저장합니다.
구문
HRESULT Commit(
[in] DWORD grfCommitFlags
);
매개 변수
[in] grfCommitFlags
커밋을 수행할 조건을 지정하는 플래그입니다. 특정 플래그 및 해당 의미에 대한 자세한 내용은 설명 섹션을 참조하세요.
반환 값
이 메서드는 E_UNEXPECTED 표준 반환 값과 다음을 지원합니다.
설명
IStorage::Commit과 마찬가지로 IPropertyStorage::Commit 메서드는 속성 스토리지 개체에 대한 변경 내용이 부모 스토리지에 반영되도록 합니다.
복합 파일 구현의 직접 모드에서 이 메서드를 호출하면 현재 메모리 버퍼의 변경 내용이 기본 속성 스트림으로 플러시됩니다. 비심플 속성 집합에 대한 복합 파일 구현에서 IStorage::Commit 은 전달된 grfCommitFlags 매개 변수를 사용하여 기본 하위 저장소 개체에서도 호출됩니다.
트랜잭션 모드에서 이 메서드를 사용하면 변경 내용이 스토리지 개체의 영구 이미지에 영구적으로 반영됩니다. 커밋된 변경 내용은 이 속성 집합이 열린 이후 또는 속성 집합의 이 열기에 대한 마지막 커밋 이후 이 속성 집합에 적용되어야 합니다. commit 메서드는 한 개체 수준에서 변경한 내용을 다음 수준에 게시합니다. 물론 이 속성 집합이 포함된 개체에 있을 수 있는 모든 외부 수준 트랜잭션의 적용을 받습니다. 커밋 작업이 성공하려면 속성 집합 열기에서 속성 집합을 열 때( IPropertySetStorage를 통해) 쓰기 권한을 지정해야 합니다.
어떤 이유로든 커밋 작업이 실패하면 속성 스토리지 개체의 상태는 커밋 이전의 상태로 유지됩니다.
이 호출은 이 속성 스토리지에서 열린 기존 스토리지 또는 스트림 반환 속성에 영향을 주지 않지만 커밋합니다.
grfCommitFlags 매개 변수에 대한 유효한 값은 다음 표에 나와 있습니다.
값 | 의미 |
---|---|
STGC_DEFAULT | 일반적인 트랜잭션 의미 체계에 따라 커밋합니다. 마지막 작가가 승리합니다. 이 플래그는 다른 플래그 값으로 지정할 수 없습니다. |
STGC_ONLYIFCURRENT | 속성 집합의 현재 영구 콘텐츠가 커밋할 변경 내용의 기반이 되는 경우에만 변경 내용을 커밋합니다. 즉, 속성 집합의 내용이 속성 집합의 다른 열기에서 커밋에 의해 변경된 경우 변경 내용을 커밋하지 않습니다. 이러한 이유로 커밋이 성공하지 못하면 오류 STG_E_NOTCURRENT 반환됩니다. |
STGC_OVERWRITE | 트랜잭션의 외부 중첩 수준이 더 이상 없는 트랜잭션을 커밋할 때만 유용하지만 모든 경우에 허용됩니다.
참고 호출자가 대상 볼륨의 디스크 사용량을 줄이면 일부 데이터 손상을 감수할 의향이 있음을 나타냅니다. 이 플래그는 디스크 공간 부족 시나리오에서 유용할 수 있지만 주의해서 사용해야 합니다.
|
- .bmp
- .dib
- .emf
- .gif
- .ico
- .jfif
- .jpe
- .jpeg
- .jpg
- .png
- .Rle
- .tiff
- .wmf
해결 방법은 다음과 입니다.
IPropertyStorage::Commit에 대한 호출을 생략합니다. IPropertyStorage::Commit을 호출하지 않고 XP 이미지 파일 속성 처리기에서 IUnknown::Release를 호출하면 먼저 변경 내용이 파일에 암시적으로 커밋됩니다. 일반적으로 IPropertyStorage ::Commit을 먼저 호출하지 않고 IUnknown::Release를 호출하면 변경된 내용이 삭제됩니다. 이 해결 방법은 Windows XP의 이미지 파일 속성 처리기에만 적용됩니다. 또한 이후 버전의 Windows에서는 이 구성 요소가 제대로 작동합니다(즉, IPropertyStorage::Commit 을 호출하면 변경 내용이 유지되고 IPropertyStorage ::Commit을 호출하지 않고 IUnknown::Release를 호출하면 삭제됩니다).
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | propidlbase.h(Objbase.h, Propidlbase.h 포함) |
라이브러리 | Uuid.lib |
DLL | Ole32.dll |