Método IDataModelManager4::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<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 |
---|---|
encabezado de |
dbgmodel.h |
Consulte también