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 实现必须具有 GetName 方法,该方法通过调用此 RegisterNamedModel 方法返回注册的名称。
语法
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
}
}
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |