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 方法初始化列表以从头开始向后迭代。 |
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | engextcpp.hpp (包括 Engextcpp.hpp) |