Classe ExtRemoteList (engextcpp.hpp)
La classe ExtRemoteList fornisce un wrapper intorno a un elenco collegato o doubly collegato. La classe contiene metodi che possono essere utilizzati per spostarsi avanti e indietro nell'elenco.
ExtRemoteList supporta sia elenchi con terminazione NULL che elenchi circolari.
ExtRemoteList prevede che un elenco sia un elenco implementato nel modo in cui le versioni basate su NT di Windows implementano un elenco. Si prevede inoltre che l'elenco usi la struttura SINGLE_LIST_ENTRY o LIST_ENTRY. In particolare, ExtRemoteList prevede che gli elenchi abbiano le caratteristiche seguenti:
- L'elenco ha una testa. L'intestazione rappresenta l'inizio (e, per elenchi circolari e collegati doubly, la fine) dell'elenco e non è un elemento di elenco. Il tipo della testa è SINGLE_LIST_ENTRY o LIST_ENTRY.
- Il puntatore all'elemento successivo nell'elenco punta al puntatore all'elemento seguente. In altre parole, il puntatore all'elemento successivo punta alla struttura SINGLE_LIST_ENTRY o LIST_ENTRY incorporata nell'elemento successivo.
- Per gli elenchi collegati doubly, il puntatore all'elemento precedente nell'elenco punta al puntatore all'elemento corrente. In altre parole, il puntatore all'elemento precedente punta alla struttura LIST_ENTRY incorporata nell'elemento precedente.
- Per gli elenchi collegati doubly, il puntatore all'elemento precedente segue immediatamente il puntatore all'elemento successivo. Corrisponde al layout della struttura LIST_ENTRY in memoria.
La classe ExtRemoteList include i metodi seguenti:
class ExtRemoteList
{
public:
ULONG64 m_Head;
ULONG m_LinkOffset;
bool m_Double;
ULONG m_MaxIter;
ExtRemoteData m_Node;
ULONG m_CurIter;
};
- m_Head
- Posizione nella memoria della destinazione dell'intestazione dell'elenco.
- m_LinkOffset
- Offset delle strutture SINGLE_LIST_ENTRY o LIST_ENTRY incorporate all'interno delle voci di elenco.
- m_Double
-
true
per un elenco collegato doubly.false
per un elenco collegato a singly. - m_MaxIter
- Numero massimo di nodi che possono essere restituiti durante l'iterazione dell'elenco. Il valore predefinito di m_MaxIter è 65536. Limitare il numero di nodi che possono essere restituiti in un'iterazione protegge dai cicli.
- m_Node
- Puntatore all'elemento corrente nell'elenco. m_Node non viene impostata finché non viene inizializzata un'iterazione tramite StartHead o StartTail. m_Node è di tipo ExtRemoteData, che descrive il puntatore.
- m_CurIter
- Numero di passaggi eseguiti nell'iterazione dell'elenco corrente. Per gli elenchi collegati a doubly, m_CurIter è aumentato sia per i passaggi avanti che indietro.
Metodi
La classe ExtRemoteList include questi metodi.
ExtRemoteList::ExtRemoteList I costruttori ExtRemoteList(ExtRemoteData&,ULONG,bool) creano una nuova istanza che esegue il wrapping di un elenco collegato o doubly collegato. |
ExtRemoteList::ExtRemoteList I costruttori ExtRemoteList(ULONG64,ULONG,bool) creano una nuova istanza che esegue il wrapping di un elenco collegato o collegato a singly. |
ExtRemoteList::GetNodeOffset Il metodo GetNodeOffset restituisce l'indirizzo dell'elemento di elenco corrente. |
ExtRemoteList::HasNode Il metodo HasNode determina se è presente un elemento corrente nell'iterazione dell'elenco. |
ExtRemoteList::Next Il metodo Next modifica l'elemento corrente all'elemento successivo nell'elenco. |
ExtRemoteList::P rev Il metodo Prev modifica l'elemento corrente all'elemento precedente nell'elenco. |
ExtRemoteList::StartHead Il metodo StartHead inizializza l'elenco per l'iterazione in avanti a partire dalla testa. |
ExtRemoteList::StartTail Il metodo StartTail inizializza l'elenco per l'iterazione all'indietro, a partire dalla testa. |
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | engextcpp.hpp (include Engextcpp.hpp) |