IDataModelManager::CreateIntrinsicObject-Methode (dbgmodel.h)

Die CreateIntrinsicObject-Methode ist die Methode, die systeminterne Werte in IModelObject eingibt. Der Aufrufer platziert den Wert in einem COM VARIANT-Element und ruft diese Methode auf. Der Datenmodell-Manager gibt ein IModelObject zurück, das das Objekt darstellt. Beachten Sie, dass diese Methode auch verwendet wird, um grundlegende IUnknown-basierte Typen einzuschachteln: Eigenschaftenaccessoren, Methoden, Kontexte usw. In solchen Fällen gibt die objectKind-Methode an, welche Art von IUnknown-basiertem Konstrukt das Objekt darstellt, und das PunkVal-Feld der übergebenen Variante ist der abgeleitete IUnknown-Typ. Der Typ muss statisch in die entsprechende Modellschnittstelle umgewandelt werden können (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 ModelObjectKind-Enumeration angegeben.

Syntax

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

Parameter

objectKind

Gibt die Art des Objekts an, das geschachtelt wird. Für normale intrinsische Funktionen, die sich je nach Variantentyp unterscheiden, wird hier ObjectIntrinsic übergeben. Für andere, die tatsächlich IUnknown-abgeleitete Schnittstellen sind, ist der Objekttyp einer der Werte in der ModelObjectKind-Enumeration, und die Schnittstelle in variant muss übereinstimmen.

intrinsicData

Ein VARIANT-Wert, der den Wert enthält, der in einem IModelObject-Container eingeschachtelt wird.

object

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

Rückgabewert

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

Hinweise

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.
}

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDataModelManager-Schnittstelle