Restricts access to a specified range of bytes in the byte array.
| ULARGE_INTEGER libOffset,
||//Specifies the byte offset for the beginning of the range
| ULARGE_INTEGER cb,
||//Specifies the length of the range in bytes
| DWORD dwLockType
||//Specifies the type of restriction on accessing the specified range
[in]Specifies the byte offset for the beginning of the range.
[in]Specifies, in bytes, the length of the range to be restricted.
[in]Specifies the type of restrictions being requested on accessing the range.
This parameter uses one of the values from the LOCKTYPE
The specified range of bytes was locked.
Locking is not supported at all or the specific type of lock requested is not
Requested lock is supported, but cannot be granted because of an existing lock.
This method restricts access to the specified range of bytes. Once a region is
locked, attempts by others to perform the restricted access must fail with the
The byte range can extend past the current end of the current byte array.
Locking beyond the end of an array is useful as a method of communication between
different instances of the byte array object without changing data that is
actually part of the byte array. For example, an implementation of compound files
could rely on locking past the current end of the array as a means of access
control, using specific locked regions to indicate permissions currently granted.
Three types of locking can be supported: locking to exclude other writers,
locking to exclude other readers or writers, and locking that allows only one
requestor to obtain a lock on the given range, which is usually an alias for one of
the other two lock types. A given byte array might support either of the first
two types, or both. The lock type is specified by dwLockType
, using a value from the LOCKTYPE
To determine the lock types supported by a particular ILockBytes
implementation, you can examine the grfLocksSupported
member of the STATSTG
structure returned by a call to ILockBytes::Stat
Any region locked with ILockBytes::LockRegion
must later be explicitly unlocked by calling ILockBytes::UnlockRegion
with exactly the same values for the libOffset
, and dwLockTyp
e parameters. The region must be unlocked before the stream is released. Two
adjacent regions cannot be locked separately and then unlocked with a single
Notes to Callers
Since the type of locking supported is optional and can vary in different
implementations of ILockBytes
, you must provide code to deal with the STG_E_INVALIDFUNCTION error.
Notes to Implementors
Support for this method depends on how the storage objects built on top of the ILockBytes
implementation is used. If you know that, at any given time, only one storage
object can be opened on the storage device that underlies the byte array, then
implementation does not need to support locking. However, if multiple
simultaneous openings of a storage object are possible, then region locking is needed
to coordinate them.
implementation can choose to support all, some, or none of the lock types.
For unsupported lock types, the implementation should return
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages