車廂
區間類型
有數種不同的區間類型。 有全域區間,而且每個執行緒管理員、檔管理員和內容都可以包含區間。
全域區間可讓用戶端跨進程共用資料。 若要取得全域區間管理員,請呼叫 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來列舉區間。 這個方法提供 IEnumGUID 物件,其中包含所有已安裝區間的 GUID。
使用區間 GUID , ITfCompartmentMgr::GetCompartment 可用來取得特定的區間。 這個方法會為呼叫端提供可取得和設定區間資料的 ITfCompartment 物件。
接收區間變更通知
當區間的值變更時,TSF 管理員會通知任何已安裝的通知接收,指出區間已變更。 若要安裝區間變更建議接收,請建立實作 ITfCompartmentEventSink的物件。 然後呼叫 ITfCompartment::QueryInterface ,並在要監視的區間物件上IID_ITfSource,以取得 ITfSource 介面。 現在,使用 IID_ITfCompartmentEventSink 和ITfCompartmentEventSink物件的指標呼叫ITfSource::AdviseSink。 當區間的值變更時,會使用區間的 GUID 呼叫建議接收的 ITfCompartmentEventSink::OnChange 。 建議接收可以呼叫 ITfCompartment::GetValue 以取得新的值。
相關主題