StgOpenStorageOnILockBytes 함수(coml2api.h)
StgOpenStorageOnILockBytes 함수는 디스크 파일에 있지 않고 대신 호출자가 제공하는 기본 바이트 배열이 있는 기존 스토리지 개체를 엽니다.
구문
HRESULT StgOpenStorageOnILockBytes(
[in] ILockBytes *plkbyt,
[in] IStorage *pstgPriority,
[in] DWORD grfMode,
[in] SNB snbExclude,
[in] DWORD reserved,
[out] IStorage **ppstgOpen
);
매개 변수
[in] plkbyt
열 스토리지 개체를 포함하는 기본 바이트 배열 개체에 대한 ILockBytes 포인터입니다.
[in] pstgPriority
NULL이어야 하는 IStorage 인터페이스에 대한 포인터입니다. NULL이 아닌 경우 이 매개 변수는 아래 설명 섹션에 설명된 대로 사용됩니다.
StgOpenStorageOnILockBytes가 반환되면 pStgPriority에 지정된 스토리지 개체가 해제되었을 수 있으며 더 이상 사용하지 않아야 합니다.
[in] grfMode
스토리지 개체를 여는 데 사용할 액세스 모드를 지정합니다. 자세한 내용은 STGM 상수 및 아래 설명 섹션을 참조하세요.
[in] snbExclude
NULL일 수 있습니다. NULL이 아닌 경우 이 매개 변수는 스토리지 개체가 열릴 때 제외할 이 스토리지의 요소 블록을 가리킵니다. 이 제외는 스냅샷 복사본이 열린 에서 발생하는지 여부와 독립적으로 발생합니다.
[in] reserved
나중에 사용할 수 있는 예약됨을 나타냅니다. 0이어야 합니다.
[out] ppstgOpen
성공적으로 반환될 때 열린 스토리지에 대한 IStorage 포인터의 위치를 가리킵니다.
반환 값
StgOpenStorageOnILockBytes 함수는 모든 파일 시스템 오류 또는 HRESULT로 래핑된 시스템 오류 또는 ILockBytes 인터페이스 오류 반환 값을 반환할 수도 있습니다. 오류 처리 전략 및 알 수 없는 오류 처리를 참조하세요.
설명
StgOpenStorageOnILockBytes 는 지정된 루트 스토리지 개체를 엽니다. 열린 스토리지 개체의 IStorage 인터페이스에 대한 포인터는 ppstgOpen 매개 변수를 통해 제공됩니다.
스토리지 개체는 이전에 StgCreateDocfileOnILockBytes 함수에 의해 만들어졌어야 합니다.
프로그래머가 제공하는 바이트 배열 개체를 지정하는 경우를 제외하고 StgOpenStorageOnILockBytes 는 StgOpenStorage 함수와 유사합니다. 스토리지 개체는 다음 제한 사항에 따라 grfMode 매개 변수의 액세스 모드에 따라 열립니다.
공유 모드 동작 및 트랜잭션 격리는 LOCK_ONLYONCE 의미 체계를 사용하여 LockRegion 및 UnlockRegion을 지원하는 ILockBytes 구현에 따라 달라집니다. 구현은 STATSTG의 grfLocksSupported 멤버에서 LOCK_ONLYONCE 비트를 설정하여 이 기능을 지원하는 구조적 스토리지를 나타낼 수 있습니다. ILockBytes 구현이 이 기능을 지원하지 않는 경우 공유 모드가 적용되지 않으며 루트 수준 트랜잭션 커밋이 동일한 바이트 배열에서 열린 다른 트랜잭션 인스턴스와 제대로 조정되지 않습니다. CreateStreamOnHGlobal 구현과 같이 지역 잠금을 지원하지 않는 ILockBytes 구현을 사용하는 애플리케이션은 동일한 바이트 배열에서 여러 동시 인스턴스를 열지 않아야 합니다.
StgOpenStorageOnILockBytes 는 단순 모드를 지원하지 않습니다. STGM_SIMPLE 플래그(있는 경우)는 무시됩니다.
pStgPriority 매개 변수는 호출자가 동일한 바이트 배열에서 새 스토리지 개체를 열어 우선 순위 모드로 연 기존 스토리지 개체를 대체하는 편의를 위해 작성되었습니다. StgOpenStorage의 pStgPriority 매개 변수와 달리 이 매개 변수는 StgOpenStorageOnILockBytes에서 수행하는 열린 작업에 영향을 주지 않으며 호출자가 해제하려는 기존 스토리지 개체일 뿐입니다. StgOpenStorageOnILockBytes가 어떤 상황에서는 개체를 해제하고 다른 상황에서는 해제하지 않으므로 호출자는 항상 이 매개 변수에 대해 NULL을 전달해야 합니다. pStgPriority 매개 변수의 사용은 다음 예제와 같이 StgOpenStorageOnILockBytes를 호출하기 전에 개체를 해제하는 대신 개체를 해제하여 호출자가 보다 안전한 방식으로 복제할 수 있습니다.
// Replacement for:
// HRESULT hr = StgOpenStorageOnILockBytes(
// plkbyt, pStgPriority, grfMode, NULL, 0, &pstgNew);
pStgPriority->Release();
pStgPriority = NULL;
hr = StgOpenStorage(plkbyt, NULL, grfMode, NULL, 0, &pstgNew);
자세한 내용은 StgOpenStorage를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | coml2api.h(Objbase.h 포함) |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |