Scomparti

Tipi di raggruppamento

Esistono diversi tipi di compartimenti. Esiste un compartimento globale e ogni gestione thread, gestione documenti e contesto può contenere un compartimento.

Il raggruppamento globale consente ai client di condividere i dati tra processi. Per ottenere il gestore del raggruppamento globale, chiamare ITfThreadMgr::GetGlobalCompartment.

Gestione thread contiene un gestore di raggruppamento che contiene compartimenti su base thread. Ciò consente di condividere i dati all'interno di un thread. Per ottenere un gestore del raggruppamento di thread, chiamare ITfThreadMgr::QueryInterface con IID_ITfCompartmentMgr.

Ogni gestore documenti creato contiene anche un gestore di compartimenti. Ciò consente di condividere i dati all'interno di un gestore documenti specifico. Per ottenere il gestore del raggruppamento dei documenti, chiamare ITfDocumentMgr::QueryInterface con IID_ITfCompartmentMgr.

Ogni contesto creato contiene anche un gestore di compartimenti. Ciò consente di condividere i dati all'interno di un contesto specifico. Per ottenere un gestore del raggruppamento di contesto, chiamare ITfContext::QueryInterface con IID_ITfCompartmentMgr.

Creazione ed eliminazione di un compartimento

Viene creato un raggruppamento la prima volta che viene chiamato ITfCompartmentMgr::GetCompartment con il GUID del compartimento. Il client di installazione deve impostare il valore iniziale del raggruppamento usando ITfCompartment::SetValue. Finché non viene impostato un valore, il valore del compartimento è vuoto. A causa di questo, non è possibile verificare che il compartimento sia stato chiamato prima che GetCompartment sia stato chiamato. Per evitare questa situazione, il client di installazione deve impostare il valore su un valore iniziale in modo che altri client possano determinare se il compartimento esiste già.

Il metodo ITfCompartmentMgr::ClearCompartment viene usato per rimuovere un compartimento. Tutti i riferimenti esistenti al compartimento sono contrassegnati come non validi.

Recupero di compartimenti

Usando l'interfaccia ITfCompartmentMgr , un client può enumerare i raggruppamenti chiamando ITfCompartmentMgr::EnumCompartments. Questo metodo fornisce un oggetto IEnumGUID che contiene i GUID di tutti i compartimenti installati.

L'uso del GUID del compartimento , ITfCompartmentMgr::GetCompartment viene usato per ottenere un raggruppamento specifico. Questo metodo fornisce al chiamante un oggetto ITfCompartment che può ottenere e impostare i dati del raggruppamento.

Ricezione di notifiche di modifica del raggruppamento

Quando il valore di un compartimento cambia, il responsabile TSF informa che i sink installati sono stati modificati. Per installare un sink di modificare un raggruppamento, creare un oggetto che implementa ITfCompartmentEventSink. Chiamare quindi ITfCompartment::QueryInterface con IID_ITfSource sull'oggetto compartimento da monitorare per ottenere un'interfaccia ITfSource . Chiamare ora ITfSource::AdviseSink con IID_ITfCompartmentEventSink e il puntatore all'oggetto ITfCompartmentEventSink . Quando il valore del raggruppamento cambia, viene chiamato il GUID del sink ITfCompartmentEventSink::OnChange con il GUID del compartimento. Il sink di consigli può chiamare ITfCompartment::GetValue per ottenere il nuovo valore.

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange