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


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

Диспетчер TSF вызывает метод ITextStoreACP::RequestLock , чтобы обеспечить блокировку документа для изменения документа. Этот метод вызывает метод ITextStoreACPSink::OnLockGranted для создания блокировки документа.

Синтаксис

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
Произошла неизвестная ошибка.

Комментарии

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

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

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

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

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

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

Требования

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

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

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

ITextStoreACP

ITextStoreACPSink::OnLockGranted

Константы TS_LF_*

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