Metodo IDataModelManager::AcquireNamedModel (dbgmodel.h)
Cerca un nome di modello noto e restituisce il modello di dati registrato da tale nome. Si noti che se non è presente alcun modello registrato dal nome fornito, verrà creato uno stub e restituito al chiamante.
Qualsiasi elemento aggiunto allo stub verrà aggiunto all'oggetto reale al momento dell'esecuzione di una registrazione.
Sintassi
HRESULT AcquireNamedModel(
PCWSTR modelName,
IModelObject **modelObject
);
Parametri
modelName
Nome per il quale cercare un modello di dati registrato.
modelObject
Il modello di dati registrato con il nome specificato dall'argomento modelName verrà restituito qui. Se non viene registrato alcun modello di dati di questo tipo, verrà creato un oggetto stub, registrato temporaneamente con il nome specificato dall'argomento modelName e restituito qui. In tal caso, quando l'oggetto reale viene registrato tramite una chiamata al metodo RegisterNamedModel, le modifiche apportate all'oggetto stub sono, in effetti, spostate nel modello di dati reale.
Valore restituito
Questo metodo restituisce HRESULT.
Osservazioni
Un chiamante che desidera estendere un modello di dati registrato con un determinato nome chiama il metodo AcquireNamedModel per recuperare l'oggetto per il modello di dati che desidera estendere. Questo metodo restituirà qualsiasi modello di dati registrato tramite una chiamata precedente al metodo RegisterNamedModel.
Poiché lo scopo principale del metodo AcquireNamedModel è estendere il modello, questo metodo ha un comportamento speciale se non è ancora stato registrato alcun modello con il nome specificato. Se non è ancora stato registrato alcun modello con il nome specificato, viene creato un oggetto stub, registrato temporaneamente con il nome specificato e restituito al chiamante. Quando il modello di dati reale viene registrato tramite una chiamata al metodo RegisterNamedModel, tutte le modifiche apportate all'oggetto stub sono, in effetti, apportate al modello reale. In questo modo vengono rimossi molti problemi di dipendenza dell'ordine di carico dai componenti che si estendono l'uno dall'altro.
codice di esempio
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!
}
}
Fabbisogno
Requisito | Valore |
---|---|
intestazione | dbgmodel.h |