UnicodeString->Buffer = Buffer;
}
+FORCEINLINE
+VOID
+RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString,
+ IN PSTR Buffer,
+ IN USHORT BufferSize)
+{
+ AnsiString->Length = 0;
+ AnsiString->MaximumLength = BufferSize;
+ AnsiString->Buffer = Buffer;
+}
+
//
// LUID Macros
//
//
// RTL Splay Tree Functions
//
+#ifndef RTL_USE_AVL_TABLES
+
+NTSYSAPI
+VOID
+NTAPI
+RtlInitializeGenericTable(
+ OUT PRTL_GENERIC_TABLE Table,
+ IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
+ IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
+ IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
+ IN PVOID TableContext OPTIONAL
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlInsertElementGenericTable(
+ IN PRTL_GENERIC_TABLE Table,
+ IN PVOID Buffer,
+ IN CLONG BufferSize,
+ OUT PBOOLEAN NewElement OPTIONAL
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlInsertElementGenericTableFull(
+ IN PRTL_GENERIC_TABLE Table,
+ IN PVOID Buffer,
+ IN CLONG BufferSize,
+ OUT PBOOLEAN NewElement OPTIONAL,
+ IN PVOID NodeOrParent,
+ IN TABLE_SEARCH_RESULT SearchResult
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlDeleteElementGenericTable(
+ IN PRTL_GENERIC_TABLE Table,
+ IN PVOID Buffer
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlLookupElementGenericTable(
+ IN PRTL_GENERIC_TABLE Table,
+ IN PVOID Buffer
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlLookupElementGenericTableFull(
+ IN PRTL_GENERIC_TABLE Table,
+ IN PVOID Buffer,
+ OUT PVOID *NodeOrParent,
+ OUT TABLE_SEARCH_RESULT *SearchResult
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlEnumerateGenericTable(
+ IN PRTL_GENERIC_TABLE Table,
+ IN BOOLEAN Restart
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlEnumerateGenericTableWithoutSplaying(
+ IN PRTL_GENERIC_TABLE Table,
+ IN OUT PVOID *RestartKey
+);
+
+NTSYSAPI
+PVOID
+NTAPI
+RtlGetElementGenericTable(
+ IN PRTL_GENERIC_TABLE Table,
+ IN ULONG I
+);
+
+NTSYSAPI
+ULONG
+NTAPI
+RtlNumberGenericTableElements(
+ IN PRTL_GENERIC_TABLE Table
+);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlIsGenericTableEmpty(
+ IN PRTL_GENERIC_TABLE Table
+);
+
+#endif /* !RTL_USE_AVL_TABLES */
+
NTSYSAPI
PRTL_SPLAY_LINKS
NTAPI
NTSYSAPI
PRTL_SPLAY_LINKS
NTAPI
-RtlDelete(IN PRTL_SPLAY_LINKS Links
+RtlDelete(
+ IN PRTL_SPLAY_LINKS Links
);
NTSYSAPI
_SplayParent->RightChild = _SplayChild; \
_SplayChild->Parent = _SplayParent; \
}
-
+
//
// RTL AVL Tree Functions
//
RtlIsGenericTableEmptyAvl(
IN PRTL_AVL_TABLE Table
);
-
-#endif
+
+#ifdef RTL_USE_AVL_TABLES
+
+#define RtlInitializeGenericTable RtlInitializeGenericTableAvl
+#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl
+#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl
+#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl
+#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl
+#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl
+#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl
+#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl
+#define RtlGetElementGenericTable RtlGetElementGenericTableAvl
+#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl
+#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl
+
+#endif /* RTL_USE_AVL_TABLES */
+
+#endif /* NTOS_MODE_USER */
//
// Error and Exception Functions
IN ULONG Fill
);
+NTSYSAPI
+SIZE_T
+NTAPI
+RtlCompareMemoryUlong(
+ IN PVOID Source,
+ IN SIZE_T Length,
+ IN ULONG Pattern
+);
+
+#define RtlCopyBytes RtlCopyMemory
+#define RtlFillBytes RtlFillMemory
+#define RtlZeroBytes RtlZeroMemory
+
#endif
NTSYSAPI
);
NTSYSAPI
-ULONG
+RTL_PATH_TYPE
NTAPI
RtlDetermineDosPathNameType_Ustr(
IN PCUNICODE_STRING Path
IN PCWSTR DosPathName,
OUT PUNICODE_STRING NtPathName,
OUT PCWSTR *NtFileNamePart,
- OUT CURDIR *DirectoryInfo
+ OUT PRTL_RELATIVE_NAME_U DirectoryInfo
);
NTSYSAPI
OUT PWSTR *ShortName
);
-NTSYSAPI
-ULONG
-NTAPI
-RtlGetFullPathName_Ustr(
- IN PUNICODE_STRING FileName,
- IN ULONG Size,
- IN PWSTR Buffer,
- OUT PWSTR *ShortName,
- OUT PBOOLEAN InvalidName,
- OUT RTL_PATH_TYPE *PathType
-);
-
NTSYSAPI
ULONG
NTAPI
PUNICODE_STRING Value
);
+VOID
+NTAPI
+RtlReleaseRelativeName(
+ IN PRTL_RELATIVE_NAME_U RelativeName
+);
+
NTSYSAPI
NTSTATUS
NTAPI
RtlInitializeRangeList(
IN OUT PRTL_RANGE_LIST RangeList
);
-
+
NTSYSAPI
VOID
NTAPI
// Activation Context Functions
//
#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlActivateActivationContextEx(
+ IN ULONG Flags,
+ IN PTEB Teb,
+ IN PVOID Context,
+ IN PULONG_PTR Cookie
+);
NTSYSAPI
NTSTATUS
NTAPI
RtlActivateActivationContext(
- IN ULONG Unknown,
+ IN ULONG Flags,
IN HANDLE Handle,
OUT PULONG_PTR Cookie
);
PVOID Context
);
-
NTSYSAPI
-NTSTATUS
-NTAPI
+PRTL_ACTIVATION_CONTEXT_STACK_FRAME
+FASTCALL
RtlActivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame,
IN PVOID Context
RtlFreeThreadActivationContextStack(void);
NTSYSAPI
-NTSTATUS
-NTAPI
+PRTL_ACTIVATION_CONTEXT_STACK_FRAME
+FASTCALL
RtlDeactivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame
);
IN OUT PUNICODE_STRING KeyPath
);
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlpNtOpenKey(
- OUT HANDLE KeyHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN ULONG Unused
-);
-
NTSYSAPI
NTSTATUS
NTAPI
ULONG ValueLength
);
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtCreateKey(
+ OUT HANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG TitleIndex,
+ IN PUNICODE_STRING Class,
+ OUT PULONG Disposition
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtEnumerateSubKey(
+ IN HANDLE KeyHandle,
+ OUT PUNICODE_STRING SubKeyName,
+ IN ULONG Index,
+ IN ULONG Unused
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtMakeTemporaryKey(
+ IN HANDLE KeyHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtOpenKey(
+ OUT HANDLE KeyHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG Unused
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtQueryValueKey(
+ IN HANDLE KeyHandle,
+ OUT PULONG Type OPTIONAL,
+ OUT PVOID Data OPTIONAL,
+ IN OUT PULONG DataLength OPTIONAL,
+ IN ULONG Unused
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlpNtSetValueKey(
+ IN HANDLE KeyHandle,
+ IN ULONG Type,
+ IN PVOID Data,
+ IN ULONG DataLength
+);
+#endif
+
//
// NLS Functions
//
);
#endif
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlGUIDFromString(
+ IN PUNICODE_STRING GuidString,
+ OUT GUID *Guid);
+#endif
+
#ifdef __cplusplus
}
#endif