FsRtlRemoveNodeFromTunnel
VOID __stdcall FsRtlRemoveNodeFromTunnel(TUNNEL *Cache, TUNNEL_NODE *Node, _LIST_ENTRY *FreePoolList, UINT8 *Splay){
__int64 v7;
TUNNEL_NODE **v8;
if( Splay && *Splay )
{
Cache->Cache = RtlDelete((_RTL_SPLAY_LINKS *)Node);
*Splay = 0;
}
else
{
RtlDeleteNoSplay((_RTL_SPLAY_LINKS *)Node, &Cache->Cache);
}
v7 = *((_QWORD *)Node + 3);
if( *(TUNNEL_NODE **)(v7 + 8) != Node + 6 || (v8 = (TUNNEL_NODE **)*((_QWORD *)Node + 4), *v8 != Node + 6) )
__fastfail(3u);
*v8 = (TUNNEL_NODE *)v7;
*(_QWORD *)(v7 + 8) = v8;
--Cache->NumEntries;
FsRtlFreeTunnelNode(Node);
}Referenced by:
FsRtlDeleteKeyFromTunnelCache
FsRtlPruneTunnelCache