Aracılığıyla paylaş


Belge Kilitleri

Belge Kilidi Protokolü

TSF yöneticisi, ACP tabanlı uygulamalar için belge kilidi istemek için ITextStoreACP::RequestLock çağırır. Yer işareti tabanlı uygulamalar için TSF yöneticisi ITextStoreAnchor::RequestLock çağırır. Uygulama, RequestLockiçinde ITextStoreACPSink::OnLockGranted (ACP tabanlı uygulamalar) veya ITextStoreAnchorSink::OnLockGranted (yer işareti tabanlı uygulamalar) çağırarak belge kilidini verir. Kilit yalnızca OnLockGranted çağrısı sırasında geçerlidir. OnLockGranted döndürüldüğünde, belgenin kilidi açılmış olarak kabul edilir.

Belge Kilidi Türleri

Salt okunur ve okuma/yazma olmak üzere iki tür belge kilidi vardır. Salt okunur kilit, yöneticinin metni okumasını sağlar, ancak metni değiştiremez veya ekleyemez. Okuma/yazma kilidi, yöneticinin metin okumasını, değiştirmesini ve eklemesini sağlar. dwFlagsiçinde TS_LF_READ belirtilerek salt okunur bir kilit istenir. dwFlagsiçinde TS_LF_READWRITE belirtilerek okuma/yazma kilidi istenir.

Zaman Uyumsuz ve Zaman Uyumlu İstekler

Kilit isteği zaman uyumlu veya zaman uyumsuz olabilir. Yönetici, dwFlagsiçindeki TS_LF_SYNC bayrağını kullanarak zaman uyumlu bir kilit isteğinde bulunur. Bu bayrak yoksa istek zaman uyumsuzdur.

Kilit Verme

RequestLock çağrıldığında, uygulamanın belgenin şu anda kilitli olup olmadığını belirlemesi gerekir. Belge kilitli değilse ve kilidi reddetmek için başka bir neden yoksa, uygulama phrSession S_OK olarak ayarlayıp S_OK döndürmelidir.

Belge kilitliyse ve kilit isteği zaman uyumluysa, uygulama phrSession TS_E_SYNCHRONOUS olarak ayarlayıp S_OK döndürmelidir. Bu, zaman uyumlu bir isteğin verilemeyeceğini gösterir.

Belge kilitliyse ve kilit isteği zaman uyumsuzsa, uygulamanın isteği kuyruğa alması, phrSession TS_S_ASYNC olarak ayarlaması ve S_OK döndürmesi gerekir. Belge kullanılabilir olduğunda, uygulamanın isteği kuyruktan kaldırması ve onLockGranted çağrısı yapması gerekir. Kilit isteklerinin bu kuyruğa alma işlemi isteğe bağlıdır; bir uygulamanın desteklemesi gereken bir senaryo vardır. Belgede salt okunur bir kilit varsa, yeni kilit isteği okunur/yazılır ve istek zaman uyumsuzsa, uygulama OnLockGranted çağrısı yapmış ve bu da requestLock için yeniden giriş çağrısına neden olmuştur. Uygulamanın phrSession TS_S_ASYNC olarak ayarlaması ve S_OK döndürmesi gerekir. OnLockGranted çağrısı döndürüldükten sonra, uygulama OnLockGranted TS_LF_READWRITE ile yeniden çağırarak yükseltme isteğini işlemelidir.

Kilitleme Zorlaması

Uygulama, belgeye erişime izin vermeden önce uygun kilit türünün mevcut olduğundan emin olmalıdır. Örneğin uygulama, devam etmek için ITextStoreACP::GetText veya ITextStoreAnchor::GetText izin vermeden önce belgenin en az salt okunur bir kilidi olduğunu doğrulamalıdır. Uygun kilit yoksa, uygulama TF_E_NOLOCK döndürmelidir.

Metin Depoları

ITextStoreACP::RequestLock

ITextStoreACPSink::OnLockGranted

ITextStoreACP::GetText

ITextStoreAnchor::RequestLock

ITextStoreAnchorSink::OnLockGranted

ITextStoreAnchor::GetText