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:
- 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.
- 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.
- 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.
- 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.
Die ExtRemoteList-Klasse umfasst die folgenden Methoden:
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) |