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;
VOID FsRtlEmptyFreePoolList(IN PLIST_ENTRY PoolList)
#define KeQuerySystemTime(t)
IN PDCB IN POEM_STRING IN PUNICODE_STRING IN OUT POEM_STRING ShortName
VOID FsRtlPruneTunnelCache(IN PTUNNEL Cache, IN PLIST_ENTRY PoolList)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
NTSYSAPI VOID NTAPI RtlDeleteNoSplay(_In_ PRTL_SPLAY_LINKS Links, _Inout_ PRTL_SPLAY_LINKS *Root)
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)
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define OBJ_CASE_INSENSITIVE
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
FORCEINLINE VOID InsertHeadList(_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY Entry)
#define RtlInsertAsRightChild(ParentLinks, ChildLinks)
VOID NTAPI FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache, IN ULONGLONG DirectoryKey)
LIST_ENTRY TimerQueueEntry
#define POOL_COLD_ALLOCATION
#define InsertTailList(ListHead, Entry)
LONG FsRtlCompareNodeAndKey(IN PTUNNEL_NODE_ENTRY CurEntry, IN ULONGLONG DirectoryKey, IN PUNICODE_STRING KeyString)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define RtlMoveMemory(Destination, Source, Length)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define STATUS_BUFFER_TOO_SMALL
#define RtlInsertAsLeftChild(ParentLinks, ChildLinks)
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
RTL_SPLAY_LINKS SplayInfo
struct _RTL_SPLAY_LINKS * Parent
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
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)
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)
#define RtlIsLeftChild(Links)
VOID FsRtlFreeTunnelNode(IN PTUNNEL_NODE_ENTRY CurEntry, IN PLIST_ENTRY PoolList OPTIONAL)
#define RtlInitializeSplayLinks(Links)
_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 PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ ULONGLONG _In_ PUNICODE_STRING _In_ PUNICODE_STRING _In_ BOOLEAN KeyByShortName
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
root entry for file system trees
struct _RTL_SPLAY_LINKS * LeftChild
BOOLEAN NTAPI MmIsThisAnNtAsSystem(VOID)
NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlDelete(_In_ PRTL_SPLAY_LINKS Links)
#define NT_SUCCESS(StatCode)
#define EXCEPTION_EXECUTE_HANDLER
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
VOID NTAPI FsRtlInitializeTunnelCache(IN PTUNNEL Cache)
_In_ ULONGLONG DirectoryKey
#define TUNNEL_FLAG_KEY_SHORT_NAME
VOID FsRtlRemoveNodeFromTunnel(IN PTUNNEL Cache, IN PTUNNEL_NODE_ENTRY CurEntry, IN PLIST_ENTRY PoolList, OUT PBOOLEAN Rebalance)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define ExAllocatePool(type, size)
_In_opt_ PWSTR _In_ PWSTR ParameterName
PAGED_LOOKASIDE_LIST TunnelLookasideList
#define DEFAULT_ENTRY_SIZE
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
#define InitializeListHead(ListHead)
_In_ ULONGLONG _In_ PUNICODE_STRING _In_ PUNICODE_STRING LongName
struct _RTL_SPLAY_LINKS * RightChild
#define InitializeObjectAttributes(p, n, a, r, s)
#define _SEH2_EXCEPT(...)
_Must_inspect_result_ NTSYSAPI PRTL_SPLAY_LINKS NTAPI RtlRealSuccessor(_In_ PRTL_SPLAY_LINKS Links)
VOID NTAPI FsRtlDeleteTunnelCache(IN PTUNNEL Cache)
base of all file and directory entries
VOID NTAPI FsRtlInitializeTunnels(VOID)
VOID FsRtlGetTunnelParameterValue(IN PUNICODE_STRING ParameterName, OUT PULONG Value)
struct TUNNEL_NODE_ENTRY * PTUNNEL_NODE_ENTRY
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL