_RTL_SPLAY_LINKS structure

The RTL_SPLAY_LINKS structure is an opaque structure and is used by the system to represent a splay link tree node.

Syntax

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

Members

Parent

An opaque pointer to the parent node for this node. If only one node in the splay link tree exists, the value of this member is NULL.

LeftChild

An opaque pointer to the left child node for this node. If no left-child node exists, the value of this member is NULL.

RightChild

An opaque pointer to the right child node for this node. If no right-child node exists, the value of this member is NULL.

Remarks

Typically, each node of a splay link tree consists of a user-defined structure. Each such user-defined node must contain an initialized RTL_SPLAY_LINKS structure. To initialize a RTL_SPLAY_LINKS structure, call the RtlInitializeSplayLinks macro. (Pass the address of the RTL_SPLAY_LINKS member that is contained within the user-defined structure.)

For a splay link tree with one or more nodes, a new node is generally initialized as follows:

  1. Use RtlLeftChild and/or RtlRightChild to find the insertion point for the new node. That is, obtain the correct address of the parent node for the new node. (The new node will be attached either to the left of the parent node or to the right.)

  2. Use RtlInitializeSplayLinks to initialize the new node with the address of the parent node that is found in the previous step.

  3. Insert the new node into the splay tree by using either RtlInsertAsLeftChild or RtlInsertAsRightChild, as appropriate.

  4. Call RtlSplay with the address of the new node. (The new node becomes the root of the splay tree.)

Callers of the RtlXxx splay tree routines are responsible for synchronizing access to the splay tree. For more information about how to synchronize access to the splay tree, see Locks, Deadlocks, and Synchronization and Managing Hardware Priorities.

Requirements

   
Windows version Available in all supported versions of Windows. Available in all supported versions of Windows.
Header ntddk.h (include Fltkernel.h, Ntifs.h, Ntddk.h)

See Also

RtlInitializeSplayLinks

RtlInsertAsLeftChild

RtlInsertAsRightChild

RtlLeftChild

RtlRightChild

RtlSplay