Documentvergrendelingen
Het protocol documentvergrendeling
Als u een documentvergrendeling wilt aanvragen voor op ACP gebaseerde toepassingen, roept de TSF-manager ITextStoreACP::RequestLockaan. Voor ankertoepassingen roept de TSF-manager ITextStoreAnchor::RequestLockaan. De toepassing verleent de documentvergrendeling door ITextStoreACPSink::OnLockGranted (ACP-toepassingen) of ITextStoreAnchorSink::OnLockGranted (op anker gebaseerde toepassingen) binnen RequestLockaan te roepen. De vergrendeling is alleen geldig tijdens de OnLockGranted oproep. Wanneer OnLockGranted retourneert, wordt het document beschouwd als ontgrendeld.
Typen documentvergrendelingen
Er zijn twee typen documentvergrendelingen, alleen-lezen en lezen/schrijven. Met een alleen-lezenvergrendeling kan de manager de tekst lezen, maar kan de tekst niet wijzigen of invoegen. Met een vergrendeling voor lezen/schrijven kan de manager tekst lezen, wijzigen en invoegen. Er wordt een alleen-lezenvergrendeling aangevraagd door TS_LF_READ op te geven in dwFlags-. Er wordt een lees-/schrijfvergrendeling aangevraagd door TS_LF_READWRITE op te geven in dwFlags-.
Asynchrone en synchrone aanvragen
Een vergrendelingsaanvraag kan synchroon of asynchroon zijn. De manager vraagt een synchrone vergrendeling aan met behulp van de vlag TS_LF_SYNC in dwFlags-. Als deze vlag niet aanwezig is, is de aanvraag asynchroon.
De vergrendeling verlenen
Wanneer RequestLock- wordt aangeroepen, moet de toepassing bepalen of het document momenteel is vergrendeld. Als het document niet is vergrendeld en er geen andere reden is om de vergrendeling te weigeren, moet de toepassing phrSession- instellen op S_OK en S_OK retourneren.
Als het document is vergrendeld en de vergrendelingsaanvraag synchroon is, moet de toepassing phrSession instellen op TS_E_SYNCHRONOUS en S_OK retourneren. Dit geeft aan dat een synchrone aanvraag niet kan worden verleend.
Als het document is vergrendeld en de vergrendelingsaanvraag asynchroon is, moet de toepassing de aanvraag in de wachtrij plaatsen, phrSession- instellen op TS_S_ASYNC en S_OK retourneren. Wanneer het document beschikbaar is, moet de toepassing de aanvraag uit de wachtrij verwijderen en OnLockGrantedaanroepen. Deze wachtrij van vergrendelingsaanvragen is optioneel; er is één scenario dat een toepassing moet ondersteunen. Als het document een alleen-lezenvergrendeling heeft, is de nieuwe vergrendelingsaanvraag lezen/schrijven en de aanvraag asynchroon is, heeft de toepassing in OnLockGranted- aangeroepen, waardoor een nieuwe aanroep naar RequestLock-is veroorzaakt. De toepassing moet phrSession- instellen op TS_S_ASYNC en S_OK retourneren. Nadat de aanroep naar OnLockGranted terugkeert, moet de toepassing de upgradeaanvraag verwerken door OnLockGranted- opnieuw aan te roepen met TS_LF_READWRITE.
Afdwinging vergrendelen
De toepassing moet ervoor zorgen dat het juiste type vergrendeling bestaat voordat toegang tot het document wordt toegestaan. De toepassing moet bijvoorbeeld controleren of een document ten minste een alleen-lezenvergrendeling heeft voordat ITextStoreACP::GetText of ITextStoreAnchor::GetText om door te gaan. Als de juiste vergrendeling niet bestaat, moet de toepassing TF_E_NOLOCK retourneren.
Verwante onderwerpen