Compartir a través de


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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
Para obtener más información sobre las estructuras de SINGLE_LIST_ENTRY y LIST_ENTRY y su uso, consulta la documentación del Kit de controladores de Windows (WDK).

La clase ExtRemoteList incluye los métodos siguientes:

ExtRemoteList::ExtRemoteList (ExtRemoteData)

ExtRemoteList::ExtRemoteList (ULONG64)

StartHead

StartTail

HasNode

GetNodeOffset

Siguiente

Prev

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)

Consulte también

ExtRemoteData

StartHead

StartTail