34 Table->BalancedRoot.Parent = &
Table->BalancedRoot;
57 if (SearchResult != TableFoundNode)
70 if (NewElement) *NewElement =
FALSE;
87 NewNode = NodeOrParent;
92 if (NewElement) *NewElement = (SearchResult != TableFoundNode);
131 return Table->NumberGenericTableElements == 0;
142 return Table->NumberGenericTableElements;
159 if (*SearchResult != TableFoundNode)
return NULL;
179 (
PVOID*)&NodeOrParent,
217 if (SearchResult != TableFoundNode)
return NULL;
228 if ((!PreviousNode) || (
RtlParentAvl(PreviousNode) == PreviousNode))
break;
264 *RestartKey = CurrentNode;
272 if (CurrentNode) *RestartKey = CurrentNode;
305 if (SearchResult != TableFoundNode)
return FALSE;
311 Table->DeleteCount++;
313 Table->NumberGenericTableElements--;
316 Table->WhichOrderedElement = 0;
struct _TABLE_ENTRY_HEADER * PTABLE_ENTRY_HEADER
VOID NTAPI RtlInitializeGenericTableAvl(IN OUT PRTL_AVL_TABLE Table, IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine, IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, IN PRTL_AVL_FREE_ROUTINE FreeRoutine, IN PVOID TableContext)
PVOID NTAPI RtlEnumerateGenericTableWithoutSplayingAvl(IN PRTL_AVL_TABLE Table, IN OUT PVOID *RestartKey)
BOOLEAN NTAPI RtlDeleteElementGenericTableAvl(IN PRTL_AVL_TABLE Table, IN PVOID Buffer)
PVOID NTAPI RtlLookupElementGenericTableAvl(IN PRTL_AVL_TABLE Table, IN PVOID Buffer)
PVOID NTAPI RtlInsertElementGenericTableFullAvl(IN PRTL_AVL_TABLE Table, IN PVOID Buffer, IN ULONG BufferSize, OUT PBOOLEAN NewElement OPTIONAL, IN OUT PVOID NodeOrParent, IN OUT TABLE_SEARCH_RESULT SearchResult)
PVOID NTAPI RtlInsertElementGenericTableAvl(IN PRTL_AVL_TABLE Table, IN PVOID Buffer, IN ULONG BufferSize, OUT PBOOLEAN NewElement OPTIONAL)
PVOID NTAPI RtlLookupFirstMatchingElementGenericTableAvl(IN PRTL_AVL_TABLE Table, IN PVOID Buffer, OUT PVOID *RestartKey)
ULONG NTAPI RtlNumberGenericTableElementsAvl(IN PRTL_AVL_TABLE Table)
PVOID NTAPI RtlEnumerateGenericTableAvl(IN PRTL_AVL_TABLE Table, IN BOOLEAN Restart)
BOOLEAN NTAPI RtlIsGenericTableEmptyAvl(IN PRTL_AVL_TABLE Table)
PVOID NTAPI RtlGetElementGenericTableAvl(IN PRTL_AVL_TABLE Table, IN ULONG I)
PVOID NTAPI RtlLookupElementGenericTableFullAvl(IN PRTL_AVL_TABLE Table, IN PVOID Buffer, IN OUT PVOID *NodeOrParent, IN OUT TABLE_SEARCH_RESULT *SearchResult)
static void Lookup(RTF_Info *, char *)
#define RtlpFindAvlTableNodeOrParent
#define RtlpAvlCompareRoutine
#define RtlpInsertAvlTreeNode
#define RtlpDeleteAvlTreeNode
#define RtlRealSuccessorAvl(x)
#define RtlRealPredecessorAvl(x)
PULONG MinorVersion OPTIONAL
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_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
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE _In_ PRTL_GENERIC_FREE_ROUTINE _In_opt_ PVOID TableContext
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE _In_ PRTL_GENERIC_FREE_ROUTINE FreeRoutine
_In_ PRTL_GENERIC_COMPARE_ROUTINE _In_ PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
_In_ PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
RTL_AVL_FREE_ROUTINE * PRTL_AVL_FREE_ROUTINE
RTL_AVL_ALLOCATE_ROUTINE * PRTL_AVL_ALLOCATE_ROUTINE
RTL_AVL_COMPARE_ROUTINE * PRTL_AVL_COMPARE_ROUTINE
enum _RTL_GENERIC_COMPARE_RESULTS RTL_GENERIC_COMPARE_RESULTS