Compartir a través de


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

El método CreateTypedintrinsicObject es similar al método CreateIntrinsicObject, excepto que permite que un tipo de idioma o nativo esté asociado a los datos y que se lleve junto con el valor boxizado. Esto permite que el modelo de datos represente construcciones como tipos de enumeración nativos (que simplemente son valores VT_UI* o VT_I*). Los tipos de puntero también se crean con este método. Un puntero nativo en el modelo de datos es una cantidad extendida de 64 bits cero que representa un desplazamiento en el espacio de direcciones virtuales del destino de depuración. Se conversión boxing dentro de un VT_UI8 y se crea con este método y un tipo que indica un puntero nativo o de lenguaje.

Sintaxis

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

Parámetros

intrinsicData

Variant que contiene el valor que se va a boxear dentro de un contenedor IModelObject. Tenga en cuenta que este método no admite construcciones VT_UNKNOWN. Todo lo que se pasa a este método debe expresarse como ObjectIntrinsic

type

Tipo de idioma o nativo del valor.

object

El valor recién boxizado (como IModelObject) se devolverá aquí.

Valor devuelto

Este método devuelve HRESULT, que indica que se ha realizado correctamente o no.

Observaciones

de código de ejemplo

ComPtr<IDataModelManager3> 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
encabezado de dbgmodel.h

Consulte también

de interfaz IDataModelManager3 de