Delen via


Compartimenten

Compartimenttypen

Er zijn verschillende soorten compartimenten. Er is een globaal compartiment en elke threadmanager, documentbeheerder en context kan een compartiment bevatten.

Het globale compartiment stelt klanten in staat om gegevens te delen tussen processen. Als u de globale compartimentmanager wilt verkrijgen, belt u ITfThreadMgr::GetGlobalCompartment.

De threadmanager bevat een compartimentmanager die compartimenten per draad bevat. Hierdoor kunnen gegevens worden gedeeld binnen een thread. Als u een thread manager wilt, belt u ITfThreadMgr::QueryInterface met IID_ITfCompartmentMgr.

Elke documentbeheerder die is gemaakt, bevat ook een compartimentbeheerder. Hierdoor kunnen gegevens worden gedeeld binnen een specifieke documentbeheerder. Als u de manager van het documentbeheervak wilt verkrijgen, belt u ITfDocumentMgr::QueryInterface met IID_ITfCompartmentMgr.

Elke context die wordt gemaakt, bevat ook een compartimentbeheerder. Hierdoor kunnen gegevens binnen een specifieke context worden gedeeld. Als u een contextvakbeheerder wilt verkrijgen, roept u ITfContext::QueryInterface aan met IID_ITfCompartmentMgr.

Een compartiment maken en verwijderen

Er wordt een compartiment gemaakt wanneer ITfCompartmentMgr::GetCompartment wordt aangeroepen met de compartiment-GUID. De installatieclient moet de initiële waarde van het compartiment instellen met behulp van ITfCompartment::SetValue. Totdat een waarde is ingesteld, is de compartimentwaarde leeg. Daarom is er geen manier om te controleren of het compartiment bestond voordat GetCompartment werd aangeroepen. Om deze situatie te voorkomen, moet de installatieclient de waarde instellen op een bepaalde initiële waarde, zodat andere clients kunnen bepalen of het compartiment al bestaat.

De methode ITfCompartmentMgr::ClearCompartment wordt gebruikt om een compartiment te verwijderen. Bestaande verwijzingen naar het compartiment zijn gemarkeerd als ongeldig.

Compartimenten verkrijgen

Met behulp van de interface ITfCompartmentMgr kan een client compartimenten inventariseren door ITfCompartmentMgr::EnumCompartmentsaan te roepen. Deze methode biedt een IEnumGUID object dat de GUID's van alle geïnstalleerde compartimenten bevat.

Met behulp van de compartiment-GUID wordt ITfCompartmentMgr::GetCompartment gebruikt om een specifiek compartiment te verkrijgen. Deze methode biedt de aanroeper een ITfCompartment-object dat de compartimentgegevens kan verkrijgen en instellen.

Meldingen ontvangen over wijziging van compartiment

Wanneer de waarde van een compartiment verandert, informeert de TSF-manager eventuele geïnstalleerde sinks dat het compartiment is gewijzigd. Als u een compartimentwijzigingsadvies sink wilt installeren, maakt u een object dat ITfCompartmentEventSinkimplementeert. Roep vervolgens ITfCompartment::QueryInterface aan met IID_ITfSource op het compartimentobject dat moet worden bewaakt om een ITfSource interface te verkrijgen. Roep nu ITfSource::AdviseSink aan met IID_ITfCompartmentEventSink en de aanwijzer naar het ITfCompartmentEventSink-object. Wanneer de waarde van het compartiment verandert, wordt de ITfCompartmentEventSink::OnChange aangeroepen met de GUID van het compartiment. De adviessink kan ITfCompartment::GetValue aanroepen om de nieuwe waarde te verkrijgen.

ITfCompartmentMgr-

ITfCompartment-

ITfCompartmentEventSink

TfClientId-

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource-

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange-