Classe ExtRemoteList (engextcpp.hpp)

La classe ExtRemoteList fournit un wrapper autour d’une liste liée séparément 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 circulaires et terminées par NULL.

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. Il 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 a une 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 dans 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

Next

Prev

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 début 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 séparément.
m_MaxIter
Nombre maximal de nœuds pouvant être retournés lors de l’itération sur la liste. La valeur par défaut de m_MaxIter est 65536. La limitation du nombre de nœuds pouvant ê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 de StartHead ou StartTail. m_Node est de type ExtRemoteData, qui décrit le pointeur.
m_CurIter
Nombre de étapes effectuées dans l’itération de liste actuelle. Pour les listes doublement liées, m_CurIter est augmentée pour les étapes avant et vers l’arrière.

Méthodes

La classe ExtRemoteList possède ces méthodes.

 
ExtRemoteList ::ExtRemoteList

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

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

La méthode GetNodeOffset retourne l’adresse de l’élément de liste actuel.
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 actif par l’élément suivant dans la liste.
ExtRemoteList ::P rev

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

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

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

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête engextcpp.hpp (inclure Engextcpp.hpp)

Voir aussi

ExtRemoteData

StartHead

StartTail