Partager via


Compartiments

Types de compartiments

Il existe différents types de compartiments. Il existe un compartiment global, et chaque gestionnaire de threads, gestionnaire de documents et contexte peut contenir un compartiment.

Le compartiment global permet aux clients de partager des données entre les processus. Pour obtenir le gestionnaire de compartiment global, appelez ITfThreadMgr::GetGlobalCompartment.

Le gestionnaire de threads contient un gestionnaire de compartiments qui contient des compartiments par thread. Cela permet de partager des données dans un thread. Pour obtenir un gestionnaire de compartiment de gestionnaire de threads, appelez ITfThreadMgr::QueryInterface avec IID_ITfCompartmentMgr.

Chaque gestionnaire de documents créé contient également un gestionnaire de compartiment. Cela permet de partager des données dans un gestionnaire de documents spécifique. Pour obtenir le gestionnaire de compartiment du gestionnaire de documents, appelez ITfDocumentMgr::QueryInterface avec IID_ITfCompartmentMgr.

Chaque contexte créé contient également un gestionnaire de compartiment. Cela permet de partager des données dans un contexte spécifique. Pour obtenir un gestionnaire de compartiment de contexte, appelez ITfContext::QueryInterface avec IID_ITfCompartmentMgr.

Création et suppression d’un compartiment

Un compartiment est créé la première fois qu’ITfCompartmentMgr::GetCompartment est appelé avec le GUID du compartiment. Le client d’installation doit définir la valeur initiale du compartiment à l’aide de ITfCompartment::SetValue. Tant qu’une valeur n’est pas définie, la valeur du compartiment est vide. Pour cette raison, il n’existe aucun moyen de vérifier que le compartiment existait avant l’appel de GetCompartment . Pour éviter cette situation, le client d’installation doit définir la valeur sur une valeur initiale afin que d’autres clients puissent déterminer si le compartiment existe déjà.

La méthode ITfCompartmentMgr::ClearCompartment est utilisée pour supprimer un compartiment. Toutes les références existantes au compartiment sont marquées comme non valides.

Obtention de compartiments

À l’aide de l’interface ITfCompartmentMgr , un client peut énumérer des compartiments en appelant ITfCompartmentMgr::EnumCompartments. Cette méthode fournit un objet IEnumGUID qui contient les GUID de tous les compartiments installés.

À l’aide du GUID de compartiment , ITfCompartmentMgr::GetCompartment est utilisé pour obtenir un compartiment spécifique. Cette méthode fournit à l’appelant un objet ITfCompartment qui peut obtenir et définir les données du compartiment.

Réception des notifications de modification de compartiment

Lorsque la valeur d’un compartiment change, le gestionnaire TSF avertit les récepteurs installés que le compartiment a changé. Pour installer un récepteur d’avis de modification de compartiment, créez un objet qui implémente ITfCompartmentEventSink. Appelez ensuite ITfCompartment::QueryInterface avec IID_ITfSource sur l’objet compartiment à surveiller pour obtenir une interface ITfSource . Appelez maintenant ITfSource::AdviseSink avec IID_ITfCompartmentEventSink et le pointeur vers l’objet ITfCompartmentEventSink . Lorsque la valeur du compartiment change, le récepteur de conseil ITfCompartmentEventSink::OnChange est appelé avec le GUID du compartiment. Le récepteur d’avis peut appeler ITfCompartment::GetValue pour obtenir la nouvelle valeur.

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventsink::OnChange