#endif // NTOS_MODE_USER
+#define NtCurrentPeb() (NtCurrentTeb()->ProcessEnvironmentBlock)
+
NTSYSAPI
SIZE_T
NTAPI
_In_ PCUNICODE_STRING String
);
+#define RTL_SKIP_BUFFER_COPY 0x00000001
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpEnsureBufferSize(
+ _In_ ULONG Flags,
+ _Inout_ PRTL_BUFFER Buffer,
+ _In_ SIZE_T RequiredSize
+);
+
+#ifdef NTOS_MODE_USER
+
+FORCEINLINE
+VOID
+RtlInitBuffer(
+ _Inout_ PRTL_BUFFER Buffer,
+ _In_ PUCHAR Data,
+ _In_ ULONG DataSize
+)
+{
+ Buffer->Buffer = Buffer->StaticBuffer = Data;
+ Buffer->Size = Buffer->StaticSize = DataSize;
+ Buffer->ReservedForAllocatedSize = 0;
+ Buffer->ReservedForIMalloc = NULL;
+}
+
+FORCEINLINE
+NTSTATUS
+RtlEnsureBufferSize(
+ _In_ ULONG Flags,
+ _Inout_ PRTL_BUFFER Buffer,
+ _In_ ULONG RequiredSize
+)
+{
+ if (Buffer && RequiredSize <= Buffer->Size)
+ return STATUS_SUCCESS;
+ return RtlpEnsureBufferSize(Flags, Buffer, RequiredSize);
+}
+
+FORCEINLINE
+VOID
+RtlFreeBuffer(
+ _Inout_ PRTL_BUFFER Buffer
+)
+{
+ if (Buffer->Buffer != Buffer->StaticBuffer && Buffer->Buffer)
+ RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer->Buffer);
+ Buffer->Buffer = Buffer->StaticBuffer;
+ Buffer->Size = Buffer->StaticSize;
+}
+
+#endif /* NTOS_MODE_USER */
+
//
// Ansi String Functions
//
VOID
);
-#define NtCurrentPeb() (NtCurrentTeb()->ProcessEnvironmentBlock)
//
// Thread Pool Functions
_Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo
);
+
+#define RTL_UNCHANGED_UNK_PATH 1
+#define RTL_CONVERTED_UNC_PATH 2
+#define RTL_CONVERTED_NT_PATH 3
+#define RTL_UNCHANGED_DOS_PATH 4
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlNtPathNameToDosPathName(
+ _In_ ULONG Flags,
+ _Inout_ PRTL_UNICODE_STRING_BUFFER Path,
+ _Out_opt_ PULONG PathType,
+ _Out_opt_ PULONG Unknown
+);
+
+
NTSYSAPI
BOOLEAN
NTAPI