다음을 통해 공유


StgCreateDocfileOnILockBytes 함수(coml2api.h)

StgCreateDocfileOnILockBytes 함수는 호출자가 제공하는 바이트 배열 개체 위에 새 복합 파일 스토리지 개체를 만들고 엽니다. 스토리지 개체는 IStorage 인터페이스에 대한 COM 제공 복합 파일 구현을 지원합니다.

구문

HRESULT StgCreateDocfileOnILockBytes(
  [in]  ILockBytes *plkbyt,
  [in]  DWORD      grfMode,
  [in]  DWORD      reserved,
  [out] IStorage   **ppstgOpen
);

매개 변수

[in] plkbyt

복합 파일을 만들 기본 바이트 배열 개체의 ILockBytes 인터페이스에 대한 포인터입니다.

[in] grfMode

새 복합 파일을 열 때 사용할 액세스 모드를 지정합니다. 자세한 내용은 STGM 상수 및 아래 설명 섹션을 참조하세요.

[in] reserved

나중에 사용하도록 예약되어 있습니다. 0이어야 합니다.

[out] ppstgOpen

새 스토리지 개체의 IStorage 포인터 위치에 대한 포인터입니다.

반환 값

StgCreateDocfileOnILockBytes 함수는 모든 파일 시스템 오류 또는 HRESULT로 래핑된 시스템 오류 또는 ILockBytes 인터페이스 오류 반환 값을 반환할 수도 있습니다. 자세한 내용은 오류 처리 전략알 수 없는 오류 처리를 참조하세요.

설명

StgCreateDocfileOnILockBytes 함수는 IStorage 인터페이스의 COM 제공 복합 파일 구현을 사용하여 바이트 배열 개체 위에 스토리지 개체를 만듭니다. StgCreateDocfileOnILockBytes 는 메모리 또는 관계형 데이터베이스와 같은 임의의 데이터 저장소에 문서를 저장하는 데 사용할 수 있습니다. 바이트 배열(개체의 ILockBytes 인터페이스를 가리키는 pLkbyt 매개 변수로 표시됨)은 디스크 파일 대신 기본 스토리지에 사용됩니다.

프로그래머가 제공하는 바이트 배열 개체를 지정하는 경우를 제외하고 StgCreateDocfileOnILockBytesStgCreateDocfile 함수와 유사합니다.

새로 만든 복합 파일은 다음 제한 사항에 따라 grfMode 매개 변수의 액세스 모드에 따라 열립니다.

공유 모드 동작 및 트랜잭션 격리는 LOCK_ONLYONCE 의미 체계를 사용하여 LockRegionUnlockRegion을 지원하는 ILockBytes 구현에 따라 달라집니다. 구현은 STATSTGgrfLocksSupported 멤버에서 LOCK_ONLYONCE 비트를 설정하여 이 기능을 지원하는 구조적 스토리지를 나타낼 수 있습니다. ILockBytes 구현이 이 기능을 지원하지 않는 경우 공유 모드가 적용되지 않으며 루트 수준 트랜잭션 커밋이 동일한 바이트 배열에서 열린 다른 트랜잭션 인스턴스와 제대로 조정되지 않습니다. CreateStreamOnHGlobal 구현과 같이 지역 잠금을 지원하지 않는 ILockBytes 구현을 사용하는 애플리케이션은 동일한 바이트 배열에서 여러 동시 인스턴스를 열지 않아야 합니다.

StgCreateDocfileOnILockBytes 는 단순 모드를 지원하지 않습니다. STGM_SIMPLE 플래그(있는 경우)는 무시됩니다.

변환을 위해 파일이 이미 있는 것으로 간주됩니다. 따라서 오류가 반환되기 때문에 STGM_FAILIFTHERE 값을 사용하는 것은 유용하지 않습니다. 그러나 STGM_CREATE 및 STGM_CONVERT 모두 유용합니다.

바이트 배열 개체 위에 복합 파일을 빌드하는 기능은 데이터( IStorageIStream 트리 구조 아래)가 존재하지 않는 공간에 있는 것을 지원하기 위해 제공됩니다. 이 기능을 사용하면 파일에 저장된 문서가 이 기능을 사용하지 못하게 하는 것은 없습니다. 예를 들어 컨테이너는 COM 채택으로 인한 파일 형식에 미치는 영향을 최소화하기 위해 이 작업을 수행할 수 있습니다. 그러나 COM 문서는 자체 외부 수준 스토리지에 대해 IStorage 인터페이스를 채택하는 것이 좋습니다. 이 방법의 이점은 다음과 같습니다.

  • 문서의 스토리지 구조는 포함된 개체인 경우 스토리지 구조와 동일하므로 애플리케이션에서 처리해야 하는 사례 수가 줄어듭니다.
  • 문서의 파일 형식에 대한 특별한 지식 없이 문서 내의 OLE 포함 및 연결된 개체에 액세스하는 도구를 작성할 수 있습니다. 이러한 도구의 예로 연결된 개체가 포함된 컨테이너에 포함된 모든 문서를 복사하는 복사 유틸리티가 있습니다. 이와 같은 복사 유틸리티는 복사할 파일의 범위를 결정하기 위해 포함된 링크에 액세스해야 합니다.
  • IStorage 구현은 변경 내용을 파일에 커밋하는 방법의 문제를 해결합니다. ILockBytes 인터페이스를 사용하는 애플리케이션은 이러한 문제 자체를 처리해야 합니다.

요구 사항

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

추가 정보

StgCreateDocfile