(dbgmodel.h) IDataModelManager::GetModelForType 方法
GetModelForType 方法會傳回數據模型,這是指定類型實例的正式可視化檢視。 實際上,這個方法會尋找與 RegisterModelForTypeSignature 方法先前呼叫一起註冊的最佳相符類型簽章,並傳回相關聯的數據模型。
語法
HRESULT GetModelForType(
IDebugHostType *type,
IModelObject **dataModel,
IDebugHostTypeSignature **typeSignature,
IDebugHostSymbolEnumerator **wildcardMatches
);
參數
type
要尋找透過 RegisterModelForTypeSignature 方法之前呼叫註冊的最佳標準可視化檢視的具體型別實例。
dataModel
此數據模型是由透過先前呼叫 RegisterModelForTypeSignature 所註冊的最佳比對型別簽章所決定的指定類型實例標準可視化檢視,將會在這裡傳回。 此數據模型會自動附加至以類型自變數所指定的型別所建立的任何原生/語言物件。
typeSignature
與 型別相符的類型簽章,導致我們從先前呼叫 RegisterModelForTypeSignature 與傳回的類型簽章傳回註冊的數據模型。
wildcardMatches
如果 typeSignature 自變數中傳回的簽章中有通配符,則會在這裡傳回通配符與類型自變數中指定之具體類型實例之間所有相符專案的列舉值。
傳回值
這個方法會傳回表示成功或失敗的 HRESULT。
備註
範例程式碼
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHostModule> spModule; /* get a module */
// Find the type of "MyType<int>" within the module
ComPtr<IDebugHostType> spType;
if (SUCCEEDED(spModule->FindTypeByName(L"MyType<int>", &spType)))
{
// Find the canonical visualizer which would be applied to MyType<int>
ComPtr<IModelObject> spDataModel;
ComPtr<IDebugHostTypeSignature> spSignature;
ComPtr<IDebugHostSymbolEnumerator> spWildcardMatches;
if (SUCCEEDED(spManager->GetModelForType(spType.Get(),
&spDataModel,
&spSignature,
&spWildcardMatches)))
{
// There is a visualizer which matched.
// spDataModel is the data model object which was registered as
// the canonical visualizer (RegisterModelForTypeSignature)
// spSignature is the signature which that data model was registered
// against (e.g.: created for MyType<*> via
// CreateTypeSignature/RegisterModelForTypeSignature)
// spWildcardMatches is an enumerator of the wildcard matches between
// the specific type spType and the signature spSignature (here
// int matched *, so there will be one item -- the type 'int' in
// the enumerator)
}
規格需求
需求 | 值 |
---|---|
標頭 | dbgmodel.h |