8 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined (__NTAPP__)
13 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
21 * PURPOSE: Flags for RtlQueryRegistryValues
23 #define RTL_QUERY_REGISTRY_SUBKEY (0x00000001)
24 #define RTL_QUERY_REGISTRY_TOPKEY (0x00000002)
25 #define RTL_QUERY_REGISTRY_REQUIRED (0x00000004)
26 #define RTL_QUERY_REGISTRY_NOVALUE (0x00000008)
27 #define RTL_QUERY_REGISTRY_NOEXPAND (0x00000010)
28 #define RTL_QUERY_REGISTRY_DIRECT (0x00000020)
29 #define RTL_QUERY_REGISTRY_DELETE (0x00000040)
33 * InitializeObjectAttributes (
34 * POBJECT_ATTRIBUTES InitializedAttributes,
35 * PUNICODE_STRING ObjectName,
37 * HANDLE RootDirectory,
38 * PSECURITY_DESCRIPTOR SecurityDescriptor
41 * FUNCTION: Sets up a parameter of type OBJECT_ATTRIBUTES for a
42 * subsequent call to ZwCreateXXX or ZwOpenXXX
44 * InitializedAttributes (OUT) = Caller supplied storage for the
46 * ObjectName = Full path name for object
47 * Attributes = Attributes for the object
48 * RootDirectory = Where the object should be placed or NULL
49 * SecurityDescriptor = Ignored
51 #define InitializeObjectAttributes(p,n,a,r,s) \
53 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
54 (p)->ObjectName = n; \
55 (p)->Attributes = a; \
56 (p)->RootDirectory = r; \
57 (p)->SecurityDescriptor = s; \
58 (p)->SecurityQualityOfService = NULL; \
64 * InitializeListHead (
65 * PLIST_ENTRY ListHead
68 * FUNCTION: Initializes a double linked list
70 * ListHead = Caller supplied storage for the head of the list
72 #define InitializeListHead(ListHead) \
74 (ListHead)->Flink = (ListHead); \
75 (ListHead)->Blink = (ListHead); \
82 * PLIST_ENTRY ListHead,
86 * FUNCTION: Inserts an entry in a double linked list
88 * ListHead = Head of the list
89 * Entry = Entry to insert
91 #define InsertHeadList(ListHead, ListEntry) \
93 PLIST_ENTRY OldFlink; \
94 OldFlink = (ListHead)->Flink; \
95 (ListEntry)->Flink = OldFlink; \
96 (ListEntry)->Blink = (ListHead); \
97 OldFlink->Blink = (ListEntry); \
98 (ListHead)->Flink = (ListEntry); \
99 assert((ListEntry) != NULL); \
100 assert((ListEntry)->Blink!=NULL); \
101 assert((ListEntry)->Blink->Flink == (ListEntry)); \
102 assert((ListEntry)->Flink != NULL); \
103 assert((ListEntry)->Flink->Blink == (ListEntry)); \
110 * PLIST_ENTRY ListHead,
115 * Inserts an entry in a double linked list
118 * ListHead = Head of the list
119 * Entry = Entry to insert
121 #define InsertTailList(ListHead, ListEntry) \
123 PLIST_ENTRY OldBlink; \
124 OldBlink = (ListHead)->Blink; \
125 (ListEntry)->Flink = (ListHead); \
126 (ListEntry)->Blink = OldBlink; \
127 OldBlink->Flink = (ListEntry); \
128 (ListHead)->Blink = (ListEntry); \
129 assert((ListEntry) != NULL); \
130 assert((ListEntry)->Blink != NULL); \
131 assert((ListEntry)->Blink->Flink == (ListEntry)); \
132 assert((ListEntry)->Flink != NULL); \
133 assert((ListEntry)->Flink->Blink == (ListEntry)); \
139 * PLIST_ENTRY ListHead
143 * Checks if a double linked list is empty
146 * ListHead = Head of the list
148 #define IsListEmpty(ListHead) \
149 ((ListHead)->Flink == (ListHead))
155 * PSINGLE_LIST_ENTRY ListHead
159 * Removes an entry from the head of a single linked list
162 * ListHead = Head of the list
168 #define PopEntryList(ListHead) \
171 PSINGLE_LIST_ENTRY FirstEntry; \
172 FirstEntry = (ListHead)->Next; \
173 if (FirstEntry != NULL) \
175 (ListHead)->Next = FirstEntry->Next; \
180 static inline PSINGLE_LIST_ENTRY PopEntryList(PSINGLE_LIST_ENTRY ListHead) G_GNUC_UNUSED;
181 #endif /* G_GNUC_UNUSED */
182 static inline PSINGLE_LIST_ENTRY
183 PopEntryList(PSINGLE_LIST_ENTRY ListHead)
185 PSINGLE_LIST_ENTRY ListEntry;
187 ListEntry = ListHead->Next;
190 ListHead->Next = ListEntry->Next;
196 #define RtlCopyMemory(Destination,Source,Length) \
197 memcpy((Destination),(Source),(Length))
200 static inline VOID PushEntryList(PSINGLE_LIST_ENTRY ListHead,PSINGLE_LIST_ENTRY Entry) G_GNUC_UNUSED;
201 #endif /* G_GNUC_UNUSED */
206 PSINGLE_LIST_ENTRY ListHead,
207 PSINGLE_LIST_ENTRY Entry
210 Entry->Next = ListHead->Next;
211 ListHead->Next = Entry;
221 * Removes an entry from a double linked list
224 * ListEntry = Entry to remove
226 #define RemoveEntryList(ListEntry) \
228 PLIST_ENTRY OldFlink; \
229 PLIST_ENTRY OldBlink; \
230 assert((ListEntry) != NULL); \
231 assert((ListEntry)->Blink!=NULL); \
232 assert((ListEntry)->Blink->Flink == (ListEntry)); \
233 assert((ListEntry)->Flink != NULL); \
234 assert((ListEntry)->Flink->Blink == (ListEntry)); \
235 OldFlink = (ListEntry)->Flink; \
236 OldBlink = (ListEntry)->Blink; \
237 OldFlink->Blink = OldBlink; \
238 OldBlink->Flink = OldFlink; \
239 (ListEntry)->Flink = NULL; \
240 (ListEntry)->Blink = NULL; \
247 * PLIST_ENTRY ListHead
251 * Removes the head entry from a double linked list
254 * ListHead = Head of the list
260 #define RemoveHeadList(ListHead) \
262 {RemoveEntryList((ListHead)->Flink)}
272 static inline PLIST_ENTRY RemoveHeadList(PLIST_ENTRY ListHead) G_GNUC_UNUSED;
273 #endif /* G_GNUC_UNUSED */
282 PLIST_ENTRY OldFlink;
283 PLIST_ENTRY OldBlink;
285 Old = ListHead->Flink;
287 OldFlink = ListHead->Flink->Flink;
288 OldBlink = ListHead->Flink->Blink;
289 OldFlink->Blink = OldBlink;
290 OldBlink->Flink = OldFlink;
304 * PLIST_ENTRY ListHead
308 * Removes the tail entry from a double linked list
311 * ListHead = Head of the list
317 #define RemoveTailList(ListHead) \
319 {RemoveEntryList((ListHead)->Blink)}
329 static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY ListHead) G_GNUC_UNUSED;
330 #endif /* G_GNUC_UNUSED */
339 PLIST_ENTRY OldFlink;
340 PLIST_ENTRY OldBlink;
342 Old = ListHead->Blink;
344 OldFlink = ListHead->Blink->Flink;
345 OldBlink = ListHead->Blink->Blink;
346 OldFlink->Blink = OldBlink;
347 OldBlink->Flink = OldFlink;
359 RtlAppendUnicodeToString (
360 PUNICODE_STRING Destination,
374 RtlEqualUnicodeString (
375 PUNICODE_STRING String1,
376 PUNICODE_STRING String2,
377 BOOLEAN CaseInSensitive
381 RtlGetCallersAddress (
382 PVOID * CallersAddress
387 RtlQueryRegistryValues (
390 IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
397 RtlWriteRegistryValue (
407 RtlDeleteRegistryValue(IN ULONG RelativeTo,
412 RtlMoveMemory (PVOID Destination, CONST VOID* Source, ULONG Length);
415 RtlEqualLuid(IN PLUID Luid1,
427 RtlZeroMemory (PVOID Destination, ULONG Length);
429 #else /* __USE_W32API */
431 #include <ddk/ntifs.h>
433 #endif /* __USE_W32API */
437 * PURPOSE: Used with RtlCheckRegistryKey, RtlCreateRegistryKey,
438 * RtlDeleteRegistryKey
440 #define RTL_REGISTRY_ABSOLUTE 0
441 #define RTL_REGISTRY_SERVICES 1
442 #define RTL_REGISTRY_CONTROL 2
443 #define RTL_REGISTRY_WINDOWS_NT 3
444 #define RTL_REGISTRY_DEVICEMAP 4
445 #define RTL_REGISTRY_USER 5
446 #define RTL_REGISTRY_ENUM 6 // ReactOS specific: Used internally in kernel only
447 #define RTL_REGISTRY_MAXIMUM 7
449 #define RTL_REGISTRY_HANDLE 0x40000000
450 #define RTL_REGISTRY_OPTIONAL 0x80000000
453 #define SHORT_SIZE (sizeof(USHORT))
454 #define SHORT_MASK (SHORT_SIZE-1)
455 #define LONG_SIZE (sizeof(ULONG))
456 #define LONG_MASK (LONG_SIZE-1)
457 #define LOWBYTE_MASK 0x00FF
459 #define FIRSTBYTE(Value) ((Value) & LOWBYTE_MASK)
460 #define SECONDBYTE(Value) (((Value) >> 8) & LOWBYTE_MASK)
461 #define THIRDBYTE(Value) (((Value) >> 16) & LOWBYTE_MASK)
462 #define FOURTHBYTE(Value) (((Value) >> 24) & LOWBYTE_MASK)
464 /* FIXME: reverse byte-order on big-endian machines (e.g. MIPS) */
465 #define SHORT_LEAST_SIGNIFICANT_BIT 0
466 #define SHORT_MOST_SIGNIFICANT_BIT 1
468 #define LONG_LEAST_SIGNIFICANT_BIT 0
469 #define LONG_3RD_MOST_SIGNIFICANT_BIT 1
470 #define LONG_2RD_MOST_SIGNIFICANT_BIT 2
471 #define LONG_MOST_SIGNIFICANT_BIT 3
475 #if defined(__NTOSKRNL__) || defined(__NTDLL__)
476 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
477 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
479 #define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
480 #define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
481 #endif /* __NTOSKRNL__ || __NTDLL__ */
483 extern BOOLEAN NLS_MB_CODE_PAGE_TAG;
484 extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG;
488 * NOTE: ReactOS extensions
490 #define RtlMin(X,Y) (((X) < (Y))? (X) : (Y))
491 #define RtlMax(X,Y) (((X) > (Y))? (X) : (Y))
492 #define RtlMin3(X,Y,Z) (((X) < (Y)) ? RtlMin(X,Z) : RtlMin(Y,Z))
493 #define RtlMax3(X,Y,Z) (((X) > (Y)) ? RtlMax(X,Z) : RtlMax(Y,Z))
498 * InitializeUnicodeString(PUNICODE_STRING DestinationString,
500 * USHORT MaximumLength,
503 * Initialize n UNICODE_STRING from its fields. Use when you know the values of
504 * all the fields in advance
507 #define InitializeUnicodeString(__PDEST_STRING__,__LENGTH__,__MAXLENGTH__,__BUFFER__) \
509 (__PDEST_STRING__)->Length = (__LENGTH__); \
510 (__PDEST_STRING__)->MaximumLength = (__MAXLENGTH__); \
511 (__PDEST_STRING__)->Buffer = (__BUFFER__); \
517 * RtlInitUnicodeStringFromLiteral(PUNICODE_STRING DestinationString,
518 * PCWSTR SourceString);
520 * Initialize a UNICODE_STRING from a wide string literal. WARNING: use only with
521 * string literals and statically initialized arrays, it will calculate the wrong
525 /* Prevent hide of the inappropriate passed type by our
526 * de"const" of the string in the macro below.
529 static inline const WCHAR *_RtlInitUnicodeStringFromLiteral_typecheck(const WCHAR *s) G_GNUC_UNUSED;
530 #endif /* G_GNUC_UNUSED */
531 static inline const WCHAR *_RtlInitUnicodeStringFromLiteral_typecheck(const WCHAR *s) { return s; }
533 #define RtlInitUnicodeStringFromLiteral(__PDEST_STRING__,__SOURCE_STRING__) \
534 InitializeUnicodeString( \
535 (__PDEST_STRING__), \
536 sizeof(__SOURCE_STRING__) - sizeof(WCHAR), \
537 sizeof(__SOURCE_STRING__), \
538 (WCHAR * /* de"const" the string here */ )_RtlInitUnicodeStringFromLiteral_typecheck((__SOURCE_STRING__)) \
543 * Static initializer for UNICODE_STRING variables.
546 * UNICODE_STRING wstr = UNICODE_STRING_INITIALIZER(L"string");
549 #define UNICODE_STRING_INITIALIZER(__SOURCE_STRING__) \
551 sizeof((__SOURCE_STRING__)) - sizeof(WCHAR), \
552 sizeof((__SOURCE_STRING__)), \
553 (__SOURCE_STRING__) \
558 * Initializer for empty UNICODE_STRING variables.
561 * UNICODE_STRING wstr = EMPTY_UNICODE_STRING;
564 #define EMPTY_UNICODE_STRING {0, 0, NULL}
570 PSINGLE_LIST_ENTRY ListHead,
571 PSINGLE_LIST_ENTRY Entry
575 #define PushEntryList(ListHead,Entry) \
576 (Entry)->Next = (ListHead)->Next; \
577 (ListHead)->Next = (Entry)
585 * An ReactOS extension
588 static inline PSINGLE_LIST_ENTRY PopEntrySList(PSLIST_HEADER ListHead) G_GNUC_UNUSED;
589 #endif /* G_GNUC_UNUSED */
594 PSLIST_HEADER ListHead
597 PSINGLE_LIST_ENTRY ListEntry;
599 ListEntry = ListHead->s.Next.Next;
602 ListHead->s.Next.Next = ListEntry->Next;
604 ListHead->s.Sequence++;
611 * An ReactOS extension
614 static inline VOID PushEntrySList(PSLIST_HEADER ListHead,PSINGLE_LIST_ENTRY Entry) G_GNUC_UNUSED;
615 #endif /* G_GNUC_UNUSED */
620 PSLIST_HEADER ListHead,
621 PSINGLE_LIST_ENTRY Entry
624 Entry->Next = ListHead->s.Next.Next;
625 ListHead->s.Next.Next = Entry;
627 ListHead->s.Sequence++;
630 #else /* __USE_W32API */
633 * An ReactOS extension
639 PSLIST_HEADER ListHead
642 PSINGLE_LIST_ENTRY ListEntry;
644 ListEntry = ListHead->Next.Next;
647 ListHead->Next.Next = ListEntry->Next;
649 ListHead->Sequence++;
656 * An ReactOS extension
662 PSLIST_HEADER ListHead,
663 PSINGLE_LIST_ENTRY Entry
666 Entry->Next = ListHead->Next.Next;
667 ListHead->Next.Next = Entry;
669 ListHead->Sequence++;
672 #endif /* __USE_W32API */
677 RtlAddAtomToAtomTable (
678 IN PRTL_ATOM_TABLE AtomTable,
692 RtlAnsiCharToUnicodeChar (
698 RtlAnsiStringToUnicodeSize (
699 PANSI_STRING AnsiString
704 RtlAnsiStringToUnicodeString (
705 PUNICODE_STRING DestinationString,
706 PANSI_STRING SourceString,
707 BOOLEAN AllocateDestinationString
712 RtlAppendAsciizToString(
719 RtlAppendStringToString (
726 RtlAppendUnicodeStringToString (
727 PUNICODE_STRING Destination,
728 PUNICODE_STRING Source
734 PRTL_BITMAP BitMapHeader,
742 PRTL_BITMAP BitMapHeader,
750 PVOID FailedAssertion,
766 RtlCheckRegistryKey (
774 IN PRTL_BITMAP BitMapHeader
780 IN PRTL_BITMAP BitMapHeader,
781 IN ULONG StartingIndex,
782 IN ULONG NumberToClear
797 BOOLEAN CaseInsensitive
802 RtlCompareUnicodeString (
803 PUNICODE_STRING String1,
804 PUNICODE_STRING String2,
805 BOOLEAN CaseInsensitive
809 RtlCompressBuffer(IN USHORT CompressionFormatAndEngine,
810 IN PUCHAR UncompressedBuffer,
811 IN ULONG UncompressedBufferSize,
812 OUT PUCHAR CompressedBuffer,
813 IN ULONG CompressedBufferSize,
814 IN ULONG UncompressedChunkSize,
815 OUT PULONG FinalCompressedSize,
819 RtlCompressChunks(IN PUCHAR UncompressedBuffer,
820 IN ULONG UncompressedBufferSize,
821 OUT PUCHAR CompressedBuffer,
822 IN ULONG CompressedBufferSize,
823 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo,
824 IN ULONG CompressedDataInfoLength,
827 LARGE_INTEGER STDCALL
828 RtlConvertLongToLargeInteger(IN LONG SignedInteger);
831 RtlConvertSidToUnicodeString(IN OUT PUNICODE_STRING String,
833 IN BOOLEAN AllocateString);
835 LARGE_INTEGER STDCALL
836 RtlConvertUlongToLargeInteger(IN ULONG UnsignedInteger);
854 #define RtlCopyBytes RtlCopyMemory
857 RtlCopyLuid(IN PLUID LuidDest,
861 RtlCopyLuidAndAttributesArray(ULONG Count,
862 PLUID_AND_ATTRIBUTES Src,
863 PLUID_AND_ATTRIBUTES Dest);
866 RtlCopySid(ULONG BufferLength,
871 RtlCopySidAndAttributesArray(ULONG Count,
872 PSID_AND_ATTRIBUTES Src,
874 PSID_AND_ATTRIBUTES Dest,
876 PVOID* RemainingSidArea,
877 PULONG RemainingSidAreaSize);
880 RtlCopyString(PSTRING DestinationString,
881 PSTRING SourceString);
884 RtlCopyUnicodeString(PUNICODE_STRING DestinationString,
885 PUNICODE_STRING SourceString);
888 RtlCreateAtomTable(IN ULONG TableSize,
889 IN OUT PRTL_ATOM_TABLE *AtomTable);
896 ULONG SizeToReserve, // dwMaximumSize
897 ULONG SizeToCommit, // dwInitialSize
899 PRTL_HEAP_DEFINITION Definition
904 RtlCreateRegistryKey (
911 RtlCreateSecurityDescriptor (
912 PSECURITY_DESCRIPTOR SecurityDescriptor,
918 RtlCreateUnicodeString (
919 OUT PUNICODE_STRING Destination,
924 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
929 RtlCustomCPToUnicodeN (
930 PRTL_NLS_DATA NlsData,
931 PWCHAR UnicodeString,
939 RtlDecompressBuffer(IN USHORT CompressionFormat,
940 OUT PUCHAR UncompressedBuffer,
941 IN ULONG UncompressedBufferSize,
942 IN PUCHAR CompressedBuffer,
943 IN ULONG CompressedBufferSize,
944 OUT PULONG FinalUncompressedSize);
947 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer,
948 IN ULONG UncompressedBufferSize,
949 IN PUCHAR CompressedBuffer,
950 IN ULONG CompressedBufferSize,
951 IN PUCHAR CompressedTail,
952 IN ULONG CompressedTailSize,
953 IN PCOMPRESSED_DATA_INFO CompressedDataInfo);
956 RtlDecompressFragment(IN USHORT CompressionFormat,
957 OUT PUCHAR UncompressedFragment,
958 IN ULONG UncompressedFragmentSize,
959 IN PUCHAR CompressedBuffer,
960 IN ULONG CompressedBufferSize,
961 IN ULONG FragmentOffset,
962 OUT PULONG FinalUncompressedSize,
966 RtlDeleteAtomFromAtomTable(IN PRTL_ATOM_TABLE AtomTable,
970 RtlDescribeChunk(IN USHORT CompressionFormat,
971 IN OUT PUCHAR *CompressedBuffer,
972 IN PUCHAR EndOfCompressedBufferPlus1,
973 OUT PUCHAR *ChunkBuffer,
974 OUT PULONG ChunkSize);
977 RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
980 RtlDestroyHeap(HANDLE hheap);
984 RtlDowncaseUnicodeString (
985 IN OUT PUNICODE_STRING DestinationString,
986 IN PUNICODE_STRING SourceString,
987 IN BOOLEAN AllocateDestinationString
993 IN PRTL_ATOM_TABLE AtomTable,
994 IN BOOLEAN DeletePinned
999 RtlEnlargedIntegerMultiply (
1006 RtlEnlargedUnsignedDivide (
1007 ULARGE_INTEGER Dividend,
1014 RtlEnlargedUnsignedMultiply (
1024 BOOLEAN CaseInSensitive
1029 RtlExtendedIntegerMultiply (
1030 LARGE_INTEGER Multiplicand,
1036 RtlExtendedLargeIntegerDivide (
1037 LARGE_INTEGER Dividend,
1044 RtlExtendedMagicDivide (
1045 LARGE_INTEGER Dividend,
1046 LARGE_INTEGER MagicDivisor,
1052 RtlFillMemoryUlong (
1061 PRTL_BITMAP BitMapHeader,
1068 RtlFindClearBitsAndSet (
1069 PRTL_BITMAP BitMapHeader,
1076 RtlFindFirstRunClear (
1077 PRTL_BITMAP BitMapHeader,
1078 PULONG StartingIndex
1083 RtlFindFirstRunSet (
1084 PRTL_BITMAP BitMapHeader,
1085 PULONG StartingIndex
1090 RtlFindLongestRunClear (
1091 PRTL_BITMAP BitMapHeader,
1092 PULONG StartingIndex
1097 RtlFindLongestRunSet (
1098 PRTL_BITMAP BitMapHeader,
1099 PULONG StartingIndex
1105 IN PVOID BaseAddress,
1109 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1115 PRTL_BITMAP BitMapHeader,
1122 RtlFindSetBitsAndClear (
1123 PRTL_BITMAP BitMapHeader,
1130 RtlFormatCurrentUserKeyPath (
1131 IN OUT PUNICODE_STRING KeyPath
1137 PANSI_STRING AnsiString
1151 POEM_STRING OemString
1156 RtlFreeUnicodeString (
1157 PUNICODE_STRING UnicodeString
1161 RtlGenerate8dot3Name(IN PUNICODE_STRING Name,
1162 IN BOOLEAN AllowExtendedCharacters,
1163 IN OUT PGENERATE_NAME_CONTEXT Context,
1164 OUT PUNICODE_STRING Name8dot3);
1167 RtlGetCompressionWorkSpaceSize(IN USHORT CompressionFormatAndEngine,
1168 OUT PULONG CompressBufferAndWorkSpaceSize,
1169 OUT PULONG CompressFragmentWorkSpaceSize);
1173 RtlGetDefaultCodePage (
1174 PUSHORT AnsiCodePage,
1180 RtlImageDirectoryEntryToData (
1193 PIMAGE_SECTION_HEADER
1195 RtlImageRvaToSection (
1196 PIMAGE_NT_HEADERS NtHeader,
1204 PIMAGE_NT_HEADERS NtHeader,
1207 PIMAGE_SECTION_HEADER *SectionHeader
1213 PANSI_STRING DestinationString,
1220 PSTRING DestinationString,
1226 RtlInitUnicodeString (
1227 PUNICODE_STRING DestinationString,
1233 RtlInitializeBitMap (
1234 IN OUT PRTL_BITMAP BitMapHeader,
1235 IN PULONG BitMapBuffer,
1236 IN ULONG SizeOfBitMap
1241 RtlInitializeContext (
1242 IN HANDLE ProcessHandle,
1243 IN PCONTEXT Context,
1245 IN PTHREAD_START_ROUTINE StartAddress,
1246 IN OUT PINITIAL_TEB InitialTeb
1251 RtlInitializeGenericTable (
1252 IN OUT PRTL_GENERIC_TABLE Table,
1253 IN PVOID CompareRoutine,
1254 IN PVOID AllocateRoutine,
1255 IN PVOID FreeRoutine,
1256 IN ULONG UserParameter
1261 RtlInsertElementGenericTable (
1262 IN OUT PRTL_GENERIC_TABLE Table,
1264 IN ULONG ElementSize,
1265 IN PBOOLEAN NewElement OPTIONAL
1270 RtlLookupElementGenericTableFull (
1271 IN OUT PRTL_GENERIC_TABLE Table,
1273 OUT PVOID *NodeOrParent,
1274 OUT TABLE_SEARCH_RESULT *SearchResult
1288 RtlIntegerToUnicodeString (
1291 IN OUT PUNICODE_STRING String
1296 RtlIsGenericTableEmpty (
1297 IN PRTL_GENERIC_TABLE Table
1301 RtlIsNameLegalDOS8Dot3(IN PUNICODE_STRING UnicodeName,
1302 IN PANSI_STRING AnsiName,
1303 OUT PBOOLEAN SpacesFound);
1307 RtlLargeIntegerAdd (
1308 LARGE_INTEGER Addend1,
1309 LARGE_INTEGER Addend2
1314 * RtlLargeIntegerAnd (
1315 * PLARGE_INTEGER Result,
1316 * LARGE_INTEGER Source,
1317 * LARGE_INTEGER Mask
1320 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1322 Result.HighPart = Source.HighPart & Mask.HighPart; \
1323 Result.LowPart = Source.LowPart & Mask.LowPart; \
1328 RtlLargeIntegerArithmeticShift (
1329 LARGE_INTEGER LargeInteger,
1335 RtlLargeIntegerDivide (
1336 LARGE_INTEGER Dividend,
1337 LARGE_INTEGER Divisor,
1338 PLARGE_INTEGER Remainder
1343 * RtlLargeIntegerEqualTo (
1344 * LARGE_INTEGER Operand1,
1345 * LARGE_INTEGER Operand2
1348 #define RtlLargeIntegerEqualTo(X,Y) \
1349 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1353 * RtlLargeIntegerEqualToZero (
1354 * LARGE_INTEGER Operand
1357 #define RtlLargeIntegerEqualToZero(X) \
1358 (!((X).LowPart | (X).HighPart))
1362 * RtlLargeIntegerGreaterThan (
1363 * LARGE_INTEGER Operand1,
1364 * LARGE_INTEGER Operand2
1367 #define RtlLargeIntegerGreaterThan(X,Y) \
1368 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1369 ((X).HighPart > (Y).HighPart))
1373 * RtlLargeIntegerGreaterThanOrEqualTo (
1374 * LARGE_INTEGER Operand1,
1375 * LARGE_INTEGER Operand2
1378 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1379 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1380 ((X).HighPart > (Y).HighPart))
1384 * RtlLargeIntegerGreaterThanOrEqualToZero (
1385 * LARGE_INTEGER Operand1
1388 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1393 * RtlLargeIntegerGreaterThanZero (
1394 * LARGE_INTEGER Operand1
1397 #define RtlLargeIntegerGreaterThanZero(X) \
1398 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1399 ((X).HighPart > 0 ))
1403 * RtlLargeIntegerLessThan (
1404 * LARGE_INTEGER Operand1,
1405 * LARGE_INTEGER Operand2
1408 #define RtlLargeIntegerLessThan(X,Y) \
1409 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1410 ((X).HighPart < (Y).HighPart))
1414 * RtlLargeIntegerLessThanOrEqualTo (
1415 * LARGE_INTEGER Operand1,
1416 * LARGE_INTEGER Operand2
1419 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1420 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1421 ((X).HighPart < (Y).HighPart))
1425 * RtlLargeIntegerLessThanOrEqualToZero (
1426 * LARGE_INTEGER Operand
1429 #define RtlLargeIntegerLessOrEqualToZero(X) \
1430 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1434 * RtlLargeIntegerLessThanZero (
1435 * LARGE_INTEGER Operand
1438 #define RtlLargeIntegerLessThanZero(X) \
1439 (((X).HighPart < 0))
1443 RtlLargeIntegerNegate (
1444 LARGE_INTEGER Subtrahend
1449 * RtlLargeIntegerNotEqualTo (
1450 * LARGE_INTEGER Operand1,
1451 * LARGE_INTEGER Operand2
1454 #define RtlLargeIntegerNotEqualTo(X,Y) \
1455 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1459 * RtlLargeIntegerNotEqualToZero (
1460 * LARGE_INTEGER Operand
1463 #define RtlLargeIntegerNotEqualToZero(X) \
1464 (((X).LowPart | (X).HighPart))
1468 RtlLargeIntegerShiftLeft (
1469 LARGE_INTEGER LargeInteger,
1475 RtlLargeIntegerShiftRight (
1476 LARGE_INTEGER LargeInteger,
1482 RtlLargeIntegerSubtract (
1483 LARGE_INTEGER Minuend,
1484 LARGE_INTEGER Subtrahend
1489 RtlLengthSecurityDescriptor (
1490 PSECURITY_DESCRIPTOR SecurityDescriptor
1501 RtlLookupAtomInAtomTable (
1502 IN PRTL_ATOM_TABLE AtomTable,
1509 RtlMultiByteToUnicodeN (
1510 PWCHAR UnicodeString,
1519 RtlMultiByteToUnicodeSize (
1527 RtlNtStatusToDosError (
1533 RtlNtStatusToDosErrorNoTeb (
1539 RtlNtStatusToPsxErrno (
1545 RtlNumberGenericTableElements (
1546 IN PRTL_GENERIC_TABLE Table
1551 RtlNumberOfClearBits (
1552 PRTL_BITMAP BitMapHeader
1557 RtlNumberOfSetBits (
1558 PRTL_BITMAP BitMapHeader
1563 RtlOemStringToUnicodeSize (
1564 POEM_STRING AnsiString
1569 RtlOemStringToUnicodeString (
1570 PUNICODE_STRING DestinationString,
1571 POEM_STRING SourceString,
1572 BOOLEAN AllocateDestinationString
1578 PWCHAR UnicodeString,
1586 RtlPinAtomInAtomTable (
1587 IN PRTL_ATOM_TABLE AtomTable,
1594 PANSI_STRING String1,
1595 PANSI_STRING String2,
1596 BOOLEAN CaseInsensitive
1601 RtlPrefixUnicodeString (
1602 PUNICODE_STRING String1,
1603 PUNICODE_STRING String2,
1604 BOOLEAN CaseInsensitive
1609 RtlQueryAtomInAtomTable (
1610 IN PRTL_ATOM_TABLE AtomTable,
1612 IN OUT PULONG RefCount OPTIONAL,
1613 IN OUT PULONG PinCount OPTIONAL,
1614 IN OUT PWSTR AtomName OPTIONAL,
1615 IN OUT PULONG NameLength OPTIONAL
1620 RtlQueryTimeZoneInformation (
1621 IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
1627 IN PEXCEPTION_RECORD ExceptionRecord
1640 RtlReserveChunk(IN USHORT CompressionFormat,
1641 IN OUT PUCHAR *CompressedBuffer,
1642 IN PUCHAR EndOfCompressedBufferPlus1,
1643 OUT PUCHAR *ChunkBuffer,
1644 IN ULONG ChunkSize);
1648 * RtlRetrieveUlong (
1649 * PULONG DestinationAddress,
1650 * PULONG SourceAddress
1653 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
1654 if ((ULONG)(SrcAddress) & LONG_MASK) \
1656 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
1657 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
1658 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
1659 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
1663 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
1668 * RtlRetrieveUshort (
1669 * PUSHORT DestinationAddress,
1670 * PUSHORT SourceAddress
1673 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
1674 if ((ULONG)(SrcAddress) & SHORT_MASK) \
1676 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
1677 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
1681 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
1686 RtlSecondsSince1970ToTime (
1687 ULONG SecondsSince1970,
1693 RtlSecondsSince1980ToTime (
1694 ULONG SecondsSince1980,
1701 IN PRTL_BITMAP BitMapHeader
1707 PRTL_BITMAP BitMapHeader,
1708 ULONG StartingIndex,
1714 RtlSetDaclSecurityDescriptor (
1715 PSECURITY_DESCRIPTOR SecurityDescriptor,
1716 BOOLEAN DaclPresent,
1718 BOOLEAN DaclDefaulted
1723 RtlSetTimeZoneInformation (
1724 IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
1742 #define RtlStoreUlong(Address,Value) \
1743 if ((ULONG)(Address) & LONG_MASK) \
1745 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1746 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1747 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
1748 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
1752 *((PULONG)(Address))=(ULONG)(Value); \
1762 #define RtlStoreUshort(Address,Value) \
1763 if ((ULONG)(Address) & SHORT_MASK) \
1765 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1766 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
1770 *((PUSHORT)(Address))=(USHORT)(Value); \
1775 RtlTimeFieldsToTime (
1776 PTIME_FIELDS TimeFields,
1782 RtlTimeToSecondsSince1970 (
1783 PLARGE_INTEGER Time,
1784 PULONG SecondsSince1970
1789 RtlTimeToSecondsSince1980 (
1790 PLARGE_INTEGER Time,
1791 PULONG SecondsSince1980
1796 RtlTimeToTimeFields (
1797 PLARGE_INTEGER Time,
1798 PTIME_FIELDS TimeFields
1803 RtlUnicodeStringToAnsiSize (
1804 IN PUNICODE_STRING UnicodeString
1809 RtlUnicodeStringToAnsiString (
1810 IN OUT PANSI_STRING DestinationString,
1811 IN PUNICODE_STRING SourceString,
1812 IN BOOLEAN AllocateDestinationString
1817 RtlUnicodeStringToInteger (
1818 IN PUNICODE_STRING String,
1825 RtlUnicodeStringToOemSize (
1826 IN PUNICODE_STRING UnicodeString
1831 RtlUnicodeStringToCountedOemString (
1832 IN OUT POEM_STRING DestinationString,
1833 IN PUNICODE_STRING SourceString,
1834 IN BOOLEAN AllocateDestinationString
1839 RtlUnicodeStringToOemString (
1840 IN OUT POEM_STRING DestinationString,
1841 IN PUNICODE_STRING SourceString,
1842 IN BOOLEAN AllocateDestinationString
1847 RtlUnicodeToCustomCPN (
1848 PRTL_NLS_DATA NlsData,
1852 PWCHAR UnicodeString,
1858 RtlUnicodeToMultiByteN (
1862 PWCHAR UnicodeString,
1868 RtlUnicodeToMultiByteSize (
1870 PWCHAR UnicodeString,
1880 PWCHAR UnicodeString,
1893 PEXCEPTION_REGISTRATION RegistrationFrame,
1894 PVOID ReturnAddress,
1895 PEXCEPTION_RECORD ExceptionRecord,
1901 RtlUpcaseUnicodeChar (
1907 RtlUpcaseUnicodeString (
1908 IN OUT PUNICODE_STRING DestinationString,
1909 IN PUNICODE_STRING SourceString,
1910 IN BOOLEAN AllocateDestinationString
1915 RtlUpcaseUnicodeStringToAnsiString (
1916 IN OUT PANSI_STRING DestinationString,
1917 IN PUNICODE_STRING SourceString,
1918 IN BOOLEAN AllocateDestinationString
1923 RtlUpcaseUnicodeStringToCountedOemString (
1924 IN OUT POEM_STRING DestinationString,
1925 IN PUNICODE_STRING SourceString,
1926 IN BOOLEAN AllocateDestinationString
1931 RtlUpcaseUnicodeStringToOemString (
1932 IN OUT POEM_STRING DestinationString,
1933 IN PUNICODE_STRING SourceString,
1934 IN BOOLEAN AllocateDestinationString
1939 RtlUpcaseUnicodeToCustomCPN (
1940 PRTL_NLS_DATA NlsData,
1944 PWCHAR UnicodeString,
1950 RtlUpcaseUnicodeToMultiByteN (
1954 PWCHAR UnicodeString,
1960 RtlUpcaseUnicodeToOemN (
1964 PWCHAR UnicodeString,
1977 PSTRING DestinationString,
1978 PSTRING SourceString
1991 RtlValidSecurityDescriptor (
1992 PSECURITY_DESCRIPTOR SecurityDescriptor
1996 RtlValidSid(IN PSID Sid);
2000 RtlxAnsiStringToUnicodeSize (
2001 IN PANSI_STRING AnsiString
2006 RtlxOemStringToUnicodeSize (
2007 IN POEM_STRING OemString
2012 RtlxUnicodeStringToAnsiSize (
2013 IN PUNICODE_STRING UnicodeString
2018 RtlxUnicodeStringToOemSize (
2019 IN PUNICODE_STRING UnicodeString
2023 /* Register io functions */
2027 READ_REGISTER_UCHAR (
2033 READ_REGISTER_USHORT (
2039 READ_REGISTER_ULONG (
2045 READ_REGISTER_BUFFER_UCHAR (
2053 READ_REGISTER_BUFFER_USHORT (
2061 READ_REGISTER_BUFFER_ULONG (
2069 WRITE_REGISTER_UCHAR (
2076 WRITE_REGISTER_USHORT (
2083 WRITE_REGISTER_ULONG (
2090 WRITE_REGISTER_BUFFER_UCHAR (
2098 WRITE_REGISTER_BUFFER_USHORT (
2106 WRITE_REGISTER_BUFFER_ULONG (
2113 NTSTATUS STDCALL RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision);
2114 NTSTATUS STDCALL RtlQueryInformationAcl (PACL Acl, PVOID Information, ULONG InformationLength, ACL_INFORMATION_CLASS InformationClass);
2115 NTSTATUS STDCALL RtlSetInformationAcl (PACL Acl, PVOID Information, ULONG InformationLength, ACL_INFORMATION_CLASS InformationClass);
2116 BOOLEAN STDCALL RtlValidAcl (PACL Acl);
2118 NTSTATUS STDCALL RtlAddAccessAllowedAce(PACL Acl, ULONG Revision, ACCESS_MASK AccessMask, PSID Sid);
2119 NTSTATUS STDCALL RtlAddAccessDeniedAce(PACL Acl, ULONG Revision, ACCESS_MASK AccessMask, PSID Sid);
2120 NTSTATUS STDCALL RtlAddAce(PACL Acl, ULONG Revision, ULONG StartingIndex, PACE AceList, ULONG AceListLength);
2121 NTSTATUS STDCALL RtlAddAuditAccessAce (PACL Acl, ULONG Revision, ACCESS_MASK AccessMask, PSID Sid, BOOLEAN Success, BOOLEAN Failure);
2122 NTSTATUS STDCALL RtlDeleteAce(PACL Acl, ULONG AceIndex);
2123 BOOLEAN STDCALL RtlFirstFreeAce(PACL Acl, PACE* Ace);
2124 NTSTATUS STDCALL RtlGetAce(PACL Acl, ULONG AceIndex, PACE *Ace);
2126 NTSTATUS STDCALL RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD, PSECURITY_DESCRIPTOR RelSD, PULONG BufferLength);
2127 NTSTATUS STDCALL RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD, PSECURITY_DESCRIPTOR RelSD, PULONG BufferLength);
2128 NTSTATUS STDCALL RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, ULONG Revision);
2129 BOOLEAN STDCALL RtlValidSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
2130 ULONG STDCALL RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
2131 NTSTATUS STDCALL RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN DaclPresent, PACL Dacl, BOOLEAN DaclDefaulted);
2132 NTSTATUS STDCALL RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PBOOLEAN DaclPresent, PACL* Dacl, PBOOLEAN DaclDefauted);
2133 NTSTATUS STDCALL RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID Owner, BOOLEAN OwnerDefaulted);
2134 NTSTATUS STDCALL RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID* Owner, PBOOLEAN OwnerDefaulted);
2135 NTSTATUS STDCALL RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID Group, BOOLEAN GroupDefaulted);
2136 NTSTATUS STDCALL RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSID* Group, PBOOLEAN GroupDefaulted);
2137 NTSTATUS STDCALL RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PSECURITY_DESCRIPTOR_CONTROL Control, PULONG Revision);
2138 NTSTATUS STDCALL RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, BOOLEAN SaclPresent, PACL Sacl, BOOLEAN SaclDefaulted);
2139 NTSTATUS STDCALL RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor, PBOOLEAN SaclPresent, PACL* Sacl, PBOOLEAN SaclDefauted);
2140 NTSTATUS STDCALL RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD,
2141 PSECURITY_DESCRIPTOR AbsSD,
2152 NTSTATUS STDCALL RtlAllocateAndInitializeSid (PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
2153 UCHAR SubAuthorityCount,
2154 ULONG SubAuthority0,
2155 ULONG SubAuthority1,
2156 ULONG SubAuthority2,
2157 ULONG SubAuthority3,
2158 ULONG SubAuthority4,
2159 ULONG SubAuthority5,
2160 ULONG SubAuthority6,
2161 ULONG SubAuthority7,
2163 ULONG STDCALL RtlLengthRequiredSid (UCHAR SubAuthorityCount);
2164 PSID_IDENTIFIER_AUTHORITY STDCALL RtlIdentifierAuthoritySid (PSID Sid);
2165 NTSTATUS STDCALL RtlInitializeSid (PSID Sid, PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, UCHAR SubAuthorityCount);
2166 PULONG STDCALL RtlSubAuthoritySid (PSID Sid, ULONG SubAuthority);
2167 BOOLEAN STDCALL RtlEqualPrefixSid (PSID Sid1, PSID Sid2);
2168 BOOLEAN STDCALL RtlEqualSid(PSID Sid1, PSID Sid2);
2169 PSID STDCALL RtlFreeSid (PSID Sid);
2170 ULONG STDCALL RtlLengthSid (PSID Sid);
2171 PULONG STDCALL RtlSubAuthoritySid (PSID Sid, ULONG SubAuthority);
2172 PUCHAR STDCALL RtlSubAuthorityCountSid (PSID Sid);
2173 BOOLEAN STDCALL RtlValidSid (PSID Sid);
2174 NTSTATUS STDCALL RtlConvertSidToUnicodeString (PUNICODE_STRING String, PSID Sid, BOOLEAN AllocateBuffer);
2176 BOOLEAN STDCALL RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess);
2177 BOOLEAN STDCALL RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess, ACCESS_MASK DesiredAccess);
2178 VOID STDCALL RtlMapGenericMask (PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping);
2181 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2183 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2185 char *_itoa (int value, char *string, int radix);
2186 int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
2187 int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
2188 int _stricmp(const char *s1, const char *s2);
2189 char * _strlwr(char *x);
2190 int _strnicmp(const char *s1, const char *s2, size_t n);
2191 char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
2192 char * _strrev(char *s);
2193 char * _strset(char* szToFill, int szFill);
2194 char * _strupr(char *x);
2195 int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
2196 int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
2197 wchar_t * _wcslwr (wchar_t *x);
2198 int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
2199 wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
2200 wchar_t * _wcsrev(wchar_t *s);
2201 wchar_t *_wcsupr(wchar_t *x);
2203 int atoi(const char *str);
2204 long atol(const char *str);
2210 int isxdigit(int c);
2211 size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
2212 int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
2213 void * memchr(const void *s, int c, size_t n);
2214 void * memcpy(void *to, const void *from, size_t count);
2215 void * memmove(void *dest,const void *src, size_t count);
2216 void * memset(void *src, int val, size_t count);
2223 int sprintf(char * buf, const char *fmt, ...);
2224 void srand(unsigned seed);
2225 char * strcat(char *s, const char *append);
2226 char * strchr(const char *s, int c);
2227 int strcmp(const char *s1, const char *s2);
2228 char * strcpy(char *to, const char *from);
2229 size_t strlen(const char *str);
2230 char * strncat(char *dst, const char *src, size_t n);
2231 int strncmp(const char *s1, const char *s2, size_t n);
2232 char *strncpy(char *dst, const char *src, size_t n);
2233 char *strrchr(const char *s, int c);
2234 size_t strspn(const char *s1, const char *s2);
2235 char *strstr(const char *s, const char *find);
2236 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
2239 wchar_t towlower(wchar_t c);
2240 wchar_t towupper(wchar_t c);
2241 int vsprintf(char *buf, const char *fmt, va_list args);
2242 wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
2243 wchar_t * wcschr(const wchar_t *str, wchar_t ch);
2244 int wcscmp(const wchar_t *cs, const wchar_t *ct);
2245 wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
2246 size_t wcscspn(const wchar_t *str,const wchar_t *reject);
2247 size_t wcslen(const wchar_t *s);
2248 wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
2249 int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
2250 wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
2251 wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
2252 size_t wcsspn(const wchar_t *str,const wchar_t *accept);
2253 wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
2254 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
2255 int wctomb (char *mbchar, wchar_t wchar);
2257 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2259 #endif /* __DDK_RTL_H */