RTL_SPLAY_LINKS 结构 (ntddk.h)

RTL_SPLAY_LINKS 结构是不透明的结构,由系统用来表示 splay 链接树节点。

语法

typedef struct _RTL_SPLAY_LINKS {
  struct _RTL_SPLAY_LINKS *Parent;
  struct _RTL_SPLAY_LINKS *LeftChild;
  struct _RTL_SPLAY_LINKS *RightChild;
} RTL_SPLAY_LINKS;

成员

Parent

指向此节点的父节点的不透明指针。 如果 splay 链接树中仅存在一个节点,则此成员的值为 NULL

LeftChild

指向此节点的左侧子节点的不透明指针。 如果不存在左子节点,则此成员的值为 NULL

RightChild

指向此节点的右子节点的不透明指针。 如果不存在右子节点,则此成员的值为 NULL

注解

通常,splay 链接树的每个节点都由用户定义的结构组成。 每个此类用户定义节点都必须包含初始化RTL_SPLAY_LINKS结构。 若要初始化RTL_SPLAY_LINKS结构,请调用 RtlInitializeSplayLinks 宏。 (传递包含在用户定义的 structure 中的RTL_SPLAY_LINKS成员的地址。)

对于具有一个或多个节点的 splay 链接树,通常按如下所示初始化新节点:

  1. 使用 RtlLeftChild 和/或 RtlRightChild 查找新节点的插入点。 也就是说,获取新节点的父节点的正确地址。 (新节点将附加到父节点的左侧或右侧。)
  2. 使用 RtlInitializeSplayLinks 使用在上一步中找到的父节点的地址初始化新节点。
  3. 根据需要使用 RtlInsertAsLeftChildRtlInsertAsRightChild 将新节点插入 splay 树。
  4. 使用新节点的地址调用 RtlSplay 。 (新节点将成为 splay 树的根。)
RtlXxx splay 树例程的调用方负责同步对 splay 树的访问。 有关如何同步对 splay 树的访问的详细信息,请参阅 锁、死锁和同步 和管理 硬件优先级

要求

要求
最低受支持的客户端 在所有受支持的 Windows 版本中可用。
标头 ntddk.h (包括 Fltkernel.h、Ntifs.h、Ntddk.h)

另请参阅

RtlInitializeSplayLinks

RtlInsertAsLeftChild

RtlInsertAsRightChild

RtlLeftChild

RtlRightChild

RtlSplay