Metodo IDataModelManager2::CreateTypedObjectReference (dbgmodel.h)
Il metodo CreateTypedObjectReference è semanticamente simile al metodo CreateTypedObject, ad eccezione del fatto che crea un riferimento al costrutto nativo/linguistico sottostante. Il riferimento creato è un oggetto che ha un tipo di ObjectTargetObjectReference. Non è un riferimento nativo perché il linguaggio sottostante potrebbe supportare (ad esempio, un & C++ o &&). È completamente possibile avere un oggetto ObjectTargetObjectReference a un riferimento C++.
Un oggetto di tipo ObjectTargetObjectReference può essere convertito nel valore sottostante tramite l'uso del metodo Dereference in IModelObject. Il riferimento può anche essere passato all'analizzatore di espressioni dell'host sottostante per assegnare nuovamente il valore in un linguaggio appropriato.
Sintassi
HRESULT CreateTypedObjectReference(
IDebugHostContext *context,
Location objectLocation,
IDebugHostType *objectType,
_COM_Errorptr_ IModelObject **object
);
Parametri
context
Contesto host di debug in cui si trova questo oggetto. Se non viene specificato alcun contesto esplicito, il contesto dell'oggetto appena creato erediterà dal contesto dell'argomento objectType. Un chiamante può passare il valore del marcatore speciale USE_CURRENT_HOST_CONTEXT per indicare che l'oggetto deve ricevere il contesto corrente nell'interfaccia utente del debugger.
objectLocation
Posizione dell'oggetto nello spazio indirizzi della destinazione di debug. Se la posizione è un indirizzo virtuale, la posizione può essere costruita dal client usando un offset a 64 bit nello spazio indirizzi; in caso contrario, il percorso deve essere recuperato da un'altra interfaccia host di debug.
objectType
Tipo dell'oggetto costruito. Il contesto del tipo verrà propagato all'oggetto appena creato se non viene passato alcun contesto esplicito nell'argomento di contesto.
object
Il riferimento all'oggetto appena creato verrà restituito qui.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o l'errore.
Commenti
Codice di esempio
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHostType> spType; /* get a type (see CreateTypedObject) */
Location creationLocation; /* get a location (see CreateTypedObject) */
ComPtr<IModelObject> spObjectRef;
if (SUCCEEDED(spManager->CreateTypedObjectReference(nullptr,
creationLocation,
spType.Get(),
&spObjectRef)))
{
// spObjectRef now contains a reference to the underlying object.
// This can be dereferenced to get the value or passed to the
// EE to do an assignment.
ComPtr<IModelObject> spObject;
if (SUCCEEDED(spObjectRef->Dereference(&spObject)))
{
// spObject now contains the object itself.
}
}
Requisiti
Requisito | Valore |
---|---|
Intestazione | dbgmodel.h |