Método IDataModelManager::CreateTypedObjectReference (dbgmodel.h)

El método CreateTypedObjectReference es semánticamente similar al método CreateTypedObject, excepto que crea una referencia a la construcción de lenguaje o nativo subyacente. La referencia creada es un objeto que tiene un tipo de ObjectTargetObjectReference. No es una referencia nativa, ya que el lenguaje subyacente podría admitir (por ejemplo, un & de C++ o &&). Es totalmente posible tener una referencia objectTargetObjectReference a una referencia de C++.

Un objeto de tipo ObjectTargetObjectReference se puede convertir en el valor subyacente mediante el uso del método Dereference en IModelObject. La referencia también se puede pasar al evaluador de expresiones del host subyacente para volver a asignarlo al valor de una manera adecuada.

Sintaxis

HRESULT CreateTypedObjectReference(
  IDebugHostContext           *context,
  Location                    objectLocation,
  IDebugHostType              *objectType,
  _COM_Errorptr_ IModelObject **object
);

Parámetros

context

Contexto de host de depuración en el que se encuentra este objeto. Si no se da ningún contexto explícito, el contexto del objeto recién creado heredará del contexto del argumento objectType. Un autor de la llamada puede pasar el valor de marcador especial USE_CURRENT_HOST_CONTEXT para indicar que el objeto debe recibir el contexto actual en la interfaz de usuario del depurador.

objectLocation

Ubicación del objeto en el espacio de direcciones del destino de depuración. Si la ubicación es una dirección virtual, el cliente puede construir la ubicación mediante un desplazamiento de 64 bits en el espacio de direcciones; de lo contrario: la ubicación debe recuperarse de otra interfaz de host de depuración.

objectType

Tipo del objeto que se está construyendo. El contexto del tipo se propagará al objeto recién creado si no se pasa ningún contexto explícito en el argumento context.

object

La referencia de objeto recién creada se devolverá aquí.

Valor devuelto

Este método devuelve HRESULT que indica éxito o error.

Comentarios

Código de ejemplo

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

Requisitos

Requisito Valor
Header dbgmodel.h

Consulte también

Interfaz IDataModelManager