40 if (!
Table->NumberGenericTableElements)
return TableEmptyTree;
60 CurrentNode = ChildNode;
65 *NodeOrParent = CurrentNode;
66 return TableInsertAsLeft;
76 CurrentNode = ChildNode;
81 *NodeOrParent = CurrentNode;
82 return TableInsertAsRight;
91 *NodeOrParent = CurrentNode;
92 return TableFoundNode;
113 *SwapNode1 = *SwapNode2;
115 *SwapNode2 = ParentNode;
216 MI_ASSERT(SearchResult != TableFoundNode);
217 NewNode->LeftChild = NewNode->RightChild =
NULL;
221 Table->NumberGenericTableElements++;
224 if (SearchResult == TableEmptyTree)
231 Table->DepthOfTree = 1;
234 else if (SearchResult == TableInsertAsLeft)
266 NewNode = NodeOrParent;
278 Table->DepthOfTree++;
321 DPRINT(
"Parent: %p\n", ParentNode);
325 DPRINT(
"Node 1: %p %p\n", Node1, *Node1);
329 DPRINT(
"Node 2: %p %p\n", Node2, *Node2);
struct _TABLE_ENTRY_HEADER * PTABLE_ENTRY_HEADER
enum _RTL_AVL_BALANCE_FACTOR RTL_AVL_BALANCE_FACTOR
struct _TABLE_ENTRY_HEADER TABLE_ENTRY_HEADER
static __inline VOID DeleteNode(NODE *node)
#define RtlpFindAvlTableNodeOrParent
#define RtlpAvlCompareRoutine
#define RtlpPromoteAvlTreeNode
#define RtlpCopyAvlNodeData
#define RtlpInsertAvlTreeNode
#define RtlInsertAsRightChildAvl
#define RtlInsertAsLeftChildAvl
#define RtlpRebalanceAvlTreeNode
#define RtlIsLeftChildAvl
#define RtlpDeleteAvlTreeNode
struct _RTL_BALANCED_LINKS * RightChild
struct _RTL_BALANCED_LINKS * LeftChild
static const UCHAR Balance[]
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define RtlIsRightChild(Links)
enum _RTL_GENERIC_COMPARE_RESULTS RTL_GENERIC_COMPARE_RESULTS