다음을 통해 공유


IDataModelManager2::RegisterNamedModel 메서드(dbgmodel.h)

RegisterNamedModel 메서드는 지정된 데이터 모델을 확장하려는 클라이언트에서 찾을 수 있도록 잘 알려진 이름으로 등록합니다. 이 API의 주요 목적은 데이터 모델을 이 잘 알려진 이름으로 등록된 모델을 검색하고 부모 모델을 추가하여 확장할 수 있는 것으로 게시하는 것입니다. modelName 인수에 전달된 문자열은 무엇이든 될 수 있지만(이름일 뿐) 다음 양식의 점으로 구분된 네임스페이스처럼 보이는 규칙이 있습니다.

• Debugger.Models.* - Data models which pertain to the debug target.  
• DataModel.Models.* - Data models which pertain to the core data model itself. 
   o DataModel.Models.Concepts.* - Data models which pertain to concepts in the data model.

이러한 이름의 예로는 Debugger.Models.Process가 있습니다. 디버거의 프로세스 개념이 등록된 이름입니다. 프로세스 자체를 확장할 수 있는 클라이언트는 확장성 지점을 Debugger.Models.Process.NamedExtensionPoint로 등록할 수 있습니다. 여기서 NamedExtensionPoint는 프로세스에 추가되는 의미 체계를 참조합니다.

지정된 데이터 모델이 이름으로 등록된 경우 해당 데이터 모델에 대한 IDataModelConcept 구현에는 이 RegisterNamedModel 메서드를 호출하여 등록된 이름을 반환하는 GetName 메서드가 있어야 합니다.

구문

HRESULT RegisterNamedModel(
  PCWSTR       modelName,
  IModelObject *modeObject
);

매개 변수

modelName

데이터 모델의 루트 네임스페이스가 여기에 반환됩니다.

modeObject

등록할 데이터 모델입니다.

반환 값

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

설명

예제 코드

ComPtr<IDataModelManager2> spManager;    /* get the data model manager */
ComPtr<IModelObject> spDataModelObject; /* get your data model object (see
                                           CreateDataModelObject) */

// If the model is registered under a name (e.g.: 
// Debugger.Models.Process.PrivateProcessExtension as below), the
// IDataModelConcept::GetName method must return one of the registration 
// names (the one the extension considers "canonical").  It is legal for an 
// object to be registered under multiple names.
if (SUCCEEDED(spManager->RegisterNamedModel(
    L"Debugger.Models.Process.PrivateProcessExtension", 
    spDataModelObject.Get()))
    )
{
    // The model object spDataModelObject is now registered and can be looked up 
    // under the name "Debugger.Models.Process.PrivateProcessExtension".
    // This means others can extend it by fetching that name.
    //
    // Fetch it back as example:
    ComPtr<IModelObject> spFetchedModel;
    if (SUCCEEDED(spManager->AcquireNamedModel(
        L"Debugger.Models.Process.PrivateProcessExtension", 
        &spFetchedModel))
        )
    {
        // spFetchedModel should be the same as spDataModelObject
    }
}

IDataModelManager2 인터페이스

요구 사항

요구 사항
헤더 dbgmodel.h