Freigeben über


IModelObject-Schnittstelle (dbgmodel.h)

Die IModelObject-Schnittstelle kapselt den Begriff eines Objekts - ob es sich bei diesem Objekt um eine ganze Zahl, eine Zeichenfolge, einen komplexen Typ im Zieladressraum des Debuggers handelt.

Erbschaft

IModelObject erbt von IUnknown.

Methodik

Die IModelObject Schnittstelle hat diese Methoden.

 
IModelObject::AddParentModel

Die AddParentModel-Methode fügt dem angegebenen Objekt ein neues übergeordnetes Modell hinzu.
IModelObject::AddRef

Die AddRef-Methode erhöht die Verweisanzahl für eine Schnittstelle in einem Objekt. Diese Methode gehört zur IModelObject-Schnittstelle.
IModelObject::ClearConcepts

Die ClearConcepts-Methode entfernt alle Konzepte aus der Instanz des durch dieses Objekt angegebenen Objekts.
IModelObject::ClearKeys

Mit der ClearKeys-Methode werden alle Schlüssel und die zugehörigen Werte und Metadaten aus der Instanz des objekts entfernt, das durch dieses Objekt angegeben wird.
IModelObject::Compare

Die Compare-Methode vergleicht zwei Modellobjekte und gibt einen Hinweis auf die Beziehung dieser Objekte zurück.
IModelObject::D ereference

Die Dereference-Methode leitet ein Objekt ab.
IModelObject::EnumerateKeyReferences

Die EnumerateKeyReferences-Methode verhält sich ähnlich wie die EnumerateKeyValues-Methode, mit der Ausnahme, dass verweise auf die Schlüssel zurückgegeben werden, die anstelle des Werts des Schlüssels aufgezählt werden.
IModelObject::EnumerateKeys

Listet die Schlüssel innerhalb des dynamischen Schlüsselanbieters auf.
IModelObject::EnumerateKeyValues

Die EnumerateKeyValues-Methode ist die erste Methode, an die ein Client sich wendet, um alle Schlüssel für ein Objekt aufzählen zu können.
IModelObject::EnumerateRawReferences

Die EnumerateRawReferences-Methode listet Verweise auf alle systemeigenen untergeordneten Elemente (Felder, Basisklassen usw.) des angegebenen Objekts auf.
IModelObject::EnumerateRawValues

Die EnumerateRawValues-Methode listet alle systemeigenen untergeordneten Elemente (Felder, Basisklassen usw.) des angegebenen Objekts auf.
IModelObject::GetConcept

Die GetConcept-Methode sucht nach einem Konzept für das Objekt (oder die übergeordnete Modellkette) und gibt einen Schnittstellenzeiger auf die Konzeptschnittstelle zurück.
IModelObject::GetContext

Die GetContext-Methode gibt den Hostkontext zurück, der dem Objekt zugeordnet ist.
IModelObject::GetContextForDataModel

Die GetContextForDataModel-Methode wird verwendet, um Kontextinformationen abzurufen, die mit einem vorherigen Aufruf von SetContextForDataModel eingerichtet wurden.
IModelObject::GetIntrinsicValue

Die GetIntrinsicValue-Methode gibt das Ding zurück, das innerhalb eines IModelObjects boxt wird.
IModelObject::GetIntrinsicValueAs

Die GetIntrinsicValueAs-Methode verhält sich ähnlich wie die GetIntrinsicValue-Methode, mit der Ausnahme, dass der Wert in den angegebenen Variantentyp konvertiert wird.
IModelObject::GetKey

Die GetKey-Methode ruft den Wert (und die metadaten, die einem bestimmten Schlüssel zugeordnet sind) anhand des Namens ab.
IModelObject::GetKeyReference

Wenn das Objekt oder eines seiner übergeordneten Modelle einen Schlüssel gemäß dem Argument "key" hat, gibt dies einen Verweis auf diesen Schlüssel zurück.
IModelObject::GetKeyValue

Die GetKeyValue-Methode ist die erste Methode, an die ein Client sich wendet, um den Wert (und die metadaten, die einem bestimmten Schlüssel zugeordnet sind) anhand des Namens abzurufen.
IModelObject::GetKind

Die GetKind-Methode gibt zurück, welche Art von Objekt innerhalb des IModelObject-Objekts enthalten ist.
IModelObject::GetLocation

Die GetLocation-Methode gibt den Speicherort des systemeigenen Objekts zurück. Während ein solcher Speicherort in der Regel eine virtuelle Adresse innerhalb des Adressraums des Debugziels ist, ist es nicht notwendigerweise so.
IModelObject::GetNumberOfParentModels

Die GetNumberOfParentModels-Methode gibt die Anzahl der übergeordneten Modelle zurück, die der angegebenen Objektinstanz angefügt sind.
IModelObject::GetParentModel

Die GetParentModel-Methode gibt das i-th-übergeordnete Modell in der übergeordneten Modellkette des angegebenen Objekts zurück.
IModelObject::GetRawReference

Die GetRawReference-Methode findet ein systemeigenes Konstrukt innerhalb des angegebenen Objekts und gibt einen Verweis darauf zurück.
IModelObject::GetRawValue

Die GetRawValue-Methode findet ein systemeigenes Konstrukt innerhalb des angegebenen Objekts. Ein solches Konstrukt kann ein Feld, eine Basisklasse, ein Feld in einer Basisklasse, eine Memberfunktion usw. sein.
IModelObject::GetTargetInfo

Die GetTargetInfo-Methode ist effektiv eine Kombination der GetLocation- und GetTypeInfo-Methoden, die sowohl den abstrakten Speicherort als auch den systemeigenen Typ des angegebenen Objekts zurückgeben.
IModelObject::GetTypeInfo

Die GetTypeInfo-Methode gibt den systemeigenen Typ des angegebenen Objekts zurück. Wenn dem Objekt keine systemeigenen Typinformationen zugeordnet sind, wird der Aufruf weiterhin erfolgreich ausgeführt, gibt jedoch NULL zurück.
IModelObject::IsEqualTo

Die IsEqualTo-Methode vergleicht einen Hostkontext mit einem anderen Hostkontext. Wenn die beiden Kontexte gleichwertig sind, wird ein Hinweis darauf zurückgegeben. Beachten Sie, dass dieser Vergleich keine Äquivalenz der Schnittstelle ist.
IModelObject::QueryInterface

Die IModelObject::QueryInterface-Methode ruft Zeiger auf die unterstützten Schnittstellen für ein Objekt ab.
IModelObject::Release

Die IModelObject::Release-Methode erhöht die Referenzanzahl für eine Schnittstelle eines Objekts.
IModelObject::RemoveParentModel

Das RemoveParentModel entfernt ein angegebenes übergeordnetes Modell aus der übergeordneten Suchkette des angegebenen Objekts.
IModelObject::SetConcept

Die SetConcept-Methode platziert ein angegebenes Konzept auf der objektinstanz, die durch diesen Zeiger angegeben wird.
IModelObject::SetContextForDataModel

Die SetContextForDataModel-Methode wird von der Implementierung eines Datenmodells verwendet, um Implementierungsdaten in Instanzobjekten zu platzieren.
IModelObject::SetKey

Die SetKey-Methode ist die Methode, an die ein Client sich wendet, um einen Schlüssel für ein Objekt zu erstellen (und möglicherweise Metadaten mit dem erstellten Schlüssel zu verknüpfen).
IModelObject::SetKeyValue

Die SetKeyValue-Methode ist die erste Methode, an die ein Client sich wendet, um den Wert eines Schlüssels festzulegen. Diese Methode kann nicht zum Erstellen eines neuen Schlüssels für ein Objekt verwendet werden.
IModelObject::TryCastToRuntimeType

Die TryCastToRuntimeType-Methode fordert den Debughost auf, eine Analyse durchzuführen und den tatsächlichen Laufzeittyp (die am meisten abgeleitete Klasse) des angegebenen Objekts zu bestimmen.

Bemerkungen

Eines der grundlegendsten, aber leistungsstärksten Elemente des Datenmodells besteht darin, dass es die Definition des Objekts standardisiert und wie ein Objekt mit einem Objekt interagiert. Die IModelObject-Schnittstelle kapselt den Begriff eines Objekts - unabhängig davon, ob es sich bei diesem Objekt um eine ganze Zahl, einen Gleitkommawert, eine Zeichenfolge, einen komplexen Typ im Zieladressraum des Debuggers oder um ein Debuggerkonzept wie die Vorstellung eines Prozesses oder eines Moduls handelt.

Es gibt mehrere verschiedene Dinge, die in einem IModelObject (oder in boxed into) gehalten werden können:

• Systeminterne Werte – Ein IModelObject kann ein Container für eine Reihe grundlegender Typen sein: 8, 16, 32 oder 64 Bit signierte oder nicht signierte ganze Zahlen, Booleane, Zeichenfolgen, Fehler oder das Konzept leerer Zahlen.

• Systemeigene Objekte – Ein IModelObject kann einen komplexen Typ (gemäß Definition durch das Typsystem des Debuggers) innerhalb des Adressraums des Debuggers darstellen, auf den der Debugger ausgerichtet ist.

• Synthetische Objekte - Ein IModelObject kann ein dynamisches Objekt sein - ein Wörterbuch, wenn Sie möchten: eine Sammlung von Schlüssel-/Wert-/Metadaten-Tupeln und eine Reihe von Konzepten, die Verhaltensweisen definieren, die nicht einfach durch Schlüssel-Wert-Paare dargestellt werden.

• Eigenschaften - Ein IModelObject kann eine Eigenschaft darstellen: etwas, dessen Wert mit einem Methodenaufruf abgerufen oder geändert werden kann. Eine Eigenschaft innerhalb eines IModelObjects ist effektiv ein IModelPropertyAccessor- Schnittstellenfeld in einem IModelObject

• Methoden - Ein IModelObject kann eine Methode darstellen: etwas, das Sie mit einer Reihe von Argumenten aufrufen und einen Rückgabewert abrufen können. Eine Methode innerhalb eines IModelObject ist effektiv ein IModelMethod- Schnittstellenfeld in einem IModelObject

Ein IModelObject ist kein Isoliertes Objekt. Zusätzlich zur Darstellung eines der oben gezeigten Objekttypen hat jedes Objekt die Vorstellung einer Kette von übergeordneten Datenmodellen. Diese Kette verhält sich ähnlich wie ein | JavaScript-Prototypkette. Anstelle einer linearen Kette von Prototypen wie JavaScript definiert jedes Datenmodellobjekt eine lineare Kette von übergeordneten Modellen. Jedes dieser übergeordneten Modelle wiederum verfügt über eine weitere lineare Kette ihrer eigenen Gruppe von Eltern. Im Wesentlichen ist jedes Objekt eine Aggregation der Funktionen (Eigenschaften usw.) von sich selbst und jedem Objekt in dieser Struktur. Wenn eine bestimmte Eigenschaft abgefragt wird, wird die Abfrage linear an jedes übergeordnete Element übergeben, wenn es abgefragt wird. Dadurch wird ein Verhalten erstellt, bei dem die Suche nach einer Eigenschaft durch eine tiefen erste Suche der Aggregatstruktur aufgelöst wird.

Die Erweiterbarkeit innerhalb dieses Objektmodells ist aufgrund dieser Vorstellung sehr einfach, dass jedes Objekt ein Aggregat von sich selbst und die Struktur der übergeordneten Modelle ist. Eine Erweiterung kann in die Liste der übergeordneten Modelle für ein anderes Objekt aufgenommen und hinzugefügt werden. Dadurch wird das Objekt erweitert. Auf diese Weise können Funktionen zu allen Elementen hinzugefügt werden: einer bestimmten Instanz eines Objekts oder Werts, einem systemeigenen Typ, dem Konzept des Debuggers, was ein Prozess oder Thread ist, oder sogar der Begriff "alle iterierbaren Objekte".

Anforderungen

Anforderung Wert
Header- dbgmodel.h

Siehe auch

übersicht über Debuggerdatenmodell-C++-Schnittstellen