IDataModelManager::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<IDataModelManager> 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

こちらもご覧ください

IDataModelManager インターフェイス