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:
- 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.
- 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.
- 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.
- 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.
A classe ExtRemoteList inclui os seguintes métodos:
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) |