IDataModelManager::CreateTypedObjectReference-Methode (dbgmodel.h)
Die CreateTypedObjectReference-Methode ähnelt semantisch der CreateTypedObject-Methode, mit der Ausnahme, dass sie einen Verweis auf das zugrunde liegende Native/Language-Konstrukt erstellt. Der erstellte Verweis ist ein Objekt, das über eine Art ObjectTargetObjectReference verfügt. Es handelt sich nicht um einen nativen Verweis, da die zugrunde liegende Sprache möglicherweise unterstützt wird (z. B. ein C++-& oder &&). Es ist durchaus möglich, über eine ObjectTargetObjectReference auf einen C++-Verweis zu verfügen.
Ein Objekt vom Typ ObjectTargetObjectReference kann mithilfe der Dereference-Methode auf IModelObject in den zugrunde liegenden Wert konvertiert werden. Der Verweis kann auch an den Ausdrucksauswerter des zugrunde liegenden Hosts übergeben werden, um dem Wert in einer sprachgerechten Weise wieder 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 arguments objectType. Ein Aufrufer kann den speziellen Markerwert USE_CURRENT_HOST_CONTEXT übergeben, um anzugeben, dass das Objekt den Kontext empfangen soll, der auf der Benutzeroberfläche des Debuggers aktuell ist.
objectLocation
Die Position des Objekts im Adressraum des Debugziels. Wenn es sich bei dem Standort um eine virtuelle Adresse handelt, 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 auf Erfolg oder Fehler hinweist.
Hinweise
Beispielcode
ComPtr<IDataModelManager> 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 |