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
指向列表中当前项的指针。 在使用StartHeadStartTail 初始化迭代之前,不会设置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)

另请参阅

ExtRemoteData

StartHead

StartTail