#include <ddk/ntddk.h>
//#include <internal/nls.h>
-#include <ctype.h>
+#include <msvcrt/ctype.h> /* <ctype.h> does not need to define isw*() */
#include <ntos/minmax.h>
#include <internal/pool.h>
/* FUNCTIONS *****************************************************************/
-WCHAR STDCALL
+WCHAR
+STDCALL
RtlAnsiCharToUnicodeChar(IN CHAR AnsiChar)
{
ULONG Size;
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlAnsiStringToUnicodeSize(IN PANSI_STRING AnsiString)
{
ULONG Size;
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlAnsiStringToUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN PANSI_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlAppendAsciizToString(IN OUT PSTRING Destination,
IN PCSZ Source)
{
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlAppendStringToString(IN OUT PSTRING Destination,
IN PSTRING Source)
{
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlAppendUnicodeStringToString(IN OUT PUNICODE_STRING Destination,
IN PUNICODE_STRING Source)
{
NTSTATUS STDCALL
RtlAppendUnicodeToString(IN OUT PUNICODE_STRING Destination,
- IN PWSTR Source)
+ IN PCWSTR Source)
{
- PWCHAR Src;
+ PCWCH Src;
PWCHAR Dest;
ULONG i;
ULONG slen;
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlCharToInteger(IN PCSZ String,
IN ULONG Base,
IN OUT PULONG Value)
}
-LONG STDCALL
+LONG
+STDCALL
RtlCompareString(IN PSTRING String1,
IN PSTRING String2,
IN BOOLEAN CaseInsensitive)
}
-LONG STDCALL
+LONG
+STDCALL
RtlCompareUnicodeString(IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseInsensitive)
}
-VOID STDCALL
+VOID
+STDCALL
RtlCopyString(IN OUT PSTRING DestinationString,
IN PSTRING SourceString)
{
}
-VOID STDCALL
+VOID
+STDCALL
RtlCopyUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString)
{
}
-BOOLEAN STDCALL
+BOOLEAN
+STDCALL
RtlCreateUnicodeString(IN OUT PUNICODE_STRING Destination,
- IN PWSTR Source)
+ IN PCWSTR Source)
{
ULONG Length;
}
-BOOLEAN STDCALL
+BOOLEAN
+STDCALL
RtlCreateUnicodeStringFromAsciiz(IN OUT PUNICODE_STRING Destination,
IN PCSZ Source)
{
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlDowncaseUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-BOOLEAN STDCALL
+BOOLEAN
+STDCALL
RtlEqualString(IN PSTRING String1,
IN PSTRING String2,
IN BOOLEAN CaseInsensitive)
}
-BOOLEAN STDCALL
+BOOLEAN
+STDCALL
RtlEqualUnicodeString(IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseInsensitive)
}
-VOID STDCALL
+VOID
+STDCALL
RtlFreeAnsiString(IN PANSI_STRING AnsiString)
{
if (AnsiString->Buffer == NULL)
}
-VOID STDCALL
+VOID
+STDCALL
RtlFreeOemString(IN POEM_STRING OemString)
{
if (OemString->Buffer == NULL)
}
-VOID STDCALL
+VOID
+STDCALL
RtlFreeUnicodeString(IN PUNICODE_STRING UnicodeString)
{
if (UnicodeString->Buffer == NULL)
}
-VOID STDCALL
+VOID
+STDCALL
RtlInitAnsiString(IN OUT PANSI_STRING DestinationString,
IN PCSZ SourceString)
{
}
-VOID STDCALL
+VOID
+STDCALL
RtlInitString(IN OUT PSTRING DestinationString,
IN PCSZ SourceString)
{
}
-VOID STDCALL
+VOID
+STDCALL
RtlInitUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString)
{
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlIntegerToChar(IN ULONG Value,
IN ULONG Base,
IN ULONG Length,
tp++;
}
- if (tp - temp >= Length)
+ if ((ULONG) (tp - temp) >= Length)
return STATUS_BUFFER_TOO_SMALL;
sp = String;
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlIntegerToUnicodeString(IN ULONG Value,
IN ULONG Base, /* optional */
IN OUT PUNICODE_STRING String)
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlOemStringToCountedUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN POEM_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlOemStringToUnicodeSize(IN POEM_STRING OemString)
{
ULONG Size;
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlOemStringToUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN POEM_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-BOOLEAN STDCALL
+BOOLEAN
+STDCALL
RtlPrefixString(IN PANSI_STRING String1,
IN PANSI_STRING String2,
IN BOOLEAN CaseInsensitive)
}
-BOOLEAN STDCALL
+BOOLEAN
+STDCALL
RtlPrefixUnicodeString(IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseInsensitive)
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString)
{
ULONG Size;
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUnicodeStringToAnsiString(IN OUT PANSI_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
return STATUS_SUCCESS;
}
+#ifndef LIBCAPTIVE
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUnicodeStringToCountedOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
return STATUS_SUCCESS;
}
+#endif /* LIBCAPTIVE */
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUnicodeStringToInteger(IN PUNICODE_STRING String,
IN ULONG Base,
OUT PULONG Value)
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
{
ULONG Size;
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUnicodeStringToOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-WCHAR STDCALL
+WCHAR
+STDCALL
RtlUpcaseUnicodeChar(IN WCHAR Source)
{
if (Source < L'a')
}
+/*
+ * If 'AllocateDestinationString==TRUE' we return zero-terminated 'DestinationString'
+ * with: DestinationString->MaximumLength=SourceString->Length+sizeof(WCHAR)
+ * If 'AllocateDestinationString==FALSE' we try to zero-terminate the passed 'DestinationString'
+ * but we will succeed with no termination if: SourceString->Length==DestinationString->MaximumLength
+ * Any zero-termination-related behaviour is undocumented by W32,
+ * is 'DestinationString' required to be zero-terminated at all? Dunno.
+ */
NTSTATUS STDCALL
RtlUpcaseUnicodeString(IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString,
}
else
{
- if (SourceString->Length >= DestinationString->MaximumLength)
+ if (SourceString->Length > DestinationString->MaximumLength)
return(STATUS_BUFFER_TOO_SMALL);
}
DestinationString->Length = SourceString->Length;
Dest++;
Src++;
}
- *Dest = 0;
+ /* We may get pre-allocated 'DestinationString' with no space for the terminator! */
+ if (SourceString->Length+sizeof(WCHAR) <= DestinationString->MaximumLength)
+ *Dest = 0;
return(STATUS_SUCCESS);
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUpcaseUnicodeStringToAnsiString(IN OUT PANSI_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUpcaseUnicodeStringToCountedOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
RtlUpcaseUnicodeStringToOemString(IN OUT POEM_STRING DestinationString,
IN PUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
}
-CHAR STDCALL
+CHAR
+STDCALL
RtlUpperChar(IN CHAR Source)
{
WCHAR Unicode;
}
-VOID STDCALL
+VOID
+STDCALL
RtlUpperString(PSTRING DestinationString,
PSTRING SourceString)
{
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlxAnsiStringToUnicodeSize(IN PANSI_STRING AnsiString)
{
- return(RtlAnsiStringToUnicodeSize(AnsiString));
+ return RtlAnsiStringToUnicodeSize(AnsiString);
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlxOemStringToUnicodeSize(IN POEM_STRING OemString)
{
- return(RtlOemStringToUnicodeSize((PANSI_STRING)OemString));
+ return RtlOemStringToUnicodeSize((PANSI_STRING)OemString);
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlxUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString)
{
- return(RtlUnicodeStringToAnsiSize(UnicodeString));
+ return RtlUnicodeStringToAnsiSize(UnicodeString);
}
-ULONG STDCALL
+ULONG
+STDCALL
RtlxUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
{
- return(RtlUnicodeStringToOemSize(UnicodeString));
+ return RtlUnicodeStringToOemSize(UnicodeString);
}
/* EOF */