IDataModelManager::AcquireNamedModel メソッド (dbgmodel.h)
これにより、既知のモデル名が検索され、その名前で登録されたデータ モデルが返されます。 指定された名前で登録されたモデルがない場合は、スタブが作成され、呼び出し元に返されることに注意してください。
スタブに追加されたものはすべて、登録が行われた時点で実際のオブジェクトに追加されます。
構文
HRESULT AcquireNamedModel(
PCWSTR modelName,
IModelObject **modelObject
);
パラメーター
modelName
登録済みデータ モデルを検索する名前。
modelObject
modelName 引数によって指定された名前で登録されたデータ モデルは、ここで返されます。 このようなデータ モデルが登録されていない場合は、スタブ オブジェクトが作成され、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!
}
}
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |