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 |