IDataModelManager::RegisterExtensionForTypeSignature メソッド (dbgmodel.h)
RegisterExtensionForTypeSignature メソッドは RegisterModelForTypeSignature メソッドに似ていますが、主に 1 つの違いがあります。 このメソッドに渡されるデータ モデルは、任意の型の正規ビジュアライザーではなく、その型のネイティブ/言語ビューの表示を引き継ぐものではありません。 このメソッドに渡されるデータ モデルは、指定された型シグネチャに一致する具象型に親として自動的に追加されます。
RegisterModelForTypeSignature メソッドとは異なり、特定の型 (または型のセット) の拡張として登録される同一またはあいまいな型シグネチャに制限はありません。 型シグネチャが特定の具象型インスタンスと一致するすべての拡張機能により、このメソッドを介して登録されたデータ モデルが、新しく作成されたオブジェクトに親モデルとして自動的にアタッチされます。 これにより、実際には、任意の数のクライアントが、新しいフィールドまたは機能を使用して型 (または型のセット) を拡張できます。
構文
HRESULT RegisterExtensionForTypeSignature(
IDebugHostTypeSignature *typeSignature,
IModelObject *dataModel
);
パラメーター
typeSignature
指定されたデータ モデルが拡張機能として登録される型シグネチャ。 具象型がこのシグネチャと一致するすべてのネイティブ/言語オブジェクトには、指定されたデータ モデルが自動的に親モデルとしてアタッチされます。
dataModel
指定された型シグネチャに一致する具象型を持つすべてのネイティブ/言語オブジェクトに、親モデルとして自動的に追加されるデータ モデル。
戻り値
このメソッドは、成功または失敗を示す HRESULT を返します。
注釈
サンプル コード
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHost> spHost; /* get the debug host */
ComPtr<IModelObject> spDataModel; /* create a data model (see
CreateDataModelObject) */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
// Create a signature to match MyType<*>
ComPtr<IDebugHostTypeSignature> spTypeSignature;
if (SUCCEEDED(spSym->CreateTypeSignature(L"MyType<*>", nullptr, &spTypeSignature)))
{
// Register the model for std::vector<*>
if (SUCCEEDED(spManager->RegisterExtensionForTypeSignature(
spTypeSignature.Get(),
spDataModel.Get())
)
{
// Every instance matching MyType<*> will now have spDataModel
// attached as the parent. This data model is considered an "extension"
// (adding properties). It will not be counted as a visualizer and
// will not "take over" the display of the type
}
}
}
要件
要件 | 値 |
---|---|
Header | dbgmodel.h |