ExtRemoteList 类 (engextcpp.hpp)
ExtRemoteList 类提供了一个围绕单向链接列表或双链接列表的包装器。 该类包含可用于向前和向后移动列表的方法。
ExtRemoteList 同时支持 NULL 终止列表和循环列表。
ExtRemoteList 预期列表是列表,其实现方式是基于 NT 的 Windows 版本实现列表。 它还需要列表使用SINGLE_LIST_ENTRY或LIST_ENTRY结构。 具体而言,ExtRemoteList 需要列表具有以下特征:
- 该列表有一个 头。 头表示列表的开头(以及,对于循环列表和双链接列表,结尾),而不是列表项。 头部的类型为SINGLE_LIST_ENTRY或LIST_ENTRY。
- 指向列表中的下一项的指针指向指向以下项的指针。 换句话说,指向下一项的指针指向嵌入在下一项中的SINGLE_LIST_ENTRY或LIST_ENTRY结构。
- 对于多链接的列表,指向列表中上一项的指针指向指向当前项的指针。 换句话说,指向上一项的指针指向嵌入在上一项中的LIST_ENTRY结构。
- 对于重复链接的列表,指向上一项的指针紧跟在指向下一项的指针之后。 这与内存中LIST_ENTRY结构的布局匹配。
ExtRemoteList 类包括以下方法:
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_Node。 m_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) |