Метод 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 .
Любой регион, заблокированный iStream::LockRegion , должен быть позже явно разблокирован путем вызова метода IStream::UnlockRegion с теми же значениями для параметров libOffset, cb и dwLockType . Регион должен быть разблокирован перед освобождением потока. Две смежные области нельзя заблокировать отдельно, а затем разблокировать с помощью одного вызова разблокировки.
Примечания к вызывающим абонентам
Так как поддерживаемый тип блокировки является необязательным и может отличаться в разных реализациях IStream, необходимо предоставить код для устранения ошибки STG_E_INVALIDFUNCTION.Метод LockRegion не оказывает влияния на реализацию составного файла, так как реализация не поддерживает блокировку диапазона.
Примечания для разработчиков
Поддержка этого метода является необязательной для реализаций объектов потока, так как он может не поддерживаться базовой файловой системой. Поддерживаемый тип блокировки также является необязательным. Ошибка STG_E_INVALIDFUNCTION возвращается, если запрошенный тип блокировки не поддерживается.Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | objidl.h |
Библиотека | Uuid.lib |
DLL | Ole32.dll |