Freigeben über


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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
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 enthält die folgenden Methoden:

ExtRemoteList::ExtRemoteList (ExtRemoteData)

ExtRemoteList::ExtRemoteList (ULONG64)

StartHead-

StartTail-

HasNode-

GetNodeOffset-

Nächste

Prev

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)

Siehe auch

ExtRemoteData-

StartHead-

StartTail-