ExtRemoteList-Klasse (engextcpp.hpp)

Die ExtRemoteList-Klasse stellt einen Wrapper um eine singly- oder doppelt verknüpfte Liste bereit. Die -Klasse enthält Methoden, mit denen sowohl vorwärts als auch rückwärts durch die Liste verschoben werden kann.

ExtRemoteList unterstützt sowohl NULL-beendete listen als auch Kreislisten.

ExtRemoteList erwartet, dass eine Liste so implementiert ist, wie NT-basierte Versionen von Windows eine Liste implementieren. Außerdem wird davon ausgegangen, dass die Liste die SINGLE_LIST_ENTRY- oder LIST_ENTRY-Struktur verwendet. Insbesondere erwartet ExtRemoteList , dass die Listen die folgenden Merkmale aufweisen:

  1. Die Liste hat einen Kopf. Der Kopf stellt den Anfang (und bei kreisförmigen und doppelt verknüpften Listen das Ende) der Liste dar und ist kein Listenelement. Der Kopftyp ist SINGLE_LIST_ENTRY oder LIST_ENTRY.
  2. Der Zeiger auf das nächste Element in der Liste zeigt auf den Zeiger auf das folgende Element. Anders ausgedrückt: Der Zeiger auf das nächste Element verweist auf die SINGLE_LIST_ENTRY oder LIST_ENTRY Struktur, die im nächsten Element eingebettet ist.
  3. Bei doppelt verknüpften Listen zeigt der Zeiger auf das vorherige Element in der Liste auf den Zeiger auf das aktuelle Element. Anders ausgedrückt: Der Zeiger auf das vorherige Element verweist auf die LIST_ENTRY Struktur, die im vorherigen Element eingebettet ist.
  4. Bei doppelt verknüpften Listen folgt der Zeiger auf das vorherige Element sofort dem Zeiger auf das nächste Element. Dies entspricht dem Layout der LIST_ENTRY Struktur im Arbeitsspeicher.
Weitere Informationen zu den SINGLE_LIST_ENTRY- und LIST_ENTRY-Strukturen und deren Verwendung finden Sie in der Dokumentation zum Windows Driver Kit (WDK).

Die ExtRemoteList-Klasse umfasst die folgenden Methoden:

ExtRemoteList::ExtRemoteList (ExtRemoteData)

ExtRemoteList::ExtRemoteList (ULONG64)

StartHead

StartTail

HasNode

GetNodeOffset

Nächste

Zurück

class ExtRemoteList
{
public:
    ULONG64  m_Head;
    ULONG  m_LinkOffset;
    bool  m_Double;
    ULONG  m_MaxIter;
    ExtRemoteData  m_Node;
    ULONG  m_CurIter;
};
m_Head
Die Position im Speicher des Ziels des Listenkopfs.
m_LinkOffset
Der Offset der SINGLE_LIST_ENTRY- oder LIST_ENTRY Strukturen, die in den Listenelementen eingebettet sind.
m_Double
true für eine doppelt verknüpfte Liste. false für eine singly verknüpfte Liste.
m_MaxIter
Die maximale Anzahl von Knoten, die beim Durchlaufen der Liste zurückgegeben werden können. Der Standardwert von m_MaxIter ist 65536. Das Einschränken der Anzahl von Knoten, die in einer Iteration zurückgegeben werden können, schützt vor Schleifen.
m_Node
Der Zeiger auf das aktuelle Element in der Liste. m_Node wird erst festgelegt, wenn eine Iteration mit StartHead oder StartTail initialisiert wird. m_Node ist vom Typ ExtRemoteData, der den Zeiger beschreibt.
m_CurIter
Die Anzahl der Schritte, die in der aktuellen Listeniteration ausgeführt wurden. Bei doppelt verknüpften Listen wird m_CurIter sowohl für Vorwärts- als auch Für Rückwärtsschritte erhöht.

Methoden

Die ExtRemoteList-Klasse verfügt über diese Methoden.

 
ExtRemoteList::ExtRemoteList

Die ExtRemoteList(ExtRemoteData&,ULONG,bool)-Konstruktoren erstellen eine neue instance, die eine singly-verknüpfte oder doppelt verknüpfte Liste umschließt.
ExtRemoteList::ExtRemoteList

Die ExtRemoteList(ULONG64,ULONG,bool)-Konstruktoren erstellen eine neue instance, die eine singly- oder doppelt verknüpfte Liste umschließt.
ExtRemoteList::GetNodeOffset

Die GetNodeOffset-Methode gibt die Adresse des aktuellen Listenelements zurück.
ExtRemoteList::HasNode

Die HasNode-Methode bestimmt, ob ein aktuelles Element in der Listeniteration vorhanden ist.
ExtRemoteList::Next

Die Next-Methode ändert das aktuelle Element in das nächste Element in der Liste.
ExtRemoteList::P rev

Die Prev-Methode ändert das aktuelle Element in das vorherige Element in der Liste.
ExtRemoteList::StartHead

Die StartHead-Methode initialisiert die Liste zum Durchlaufen von Vorwärts, beginnend am Kopf.
ExtRemoteList::StartTail

Die StartTail-Methode initialisiert die Liste für die Rückwärts iterieren, beginnend am Kopf.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile engextcpp.hpp (include Engextcpp.hpp)

Weitere Informationen

ExtRemoteData

StartHead

StartTail