Compartimientos
Tipos de compartimiento
Hay varios tipos diferentes de compartimientos. Hay un compartimiento global y cada administrador de subprocesos, administrador de documentos y contexto puede contener un compartimiento.
El compartimiento global permite a los clientes compartir datos entre procesos. Para obtener el administrador global del compartimiento, llame a ITfThreadMgr::GetGlobalCompartment.
El administrador de subprocesos contiene un administrador de compartimientos que contiene compartimientos por subproceso. Esto permite compartir datos dentro de un subproceso. Para obtener un administrador de compartimiento del administrador de subprocesos, llame a ITfThreadMgr::QueryInterface con IID_ITfCompartmentMgr.
Cada administrador de documentos creado también contiene un administrador de compartimientos. Esto permite compartir datos dentro de un administrador de documentos específico. Para obtener el administrador de compartimentos del administrador de documentos, llame a ITfDocumentMgr::QueryInterface con IID_ITfCompartmentMgr.
Cada contexto creado también contiene un administrador de compartimentos. Esto permite que los datos se compartan dentro de un contexto específico. Para obtener un administrador de compartimiento de contexto, llame a ITfContext::QueryInterface con IID_ITfCompartmentMgr.
Crear y eliminar un compartimiento
Se crea un compartimiento la primera vez que se llama a ITfCompartmentMgr::GetCompartment con el GUID del compartimiento. El cliente de instalación debe establecer el valor inicial del compartimiento mediante ITfCompartment::SetValue. Hasta que se establece un valor, el valor del compartimiento está vacío. Por este motivo, no hay ninguna manera de comprobar que el compartimiento existía antes de llamar a GetCompartment . Para evitar esta situación, el cliente de instalación debe establecer el valor en algún valor inicial para que otros clientes puedan determinar si el compartimiento ya existe.
El método ITfCompartmentMgr::ClearCompartment se usa para quitar un compartimiento. Las referencias existentes al compartimiento se marcan como no válidas.
Obtención de compartimientos
Con la interfaz ITfCompartmentMgr , un cliente puede enumerar compartimientos llamando a ITfCompartmentMgr::EnumCompartments. Este método proporciona un objeto IEnumGUID que contiene los GUID de todos los compartimientos instalados.
Con el GUID del compartimiento, ITfCompartmentMgr::GetCompartment se usa para obtener un compartimiento específico. Este método proporciona al autor de la llamada un objeto ITfCompartment que puede obtener y establecer los datos del compartimiento.
Recepción de notificaciones de cambio de compartimiento
Cuando cambia el valor de un compartimiento, el administrador de TSF notifica a los receptores instalados que el compartimiento ha cambiado. Para instalar un receptor de aviso de cambio de compartimiento, cree un objeto que implemente ITfCompartmentEventSink. A continuación, llame a ITfCompartment::QueryInterface con IID_ITfSource en el objeto de compartimiento que se va a supervisar para obtener una interfaz ITfSource . Ahora llame a ITfSource::AdviseSink con IID_ITfCompartmentEventSink y el puntero al objeto ITfCompartmentEventSink . Cuando cambia el valor del compartimiento, se llama al ITfCompartmentEventSink::OnChange del receptor del aviso con el GUID del compartimiento. El receptor de avisos puede llamar a ITfCompartment::GetValue para obtener el nuevo valor.
Temas relacionados