Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die CreateTypedintrinsicObject-Methode ähnelt der CreateIntrinsicObject-Methode, mit der Ausnahme, dass ein systemeigener/sprachiger Typ den Daten zugeordnet und zusammen mit dem Boxwert übertragen werden kann. Auf diese Weise kann das Datenmodell Konstrukte wie systemeigene Enumerationstypen darstellen (die einfach VT_UI* oder VT_I*-Werte sind). Zeigertypen werden auch mit dieser Methode erstellt. Ein nativer Zeiger im Datenmodell ist eine erweiterte 64-Bit-Menge, die einen Offset in den virtuellen Adressraum des Debugziels darstellt. Es wird in einer VT_UI8 eingeschachtelt und mit dieser Methode erstellt und ein Typ, der einen systemeigenen/sprachlichen Zeiger angibt.
Syntax
HRESULT CreateTypedIntrinsicObject(
VARIANT *intrinsicData,
IDebugHostType *type,
IModelObject **object
);
Parameter
intrinsicData
A VARIANT containing the value which is will be boxd inside an IModelObject container. Beachten Sie, dass diese Methode VT_UNKNOWN Konstrukte nicht unterstützt. Alles, was an diese Methode übergeben wird, muss als ObjectIntrinsic ausdrucksfähig sein.
type
Der Native/Language-Typ des Werts.
object
Der neu eingeschachtelte Wert (als IModelObject) wird hier zurückgegeben.
Rückgabewert
Diese Methode gibt HRESULT zurück, das Erfolg oder Fehler angibt.
Bemerkungen
Beispielcode-
ComPtr<IDataModelManager> 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!
}
Anforderungen
Anforderung | Wert |
---|---|
Header- | dbgmodel.h |