Fächer
Depottypen
Es gibt verschiedene Arten von Depots. Es gibt ein globales Depot, und jeder Thread-Manager, Dokument-Manager und Kontext kann ein Depot enthalten.
Mit dem globalen Depot können Clients Daten prozessübergreifend freigeben. Rufen Sie ITfThreadMgr::GetGlobalCompartmentauf, um den globalen Depot-Manager abzurufen.
Der Thread-Manager enthält einen Depot-Manager, der Depots pro Thread enthält. Dadurch können Daten innerhalb eines Threads freigegeben werden. Rufen Sie ITfThreadMgr::QueryInterface mit IID ITfCompartmentMgr auf, um einen Thread-Manager-Depot-Manager _ abzurufen.
Jeder erstellte Dokument-Manager enthält auch einen Depot-Manager. Dadurch können Daten innerhalb eines bestimmten Dokument-Managers freigegeben werden. Rufen Sie ITfDocumentMgr::QueryInterface mit IID ITfCompartmentMgr auf, um den Depot-Manager des Dokument-Managers _ abzurufen.
Jeder erstellte Kontext enthält auch einen Depot-Manager. Dadurch können Daten innerhalb eines bestimmten Kontexts freigegeben werden. Um einen Kontextdepartment-Manager abzurufen, rufen Sie ITfContext::QueryInterface mit IID _ ITfCompartmentMgr auf.
Erstellen und Löschen eines Depots
Ein Depot wird erstellt, wenn ITfCompartmentMgr::GetCompartment zum ersten Mal mit der Depot-GUID aufgerufen wird. Der installierende Client sollte den Anfangswert des Depots mit ITfCompartment::SetValuefestlegen. Bis ein Wert festgelegt ist, ist der Depotwert leer. Aus diesem Grund gibt es keine Möglichkeit, zu überprüfen, ob das Depot vor dem Aufruf von GetCompartment vorhanden war. Um diese Situation zu vermeiden, sollte der installierende Client den Wert auf einen Anfangswert festlegen, damit andere Clients ermitteln können, ob das Depot bereits vorhanden ist.
Die ITfCompartmentMgr::ClearCompartment-Methode wird verwendet, um ein Depot zu entfernen. Alle vorhandenen Verweise auf das Depot werden als ungültig markiert.
Abrufen von Depots
Mithilfe der ITfCompartmentMgr-Schnittstelle kann ein Client Depots aufzählen, indem er ITfCompartmentMgr::EnumCompartments aufruft. Diese Methode stellt ein IEnumGUID-Objekt bereit, das die GUIDs aller installierten Depots enthält.
Mithilfe der Depot-GUID wird ITfCompartmentMgr::GetCompartment verwendet, um ein bestimmtes Depot abzurufen. Diese Methode stellt dem Aufrufer ein ITfCompartment-Objekt bereit, das die Depotdaten abrufen und festlegen kann.
Empfangen von Depotänderungsbenachrichtigungen
Wenn sich der Wert eines Depots ändert, benachrichtigt der TSF-Manager alle installierten Ratensenken, dass sich das Depot geändert hat. Um eine Depotänderungssenke zu installieren, erstellen Sie ein Objekt, das ITfCompartmentEventSinkimplementiert. Rufen Sie dann ITfCompartment::QueryInterface mit IID _ ITfSource für das depot-Objekt auf, das überwacht werden soll, um eine ITfSource-Schnittstelle zu erhalten. Rufen Sie nun ITfSource::AdviseSink mit IID _ ITfCompartmentEventSink und dem Zeiger auf das ITfCompartmentEventSink-Objekt auf. Wenn sich der Wert des Depots ändert, wird ITfCompartmentEventSink::OnChange der Advise-Senke mit der GUID des Depots aufgerufen. Die Advise-Senke kann ITfCompartment::GetValue aufrufen, um den neuen Wert abzurufen.