ExtRemoteList-Klasse (engextcpp.hpp)
Die ExtRemoteList- Klasse stellt einen Wrapper um eine verknüpfte oder doubly verknüpfte Liste bereit. Die Klasse enthält Methoden, die verwendet werden können, um sowohl vorwärts als auch rückwärts durch die Liste zu navigieren.
ExtRemoteList- unterstützt sowohl NULL-beendete als auch Zirkellisten.
ExtRemoteList erwartet, dass eine Liste in der Weise implementiert wird, wie NT-basierte Versionen von Windows eine Liste implementieren. Außerdem wird erwartet, 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 für kreisförmige und doubly verknüpfte Listen, das Ende) der Liste dar und ist kein Listenelement. Der Kopftyp ist SINGLE_LIST_ENTRY oder LIST_ENTRY.
- Der Mauszeiger auf das nächste Element in der Liste verweist auf den Mauszeiger auf das folgende Element. Mit anderen Worten: Der Zeiger auf das nächste Element verweist auf die im nächsten Element eingebettete SINGLE_LIST_ENTRY- oder LIST_ENTRY Struktur.
- Bei doubly verknüpften Listen zeigt der Zeiger auf das vorherige Element in der Liste auf den Mauszeiger auf das aktuelle Element. Mit anderen Worten: Der Zeiger auf das vorherige Element verweist auf die im vorherigen Element eingebettete LIST_ENTRY Struktur.
- Bei doubly verknüpften Listen folgt der Zeiger auf das vorherige Element unmittelbar dem Mauszeiger auf das nächste Element. Dies entspricht dem Layout der LIST_ENTRY Struktur im Arbeitsspeicher.
Die ExtRemoteList- Klasse enthält 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 Kopfes der Liste.
- m_LinkOffset
- Der Offset der in den Listenelementen eingebetteten SINGLE_LIST_ENTRY- oder LIST_ENTRY Strukturen.
- m_Double
-
true
für eine doubly 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 Mauszeiger auf das aktuelle Element in der Liste. m_Node wird erst festgelegt, wenn eine Iteration mithilfe 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 doubly verknüpften Listen wird m_CurIter sowohl für Vorwärts- als auch Rückwärtsschritte erhöht.
Methodik
Die ExtRemoteList- Klasse weist diese Methoden auf.
ExtRemoteList::ExtRemoteList Die ExtRemoteList(ExtRemoteData&,ULONG,bool)-Konstruktoren erstellen eine neue Instanz, die eine verknüpfte oder doubly verknüpfte Liste umschließt. |
ExtRemoteList::ExtRemoteList Die ExtRemoteList(ULONG64,ULONG,bool)-Konstruktoren erstellen eine neue Instanz, die eine verknüpfte oder doubly 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 für die Vorwärts iterieren 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- | Fenster |
Header- | engextcpp.hpp (include Engextcpp.hpp) |