IDataModelManager3::CreateTypedObjectReference-Methode (dbgmodel.h)
Die CreateTypedObjectReference-Methode ähnelt semantisch der CreateTypedObject-Methode, mit der Ausnahme, dass ein Verweis auf das zugrunde liegende systemeigene/Sprachkonstrukt erstellt wird. Der erstellte Verweis ist ein Objekt mit einer Art ObjectTargetObjectReference. Es handelt sich nicht um einen nativen Verweis, da die zugrunde liegende Sprache unterstützt werden kann (z. B. ein C++-& oder &&). Es ist völlig möglich, einen ObjectTargetObjectReference-Verweis auf einen C++-Verweis zu verwenden.
Ein Objekt der Art ObjectTargetObjectReference kann mithilfe der Dereference-Methode für IModelObjectin den zugrunde liegenden Wert konvertiert werden. Der Verweis kann auch an den Ausdrucksauswert des zugrunde liegenden Hosts übergeben werden, um dem Wert entsprechend zuzuweisen.
Syntax
HRESULT CreateTypedObjectReference(
IDebugHostContext *context,
Location objectLocation,
IDebugHostType *objectType,
_COM_Errorptr_ IModelObject **object
);
Parameter
context
Der Debughostkontext, in dem sich dieses Objekt befindet. Wenn kein expliziter Kontext angegeben wird, erbt der Kontext des neu erstellten Objekts vom Kontext des ObjectType-Arguments. Ein Aufrufer kann den speziellen Markerwert USE_CURRENT_HOST_CONTEXT übergeben, um anzugeben, dass das Objekt den Kontext empfangen soll, der sich auf der Benutzeroberfläche des Debuggers befindet.
objectLocation
Die Position des Objekts im Adressraum des Debugziels. Wenn der Standort eine virtuelle Adresse ist, kann der Standort vom Client mithilfe eines 64-Bit-Offsets in den Adressraum erstellt werden. andernfalls muss der Speicherort von einer anderen Debughostschnittstelle abgerufen werden.
objectType
Der Typ des zu erstellenden Objekts. Der Kontext des Typs wird an das neu erstellte Objekt weitergegeben, wenn kein expliziter Kontext im Kontextargument übergeben wird.
object
Der neu erstellte Objektverweis wird hier zurückgegeben.
Rückgabewert
Diese Methode gibt HRESULT zurück, das Erfolg oder Fehler angibt.
Bemerkungen
Beispielcode-
ComPtr<IDataModelManager3> spManager; /* get the data model manager */
ComPtr<IDebugHostType> spType; /* get a type (see CreateTypedObject) */
Location creationLocation; /* get a location (see CreateTypedObject) */
ComPtr<IModelObject> spObjectRef;
if (SUCCEEDED(spManager->CreateTypedObjectReference(nullptr,
creationLocation,
spType.Get(),
&spObjectRef)))
{
// spObjectRef now contains a reference to the underlying object.
// This can be dereferenced to get the value or passed to the
// EE to do an assignment.
ComPtr<IModelObject> spObject;
if (SUCCEEDED(spObjectRef->Dereference(&spObject)))
{
// spObject now contains the object itself.
}
}
Anforderungen
Anforderung | Wert |
---|---|
Header- | dbgmodel.h |