ExtRemoteList 类 (engextcpp.hpp)

ExtRemoteList 类提供了一个围绕单向链接列表或双链接列表的包装器。 该类包含可用于向前和向后移动列表的方法。

ExtRemoteList 同时支持 NULL 终止列表和循环列表。

ExtRemoteList 预期列表是列表,其实现方式是基于 NT 的 Windows 版本实现列表。 它还需要列表使用SINGLE_LIST_ENTRY或LIST_ENTRY结构。 具体而言,ExtRemoteList 需要列表具有以下特征:

  1. 该列表有一个 。 头表示列表的开头(以及,对于循环列表和双链接列表,结尾),而不是列表项。 头部的类型为SINGLE_LIST_ENTRY或LIST_ENTRY。
  2. 指向列表中的下一项的指针指向指向以下项的指针。 换句话说,指向下一项的指针指向嵌入在下一项中的SINGLE_LIST_ENTRY或LIST_ENTRY结构。
  3. 对于多链接的列表,指向列表中上一项的指针指向指向当前项的指针。 换句话说,指向上一项的指针指向嵌入在上一项中的LIST_ENTRY结构。
  4. 对于重复链接的列表,指向上一项的指针紧跟在指向下一项的指针之后。 这与内存中LIST_ENTRY结构的布局匹配。
有关SINGLE_LIST_ENTRY和LIST_ENTRY结构及其用法的详细信息,请参阅 Windows 驱动程序工具包 (WDK) 文档。

ExtRemoteList 类包括以下方法:

ExtRemoteList::ExtRemoteList (ExtRemoteData)

ExtRemoteList::ExtRemoteList (ULONG64)

StartHead

StartTail

HasNode

GetNodeOffset

下一

上一

class ExtRemoteList
{
public:
    ULONG64  m_Head;
    ULONG  m_LinkOffset;
    bool  m_Double;
    ULONG  m_MaxIter;
    ExtRemoteData  m_Node;
    ULONG  m_CurIter;
};
m_Head
目标内存中列表头的位置。
m_LinkOffset
嵌入在列表项中的SINGLE_LIST_ENTRY或LIST_ENTRY结构的偏移量。
m_Double
true 一个多链接的列表。 false 一个单向链接的列表。
m_MaxIter
循环访问列表时可返回的最大节点数。 m_MaxIter 的默认值为 65536。 限制迭代中可返回的节点数,以防止循环。
m_Node
指向列表中当前项的指针。 在使用 startHead StartTail初始化迭代之前,不会设置m_Nodem_Node 类型 ExtRemoteData,用于描述指针。
m_CurIter
当前列表迭代中执行的步骤数。 对于双重链接的列表,m_CurIter 针对向前和向后步骤增加。

方法

ExtRemoteList 类具有这些方法。

 
ExtRemoteList::ExtRemoteList

ExtRemoteList(ExtRemoteData&,ULONG,bool) 构造函数创建一个新实例,该实例包装了单向链接列表或多链接列表。
ExtRemoteList::ExtRemoteList

ExtRemoteList(ULONG64,ULONG,bool) 构造函数创建一个新实例,该实例包装了单向链接列表或双链接列表。
ExtRemoteList::GetNodeOffset

GetNodeOffset 方法返回当前列表项的地址。
ExtRemoteList::HasNode

HasNode 方法确定列表迭代中是否存在当前项。
ExtRemoteList::Next

Next 方法将当前项更改为列表中的下一项。
ExtRemoteList::P rev

Prev 方法将当前项更改为列表中的上一项。
ExtRemoteList::StartHead

StartHead 方法初始化列表,以便从头开始迭代向前。
ExtRemoteList::StartTail

StartTail 方法初始化列表以迭代向后,从头开始。

要求

要求 价值
目标平台 窗户
标头 engextcpp.hpp (包括 Engextcpp.hpp)

另请参阅

ExtRemoteData

StartHead

StartTail