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 :
- 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.
- 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.
- 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 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) |