Dokumentlås
Dokumentlåsprotokollet
För att begära ett dokumentlås för AVS-baserade program anropar TSF-chefen ITextStoreACP::RequestLock. För fästpunktsbaserade program anropar TSF-chefen ITextStoreAnchor::RequestLock. Programmet beviljar dokumentlåset genom att anropa ITextStoreACPSink::OnLockGranted (AVS-baserade program) eller ITextStoreAnchorSink::OnLockGranted (ankarbaserade program) inuti RequestLock. Låset är endast giltigt under OnLockGranted-anrop. När OnLockGranted- returnerar betraktas dokumentet som olåst.
Typer av dokumentlås
Det finns två typer av dokumentlås, skrivskyddade och skrivskyddade. Med ett skrivskyddat lås kan chefen läsa texten, men den kan inte ändra eller infoga text. Med ett läs-/skrivlås kan chefen läsa, ändra och infoga text. Ett skrivskyddat lås begärs genom att ange TS_LF_READ i dwFlags. Ett läs-/skrivlås begärs genom att ange TS_LF_READWRITE i dwFlags.
Asynkrona och synkrona begäranden
En låsbegäran kan vara synkron eller asynkron. Chefen begär ett synkront lås med hjälp av flaggan TS_LF_SYNC i dwFlags. Om den här flaggan inte finns är begäran asynkron.
Bevilja låset
När RequestLock- anropas måste programmet avgöra om dokumentet för närvarande är låst. Om dokumentet inte är låst och det inte finns någon annan anledning att neka låset bör programmet ange phrSession till S_OK och returnera S_OK.
Om dokumentet är låst och låsbegäran är synkron bör programmet ange phrSession till TS_E_SYNCHRONOUS och returnera S_OK. Detta anger att en synkron begäran inte kan beviljas.
Om dokumentet är låst och låsbegäran är asynkron ska programmet köa begäran, ange phrSession till TS_S_ASYNC och returnera S_OK. När dokumentet blir tillgängligt bör programmet ta bort begäran från kön och anropa OnLockGranted. Den här köen för låsbegäranden är valfri. det finns ett scenario som ett program måste stödja. Om dokumentet har ett skrivskyddat lås läses/skrivs den nya låsbegäran och begäran är asynkron. Programmet har anropat OnLockGranted , vilket har orsakat att ett reentrant-anrop RequestLock-. Programmet bör ange phrSession till TS_S_ASYNC och returnera S_OK. När anropet till OnLockGranted returnerar bör programmet bearbeta uppgraderingsbegäran genom att anropa OnLockGranted igen med TS_LF_READWRITE.
Lås tvingande
Programmet måste se till att rätt typ av lås finns innan du tillåter åtkomst till dokumentet. Programmet bör till exempel kontrollera att ett dokument har minst ett skrivskyddat lås innan ITextStoreACP::GetText eller ITextStoreAnchor::GetText fortsätter. Om rätt lås inte finns bör programmet returnera TF_E_NOLOCK.
Relaterade ämnen