Compartilhar via


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

O método CreateTypedObjectReference é semanticamente semelhante ao método CreateTypedObject, exceto pelo fato de criar uma referência ao constructo nativo/de linguagem subjacente. A referência criada é um objeto que tem um tipo de ObjectTargetObjectReference. Não é uma referência nativa, pois a linguagem subjacente pode dar suporte (por exemplo: um & C++ ou &&). É totalmente possível ter um ObjectTargetObjectReference para uma referência do C++.

Um objeto do tipo ObjectTargetObjectReference pode ser convertido no valor subjacente por meio do uso do método Dereference em IModelObject. A referência também pode ser passada para o avaliador de expressão do host subjacente para atribuir de volta ao valor de uma maneira apropriada.

Sintaxe

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

Parâmetros

context

O contexto do host de depuração no qual esse objeto está localizado. Se nenhum contexto explícito for fornecido, o contexto do objeto recém-criado herdará do contexto do argumento objectType. Um chamador pode passar o valor de marcador especial USE_CURRENT_HOST_CONTEXT para indicar que o objeto deve receber o contexto atual na interface do usuário do depurador.

objectLocation

O local do objeto no espaço de endereço do destino de depuração. Se o local for um endereço virtual, o local poderá ser construído pelo cliente usando um deslocamento de 64 bits para o espaço de endereço; caso contrário, o local deve ser recuperado de outra interface de host de depuração.

objectType

O tipo do objeto que está sendo construído. O contexto do tipo será propagado para o objeto recém-criado se nenhum contexto explícito for passado no argumento de contexto.

object

A referência de objeto recém-criada será retornada aqui.

Retornar valor

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Código de exemplo

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
Cabeçalho dbgmodel.h

Confira também

Interface IDataModelManager