/*
* Unicode->Ansi String Functions
*/
-/* FIXME: Use macro */
-#undef RtlUnicodeStringToAnsiSize
NTSYSAPI
ULONG
NTAPI
-RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString);
+RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString);
+
+#ifdef NTOS_MODE_USER
+#define RtlUnicodeStringToAnsiSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToAnsiSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+)
+#endif
NTSYSAPI
NTSTATUS
ULONG UnicodeSize
);
-/* FIXME: Use macro */
-#undef RtlUnicodeStringToOemSize
NTSYSAPI
ULONG
NTAPI
-RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString);
+RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString);
+
+#ifdef NTOS_MODE_USER
+#define RtlUnicodeStringToOemSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxUnicodeStringToOemSize(STRING) : \
+ ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
+)
+#define RtlUnicodeStringToCountedOemSize(STRING) ( \
+ (ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof(ANSI_NULL)) \
+)
+#endif
NTSYSAPI
NTSTATUS
ULONG UnicodeSize
);
-/*
- * OEM to Unicode Functions
- */
-/* FIXME: Use macro */
-#undef RtlOemStringToUnicodeSize
NTSYSAPI
ULONG
NTAPI
-RtlOemStringToUnicodeSize(POEM_STRING AnsiString);
+RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString);
+
+/*
+ * OEM to Unicode Functions
+ */
+#ifdef NTOS_MODE_USER
+#define RtlOemStringToUnicodeSize(STRING) ( \
+ NLS_MB_OEM_CODE_PAGE_TAG ? \
+ RtlxOemStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+)
+#define RtlOemStringToCountedUnicodeSize(STRING) ( \
+ (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
+)
+#endif
NTSYSAPI
NTSTATUS
/*
* Ansi->Unicode String Functions
*/
+NTSYSAPI
NTSTATUS
NTAPI
RtlAnsiStringToUnicodeString(
BOOLEAN AllocateDestinationString
);
-/* FIXME: Use macro */
-#undef RtlAnsiStringToUnicodeSize
-NTSYSAPI
-ULONG
-NTAPI
-RtlAnsiStringToUnicodeSize(
- PANSI_STRING AnsiString
-);
+#ifdef NTOS_MODE_USER
+#define RtlAnsiStringToUnicodeSize(STRING) ( \
+ NLS_MB_CODE_PAGE_TAG ? \
+ RtlxAnsiStringToUnicodeSize(STRING) : \
+ ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
+)
+#endif
NTSYSAPI
BOOLEAN
PCWSTR SourceString
);
+#ifdef NTOS_MODE_USER
NTSYSAPI
NTSTATUS
NTAPI
IN PCUNICODE_STRING UniSource,
IN BOOLEAN AllocateDestinationString
);
+#endif
NTSYSAPI
NTSTATUS
/*
* Misc conversion functions
*/
-/* FIXME: Use inline */
-NTSYSAPI
+#if defined(NTOS_MODE_USER) && !defined(NO_RTL_INLINES)
+static __inline
LARGE_INTEGER
-NTAPI
-RtlConvertLongToLargeInteger(IN LONG SignedInteger);
+NTAPI_INLINE
+RtlConvertLongToLargeInteger(LONG SignedInteger)
+{
+ LARGE_INTEGER Result;
-/* FIXME: Use inline */
-NTSYSAPI
+ Result.QuadPart = SignedInteger;
+ return Result;
+}
+
+static __inline
LARGE_INTEGER
-NTAPI
+NTAPI_INLINE
RtlEnlargedIntegerMultiply(
LONG Multiplicand,
- LONG Multiplier
-);
+ LONG Multiplier)
+{
+ LARGE_INTEGER Product;
-/* FIXME: Use inline */
-NTSYSAPI
+ Product.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+
+static __inline
ULONG
-NTAPI
+NTAPI_INLINE
RtlEnlargedUnsignedDivide(
- ULARGE_INTEGER Dividend,
- ULONG Divisor,
- PULONG Remainder
-);
+ IN ULARGE_INTEGER Dividend,
+ IN ULONG Divisor,
+ IN PULONG Remainder OPTIONAL)
+{
+ ULONG Quotient;
-/* FIXME: Use inline */
-NTSYSAPI
+ Quotient = (ULONG)(Dividend.QuadPart / Divisor);
+ if (Remainder) {
+ *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
+ }
+
+ return Quotient;
+}
+
+static __inline
LARGE_INTEGER
-NTAPI
+NTAPI_INLINE
RtlEnlargedUnsignedMultiply(
ULONG Multiplicand,
- ULONG Multiplier
-);
+ ULONG Multiplier)
+{
+ LARGE_INTEGER Product;
+
+ Product.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
+ return Product;
+}
+#endif
NTSYSAPI
ULONG