IDataModelManager2::AcquireNamedModel メソッド (dbgmodel.h)
AcquireNamedModel は既知のモデル名を検索し、その名前で登録されたデータ モデルを返します。 指定された名前で登録されたモデルがない場合は、スタブが作成され、呼び出し元に返されることに注意してください。
スタブに追加されたものはすべて、登録時に実際のオブジェクトに追加されます。
構文
HRESULT AcquireNamedModel(
PCWSTR modelName,
IModelObject **modelObject
);
パラメーター
modelName
登録済みデータ モデルを検索する名前。
modelObject
modelName 引数によって指定された名前で登録されたデータ モデルは、ここで返されます。 そのようなデータ モデルが登録されていない場合、スタブ オブジェクトが作成され、modelName 引数によって指定された名前で一時的に登録され、ここで返されます。 このような場合、RegisterNamedModel メソッドの呼び出しによって実際のオブジェクトが登録されると、スタブ オブジェクトに加えられた変更は実際のデータ モデルに実際に移動されます。
戻り値
このメソッドは HRESULT を返します。
注釈
指定された名前で登録されているデータ モデルを拡張する呼び出し元は、拡張するデータ モデルのオブジェクトを取得するために AcquireNamedModel メソッドを呼び出します。 このメソッドは、RegisterNamedModel メソッドの前の呼び出しによって登録されたデータ モデルを返します。
AcquireNamedModel メソッドの主な目的はモデルの拡張であるため、指定された名前でモデルがまだ登録されていない場合、このメソッドは特別な動作をします。 指定された名前でモデルがまだ登録されていない場合は、スタブ オブジェクトが作成され、指定された名前で一時的に登録され、呼び出し元に返されます。 RegisterNamedModel メソッドの呼び出しによって実際のデータ モデルが登録されると、スタブ オブジェクトに加えられた変更は実際のモデルに対して行われます。 これにより、相互に拡張されるコンポーネントから多くの読み込み順序の依存関係の問題が削除されます。
サンプル コード
ComPtr<IDataModelManager2> 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 |