Udostępnij za pośrednictwem


Przedziałów

Typy przedziałów

Istnieje kilka różnych typów przedziałów. Istnieje przedział globalny, a każdy menedżer wątków, menedżer dokumentów i kontekst mogą zawierać przedział.

Przedział globalny umożliwia klientom udostępnianie danych między procesami. Aby uzyskać globalnego menedżera przedziałów, wywołaj ITfThreadMgr::GetGlobalCompartment.

Menedżer wątków zawiera menedżera przedziałów, który zawiera przedziały na każdy wątek. Umożliwia to udostępnianie danych w wątku. Aby uzyskać menedżera przedziałów wątków, wywołaj ITfThreadMgr::QueryInterface za pomocą IID_ITfCompartmentMgr.

Każdy utworzony menedżer dokumentów zawiera również menedżera przedziałów. Umożliwia to udostępnianie danych w ramach określonego menedżera dokumentów. Aby uzyskać menedżera przedziałów dokumentów, wywołaj ITfDocumentMgr::QueryInterface za pomocą IID_ITfCompartmentMgr.

Każdy utworzony kontekst zawiera również menedżera przedziałów. Umożliwia to udostępnianie danych w określonym kontekście. Aby uzyskać menedżera przedziału kontekstu, wywołaj ITfContext::QueryInterface za pomocą IID_ITfCompartmentMgr.

Tworzenie i usuwanie przedziału

Przedział jest tworzony po raz pierwszy ITfCompartmentMgr::GetCompartment jest wywoływany z identyfikatorem GUID przedziału. Klient instalacji powinien ustawić początkową wartość przedziału przy użyciu ITfCompartment::SetValue. Dopóki wartość nie zostanie ustawiona, wartość przedziału jest pusta. W związku z tym nie ma możliwości sprawdzenia, czy przedział istniał przed wywołaniem GetCompartment. Aby uniknąć takiej sytuacji, klient instalacji powinien ustawić wartość na wartość początkową, aby inni klienci mogli określić, czy przedział już istnieje.

Metoda ITfCompartmentMgr::ClearCompartment służy do usuwania przedziału. Wszystkie istniejące odwołania do przedziału są oznaczone jako nieprawidłowe.

Uzyskiwanie przedziałów

Za pomocą interfejsuITfCompartmentMgrklient może wyliczać przedziały, wywołując ITfCompartmentMgr::EnumCompartments. Ta metoda udostępnia obiekt IEnumGUID zawierający identyfikatory GUID wszystkich zainstalowanych przedziałów.

Za pomocą identyfikatora GUID przedziału ITfCompartmentMgr::GetCompartment jest używany do uzyskania określonego przedziału. Ta metoda udostępnia obiekt wywołujący ITfCompartment, który może uzyskać i ustawić dane przedziału.

Otrzymywanie powiadomień o zmianie przedziału

Gdy wartość przedziału zmieni się, menedżer TSF powiadamia o wszelkich zainstalowanych ujściach, że przedział uległ zmianie. Aby zainstalować ujście zmiany przedziału, utwórz obiekt, który implementuje ITfCompartmentEventSink. Następnie wywołaj ITfCompartment::QueryInterface z IID_ITfSource w obiekcie przedziału, który ma być monitorowany w celu uzyskania interfejsuITfSource. Teraz wywołaj ITfSource::AdviseSink przy użyciu IID_ITfCompartmentEventSink i wskaźnik do obiektu ITfCompartmentEventSink. Gdy wartość przedziału zmieni się, doradca ujścia ITfCompartmentEventSink::OnChange jest wywoływany z identyfikatorem GUID przedziału. Ujście doradcy może wywołać ITfCompartment::GetValue, aby uzyskać nową wartość.

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange