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


Метод ITextStoreAnchor::RequestLock (texttor.h)

Используется диспетчером TSF для предоставления блокировки документа для изменения текстового потока.

Синтаксис

HRESULT RequestLock(
  [in]  DWORD   dwLockFlags,
  [out] HRESULT *phrSession
);

Параметры

[in] dwLockFlags

Указывает тип запрашиваемой блокировки.

Значение Значение
TS_LF_READ
Документ имеет блокировку только для чтения и не может быть изменен.
TS_LF_READWRITE
Документ имеет блокировку для чтения и записи, и его можно изменить.
TS_LF_SYNC
Документ имеет синхронную блокировку, если этот флаг объединен с другими флагами.

[out] phrSession

Если запрос на блокировку синхронный, получает значение HRESULT от метода ITextStoreAnchorSink::OnLockGranted , указывающее результат запроса на блокировку.

Если запрос на блокировку является асинхронным и результатом является TS_S_ASYNC, документ получает асинхронную блокировку. Если запрос на блокировку является асинхронным и результатом является TS_E_SYNCHRONOUS, документ не может быть заблокирован синхронно.

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

Этот метод может возвращать одно из этих значений.

Значение Описание
S_OK
Метод выполнен успешно.
E_FAIL
Произошла неизвестная ошибка.

Комментарии

Этот метод использует метод ITextStoreAnchorSink::OnLockGranted для блокировки документа. Приложения никогда не должны изменять документ или отправлять уведомления об изменениях с помощью метода ITextStoreAnchorSink::OnTextChange из метода ITextStoreAnchor::RequestLock . Если в приложении есть ожидающие изменения отчета, приложение может отвечать только на запрос асинхронной блокировки.

Приложения не должны пытаться ставить в очередь несколько вызовов метода ITextStoreAnchor::RequestLock , так как приложению требуется только один обратный вызов. Однако если вызывающий объект выполняет несколько запросов на чтение и один или несколько запросов на запись, обратный вызов должен быть для доступа на запись.

Успешные запросы на синхронные блокировки заменяют запросы на асинхронные блокировки. Неудачные запросы на синхронные блокировки не заменяют запросы на асинхронные блокировки. Реализация по-прежнему должна обслуживать невыполненные асинхронные запросы, если он существует.

Если блокировка предоставляется до возврата метода ITextStoreAnchor::RequestLock , параметр phrSession получит HRESULT, возвращенный методом ITextStoreAnchorSink::OnLockGranted . Если вызов выполнен успешно, но блокировка будет предоставлена позже, параметр phrSession получает флаг TS_S_ASYNC. Параметр phrSession следует игнорировать, если ITextStoreAnchor::RequestLock возвращает не S_OK.

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

Дополнительные сведения о блокировках документов см. в разделе Блокировки документов.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header textstor.h
DLL Msctf.dll
Распространяемые компоненты TSF 1.0 в Windows 2000 Professional

См. также раздел

Блокировки документов

ITextStoreAnchor

ITextStoreAnchorSink::OnLockGranted

константы TS_LF_*

Возвращаемые значения в текстовом хранилище