Partager via


Classe ExtRemoteList (engextcpp.hpp)

La classe ExtRemoteList fournit un wrapper autour d’une liste liée ou doublement liée. La classe contient des méthodes qui peuvent être utilisées pour avancer et reculer dans la liste.

ExtRemoteList prend en charge les listes terminées par NULL et circulaires.

ExtRemoteList s’attend à ce qu’une liste soit implémentée de la façon dont les versions NT de Windows implémentent une liste. Elle s’attend également à ce que la liste utilise la structure SINGLE_LIST_ENTRY ou LIST_ENTRY. En particulier, ExtRemoteList s’attend à ce que les listes présentent les caractéristiques suivantes :

  1. La liste comporte une de tête. La tête représente le début (et, pour les listes circulaires et doublement liées, la fin) de la liste et n’est pas un élément de liste. Le type de la tête est SINGLE_LIST_ENTRY ou LIST_ENTRY.
  2. Le pointeur vers l’élément suivant de la liste pointe vers le pointeur vers l’élément suivant. En d’autres termes, le pointeur vers l’élément suivant pointe vers la structure SINGLE_LIST_ENTRY ou LIST_ENTRY incorporée dans l’élément suivant.
  3. Pour les listes doublement liées, le pointeur vers l’élément précédent de la liste pointe vers le pointeur vers l’élément actif. En d’autres termes, le pointeur vers l’élément précédent pointe vers la structure LIST_ENTRY incorporée dans l’élément précédent.
  4. Pour les listes doublement liées, le pointeur vers l’élément précédent suit immédiatement le pointeur vers l’élément suivant. Cela correspond à la disposition de la structure LIST_ENTRY en mémoire.
Pour plus d’informations sur les structures SINGLE_LIST_ENTRY et LIST_ENTRY et leur utilisation, consultez la documentation du Kit de pilotes Windows (WDK).

La classe ExtRemoteList inclut les méthodes suivantes :

ExtRemoteList ::ExtRemoteList (ExtRemoteData)

extRemoteList ::ExtRemoteList (ULONG64)

StartHead

StartTail

hasNode

GetNodeOffset

suivante

préversion

class ExtRemoteList
{
public:
    ULONG64  m_Head;
    ULONG  m_LinkOffset;
    bool  m_Double;
    ULONG  m_MaxIter;
    ExtRemoteData  m_Node;
    ULONG  m_CurIter;
};
m_Head
Emplacement dans la mémoire de la cible du chef de la liste.
m_LinkOffset
Décalage des structures SINGLE_LIST_ENTRY ou LIST_ENTRY incorporées dans les éléments de liste.
m_Double
true pour une liste doublement liée. false pour une liste liée en mode singly.
m_MaxIter
Nombre maximal de nœuds qui peuvent être retournés lors de l’itération sur la liste. La valeur par défaut de m_MaxIter est 65536. Limiter le nombre de nœuds qui peuvent être retournés dans une itération protège contre les boucles.
m_Node
Pointeur vers l’élément actif dans la liste. m_Node n’est pas défini tant qu’une itération n’est pas initialisée à l’aide StartHead ou StartTail . m_Node est de type ExtRemoteData, qui décrit le pointeur.
m_CurIter
Nombre d’étapes effectuées dans l’itération de liste actuelle. Pour les listes doublement liées, m_CurIter est augmentée pour les étapes vers l’avant et vers l’arrière.

Méthode

La classe ExtRemoteList a ces méthodes.

 
ExtRemoteList ::ExtRemoteList

Les constructeurs ExtRemoteList(ExtRemoteData&,ULONG,bool) créent une instance qui encapsule une liste liée ou doublement liée.
ExtRemoteList ::ExtRemoteList

Les constructeurs ExtRemoteList(ULONG64,ULONG,bool) créent une instance qui encapsule une liste liée ou doublement liée.
ExtRemoteList ::GetNodeOffset

La méthode GetNodeOffset retourne l’adresse de l’élément de liste actif.
ExtRemoteList ::HasNode

La méthode HasNode détermine s’il existe un élément actuel dans l’itération de liste.
ExtRemoteList ::Next

La méthode Next remplace l’élément actuel par l’élément suivant dans la liste.
ExtRemoteList ::P rev

La méthode Prev remplace l’élément actuel par l’élément précédent de la liste.
ExtRemoteList ::StartHead

La méthode StartHead initialise la liste pour itérer vers l’avant à partir de la tête.
ExtRemoteList ::StartTail

La méthode StartTail initialise la liste pour itérer vers l’arrière, en commençant à la tête.

Exigences

Exigence Valeur
plateforme cible Windows
d’en-tête engextcpp.hpp (include Engextcpp.hpp)

Voir aussi

ExtRemoteData

StartHead

StartTail