다음을 통해 공유


ILockBytes::LockRegion 메서드(objidl.h)

LockRegion 메서드는 바이트 배열에서 지정된 바이트 범위에 대한 액세스를 제한합니다.

구문

HRESULT LockRegion(
  [in] ULARGE_INTEGER libOffset,
  [in] ULARGE_INTEGER cb,
  [in] DWORD          dwLockType
);

매개 변수

[in] libOffset

범위의 시작 부분에 대한 바이트 오프셋을 지정합니다.

[in] cb

제한할 범위의 길이를 바이트 단위로 지정합니다.

[in] dwLockType

범위에 액세스하는 데 요청되는 제한의 유형을 지정합니다. 이 매개 변수는 LOCKTYPE 열거형의 값 중 하나를 사용합니다.

반환 값

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

반환 코드 설명
S_OK 지정된 바이트 범위가 잠겼습니다.
STG_E_INVALIDFUNCTION 잠금은 전혀 지원되지 않거나 요청된 특정 유형의 잠금이 지원되지 않습니다.
STG_E_ACCESSDENIED 호출자에게 권한이 부족하거나 다른 호출자가 파일을 열고 잠갔기 때문에 액세스가 거부되었습니다.
STG_E_LOCKVIOLATION 다른 호출자가 파일을 열고 잠갔기 때문에 액세스가 거부되었습니다.
STG_E_INVALIDHANDLE 기본 파일이 조기에 닫혔거나 올바른 플로피 디스크가 잘못된 파일로 대체되었습니다.

설명

ILockBytes::LockRegion 은 지정된 바이트 범위에 대한 액세스를 제한합니다. 지역이 잠기면 다른 사용자가 제한된 범위에 액세스하려는 시도가 실패하고 STG_E_ACCESSDENIED 오류가 발생합니다.

바이트 범위는 바이트 배열의 현재 끝을 지나 확장할 수 있습니다. 배열의 끝 부분을 벗어나는 잠금은 실제로 바이트 배열의 일부인 데이터를 변경하지 않고 바이트 배열 개체의 여러 인스턴스 간에 통신하는 방법으로 유용합니다. 예를 들어 복합 파일에 대한 ILockBytes 구현은 현재 부여된 권한을 나타내기 위해 특정 잠긴 지역을 사용하여 액세스 제어 수단으로 배열의 현재 끝을 지나 잠금을 사용할 수 있습니다.

dwLockType 매개 변수는 LOCKTYPE 열거형의 값을 사용하여 세 가지 유형의 잠금 중 하나를 지정합니다. 형식은 다음과 같습니다. 다른 기록기를 제외하도록 잠금, 다른 판독기 또는 기록기를 제외하도록 잠금, 한 요청자만 지정된 범위에 대한 잠금을 가져올 수 있는 잠금입니다. 이 세 번째 잠금 유형은 일반적으로 다른 두 잠금 유형 중 하나에 대한 별칭이며 구현자도 다른 동작을 추가할 수 있도록 허용합니다. 지정된 바이트 배열은 처음 두 형식 중 하나 또는 둘 다를 지원할 수 있습니다.

특정 ILockBytes 구현에서 지원하는 잠금 유형을 확인하려면 ILockBytes::Stat 호출로 반환된 STATSTG 구조체의 grfLocksSupported 멤버를 검사할 수 있습니다.

ILockBytes::LockRegion으로 잠긴 모든 지역은 나중에 libOffset, cbdwLockType 매개 변수에 대해 정확히 동일한 값으로 ILockBytes::UnlockRegion을 호출하여 명시적으로 잠금 해제되어야 합니다. 스트림이 해제되기 전에 지역의 잠금을 해제해야 합니다. 인접한 두 지역은 별도로 잠근 다음 단일 잠금 해제 호출로 잠금 해제할 수 없습니다.

발신자에 대한 참고 사항

지원되는 잠금 유형은 선택 사항이며 ILockBytes의 다양한 구현에 따라 다를 수 있으므로 STG_E_INVALIDFUNCTION 오류를 처리하는 코드를 제공해야 합니다.

구현자에 대한 참고 사항

이 메서드에 대한 지원은 ILockBytes 구현을 기반으로 빌드된 스토리지 개체를 사용하는 방법에 따라 달라집니다. 지정된 시간에 하나의 스토리지 개체만 바이트 배열의 근간이 되는 스토리지 디바이스에서 열 수 있다는 것을 알고 있는 경우 ILockBytes 구현에서 잠금을 지원할 필요가 없습니다. 그러나 스토리지 개체의 여러 동시 개구부가 가능한 경우 이를 조정하려면 지역 잠금이 필요합니다.

LockRegion 구현은 잠금 형식의 모든, 일부 또는 없음을 지원하도록 선택할 수 있습니다. 지원되지 않는 잠금 형식의 경우 구현은 STG_E_INVALIDFUNCTION 반환해야 합니다.

요구 사항

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

추가 정보

ILockBytes - File-Based 구현

ILockBytes - 전역 메모리 구현

ILockBytes::Stat

ILockBytes::UnlockRegion

IStream::LockRegion

LOCKTYPE