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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
Per altre informazioni sulle strutture SINGLE_LIST_ENTRY e LIST_ENTRY e sul relativo uso, vedere la documentazione di Windows Driver Kit (WDK).

La classe ExtRemoteList include i metodi seguenti:

ExtRemoteList::ExtRemoteList (ExtRemoteData)

ExtRemoteList::ExtRemoteList (ULONG64)

StartHead

StartTail

HasNode

GetNodeOffset

Avanti

Prev

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)

Vedi anche

ExtRemoteData

StartHead

StartTail