IDataModelManager2::CreateIntrinsicObject-Methode (dbgmodel.h)
Die CreateIntrinsicObject-Methode ist die Methode, die systeminterne Werte in IModelObject einboxt. Der Aufrufer platziert den Wert in einer COM VARIANT-Datei 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 einzuboxen: Eigenschaftsaccessoren, Methoden, Kontexte usw. In solchen Fällen gibt die objectKind-Methode an, welche Art von IUnknown-basiertes Konstrukt das Objekt darstellt, und das PunkVal-Feld der übergebenen Variante ist der abgeleitete IUnknown-Typ. Der Typ muss statisch in die entsprechende Modellschnittstelle (z. B. IModelPropertyAccessor, IModelMethod, IDebugHostContext usw.) umgewandelt werden können.
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 eingeboxt wird. Für normale systeminterne Objekte, die sich durch den Variantentyp unterscheiden, wird ObjectIntrinsic hier übergeben. Für andere, die effektiv von IUnknown abgeleitete Schnittstellen sind, ist der Objekttyp einer der Werte in der ModelObjectKind-Enumeration, und die Schnittstelle in der VARIANT muss übereinstimmen.
intrinsicData
Ein VARIANT-Wert, der den Wert enthält, der in einem IModelObject-Container schachtelt wird.
object
Der neu eingeboxte Wert (als IModelObject) wird hier zurückgegeben.
Rückgabewert
Diese Methode gibt HRESULT zurück, das auf Erfolg oder Fehler hinweist.
Hinweise
Beispielcode
ComPtr<IDataModelManager2> 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.
}
IDataModelManager2-Schnittstelle
Anforderungen
Anforderung | Wert |
---|---|
Header | dbgmodel.h |