|
IStream::LockRegion
Restricts access to a specified range of bytes in the stream. Supporting this
functionality is optional since some file systems do not provide it.
HRESULT LockRegion(
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 restriction on accessing the specified range
| );
|
|
Parameters
libOffset
[in]Specifies the byte offset for the beginning of the range.
cb
[in]Specifies, in bytes, the length of the range to be restricted.
dwLockType
[in]Specifies the restrictions being requested on accessing the range.
Return Values
S_OK
The specified range of bytes was locked.
STG_E_INVALIDFUNCTION
Locking is not supported at all or the specific type of lock requested is not
supported.
STG_E_LOCKVIOLATION
Requested lock is supported, but cannot be granted because of an existing lock.
Comments
The byte range can extend past the current end of the stream. Locking beyond
the end of a stream is useful as a method of communication between different
instances of the stream without changing data that is actually part of the stream.
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 stream instance might support either of the
first two types, or both. The lock type is specified by dwLockType, using a value from the LOCKTYPE enumeration.
Any region locked with IStream::LockRegion must later be explicitly unlocked by calling IStream::UnlockRegion with exactly the same values for the libOffset, cb, and dwLockType parameters. The region must be unlocked before the stream is released. Two
adjacent regions cannot be locked separately and then unlocked with a single
unlock call.
Notes to Callers
Since range locking is not supported by the OLE-provided implementation of
streams, calling IStream::LockRegion has no effect for this implementation.
Since the type of locking supported is optional and can vary in different
implementations of IStream, you must provide code to deal with the STG_E_INVALIDFUNCTION error.
Notes to Implementors
Support for this method is optional for implementations of stream objects
since it may not be supported by the underlying file system. The type of locking
supported is also optional. The STG_E_INVALIDFUNCTION error is returned if the
requested type of locking is not supported.
See Also
LOCKTYPE, IStream::UnlockRegion
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|