32#define DEFAULT_EXTRA_SIZE (72)
33#define DEFAULT_ENTRY_SIZE (sizeof(TUNNEL_NODE_ENTRY) + DEFAULT_EXTRA_SIZE)
35#define TUNNEL_FLAG_POOL 0x2
36#define TUNNEL_FLAG_KEY_SHORT_NAME 0x1
64 if (Rebalance && *Rebalance)
111 NextEntry =
Entry->Flink;
183 if (
Info->DataLength)
243 if (TunnelEntries > 0xFFFF)
275 String = &CurEntry->ShortName;
280 String = &CurEntry->LongName;
394 if (NodeEntry ==
NULL)
399 if (NodeEntry ==
NULL)
405 AllocatedFromPool =
TRUE;
412 CurEntry =
Cache->Cache;
426 LastEntry = CurEntry;
431 CurEntry = CurEntry->LeftChild;
442 CurEntry = CurEntry->RightChild;
449 if (CurEntry !=
NULL)
464 if (CurEntry->
Parent == CurEntry)
493 if (LastEntry ==
NULL)
613 CurEntry =
Cache->Cache;
626 if (LastEntry !=
NULL)
637 LastEntry = CurEntry;
643 if (LastEntry ==
NULL)
664 LastEntry = Successors;
666 while (LastEntry !=
NULL);
714 NextEntry =
Entry->Flink;
728 Cache->NumEntries = 0;
824 if (CurEntry !=
NULL)
906 Cache->NumEntries = 0;
_In_opt_ PWSTR _In_ PWSTR ParameterName
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define KeQuerySystemTime(t)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING ShortName
#define ExAllocatePool(type, size)
_In_ ULONGLONG _In_ PUNICODE_STRING _In_ PUNICODE_STRING LongName
_In_ ULONGLONG DirectoryKey
_In_ ULONGLONG _In_ PUNICODE_STRING _In_ PUNICODE_STRING _In_ BOOLEAN KeyByShortName
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define OBJ_CASE_INSENSITIVE
#define EXCEPTION_EXECUTE_HANDLER
VOID NTAPI ExInitializePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
BOOLEAN NTAPI MmIsThisAnNtAsSystem(VOID)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
@ KeyValueFullInformation
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define _SEH2_EXCEPT(...)
#define STATUS_BUFFER_TOO_SMALL
PULONG MinorVersion OPTIONAL
base of all file and directory entries
root entry for file system trees
RTL_SPLAY_LINKS SplayInfo
LIST_ENTRY TimerQueueEntry
struct _RTL_SPLAY_LINKS * LeftChild
struct _RTL_SPLAY_LINKS * Parent
struct _RTL_SPLAY_LINKS * RightChild
VOID FsRtlEmptyFreePoolList(IN PLIST_ENTRY PoolList)
#define DEFAULT_ENTRY_SIZE
struct TUNNEL_NODE_ENTRY * PTUNNEL_NODE_ENTRY
VOID FsRtlPruneTunnelCache(IN PTUNNEL Cache, IN PLIST_ENTRY PoolList)
VOID NTAPI FsRtlInitializeTunnelCache(IN PTUNNEL Cache)
VOID FsRtlGetTunnelParameterValue(IN PUNICODE_STRING ParameterName, OUT PULONG Value)
VOID FsRtlRemoveNodeFromTunnel(IN PTUNNEL Cache, IN PTUNNEL_NODE_ENTRY CurEntry, IN PLIST_ENTRY PoolList, OUT PBOOLEAN Rebalance)
#define TUNNEL_FLAG_KEY_SHORT_NAME
VOID NTAPI FsRtlInitializeTunnels(VOID)
VOID NTAPI FsRtlAddToTunnelCache(IN PTUNNEL Cache, IN ULONGLONG DirectoryKey, IN PUNICODE_STRING ShortName, IN PUNICODE_STRING LongName, IN BOOLEAN KeyByShortName, IN ULONG DataLength, IN PVOID Data)
VOID FsRtlFreeTunnelNode(IN PTUNNEL_NODE_ENTRY CurEntry, IN PLIST_ENTRY PoolList OPTIONAL)
PAGED_LOOKASIDE_LIST TunnelLookasideList
BOOLEAN NTAPI FsRtlFindInTunnelCache(IN PTUNNEL Cache, IN ULONGLONG DirectoryKey, IN PUNICODE_STRING Name, OUT PUNICODE_STRING ShortName, OUT PUNICODE_STRING LongName, IN OUT PULONG DataLength, OUT PVOID Data)
LONG FsRtlCompareNodeAndKey(IN PTUNNEL_NODE_ENTRY CurEntry, IN ULONGLONG DirectoryKey, IN PUNICODE_STRING KeyString)
VOID NTAPI FsRtlDeleteTunnelCache(IN PTUNNEL Cache)
VOID NTAPI FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache, IN ULONGLONG DirectoryKey)
#define RTL_CONSTANT_STRING(s)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_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
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
#define POOL_COLD_ALLOCATION
#define RtlInsertAsRightChild(ParentLinks, ChildLinks)
#define RtlIsLeftChild(Links)
NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlDelete(_In_ PRTL_SPLAY_LINKS Links)
#define RtlInitializeSplayLinks(Links)
#define RtlInsertAsLeftChild(ParentLinks, ChildLinks)
NTSYSAPI VOID NTAPI RtlDeleteNoSplay(_In_ PRTL_SPLAY_LINKS Links, _Inout_ PRTL_SPLAY_LINKS *Root)
_Must_inspect_result_ NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlRealSuccessor(_In_ PRTL_SPLAY_LINKS Links)