RtlDeleteElementGenericTableAvl
INT64 __fastcall RtlDeleteElementGenericTableAvl(RTL_AVL_TABLE *Table, VOID *Buffer){
INT64 result;
_RTL_BALANCED_LINKS *RightChild;
if( !Table->NumberGenericTableElements )
{
LABEL_8:
LOBYTE(result) = 0;
return result;
}
RightChild = Table->BalancedRoot.RightChild;
while( 1 )
{
result = ((__int64(__fastcall *)(RTL_AVL_TABLE *, VOID *, _RTL_BALANCED_LINKS *))Table->CompareRoutine)(
Table,
Buffer,
&RightChild[1]);
if( !(_DWORD)result )
{
RightChild = RightChild->LeftChild;
goto LABEL_7;
}
if( (_DWORD)result != 1 )
break;
RightChild = RightChild->RightChild;
LABEL_7:
if( !RightChild )
goto LABEL_8;
}
if( RightChild == Table->RestartKey )
Table->RestartKey = RealPredecessor(RightChild);
++Table->DeleteCount;
DeleteNodeFromTree(Table, RightChild);
--Table->NumberGenericTableElements;
Table->WhichOrderedElement = 0;
Table->OrderedPointer = 0i64;
result = ((__int64(__fastcall *)(RTL_AVL_TABLE *, _RTL_BALANCED_LINKS *))Table->FreeRoutine)(Table, RightChild);
LOBYTE(result) = 1;
return result;
}Referenced by:
EtwpFreeKeyNameList
IopCleanupFileObjectIosbRange
IopSetFileObjectIosbRange
PiDmObjectManagerPopulate
PiDmRemoveCacheReferenceForObject
PiPnpRtlObjectEventWorker
PiSwBusRelationRemove
PiSwCloseDevice
PiSwIrpStartCreateWorker
PiSwProcessRemove
PiUpdateDriverDBCache
PnpCleanupDeviceRegistryValues
PopAvlDeleteStatsForPowerRequest
PopAvlFindOrMakeStatsForPowerRequest
PopAvlFindOrMakeStatsForScenarioType
PopCreatePowerRequestObject
PopDirectedDripsUmDirectedFxRemoveTestDevice
PopPowerRequestDeleteEntryById
VfAvlDeleteTreeNode