IDataModelManager::CreateIntrinsicObject-Methode (dbgmodel.h)

Die CreateIntrinsicObject-Methode ist die Methode, die systeminterne Werte in IModelObject eingibt. Der Aufrufer platziert den Wert in einer COM VARIANT und ruft diese Methode auf. Der Datenmodell-Manager gibt ein IModelObject zurück, das das Objekt darstellt. Beachten Sie, dass diese Methode auch zum Boxen grundlegender IUnknown-basierter Typen verwendet wird: Eigenschaftenzugriffer, Methoden, Kontexte usw. In solchen Fällen gibt die ObjectKind-Methode an, welche Art von IUnknown basierendes Konstrukt das Objekt darstellt, und das PunkVal-Feld der übergebenen Variante ist der abgeleitete IUnknown-Typ. Der Typ muss statisch in die entsprechende Modellschnittstelle umsetzbar sein (z. B. IModelPropertyAccessor, IModelMethod, IDebugHostContext usw.).

Die VARIANT-Typen, die von dieser Methode unterstützt werden, sind VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR und VT_UNKNOWN (für einen spezialisierten Satz von IUnknown abgeleiteten Typen wie durch die Enumeration ModelObjectKind angegeben.

Syntax

HRESULT CreateIntrinsicObject(
  ModelObjectKind objectKind,
  VARIANT         *intrinsicData,
  IModelObject    **object
);

Parameter

objectKind

Gibt die Art des Objekts an, das boxt wird. Bei normalen Systeminternen, die sich vom Variantentyp unterscheiden, wird ObjectIntrinsic hier übergeben. Für andere, die effektiv IUnknown abgeleitete Schnittstellen sind, ist der Objekttyp einer der Werte in der ModelObjectKind-Enumeration und die Schnittstelle in der VARIANT muss übereinstimmen.

intrinsicData

EINE VARIANT, die den Wert enthält, der in einem IModelObject-Container boxen wird.

object

Der neu boxende Wert (als IModelObject) wird hier zurückgegeben.

Rückgabewert

Diese Methode gibt HRESULT zurück, die den Erfolg oder Fehler angibt.

Bemerkungen

Beispielcode

ComPtr<IDataModelManager> spManager; /* get the data model manager */

VARIANT vtValue;
vtValue.vt = VT_I4;
vtValue.lVal = 42;

// If the object is an VT_UNKNOWN, the first argument to CreateIntrinsicObject
// indicates what KIND of IUnknown.  For example, ObjectPropertyAccessor would 
// indicate IModelPropertyAccessor.  ObjectMethod would indicate IModelMethod, etc...
ComPtr<IModelObject> spValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue)))
{
    // spValue now contains the object (boxed) representation of the int value 42.
}

Requirements (Anforderungen)

   
Header dbgmodel.h

Weitere Informationen

IDataModelManager-Schnittstelle