구획

구획 유형

구획에는 여러 가지 유형이 있습니다. 전역 구획이 있으며 각 스레드 관리자, 문서 관리자 및 컨텍스트에는 구획이 포함될 수 있습니다.

전역 구획을 사용하면 클라이언트가 프로세스 간에 데이터를 공유할 수 있습니다. 전역 구획 관리자를 가져오려면 ITfThreadMgr::GetGlobalCompartment를 호출합니다.

스레드 관리자는 스레드별로 구획을 포함하는 구획 관리자를 포함합니다. 이렇게 하면 스레드 내에서 데이터를 공유할 수 있습니다. 스레드 관리자 구획 관리자를 가져오려면 IID_ITfCompartmentMgr 사용하여 ITfThreadMgr::QueryInterface 를 호출합니다.

만든 각 문서 관리자에는 구획 관리자도 포함됩니다. 이렇게 하면 특정 문서 관리자 내에서 데이터를 공유할 수 있습니다. 문서 관리자 구획 관리자를 가져오려면 IID_ITfCompartmentMgr 사용하여 ITfDocumentMgr::QueryInterface 를 호출합니다.

만든 각 컨텍스트에는 구획 관리자도 포함됩니다. 이렇게 하면 특정 컨텍스트 내에서 데이터를 공유할 수 있습니다. 컨텍스트 구획 관리자를 가져오려면 IID_ITfCompartmentMgr 사용하여 ITfContext::QueryInterface 를 호출합니다.

구획 만들기 및 삭제

구획 GUID를 사용하여 ITfCompartmentMgr::GetCompartment 를 처음 호출할 때 구획이 만들어집니다. 설치 클라이언트는 ITfCompartment::SetValue를 사용하여 구획의 초기 값을 설정해야 합니다. 값이 설정될 때까지 구획 값은 비어 있습니다. 이 때문에 GetCompartment 가 호출되기 전에 구획이 있는지 확인할 방법이 없습니다. 이러한 상황을 방지하려면 다른 클라이언트가 구획이 이미 있는지 확인할 수 있도록 설치 클라이언트에서 값을 초기 값으로 설정해야 합니다.

ITfCompartmentMgr::ClearCompartment 메서드는 구획을 제거하는 데 사용됩니다. 구획에 대한 기존 참조가 유효하지 않은 것으로 표시됩니다.

구획 가져오기

클라이언트는 ITfCompartmentMgr 인터페이스를 사용하여 ITfCompartmentMgr::EnumCompartments를 호출하여 구획을 열거할 수 있습니다. 이 메서드는 설치된 모든 구획의 GUID를 포함하는 IEnumGUID 개체를 제공합니다.

구획 GUID를 사용하여 ITfCompartmentMgr::GetCompartment 를 사용하여 특정 구획을 가져옵니다. 이 메서드는 구획 데이터를 가져오고 설정할 수 있는 ITfCompartment 개체를 호출자에게 제공합니다.

구획 변경 알림 받기

구획 값이 변경되면 TSF 관리자는 설치된 모든 조언 싱크에 구획이 변경되었음을 알 수 있습니다. 구획 변경 자문 싱크를 설치하려면 ITfCompartmentEventSink를 구현하는 개체를 만듭니다. 그런 다음 모니터링할 구획 개체의 IID_ITfSource 사용하여 ITfCompartment::QueryInterface 를 호출하여 ITfSource 인터페이스를 가져옵니다. 이제 IID_ITfCompartmentEventSink ITfCompartmentEventSink 개체에 대한 포인터를 사용하여 ITfSource::AdviseSink를 호출합니다. 구획의 값이 변경되면 구획의 GUID를 사용하여 advise 싱크의 ITfCompartmentEventSink::OnChange 가 호출됩니다. advise 싱크는 ITfCompartment::GetValue 를 호출하여 새 값을 가져올 수 있습니다.

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange