IModelObject::SetContextForDataModel 메서드(dbgmodel.h)

SetContextForDataModel 메서드는 데이터 모델을 구현하여 구현 데이터를 instance 개체에 배치하는 데 사용됩니다. 개념적으로 각 IModelObject(단순성을 위해 instance 호출)에는 해시 상태 테이블이 포함되어 있습니다. 해시 테이블은 instance 부모 모델 계층 구조에 있는 다른 IModelObject(단순성을 위해 데이터 모델 호출)에 의해 인덱싱됩니다. 이 해시에 포함된 값은 IUnknown instance 나타내는 참조 계산된 상태 정보 집합입니다. 데이터 모델이 instance 이 상태를 설정하면 속성 getter와 같은 작업 중에 검색할 수 있는 임의의 구현 데이터를 저장할 수 있습니다.

확장(또는 다른 데이터 모델 구성 요소)이 일부 가상 구문을 형식으로 간주할 수 있는 것으로 나타내려는 경우가 많습니다. 디버거의 프로세스 개체 노출이 이러한 예 중 하나입니다. 구현은 형식 정의의 개념을 데이터 모델에 매핑하는 경우가 많습니다. 데이터 모델에는 개체에 노출되는 항목(예: 프로세스 이름, 프로세스 ID, 스레드 수, 스레드 등)에 대한 속성 getter가 포함됩니다. 이 데이터 모델의 instance 만들 때 빈 가상 개체가 생성되고 데이터 모델(또는 형식 정의를 고려할 수 있음)이 부모 모델로 연결됩니다. 경우에 따라 개체를 고유하게 식별하고 모든 데이터 모델의 속성 getter를 구현하기에 충분한 정보가 instance 개체에 직접 배치될 수 있습니다. 프로세스 예제에서 프로세스 ID는 instance ID라는 키로 저장될 수 있습니다. 예를 들어 프로세스 이름에 대해 데이터 모델의 getter가 호출되면 구현은 GetKeyValue 메서드를 호출하여 프로세스 ID를 가져올 수 있습니다. 이름을 반환하는 데 필요한 구현은 PID에서 수행할 수 있습니다. 다른 경우에는 형식을 구현하는 데 필요한 상태가 더 복잡하거나, 다른 네이티브 구문을 포함하거나, 다른 이유로 instance 키로 설정할 수 없습니다. 이러한 경우 데이터 모델은 IUnknown 파생 클래스를 생성하고, 구현 데이터를 이 클래스 내에 배치하고, 구현 데이터를 instance SetContextForDataModel 메서드를 호출하여 구현 데이터를 instance 개체와 연결합니다. instance 소멸되면 상태 클래스의 참조 수가 해제되고 필요에 따라 해제됩니다.

구문

HRESULT SetContextForDataModel(
  IModelObject *dataModelObject,
  IUnknown     *context
);

매개 변수

dataModelObject

상태가 instance 개체에 저장되는 데이터 모델을 나타내는 IModelObject입니다. 이는 사실상 연결된 상태 개체에 대한 해시 키입니다.

context

instance 연결된 상태입니다. 이 (및 다른 인터페이스 등 지원)의 정확한 의미는 이 상태를 설정하기 위해 호출하는 데이터 모델에 달려 있습니다. 유일한 요구 사항은 이러한 상태가 COM 참조 개수입니다.

반환 값

이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.

설명

코드 예제

ComPtr<IModelObject> spObject;          /* get an object */
ComPtr<IModelObject> spDataModelObject; /* get an attached data model (from earlier
                                           AddParentModel or from GetParentModel) anywhere in 
                                           the ancestor tree */

// Context data must be IUnknown derived.  Otherwise, implementation is opaque to the data model.
class MyContextData :
    public Microsoft::WRL::RuntimeClass<
        Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
        IUnknown
        >
{
    /* put whatever you want here */
};

ComPtr<MyContextData> spContextData = Microsoft::WRL::Make<MyContextData>();
if (SUCCEEDED(spObject->SetContextForDataModel(spDataModelObject.Get(), spContextData.Get())))
{
    // There is now context data associated with spObject (an instance) for 
    // spDataModelObject (a parent model).  This can be fetched via
    // GetContextForDataModel.  Note that spObject and spDataModelObject only need t
    // to be related.  The model does not need to be an immediate parent.
}

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IModelObject 인터페이스