IModelObject-Schnittstelle (dbgmodel.h)

Eines der grundlegendsten, aber leistungsfähigsten Elemente des Datenmodells ist, dass es die Definition des Objekts und der Interaktion mit einem Objekt standardisiert. 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 ein Debuggerkonzept wie den Begriff eines Prozesses oder eines Moduls handelt.

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

• Intrinsische Werte: Ein IModelObject kann ein Container für eine Reihe grundlegender Typen sein: 8, 16, 32 oder 64-Bit-Ganzzahlen mit Vorzeichen oder ohne Vorzeichen, Booleen, Zeichenfolgen, Fehler oder der Begriff leer.

Native Objekte: Ein IModelObject kann einen komplexen Typ (wie vom Typsystem des Debuggers definiert) innerhalb des Adressraums des Debuggers darstellen.

• Synthetische Objekte: Ein IModelObject kann ein dynamisches Objekt sein– ein Wörterbuch, wenn Sie so möchten: eine Auflistung von Schlüssel-Wert-/Metadatentupeln 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 in einem IModelObject ist effektiv eine IModelPropertyAccessor-Schnittstelle , die in einem IModelObject enthalten ist.

• 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 in einem IModelObject ist effektiv eine IModelMethod-Schnittstelle , die in einem IModelObject-Objekt eingeschlossen ist.

Ein IModelObject ist kein Isoliertes Objekt. Zusätzlich zur Darstellung eines der oben gezeigten Objekttypen hat jedes Objekt den Begriff einer Kette übergeordneter Datenmodelle. Diese Kette verhält sich ähnlich wie eine | JavaScript-Prototypkette. Anstelle einer linearen Kette von Prototypen wie JavaScript definiert jedes Datenmodellobjekt eine lineare Kette übergeordneter Modelle. Jedes dieser übergeordneten Modelle verfügt wiederum über eine weitere lineare Kette eigener 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 und das Objekt, für das sie abgefragt wird, diese Eigenschaft nicht unterstützt, wird die Abfrage in linearer Reihenfolge an die einzelnen übergeordneten Objekte übergeben. Dadurch wird ein Verhalten erstellt, bei dem die Suche nach einer Eigenschaft durch eine gründliche Suche der Aggregatstruktur aufgelöst wird.

Die Erweiterbarkeit innerhalb dieses Objektmodells ist sehr einfach, wenn man bedenkt, dass jedes Objekt ein Aggregat von sich selbst und der Struktur übergeordneter Modelle ist. Eine Erweiterung kann sich selbst in die Liste der übergeordneten Modelle für ein anderes Objekt einfügen. Dadurch wird das Objekt erweitert. Auf diese Weise ist es möglich, Funktionen zu allem hinzuzufügen: einem bestimmten instance eines Objekts oder Werts, einem nativen Typ, dem Konzept des Debuggers, was ein Prozess oder Thread ist, oder sogar die Vorstellung von "allen iterierbaren Objekten".

Vererbung

IModelObject erbt von IUnknown.

Methoden

Die IModelObject-Schnittstelle verfügt über 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 für ein Objekt. Diese Methode gehört zur IModelObject-Schnittstelle.
IModelObject::ClearConcepts

Die ClearConcepts-Methode entfernt alle Konzepte aus der instance des -Objekts, das darin angegeben wird.
IModelObject::ClearKeys

Die ClearKeys-Methode entfernt alle Schlüssel und die zugehörigen Werte und Metadaten aus der instance des dadurch angegebenen Objekts.
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 sie Verweise auf die Schlüssel zurückgibt, die sie anstelle des Werts des Schlüssels aufzählt.
IModelObject::EnumerateKeys

Listet die Schlüssel innerhalb des Anbieters für dynamische Schlüssel auf.
IModelObject::EnumerateKeyValues

Die EnumerateKeyValues-Methode ist die erste Methode, an die sich ein Client wendet, um alle Schlüssel für ein Objekt aufzulisten.
IModelObject::EnumerateRawReferences

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

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

Die GetConcept-Methode sucht nach einem Konzept für das Objekt (oder dessen ü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 in einem IModelObject-Objekt enthalten ist.
IModelObject::GetIntrinsicValueAs

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

Die GetKey-Methode ruft den Wert (und die metadaten zugeordneten) eines bestimmten Schlüssels nach Name ab.
IModelObject::GetKeyReference

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

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

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

Die GetLocation-Methode gibt den Speicherort des nativen Objekts zurück. Ein solcher Speicherort ist zwar in der Regel eine virtuelle Adresse innerhalb des Adressraums des Debugziels, aber nicht unbedingt.
IModelObject::GetNumberOfParentModels

Die GetNumberOfParentModels-Methode gibt die Anzahl der übergeordneten Modelle zurück, die an das angegebene Objekt instance angefügt sind.
IModelObject::GetParentModel

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

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

Die GetRawValue-Methode findet ein natives 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 nativen 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, ist der Aufruf zwar erfolgreich, gibt aber 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 Schnittstellenäquivalenz darstellt.
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 Verweisanzahl für eine Schnittstelle für ein Objekt.
IModelObject::RemoveParentModel

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

Die SetConcept-Methode platziert ein angegebenes Konzept auf dem Objekt instance, das durch diesen Zeiger angegeben wird.
IModelObject::SetContextForDataModel

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

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

Die SetKeyValue-Methode ist die erste Methode, an die sich ein Client wendet, um den Wert eines Schlüssels festzulegen. Diese Methode kann nicht verwendet werden, um einen neuen Schlüssel für ein Objekt zu erstellen.
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.

Anforderungen

Anforderung Wert
Header dbgmodel.h