IStream::LockRegion 方法 (objidl.h)

LockRegion 方法限制对流中指定字节范围的访问。 支持此功能是可选的,因为某些文件系统不提供此功能。

语法

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

参数

[in] libOffset

指定范围开头的字节偏移量的整数。

[in] cb

指定要限制的范围长度的整数(以字节为单位)。

[in] dwLockType

指定请求访问范围的限制。

返回值

此方法可以返回其中一个值。

返回代码 说明
S_OK 指定的字节范围已锁定。
E_PENDING 仅限异步存储:流的部分或全部数据当前不可用。
STG_E_INVALIDFUNCTION 完全不支持锁定,或者不支持请求的特定类型的锁。
STG_E_LOCKVIOLATION 支持请求的锁,但由于存在现有锁,因此无法授予该锁。
STG_E_REVERTED 在事务树中,对象上方的还原操作已失效。

注解

可以扩展流的字节范围。 锁定流的扩展范围作为不同流实例之间的通信方法很有用,无需更改实际属于流的一部分的数据。

可支持三种类型的锁定:锁定以排除其他编写器,锁定以排除其他读取器或编写器,以及仅允许一个请求者获取给定范围的锁(通常是其他两种锁类型之一的别名)的锁定。 给定的流实例可能支持前两种类型之一,或者同时支持这两种类型。 锁类型由 dwLockType 指定,使用 LOCKTYPE 枚举中的值。

以后必须使用与 libOffsetcbdwLockType 参数完全相同的值调用 IStream::UnlockRegion 来显式解锁使用 IStream::LockRegion 锁定的任何区域。 必须先解锁该区域,然后才能释放流。 两个相邻区域不能单独锁定,然后通过一次解锁调用解锁。

调用方备注

由于支持的锁定类型是可选的,并且可能因 IStream 的不同实现而异,因此必须提供代码来处理STG_E_INVALIDFUNCTION错误。

LockRegion 方法在复合文件实现中不起作用,因为该实现不支持范围锁定。

实施者说明

对于流对象的实现,对此方法的支持是可选的,因为基础文件系统可能不支持此方法。 支持的锁定类型也是可选的。 如果不支持所请求的锁定类型,则返回STG_E_INVALIDFUNCTION错误。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 objidl.h
Library Uuid.lib
DLL Ole32.dll

另请参阅

IStream - 复合文件实现

IStream::UnlockRegion

LOCKTYPE