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 :
- 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.
- 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.
- 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.
- 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.
La classe ExtRemoteList inclut les méthodes suivantes :
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) |