Compartilhar via


Classe ExtRemoteList (engextcpp.hpp)

A classe ExtRemoteList fornece um wrapper em torno de uma lista vinculada ou duplamente vinculada. A classe contém métodos que podem ser usados para mover para frente e para trás através da lista.

ExtRemoteList dá suporte a listas terminadas por NULL e circulares.

ExtRemoteList espera que uma lista seja implementada da maneira como as versões baseadas em NT do Windows implementam uma lista. Ele também espera que a lista use a estrutura SINGLE_LIST_ENTRY ou LIST_ENTRY. Em particular, ExtRemoteList espera que as listas tenham as seguintes características:

  1. A lista tem uma cabeça. O cabeçalho representa o início (e, para listas circulares e duplamente vinculadas, o final) da lista e não é um item de lista. O tipo de cabeçalho é SINGLE_LIST_ENTRY ou LIST_ENTRY.
  2. O ponteiro para o próximo item na lista aponta para o ponteiro para o item a seguir. Em outras palavras, o ponteiro para o próximo item aponta para a estrutura SINGLE_LIST_ENTRY ou LIST_ENTRY inserida no próximo item.
  3. Para listas duplamente vinculadas, o ponteiro para o item anterior na lista aponta para o ponteiro para o item atual. Em outras palavras, o ponteiro para o item anterior aponta para o LIST_ENTRY estrutura inserida no item anterior.
  4. Para listas duplamente vinculadas, o ponteiro para o item anterior segue imediatamente o ponteiro para o próximo item. Isso corresponde ao layout da estrutura LIST_ENTRY na memória.
Para obter mais informações sobre as estruturas de SINGLE_LIST_ENTRY e LIST_ENTRY e seu uso, consulte a documentação do WDK (Windows Driver Kit).

A classe ExtRemoteList inclui os seguintes métodos:

ExtRemoteList::ExtRemoteList (ExtRemoteData)

ExtRemoteList::ExtRemoteList (ULONG64)

StartHead

StartTail

HasNode

GetNodeOffset

Próximo

Prev

class ExtRemoteList
{
public:
    ULONG64  m_Head;
    ULONG  m_LinkOffset;
    bool  m_Double;
    ULONG  m_MaxIter;
    ExtRemoteData  m_Node;
    ULONG  m_CurIter;
};
m_Head
O local na memória do destino do cabeçalho da lista.
m_LinkOffset
O deslocamento das estruturas de SINGLE_LIST_ENTRY ou LIST_ENTRY inseridas nos itens de lista.
m_Double
true para uma lista duplamente vinculada. false para uma lista vinculada.
m_MaxIter
O número máximo de nós que podem ser retornados ao iterar na lista. O valor padrão de m_MaxIter é 65536. Limitar o número de nós que podem ser retornados em uma iteração protege contra loops.
m_Node
O ponteiro para o item atual na lista. m_Node não é definido até que uma iteração seja inicializada usando StartHead ou StartTail. m_Node é do tipo ExtRemoteData, que descreve o ponteiro.
m_CurIter
O número de etapas executadas na iteração da lista atual. Para listas duplamente vinculadas, m_CurIter é aumentado para as etapas para frente e para trás.

Métodos

A classe ExtRemoteList tem esses métodos.

 
ExtRemoteList::ExtRemoteList

Os construtores ExtRemoteList(ExtRemoteData&,ULONG,bool) criam uma nova instância que encapsula uma lista vinculada ou duplamente vinculada.
ExtRemoteList::ExtRemoteList

Os construtores ExtRemoteList(ULONG64,ULONG,bool) criam uma nova instância que encapsula uma lista vinculada ou duplamente vinculada.
ExtRemoteList::GetNodeOffset

O método GetNodeOffset retorna o endereço do item de lista atual.
ExtRemoteList::HasNode

O método HasNode determina se há um item atual na iteração da lista.
ExtRemoteList::Next

O método Next altera o item atual para o próximo item na lista.
ExtRemoteList::P rev

O método Prev altera o item atual para o item anterior na lista.
ExtRemoteList::StartHead

O método StartHead inicializa a lista para iterar para frente começando na cabeça.
ExtRemoteList::StartTail

O método StartTail inicializa a lista para iterar para trás, começando na cabeça.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho engextcpp.hpp (inclua Engextcpp.hpp)

Confira também

ExtRemoteData

StartHead

StartTail