IDataModelManager::AcquireNamedModel 메서드(dbgmodel.h)
잘 알려진 모델 이름을 조회하고 해당 이름으로 등록된 데이터 모델을 반환합니다. 제공된 이름으로 등록된 모델이 없으면 스텁이 만들어지고 호출자에게 반환됩니다.
스텁에 추가된 모든 항목은 등록이 이루어질 때 실제 개체에 추가됩니다.
구문
HRESULT AcquireNamedModel(
PCWSTR modelName,
IModelObject **modelObject
);
매개 변수
modelName
등록된 데이터 모델을 조회할 이름입니다.
modelObject
modelName 인수에서 지정한 이름으로 등록된 데이터 모델이 여기에 반환됩니다. 이러한 데이터 모델이 등록되지 않은 경우 stub 개체가 만들어지고 modelName 인수에서 지정한 이름으로 일시적으로 등록되고 여기에 반환됩니다. 이러한 경우 실제 개체가 RegisterNamedModel 메서드 호출을 통해 등록될 때 스텁 개체에 적용된 변경 내용은 실제로 실제 데이터 모델로 이동됩니다.
반환 값
이 메서드는 HRESULT를 반환합니다.
설명
지정된 이름으로 등록된 데이터 모델을 확장하려는 호출자는 확장하려는 데이터 모델에 대한 개체를 검색하기 위해 AcquireNamedModel 메서드를 호출합니다. 이 메서드는 RegisterNamedModel 메서드에 대한 이전 호출을 통해 등록된 데이터 모델을 반환합니다.
AcquireNamedModel 메서드의 주요 목적은 모델을 확장하는 것이므로 지정된 이름으로 아직 등록된 모델이 없는 경우 이 메서드에는 특별한 동작이 있습니다. 지정된 이름 아래에 아직 등록된 모델이 없는 경우 스텁 개체가 만들어지고 지정된 이름으로 일시적으로 등록되고 호출자에게 반환됩니다. RegisterNamedModel 메서드 호출을 통해 실제 데이터 모델을 등록하면 스텁 개체에 적용된 모든 변경 내용이 실제 모델에 적용됩니다. 이렇게 하면 서로 확장되는 구성 요소에서 많은 부하 순서 종속성 문제가 제거됩니다.
예제 코드
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IModelObject> spExtensionModel; /* create a data model object you want
to use as an extension (see
CreateDataModelObject) */
// Get the process model so we can extend it
ComPtr<IModelObject> spProcessModel;
if (SUCCEEDED(spManager->AcquireNamedModel(L"Debugger.Models.Process",
&spProcessModel)))
{
// We have the process model and can extend it. Even if the name we queried
// for is *NOT* yet registered, we can extend what gets returned (a stub)
// and the extensions on it will be moved to the real object
// once RegisterNamedModel() is called.
if (SUCCEEDED(spProcessModel->AddParentModel(spExtensionModel.Get(),
nullptr,
false)))
{
// We have successfully extended the debugger's concept of a
// process with whatever we have in spExtensionModel!
}
}
요구 사항
요구 사항 | 값 |
---|---|
헤더 | dbgmodel.h |