IDataModelManager4::CreateIntrinsicObject-Methode (dbgmodel.h)
Die CreateIntrinsicObject-Methode ist die Methode, die systeminterne Werte in IModelObjectboxt. Der Aufrufer platziert den Wert in einer COM VARIANT und ruft diese Methode auf. Der Datenmodell-Manager gibt eine IModelObject- zurück, die das Objekt darstellt. Beachten Sie, dass diese Methode auch verwendet wird, um grundlegende IUnknown-basierte Typen zu boxen: Eigenschaftenaccessoren, Methoden, Kontexte usw. In solchen Fällen gibt die objectKind-Methode an, welche Art von IUnknown-basierten 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, IDebugHostContextusw. in Bearbeitung sein.
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 speziellen 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. Für normale systeminterne Objekte, die sich vom 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
A VARIANT containing the value which is will be boxed inside an IModelObject container.
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<IDataModelManager4> 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 |