Compartilhar via


Método IDataModelManager4::CreateTypedIntrinsicObject (dbgmodel.h)

O método CreateTypedintrinsicObject é semelhante ao método CreateIntrinsicObject, exceto por permitir que um tipo nativo/idioma seja associado aos dados e levado junto com o valor em caixa. Isso permite que o modelo de dados represente constructos como tipos de enumeração nativos (que são simplesmente valores VT_UI* ou VT_I*). Tipos de ponteiro também são criados com esse método. Um ponteiro nativo no modelo de dados é uma quantidade de 64 bits estendida zero que representa um deslocamento para o espaço de endereço virtual do destino de depuração. Ele está em caixa dentro de um VT_UI8 e é criado com esse método e um tipo que indica um ponteiro nativo/idioma.

Sintaxe

HRESULT CreateTypedIntrinsicObject(
  VARIANT        *intrinsicData,
  IDebugHostType *type,
  IModelObject   **object
);

Parâmetros

intrinsicData

Uma VARIANT que contém o valor que será colocado em caixa dentro de um contêiner IModelObject. Observe que esse método não dá suporte a constructos de VT_UNKNOWN. Qualquer coisa passada para esse método deve ser expressável como ObjectIntrinsic

type

O tipo nativo/idioma do valor.

object

O valor de caixa recente (como um IModelObject) será retornado aqui.

Valor de retorno

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

Observações

de código de exemplo

ComPtr<IDataModelManager4> spManager; /* get the data model manager */
ComPtr<IDebugHostType> spEnumType;   /* get an enum type (see CreateTypedObject) */
ComPtr<IDebugHostType> spPtrType;    /* get a pointer type (see CreateTypedObject) */

// Box an enum
VARIANT vtEnumValue;
vtEnumValue.vt = VT_I4;
vtEnumValue.lVal = 2;

ComPtr<IModelObject> spEnumValue;
if (SUCCEEDED(spManager->CreateTypedIntrinsicObject(&vtEnumValue, 
                                                    spEnumType.Get(), 
                                                    &spEnumValue)))
{
    // spEnumValue now contains the value '2' expressed as the enum type 
    // in spEnumType.  The value will still present as 2 and operate as any other int.
    // A type query on the object will, however, yield the enum type.
}

// Box a pointer.  All pointers are represented as unsigned 64-bit values.  
// 32-bit pointers are **ZERO EXTENDED** to 64-bits.
VARIANT vtPtrValue;
vtPtrValue.vt = VT_UI8;
vtPtrValue.ullVal = 0x100; // the pointer address

ComPtr<IModelObject> spPtrValue;
if (SUCCEEDED(spManager->CreateTypedIntrinsicObject(&vtPtrValue, spPtrType.Get(), &spPtrValue)))
{
    // spPtrValue now contains a <TYPE (POINTER)>(0x100).  You can fetch 
    // the pointer address through standard means of GetIntrinsicValue(As).
    // Dereference() will work on spPtrValue!
}

Requisitos

Requisito Valor
cabeçalho dbgmodel.h

Consulte também

interface IDataModelManager4