Clase ExtRemoteList (engextcpp.hpp)
La clase ExtRemoteList proporciona un contenedor alrededor de una lista vinculada o doblemente vinculada. La clase contiene métodos que se pueden usar para avanzar y retroceder a través de la lista.
ExtRemoteList admite listas circulares y terminadas en NULL.
ExtRemoteList espera que una lista se implemente en la forma en que las versiones basadas en NT de Windows implementan una lista. También espera que la lista use la estructura SINGLE_LIST_ENTRY o LIST_ENTRY. En concreto, ExtRemoteList espera que las listas tengan las siguientes características:
- La lista tiene una cabeza. El encabezado representa el principio (y, para listas circulares y doblemente vinculadas, el final) de la lista y no es un elemento de lista. El tipo de cabeza es SINGLE_LIST_ENTRY o LIST_ENTRY.
- El puntero al siguiente elemento de la lista apunta al puntero al siguiente elemento. En otras palabras, el puntero al siguiente elemento apunta a la estructura SINGLE_LIST_ENTRY o LIST_ENTRY incrustada en el siguiente elemento.
- Para las listas vinculadas doblemente, el puntero al elemento anterior de la lista apunta al puntero al elemento actual. En otras palabras, el puntero al elemento anterior apunta a la estructura LIST_ENTRY incrustada en el elemento anterior.
- Para las listas vinculadas doblemente, el puntero al elemento anterior sigue inmediatamente el puntero al siguiente elemento. Esto coincide con el diseño de la estructura LIST_ENTRY en memoria.
La clase ExtRemoteList incluye los métodos siguientes:
class ExtRemoteList
{
public:
ULONG64 m_Head;
ULONG m_LinkOffset;
bool m_Double;
ULONG m_MaxIter;
ExtRemoteData m_Node;
ULONG m_CurIter;
};
- m_Head
- Ubicación en la memoria del destino del encabezado de la lista.
- m_LinkOffset
- Desplazamiento de las estructuras SINGLE_LIST_ENTRY o LIST_ENTRY incrustadas dentro de los elementos de lista.
- m_Double
-
true
para una lista doblemente vinculada.false
para una lista vinculada de forma singly. - m_MaxIter
- Número máximo de nodos que se pueden devolver al recorrer en iteración la lista. El valor predeterminado de m_MaxIter es 65536. Limitar el número de nodos que se pueden devolver en una iteración protege frente a bucles.
- m_Node
- Puntero al elemento actual de la lista. m_Node no se establece hasta que se inicializa una iteración mediante StartHead o StartTail. m_Node es de tipo ExtRemoteData, que describe el puntero.
- m_CurIter
- Número de pasos realizados en la iteración de lista actual. En el caso de las listas vinculadas doblemente, m_CurIter aumenta para los pasos hacia delante y hacia atrás.
Métodos
La clase ExtRemoteList tiene estos métodos.
ExtRemoteList::ExtRemoteList Los constructores ExtRemoteList(ExtRemoteData&,ULONG,bool) crean una nueva instancia que encapsula una lista vinculada o doblemente vinculada. |
ExtRemoteList::ExtRemoteList Los constructores ExtRemoteList(ULONG64,ULONG,bool) crean una nueva instancia que encapsula una lista vinculada o doblemente vinculada. |
ExtRemoteList::GetNodeOffset El método GetNodeOffset devuelve la dirección del elemento de lista actual. |
ExtRemoteList::HasNode El método HasNode determina si hay un elemento actual en la iteración de lista. |
ExtRemoteList::Next El método Next cambia el elemento actual al siguiente elemento de la lista. |
ExtRemoteList::P rev El método Prev cambia el elemento actual al elemento anterior de la lista. |
ExtRemoteList::StartHead El método StartHead inicializa la lista para iterar hacia delante a partir de la cabeza. |
ExtRemoteList::StartTail El método StartTail inicializa la lista para iterar hacia atrás, empezando por la cabeza. |
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | engextcpp.hpp (incluya Engextcpp.hpp) |