branch update for HEAD-2003091401
[reactos.git] / include / ntos / rtl.h
index 9ddd9bb..9182a62 100755 (executable)
@@ -398,6 +398,7 @@ RtlEqualUnicodeString (
        );
 
 VOID
+STDCALL
 RtlGetCallersAddress (
        PVOID   * CallersAddress
        );
@@ -406,7 +407,7 @@ NTSTATUS
 STDCALL
 RtlQueryRegistryValues (
        IN      ULONG                           RelativeTo,
-       IN      PWSTR                           Path,
+       IN      PCWSTR                          Path,
        IN      PRTL_QUERY_REGISTRY_TABLE       QueryTable,
        IN      PVOID                           Context,
        IN      PVOID                           Environment
@@ -416,8 +417,8 @@ NTSTATUS
 STDCALL
 RtlWriteRegistryValue (
        ULONG   RelativeTo,
-       PWSTR   Path,
-       PWSTR   ValueName,
+       PCWSTR  Path,
+       PCWSTR  ValueName,
        ULONG   ValueType,
        PVOID   ValueData,
        ULONG   ValueLength
@@ -425,8 +426,8 @@ RtlWriteRegistryValue (
 
 NTSTATUS STDCALL
 RtlDeleteRegistryValue(IN ULONG RelativeTo,
-                      IN PWSTR Path,
-                      IN PWSTR ValueName);
+                      IN PCWSTR Path,
+                      IN PCWSTR ValueName);
 
 VOID STDCALL
 RtlMoveMemory (PVOID Destination, CONST VOID* Source, ULONG Length);
@@ -463,7 +464,7 @@ RtlZeroMemory (PVOID Destination, ULONG Length);
 #define RTL_REGISTRY_WINDOWS_NT 3
 #define RTL_REGISTRY_DEVICEMAP  4
 #define RTL_REGISTRY_USER       5
-#define RTL_REGISTRY_ENUM       6   // ReactOS specific: Used internally in kernel only
+#define RTL_REGISTRY_ENUM       6   /* ReactOS specific: Used internally in kernel only */
 #define RTL_REGISTRY_MAXIMUM    7
 
 #define RTL_REGISTRY_HANDLE     0x40000000
@@ -491,18 +492,30 @@ RtlZeroMemory (PVOID Destination, ULONG Length);
 #define LONG_MOST_SIGNIFICANT_BIT      3
 
 
-
-#if defined(__NTOSKRNL__) || defined(__NTDLL__)
+#define NLS_ANSI_CODE_PAGE       NlsAnsiCodePage
+#define NLS_LEAD_BYTE_INFO       NlsLeadByteInfo
 #define NLS_MB_CODE_PAGE_TAG     NlsMbCodePageTag
 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
+#define NLS_OEM_LEAD_BYTE_INFO   NlsOemLeadByteInfo
+
+#if defined(__NTOSKRNL__) || defined(__NTDLL__)
+extern USHORT  EXPORTED NlsAnsiCodePage;
+extern PUSHORT EXPORTED NlsLeadByteInfo;
+extern BOOLEAN EXPORTED NlsMbCodePageTag;
+extern BOOLEAN EXPORTED NlsMbOemCodePageTag;
+#ifndef LIBCAPTIVE
+extern PUSHORT EXPORTED NlsOemLeadByteInfo;
+#else /* !LIBCAPTIVE */
+extern USHORT  EXPORTED NlsOemLeadByteInfo;
+#endif /* LIBCAPTIVE */
 #else
-#define NLS_MB_CODE_PAGE_TAG     (*NlsMbCodePageTag)
-#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
+extern USHORT  IMPORTED NlsAnsiCodePage;
+extern PUSHORT IMPORTED NlsLeadByteInfo;
+extern BOOLEAN IMPORTED NlsMbCodePageTag;
+extern BOOLEAN IMPORTED NlsMbOemCodePageTag;
+extern PUSHORT IMPORTED NlsOemLeadByteInfo;
 #endif /* __NTOSKRNL__ || __NTDLL__ */
 
-extern BOOLEAN NLS_MB_CODE_PAGE_TAG;
-extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG;
-
 
 /*
  * NOTE: ReactOS extensions
@@ -550,13 +563,21 @@ static inline const WCHAR *_RtlInitUnicodeStringFromLiteral_typecheck(const WCHA
 #endif /* G_GNUC_UNUSED */
 static inline const WCHAR *_RtlInitUnicodeStringFromLiteral_typecheck(const WCHAR *s) { return s; }
 
-#define RtlInitUnicodeStringFromLiteral(__PDEST_STRING__,__SOURCE_STRING__) \
- InitializeUnicodeString( \
-  (__PDEST_STRING__), \
-  sizeof(__SOURCE_STRING__) - sizeof(WCHAR), \
-  sizeof(__SOURCE_STRING__), \
-  (WCHAR * /* de"const" the string here */ )_RtlInitUnicodeStringFromLiteral_typecheck((__SOURCE_STRING__)) \
- )
+#define RtlInitUnicodeStringFromLiteral(__PDEST_STRING__,__SOURCE_STRING__) ({ \
+  const WCHAR *_RtlInitUnicodeStringFromLiteral_string=_RtlInitUnicodeStringFromLiteral_typecheck((__SOURCE_STRING__)); \
+       /* Do not: sizeof(__SOURCE_STRING__) \
+        * as captive uses non-literal REACTOS_UCS2() implementation \
+        * returning 'const WCHAR *' type giving sizeof(&)==4. \
+        */ \
+  size_t _RtlInitUnicodeStringFromLiteral_string_length=wcslen(_RtlInitUnicodeStringFromLiteral_string); \
+  \
+       InitializeUnicodeString( \
+        (__PDEST_STRING__), \
+        (_RtlInitUnicodeStringFromLiteral_string_length    ) * sizeof(WCHAR), /* __LENGTH__ */ \
+        (_RtlInitUnicodeStringFromLiteral_string_length + 1) * sizeof(WCHAR), /* __MAXLENGTH__ */ \
+        (WCHAR * /* de"const" the string here */ )_RtlInitUnicodeStringFromLiteral_string \
+       ) \
+ })
 
 
 /*
@@ -598,100 +619,6 @@ PushEntryList (
 */
 
 
-#ifndef __USE_W32API
-
-
-/*
- * An ReactOS extension
- */
-#ifdef G_GNUC_UNUSED
-static inline PSINGLE_LIST_ENTRY PopEntrySList(PSLIST_HEADER ListHead) G_GNUC_UNUSED;
-#endif /* G_GNUC_UNUSED */
-static
-inline
-PSINGLE_LIST_ENTRY
- PopEntrySList(
-       PSLIST_HEADER   ListHead
-       )
-{
-       PSINGLE_LIST_ENTRY ListEntry;
-
-       ListEntry = ListHead->s.Next.Next;
-       if (ListEntry!=NULL)
-       {
-               ListHead->s.Next.Next = ListEntry->Next;
-    ListHead->s.Depth++;
-    ListHead->s.Sequence++;
-  }
-       return ListEntry;
-}
-
-
-/*
- * An ReactOS extension
- */
-#ifdef G_GNUC_UNUSED
-static inline VOID PushEntrySList(PSLIST_HEADER ListHead,PSINGLE_LIST_ENTRY Entry) G_GNUC_UNUSED;
-#endif /* G_GNUC_UNUSED */
-static
-inline
-VOID
-PushEntrySList (
-       PSLIST_HEADER   ListHead,
-       PSINGLE_LIST_ENTRY      Entry
-       )
-{
-       Entry->Next = ListHead->s.Next.Next;
-       ListHead->s.Next.Next = Entry;
-  ListHead->s.Depth++;
-  ListHead->s.Sequence++;
-}
-
-#else /* __USE_W32API */
-
-/*
- * An ReactOS extension
- */
-static
-inline
-PSINGLE_LIST_ENTRY
- PopEntrySList(
-       PSLIST_HEADER   ListHead
-       )
-{
-       PSINGLE_LIST_ENTRY ListEntry;
-
-       ListEntry = ListHead->Next.Next;
-       if (ListEntry!=NULL)
-       {
-               ListHead->Next.Next = ListEntry->Next;
-    ListHead->Depth++;
-    ListHead->Sequence++;
-  }
-       return ListEntry;
-}
-
-
-/*
- * An ReactOS extension
- */
-static
-inline
-VOID
-PushEntrySList (
-       PSLIST_HEADER   ListHead,
-       PSINGLE_LIST_ENTRY      Entry
-       )
-{
-       Entry->Next = ListHead->Next.Next;
-       ListHead->Next.Next = Entry;
-  ListHead->Depth++;
-  ListHead->Sequence++;
-}
-
-#endif /* __USE_W32API */
-
-
 NTSTATUS
 STDCALL
 RtlAddAtomToAtomTable (
@@ -913,8 +840,8 @@ STDCALL
 RtlCreateHeap (
        ULONG                   Flags,
        PVOID                   BaseAddress,
-       ULONG                   SizeToReserve,     // dwMaximumSize
-       ULONG                   SizeToCommit,      // dwInitialSize
+       ULONG                   SizeToReserve,     /* dwMaximumSize */
+       ULONG                   SizeToCommit,      /* dwInitialSize */
        PVOID                   Unknown,
        PRTL_HEAP_DEFINITION    Definition
        );
@@ -947,7 +874,7 @@ RtlCreateUnicodeStringFromAsciiz (OUT       PUNICODE_STRING Destination,
 NTSTATUS
 STDCALL
 RtlCustomCPToUnicodeN (
-       PRTL_NLS_DATA   NlsData,
+       IN      PCPTABLEINFO    CustomCP,
        PWCHAR          UnicodeString,
        ULONG           UnicodeSize,
        PULONG          ResultSize,
@@ -1207,7 +1134,7 @@ RtlImageDirectoryEntryToData (
 PIMAGE_NT_HEADERS
 STDCALL
 RtlImageNtHeader (
-       PVOID   BaseAddress
+       IN      PVOID   BaseAddress
        );
 
 PIMAGE_SECTION_HEADER
@@ -1236,6 +1163,22 @@ RtlInitAnsiString (
 
 VOID
 STDCALL
+RtlInitCodePageTable (
+       IN      PUSHORT         TableBase,
+       OUT     PCPTABLEINFO    CodePageTable
+       );
+
+VOID
+STDCALL
+RtlInitNlsTables (
+       IN      PUSHORT         AnsiTableBase,
+       IN      PUSHORT         OemTableBase,
+       IN      PUSHORT         CaseTableBase,
+       OUT     PNLSTABLEINFO   NlsTable
+       );
+
+VOID
+STDCALL
 RtlInitString (
        PSTRING DestinationString,
        PCSZ    SourceString
@@ -1317,15 +1260,21 @@ RtlIsGenericTableEmpty (
        IN      PRTL_GENERIC_TABLE      Table
        );
 
-BOOLEAN STDCALL
-RtlIsNameLegalDOS8Dot3(IN PUNICODE_STRING UnicodeName,
-                      IN PANSI_STRING AnsiName,
-                      OUT PBOOLEAN SpacesFound);
+BOOLEAN
+STDCALL
+RtlIsNameLegalDOS8Dot3 (
+       IN      PUNICODE_STRING UnicodeName,
+       IN      PANSI_STRING    AnsiName,
+       OUT     PBOOLEAN        SpacesFound
+       );
 
-ULONG STDCALL
-RtlIsTextUnicode (PVOID Buffer,
-                 ULONG Length,
-                 ULONG *Flags);
+ULONG
+STDCALL
+RtlIsTextUnicode (
+       PVOID   Buffer,
+       ULONG   Length,
+       ULONG   *Flags
+       );
 
 LARGE_INTEGER
 STDCALL
@@ -1535,7 +1484,7 @@ RtlMultiByteToUnicodeN (
        PWCHAR UnicodeString,
        ULONG  UnicodeSize,
        PULONG ResultSize,
-       PCHAR  MbString,
+       const PCHAR  MbString,
        ULONG  MbSize
        );
 
@@ -1661,12 +1610,21 @@ RtlReAllocateHeap (
        DWORD   size
        );
 
-NTSTATUS STDCALL
-RtlReserveChunk(IN USHORT CompressionFormat,
-               IN OUT PUCHAR *CompressedBuffer,
-               IN PUCHAR EndOfCompressedBufferPlus1,
-               OUT PUCHAR *ChunkBuffer,
-               IN ULONG ChunkSize);
+NTSTATUS
+STDCALL
+RtlReserveChunk (
+       IN      USHORT  CompressionFormat,
+       IN OUT  PUCHAR  *CompressedBuffer,
+       IN      PUCHAR  EndOfCompressedBufferPlus1,
+       OUT     PUCHAR  *ChunkBuffer,
+       IN      ULONG   ChunkSize
+       );
+
+VOID
+STDCALL
+RtlResetRtlTranslations (
+       IN      PNLSTABLEINFO   NlsTable
+       );
 
 /*
  * VOID
@@ -1870,7 +1828,7 @@ RtlUnicodeStringToOemString (
 NTSTATUS
 STDCALL
 RtlUnicodeToCustomCPN (
-       PRTL_NLS_DATA   NlsData,
+       IN      PCPTABLEINFO    CustomCP,
        PCHAR           MbString,
        ULONG           MbSize,
        PULONG          ResultSize,
@@ -1931,7 +1889,7 @@ NTSTATUS
 STDCALL
 RtlUpcaseUnicodeString (
        IN OUT  PUNICODE_STRING DestinationString,
-       IN      PUNICODE_STRING SourceString,
+       IN      PCUNICODE_STRING        SourceString,
        IN      BOOLEAN         AllocateDestinationString
        );
 
@@ -1962,7 +1920,7 @@ RtlUpcaseUnicodeStringToOemString (
 NTSTATUS
 STDCALL
 RtlUpcaseUnicodeToCustomCPN (
-       PRTL_NLS_DATA   NlsData,
+       IN      PCPTABLEINFO    CustomCP,
        PCHAR           MbString,
        ULONG           MbSize,
        PULONG          ResultSize,
@@ -2202,6 +2160,17 @@ BOOLEAN STDCALL RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess, ACCESS_MASK
 BOOLEAN STDCALL RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess);
 VOID STDCALL RtlMapGenericMask (PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping);
 
+ULONG STDCALL
+RtlRandom (PULONG Seed);
+
+PRTL_SPLAY_LINKS STDCALL
+RtlSubtreePredecessor (IN PRTL_SPLAY_LINKS Links);
+
+PRTL_SPLAY_LINKS STDCALL
+RtlSubtreeSuccessor (IN PRTL_SPLAY_LINKS Links);
+
+ULONG STDCALL
+RtlUniform (PULONG Seed);
 
 /*  functions exported from NTOSKRNL.EXE which are considered RTL  */