Поделиться через


Метод IByteBuffer::LockRegion

[Метод LockRegion доступен для использования в операционных системах, указанных в разделе Требования. Он недоступен для использования в Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версиях, Windows Vista, Windows Server 2008 и последующих версиях операционной системы. Интерфейс IStream предоставляет аналогичные функции.]

Метод LockRegion ограничивает доступ к указанному диапазону байтов в объекте буфера.

Синтаксис

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

Параметры

libOffset [in]

Целое число, указывающее смещение байтов для начала диапазона.

cb [in]

Целое число, указывающее длину диапазона (в байтах) для ограничения.

dwLockType [in]

Указывает запрашиваемые ограничения на доступ к диапазону. Это может быть одно из значений в следующей таблице.

Значение Значение
LOCK_WRITE
Указанный диапазон байтов можно открывать и считывать любое количество раз, но запись в заблокированный диапазон запрещена, за исключением владельца, которому была предоставлена эта блокировка.
LOCK_EXCLUSIVE
Запись в указанный диапазон байтов запрещена, за исключением владельца, которому была предоставлена эта блокировка.
LOCK_ONLYONCE
Если эта блокировка предоставлена, другие LOCK_ONLYONCE блокировки не могут быть получены в диапазоне. Обычно этот тип блокировки является псевдонимом для другого типа блокировки. Таким образом, определенные реализации могут иметь дополнительное поведение, связанное с этим типом блокировки.

Возвращаемое значение

Возвращаемое значение — HRESULT. Значение S_OK указывает, что вызов выполнен успешно.

Комментарии

Диапазон байтов может расширяться за пределы текущего конца потока. Блокировка за пределами конца потока полезна в качестве метода обмена данными между различными экземплярами потока без изменения данных, которые фактически являются частью потока.

Поддерживаются три типа блокировки: блокировка для исключения других модулей записи, блокировка для исключения других модулей чтения или записи и блокировка, которая позволяет только одному инициатору запроса получить блокировку в заданном диапазоне, который обычно является псевдонимом для одного из двух других типов блокировки. Данный экземпляр потока может поддерживать один из первых двух типов или оба типа. Тип блокировки задается dwLockType, используя значение из перечисления LOCKTYPE .

Любой регион, заблокированный с помощью LockRegion , должен быть позже явно разблокирован путем вызова IByteBuffer::UnlockRegion с теми же значениями для параметров libOffset, cb и dwLockType . Регион должен быть разблокирован перед освобождением потока. Два смежных региона нельзя заблокировать отдельно, а затем разблокировать с помощью одного вызова разблокировки.

Примеры

В следующем примере показано ограничение доступа к диапазону байтов.

HRESULT  hr;

// Lock a region.
hr = pIByteBuff->LockRegion(0, 10, LOCK_EXCLUSIVE);
if (FAILED(hr))
  printf("Failed IByteBuffer::LockRegion\n");

Требования

Требование Значение
Минимальная версия клиента
Windows XP [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Окончание поддержки клиентов
Windows XP
Прекращение поддержки сервера
Windows Server 2003
Заголовок
Scardssp.h
Библиотека типов
Scardssp.tlb
DLL
Scardssp.dll
IID
IID_IByteBuffer определяется как E126F8FE-A7AF-11D0-B88A-00C04FD424B9