Condividi tramite


Metodo IDataModelManager2::AcquireNamedModel (dbgmodel.h)

AcquireNamedModel 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 specificato, verrà creato un stub e restituito al chiamante.

Qualsiasi elemento aggiunto al stub verrà aggiunto all'oggetto reale al momento in cui viene effettuata 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, verrà creato un oggetto stub, registrato temporaneamente con il nome specificato dall'argomento modelName e restituito qui. Se questo si è verificato, 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.

Commenti

Un chiamante che desidera estendere un modello di dati registrato in 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.

Come 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 all'altro.

Codice di esempio

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!
    }
}

Requisiti

Requisito Valore
Intestazione dbgmodel.h

Vedi anche

Interfaccia IDataModelManager2