1 /* $Id: rtl.h,v 1.24 2004/01/23 18:00:53 navaraf Exp $
7 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined (__NTAPP__)
12 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
15 #include <ole32/guiddef.h>
20 * PURPOSE: Flags for RtlQueryRegistryValues
22 #define RTL_QUERY_REGISTRY_SUBKEY (0x00000001)
23 #define RTL_QUERY_REGISTRY_TOPKEY (0x00000002)
24 #define RTL_QUERY_REGISTRY_REQUIRED (0x00000004)
25 #define RTL_QUERY_REGISTRY_NOVALUE (0x00000008)
26 #define RTL_QUERY_REGISTRY_NOEXPAND (0x00000010)
27 #define RTL_QUERY_REGISTRY_DIRECT (0x00000020)
28 #define RTL_QUERY_REGISTRY_DELETE (0x00000040)
32 * PURPOSE: Flags used by RtlIsTextUnicode and IsTextUnicode
34 #define IS_TEXT_UNICODE_ASCII16 (0x00000001)
35 #define IS_TEXT_UNICODE_REVERSE_ASCII16 (0x00000010)
36 #define IS_TEXT_UNICODE_STATISTICS (0x00000002)
37 #define IS_TEXT_UNICODE_REVERSE_STATISTICS (0x00000020)
38 #define IS_TEXT_UNICODE_CONTROLS (0x00000004)
39 #define IS_TEXT_UNICODE_REVERSE_CONTROLS (0x00000040)
40 #define IS_TEXT_UNICODE_SIGNATURE (0x00000008)
41 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE (0x00000080)
42 #define IS_TEXT_UNICODE_ILLEGAL_CHARS (0x00000100)
43 #define IS_TEXT_UNICODE_ODD_LENGTH (0x00000200)
44 #define IS_TEXT_UNICODE_NULL_BYTES (0x00001000)
45 #define IS_TEXT_UNICODE_UNICODE_MASK (0x0000000F)
46 #define IS_TEXT_UNICODE_REVERSE_MASK (0x000000F0)
47 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK (0x00000F00)
48 #define IS_TEXT_UNICODE_NOT_ASCII_MASK (0x0000F000)
52 * InitializeObjectAttributes (
53 * POBJECT_ATTRIBUTES InitializedAttributes,
54 * PUNICODE_STRING ObjectName,
56 * HANDLE RootDirectory,
57 * PSECURITY_DESCRIPTOR SecurityDescriptor
60 * FUNCTION: Sets up a parameter of type OBJECT_ATTRIBUTES for a
61 * subsequent call to ZwCreateXXX or ZwOpenXXX
63 * InitializedAttributes (OUT) = Caller supplied storage for the
65 * ObjectName = Full path name for object
66 * Attributes = Attributes for the object
67 * RootDirectory = Where the object should be placed or NULL
68 * SecurityDescriptor = Ignored
70 #define InitializeObjectAttributes(p,n,a,r,s) \
72 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
73 (p)->ObjectName = n; \
74 (p)->Attributes = a; \
75 (p)->RootDirectory = r; \
76 (p)->SecurityDescriptor = s; \
77 (p)->SecurityQualityOfService = NULL; \
83 * InitializeListHead (
84 * PLIST_ENTRY ListHead
87 * FUNCTION: Initializes a double linked list
89 * ListHead = Caller supplied storage for the head of the list
91 #define InitializeListHead(ListHead) \
93 (ListHead)->Flink = (ListHead); \
94 (ListHead)->Blink = (ListHead); \
101 * PLIST_ENTRY ListHead,
105 * FUNCTION: Inserts an entry in a double linked list
107 * ListHead = Head of the list
108 * Entry = Entry to insert
110 #define InsertHeadList(ListHead, ListEntry) \
112 PLIST_ENTRY OldFlink; \
113 OldFlink = (ListHead)->Flink; \
114 (ListEntry)->Flink = OldFlink; \
115 (ListEntry)->Blink = (ListHead); \
116 OldFlink->Blink = (ListEntry); \
117 (ListHead)->Flink = (ListEntry); \
118 assert((ListEntry) != NULL); \
119 assert((ListEntry)->Blink!=NULL); \
120 assert((ListEntry)->Blink->Flink == (ListEntry)); \
121 assert((ListEntry)->Flink != NULL); \
122 assert((ListEntry)->Flink->Blink == (ListEntry)); \
129 * PLIST_ENTRY ListHead,
134 * Inserts an entry in a double linked list
137 * ListHead = Head of the list
138 * Entry = Entry to insert
140 #define InsertTailList(ListHead, ListEntry) \
142 PLIST_ENTRY OldBlink; \
143 OldBlink = (ListHead)->Blink; \
144 (ListEntry)->Flink = (ListHead); \
145 (ListEntry)->Blink = OldBlink; \
146 OldBlink->Flink = (ListEntry); \
147 (ListHead)->Blink = (ListEntry); \
148 assert((ListEntry) != NULL); \
149 assert((ListEntry)->Blink != NULL); \
150 assert((ListEntry)->Blink->Flink == (ListEntry)); \
151 assert((ListEntry)->Flink != NULL); \
152 assert((ListEntry)->Flink->Blink == (ListEntry)); \
158 * PLIST_ENTRY ListHead
162 * Checks if a double linked list is empty
165 * ListHead = Head of the list
167 #define IsListEmpty(ListHead) \
168 ((ListHead)->Flink == (ListHead))
174 * PSINGLE_LIST_ENTRY ListHead
178 * Removes an entry from the head of a single linked list
181 * ListHead = Head of the list
187 #define PopEntryList(ListHead) \
190 PSINGLE_LIST_ENTRY FirstEntry; \
191 FirstEntry = (ListHead)->Next; \
192 if (FirstEntry != NULL) \
194 (ListHead)->Next = FirstEntry->Next; \
198 static inline PSINGLE_LIST_ENTRY
199 PopEntryList(PSINGLE_LIST_ENTRY ListHead
)
201 PSINGLE_LIST_ENTRY ListEntry
;
203 ListEntry
= ListHead
->Next
;
206 ListHead
->Next
= ListEntry
->Next
;
212 #define RtlCopyMemory(Destination,Source,Length) \
213 memcpy((Destination),(Source),(Length))
219 PSINGLE_LIST_ENTRY ListHead
,
220 PSINGLE_LIST_ENTRY Entry
223 Entry
->Next
= ListHead
->Next
;
224 ListHead
->Next
= Entry
;
234 * Removes an entry from a double linked list
237 * ListEntry = Entry to remove
239 #define RemoveEntryList(ListEntry) \
241 PLIST_ENTRY OldFlink; \
242 PLIST_ENTRY OldBlink; \
243 assert((ListEntry) != NULL); \
244 assert((ListEntry)->Blink!=NULL); \
245 assert((ListEntry)->Blink->Flink == (ListEntry)); \
246 assert((ListEntry)->Flink != NULL); \
247 assert((ListEntry)->Flink->Blink == (ListEntry)); \
248 OldFlink = (ListEntry)->Flink; \
249 OldBlink = (ListEntry)->Blink; \
250 OldFlink->Blink = OldBlink; \
251 OldBlink->Flink = OldFlink; \
252 (ListEntry)->Flink = NULL; \
253 (ListEntry)->Blink = NULL; \
260 * PLIST_ENTRY ListHead
264 * Removes the head entry from a double linked list
267 * ListHead = Head of the list
273 #define RemoveHeadList(ListHead) \
275 {RemoveEntryList((ListHead)->Flink)}
292 PLIST_ENTRY OldFlink
;
293 PLIST_ENTRY OldBlink
;
295 Old
= ListHead
->Flink
;
297 OldFlink
= ListHead
->Flink
->Flink
;
298 OldBlink
= ListHead
->Flink
->Blink
;
299 OldFlink
->Blink
= OldBlink
;
300 OldBlink
->Flink
= OldFlink
;
314 * PLIST_ENTRY ListHead
318 * Removes the tail entry from a double linked list
321 * ListHead = Head of the list
327 #define RemoveTailList(ListHead) \
329 {RemoveEntryList((ListHead)->Blink)}
346 PLIST_ENTRY OldFlink
;
347 PLIST_ENTRY OldBlink
;
349 Old
= ListHead
->Blink
;
351 OldFlink
= ListHead
->Blink
->Flink
;
352 OldBlink
= ListHead
->Blink
->Blink
;
353 OldFlink
->Blink
= OldBlink
;
354 OldBlink
->Flink
= OldFlink
;
366 * FIFO versions are slower but ensures that entries with equal SortField value
367 * are placed in FIFO order (assuming that entries are removed from Head).
370 #define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
372 PLIST_ENTRY current;\
374 current = (ListHead)->Flink;\
375 while (current != (ListHead))\
377 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
378 (NewEntry)->SortField)\
382 current = current->Flink;\
385 InsertTailList(current, &((NewEntry)->ListEntryField));\
389 #define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
391 PLIST_ENTRY current;\
393 current = (ListHead)->Flink;\
394 while (current != (ListHead))\
396 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
397 (NewEntry)->SortField)\
401 current = current->Flink;\
404 InsertTailList(current, &((NewEntry)->ListEntryField));\
408 #define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
410 PLIST_ENTRY current;\
412 current = (ListHead)->Flink;\
413 while (current != (ListHead))\
415 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
416 (NewEntry)->SortField)\
420 current = current->Flink;\
423 InsertTailList(current, &((NewEntry)->ListEntryField));\
427 #define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
429 PLIST_ENTRY current;\
431 current = (ListHead)->Flink;\
432 while (current != (ListHead))\
434 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
435 (NewEntry)->SortField)\
439 current = current->Flink;\
442 InsertTailList(current, &((NewEntry)->ListEntryField));\
449 * PLIST_ENTRY ListHead,
453 #define IsFirstEntry(ListHead, Entry) ((ListHead)->Flink == Entry)
455 #define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
460 RtlAppendUnicodeToString (
461 PUNICODE_STRING Destination
,
475 RtlEqualUnicodeString (
476 PUNICODE_STRING String1
,
477 PUNICODE_STRING String2
,
478 BOOLEAN CaseInSensitive
483 RtlGetCallersAddress (
484 PVOID
* CallersAddress
489 RtlQueryRegistryValues (
492 IN PRTL_QUERY_REGISTRY_TABLE QueryTable
,
499 RtlWriteRegistryValue (
509 RtlDeleteRegistryValue(IN ULONG RelativeTo
,
511 IN PCWSTR ValueName
);
514 RtlMoveMemory (PVOID Destination
, CONST VOID
* Source
, ULONG Length
);
517 RtlEqualLuid(IN PLUID Luid1
,
529 RtlZeroMemory (PVOID Destination
, ULONG Length
);
531 #else /* __USE_W32API */
533 #include <ddk/ntifs.h>
535 #endif /* __USE_W32API */
539 * PURPOSE: Used with RtlCheckRegistryKey, RtlCreateRegistryKey,
540 * RtlDeleteRegistryKey
542 #define RTL_REGISTRY_ABSOLUTE 0
543 #define RTL_REGISTRY_SERVICES 1
544 #define RTL_REGISTRY_CONTROL 2
545 #define RTL_REGISTRY_WINDOWS_NT 3
546 #define RTL_REGISTRY_DEVICEMAP 4
547 #define RTL_REGISTRY_USER 5
548 #define RTL_REGISTRY_ENUM 6 /* ReactOS specific: Used internally in kernel only */
549 #define RTL_REGISTRY_MAXIMUM 7
551 #define RTL_REGISTRY_HANDLE 0x40000000
552 #define RTL_REGISTRY_OPTIONAL 0x80000000
555 #define SHORT_SIZE (sizeof(USHORT))
556 #define SHORT_MASK (SHORT_SIZE-1)
557 #define LONG_SIZE (sizeof(ULONG))
558 #define LONG_MASK (LONG_SIZE-1)
559 #define LOWBYTE_MASK 0x00FF
561 #define FIRSTBYTE(Value) ((Value) & LOWBYTE_MASK)
562 #define SECONDBYTE(Value) (((Value) >> 8) & LOWBYTE_MASK)
563 #define THIRDBYTE(Value) (((Value) >> 16) & LOWBYTE_MASK)
564 #define FOURTHBYTE(Value) (((Value) >> 24) & LOWBYTE_MASK)
566 /* FIXME: reverse byte-order on big-endian machines (e.g. MIPS) */
567 #define SHORT_LEAST_SIGNIFICANT_BIT 0
568 #define SHORT_MOST_SIGNIFICANT_BIT 1
570 #define LONG_LEAST_SIGNIFICANT_BIT 0
571 #define LONG_3RD_MOST_SIGNIFICANT_BIT 1
572 #define LONG_2RD_MOST_SIGNIFICANT_BIT 2
573 #define LONG_MOST_SIGNIFICANT_BIT 3
576 #define NLS_ANSI_CODE_PAGE NlsAnsiCodePage
577 #define NLS_LEAD_BYTE_INFO NlsLeadByteInfo
578 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
579 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
580 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
582 #if defined(__NTOSKRNL__) || defined(__NTDLL__)
583 extern USHORT EXPORTED NlsAnsiCodePage
;
584 extern PUSHORT EXPORTED NlsLeadByteInfo
;
585 extern BOOLEAN EXPORTED NlsMbCodePageTag
;
586 extern BOOLEAN EXPORTED NlsMbOemCodePageTag
;
587 extern PUSHORT EXPORTED NlsOemLeadByteInfo
;
589 extern USHORT IMPORTED NlsAnsiCodePage
;
590 extern PUSHORT IMPORTED NlsLeadByteInfo
;
591 extern BOOLEAN IMPORTED NlsMbCodePageTag
;
592 extern BOOLEAN IMPORTED NlsMbOemCodePageTag
;
593 extern PUSHORT IMPORTED NlsOemLeadByteInfo
;
594 #endif /* __NTOSKRNL__ || __NTDLL__ */
599 PSINGLE_LIST_ENTRY ListHead,
600 PSINGLE_LIST_ENTRY Entry
604 #define PushEntryList(ListHead,Entry) \
605 (Entry)->Next = (ListHead)->Next; \
606 (ListHead)->Next = (Entry)
612 RtlAddAtomToAtomTable (
613 IN PRTL_ATOM_TABLE AtomTable
,
627 RtlAnsiCharToUnicodeChar (
633 RtlAnsiStringToUnicodeSize (
634 PANSI_STRING AnsiString
639 RtlAnsiStringToUnicodeString (
640 PUNICODE_STRING DestinationString
,
641 PANSI_STRING SourceString
,
642 BOOLEAN AllocateDestinationString
647 RtlAppendAsciizToString(
654 RtlAppendStringToString (
661 RtlAppendUnicodeStringToString (
662 PUNICODE_STRING Destination
,
663 PUNICODE_STRING Source
669 PRTL_BITMAP BitMapHeader
,
677 PRTL_BITMAP BitMapHeader
,
685 PVOID FailedAssertion
,
701 RtlCheckRegistryKey (
709 IN PRTL_BITMAP BitMapHeader
715 IN PRTL_BITMAP BitMapHeader
,
716 IN ULONG StartingIndex
,
717 IN ULONG NumberToClear
732 BOOLEAN CaseInsensitive
737 RtlCompareUnicodeString (
738 PUNICODE_STRING String1
,
739 PUNICODE_STRING String2
,
740 BOOLEAN CaseInsensitive
744 RtlCompressBuffer(IN USHORT CompressionFormatAndEngine
,
745 IN PUCHAR UncompressedBuffer
,
746 IN ULONG UncompressedBufferSize
,
747 OUT PUCHAR CompressedBuffer
,
748 IN ULONG CompressedBufferSize
,
749 IN ULONG UncompressedChunkSize
,
750 OUT PULONG FinalCompressedSize
,
754 RtlCompressChunks(IN PUCHAR UncompressedBuffer
,
755 IN ULONG UncompressedBufferSize
,
756 OUT PUCHAR CompressedBuffer
,
757 IN ULONG CompressedBufferSize
,
758 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
759 IN ULONG CompressedDataInfoLength
,
762 LARGE_INTEGER STDCALL
763 RtlConvertLongToLargeInteger(IN LONG SignedInteger
);
766 RtlConvertSidToUnicodeString(IN OUT PUNICODE_STRING String
,
768 IN BOOLEAN AllocateString
);
770 LARGE_INTEGER STDCALL
771 RtlConvertUlongToLargeInteger(IN ULONG UnsignedInteger
);
789 #define RtlCopyBytes RtlCopyMemory
792 RtlCopyLuid(IN PLUID LuidDest
,
796 RtlCopyLuidAndAttributesArray(ULONG Count
,
797 PLUID_AND_ATTRIBUTES Src
,
798 PLUID_AND_ATTRIBUTES Dest
);
801 RtlCopySid(ULONG BufferLength
,
806 RtlCopySidAndAttributesArray(ULONG Count
,
807 PSID_AND_ATTRIBUTES Src
,
809 PSID_AND_ATTRIBUTES Dest
,
811 PVOID
* RemainingSidArea
,
812 PULONG RemainingSidAreaSize
);
815 RtlCopyString(PSTRING DestinationString
,
816 PSTRING SourceString
);
819 RtlCopyUnicodeString(PUNICODE_STRING DestinationString
,
820 PUNICODE_STRING SourceString
);
823 RtlCreateAtomTable(IN ULONG TableSize
,
824 IN OUT PRTL_ATOM_TABLE
*AtomTable
);
831 ULONG SizeToReserve
, /* dwMaximumSize */
832 ULONG SizeToCommit
, /* dwInitialSize */
834 PRTL_HEAP_DEFINITION Definition
839 RtlCreateRegistryKey (
846 RtlCreateSecurityDescriptor (
847 PSECURITY_DESCRIPTOR SecurityDescriptor
,
853 RtlCreateUnicodeString (
854 OUT PUNICODE_STRING Destination
,
859 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination
,
864 RtlCustomCPToUnicodeN (
865 IN PCPTABLEINFO CustomCP
,
866 PWCHAR UnicodeString
,
874 RtlDecompressBuffer(IN USHORT CompressionFormat
,
875 OUT PUCHAR UncompressedBuffer
,
876 IN ULONG UncompressedBufferSize
,
877 IN PUCHAR CompressedBuffer
,
878 IN ULONG CompressedBufferSize
,
879 OUT PULONG FinalUncompressedSize
);
882 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer
,
883 IN ULONG UncompressedBufferSize
,
884 IN PUCHAR CompressedBuffer
,
885 IN ULONG CompressedBufferSize
,
886 IN PUCHAR CompressedTail
,
887 IN ULONG CompressedTailSize
,
888 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
);
891 RtlDecompressFragment(IN USHORT CompressionFormat
,
892 OUT PUCHAR UncompressedFragment
,
893 IN ULONG UncompressedFragmentSize
,
894 IN PUCHAR CompressedBuffer
,
895 IN ULONG CompressedBufferSize
,
896 IN ULONG FragmentOffset
,
897 OUT PULONG FinalUncompressedSize
,
901 RtlDeleteAtomFromAtomTable(IN PRTL_ATOM_TABLE AtomTable
,
905 RtlDescribeChunk(IN USHORT CompressionFormat
,
906 IN OUT PUCHAR
*CompressedBuffer
,
907 IN PUCHAR EndOfCompressedBufferPlus1
,
908 OUT PUCHAR
*ChunkBuffer
,
909 OUT PULONG ChunkSize
);
912 RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable
);
915 RtlDestroyHeap(HANDLE hheap
);
919 RtlDowncaseUnicodeString (
920 IN OUT PUNICODE_STRING DestinationString
,
921 IN PUNICODE_STRING SourceString
,
922 IN BOOLEAN AllocateDestinationString
928 IN PRTL_ATOM_TABLE AtomTable
,
929 IN BOOLEAN DeletePinned
934 RtlEnlargedIntegerMultiply (
941 RtlEnlargedUnsignedDivide (
942 ULARGE_INTEGER Dividend
,
949 RtlEnlargedUnsignedMultiply (
959 BOOLEAN CaseInSensitive
964 RtlExtendedIntegerMultiply (
965 LARGE_INTEGER Multiplicand
,
971 RtlExtendedLargeIntegerDivide (
972 LARGE_INTEGER Dividend
,
979 RtlExtendedMagicDivide (
980 LARGE_INTEGER Dividend
,
981 LARGE_INTEGER MagicDivisor
,
997 OUT PUNICODE_STRING GuidString
1003 PRTL_BITMAP BitMapHeader
,
1010 RtlFindClearBitsAndSet (
1011 PRTL_BITMAP BitMapHeader
,
1018 RtlFindFirstRunClear (
1019 PRTL_BITMAP BitMapHeader
,
1020 PULONG StartingIndex
1025 RtlFindFirstRunSet (
1026 PRTL_BITMAP BitMapHeader
,
1027 PULONG StartingIndex
1032 RtlFindLongestRunClear (
1033 PRTL_BITMAP BitMapHeader
,
1034 PULONG StartingIndex
1039 RtlFindLongestRunSet (
1040 PRTL_BITMAP BitMapHeader
,
1041 PULONG StartingIndex
1047 IN PVOID BaseAddress
,
1051 OUT PRTL_MESSAGE_RESOURCE_ENTRY
*MessageResourceEntry
1057 PRTL_BITMAP BitMapHeader
,
1064 RtlFindSetBitsAndClear (
1065 PRTL_BITMAP BitMapHeader
,
1072 RtlFormatCurrentUserKeyPath (
1073 IN OUT PUNICODE_STRING KeyPath
1079 PANSI_STRING AnsiString
1093 POEM_STRING OemString
1098 RtlFreeUnicodeString (
1099 PUNICODE_STRING UnicodeString
1103 RtlGenerate8dot3Name(IN PUNICODE_STRING Name
,
1104 IN BOOLEAN AllowExtendedCharacters
,
1105 IN OUT PGENERATE_NAME_CONTEXT Context
,
1106 OUT PUNICODE_STRING Name8dot3
);
1109 RtlGetCompressionWorkSpaceSize(IN USHORT CompressionFormatAndEngine
,
1110 OUT PULONG CompressBufferAndWorkSpaceSize
,
1111 OUT PULONG CompressFragmentWorkSpaceSize
);
1115 RtlGetDefaultCodePage (
1116 PUSHORT AnsiCodePage
,
1122 RtlImageDirectoryEntryToData (
1132 IN PVOID BaseAddress
1135 PIMAGE_SECTION_HEADER
1137 RtlImageRvaToSection (
1138 PIMAGE_NT_HEADERS NtHeader
,
1146 PIMAGE_NT_HEADERS NtHeader
,
1149 PIMAGE_SECTION_HEADER
*SectionHeader
1155 PANSI_STRING DestinationString
,
1161 RtlInitCodePageTable (
1162 IN PUSHORT TableBase
,
1163 OUT PCPTABLEINFO CodePageTable
1169 IN PUSHORT AnsiTableBase
,
1170 IN PUSHORT OemTableBase
,
1171 IN PUSHORT CaseTableBase
,
1172 OUT PNLSTABLEINFO NlsTable
1178 PSTRING DestinationString
,
1184 RtlInitUnicodeString (
1185 PUNICODE_STRING DestinationString
,
1191 RtlInitializeBitMap (
1192 IN OUT PRTL_BITMAP BitMapHeader
,
1193 IN PULONG BitMapBuffer
,
1194 IN ULONG SizeOfBitMap
1199 RtlInitializeContext (
1200 IN HANDLE ProcessHandle
,
1201 IN PCONTEXT Context
,
1203 IN PTHREAD_START_ROUTINE StartAddress
,
1204 IN OUT PUSER_STACK UserStack
1209 RtlInitializeGenericTable (
1210 IN OUT PRTL_GENERIC_TABLE Table
,
1211 IN PVOID CompareRoutine
,
1212 IN PVOID AllocateRoutine
,
1213 IN PVOID FreeRoutine
,
1214 IN ULONG UserParameter
1219 RtlInsertElementGenericTable (
1220 IN OUT PRTL_GENERIC_TABLE Table
,
1222 IN ULONG ElementSize
,
1237 RtlIntegerToUnicodeString (
1240 IN OUT PUNICODE_STRING String
1245 RtlIsGenericTableEmpty (
1246 IN PRTL_GENERIC_TABLE Table
1251 RtlIsNameLegalDOS8Dot3 (
1252 IN PUNICODE_STRING UnicodeName
,
1253 IN PANSI_STRING AnsiName
,
1254 OUT PBOOLEAN SpacesFound
1267 RtlLargeIntegerAdd (
1268 LARGE_INTEGER Addend1
,
1269 LARGE_INTEGER Addend2
1274 * RtlLargeIntegerAnd (
1275 * PLARGE_INTEGER Result,
1276 * LARGE_INTEGER Source,
1277 * LARGE_INTEGER Mask
1280 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1282 Result.HighPart = Source.HighPart & Mask.HighPart; \
1283 Result.LowPart = Source.LowPart & Mask.LowPart; \
1288 RtlLargeIntegerArithmeticShift (
1289 LARGE_INTEGER LargeInteger
,
1295 RtlLargeIntegerDivide (
1296 LARGE_INTEGER Dividend
,
1297 LARGE_INTEGER Divisor
,
1298 PLARGE_INTEGER Remainder
1303 * RtlLargeIntegerEqualTo (
1304 * LARGE_INTEGER Operand1,
1305 * LARGE_INTEGER Operand2
1308 #define RtlLargeIntegerEqualTo(X,Y) \
1309 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1313 * RtlLargeIntegerEqualToZero (
1314 * LARGE_INTEGER Operand
1317 #define RtlLargeIntegerEqualToZero(X) \
1318 (!((X).LowPart | (X).HighPart))
1322 * RtlLargeIntegerGreaterThan (
1323 * LARGE_INTEGER Operand1,
1324 * LARGE_INTEGER Operand2
1327 #define RtlLargeIntegerGreaterThan(X,Y) \
1328 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1329 ((X).HighPart > (Y).HighPart))
1333 * RtlLargeIntegerGreaterThanOrEqualTo (
1334 * LARGE_INTEGER Operand1,
1335 * LARGE_INTEGER Operand2
1338 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1339 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1340 ((X).HighPart > (Y).HighPart))
1344 * RtlLargeIntegerGreaterThanOrEqualToZero (
1345 * LARGE_INTEGER Operand1
1348 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1353 * RtlLargeIntegerGreaterThanZero (
1354 * LARGE_INTEGER Operand1
1357 #define RtlLargeIntegerGreaterThanZero(X) \
1358 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1359 ((X).HighPart > 0 ))
1363 * RtlLargeIntegerLessThan (
1364 * LARGE_INTEGER Operand1,
1365 * LARGE_INTEGER Operand2
1368 #define RtlLargeIntegerLessThan(X,Y) \
1369 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1370 ((X).HighPart < (Y).HighPart))
1374 * RtlLargeIntegerLessThanOrEqualTo (
1375 * LARGE_INTEGER Operand1,
1376 * LARGE_INTEGER Operand2
1379 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1380 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1381 ((X).HighPart < (Y).HighPart))
1385 * RtlLargeIntegerLessThanOrEqualToZero (
1386 * LARGE_INTEGER Operand
1389 #define RtlLargeIntegerLessOrEqualToZero(X) \
1390 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1394 * RtlLargeIntegerLessThanZero (
1395 * LARGE_INTEGER Operand
1398 #define RtlLargeIntegerLessThanZero(X) \
1399 (((X).HighPart < 0))
1403 RtlLargeIntegerNegate (
1404 LARGE_INTEGER Subtrahend
1409 * RtlLargeIntegerNotEqualTo (
1410 * LARGE_INTEGER Operand1,
1411 * LARGE_INTEGER Operand2
1414 #define RtlLargeIntegerNotEqualTo(X,Y) \
1415 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1419 * RtlLargeIntegerNotEqualToZero (
1420 * LARGE_INTEGER Operand
1423 #define RtlLargeIntegerNotEqualToZero(X) \
1424 (((X).LowPart | (X).HighPart))
1428 RtlLargeIntegerShiftLeft (
1429 LARGE_INTEGER LargeInteger
,
1435 RtlLargeIntegerShiftRight (
1436 LARGE_INTEGER LargeInteger
,
1442 RtlLargeIntegerSubtract (
1443 LARGE_INTEGER Minuend
,
1444 LARGE_INTEGER Subtrahend
1449 RtlLengthSecurityDescriptor (
1450 PSECURITY_DESCRIPTOR SecurityDescriptor
1461 RtlLookupAtomInAtomTable (
1462 IN PRTL_ATOM_TABLE AtomTable
,
1469 RtlMultiByteToUnicodeN (
1470 PWCHAR UnicodeString
,
1473 const PCHAR MbString
,
1479 RtlMultiByteToUnicodeSize (
1487 RtlNtStatusToDosError (
1493 RtlNtStatusToDosErrorNoTeb (
1499 RtlNtStatusToPsxErrno (
1505 RtlNumberGenericTableElements (
1506 IN PRTL_GENERIC_TABLE Table
1511 RtlNumberOfClearBits (
1512 PRTL_BITMAP BitMapHeader
1517 RtlNumberOfSetBits (
1518 PRTL_BITMAP BitMapHeader
1523 RtlOemStringToUnicodeSize (
1524 POEM_STRING AnsiString
1529 RtlOemStringToUnicodeString (
1530 PUNICODE_STRING DestinationString
,
1531 POEM_STRING SourceString
,
1532 BOOLEAN AllocateDestinationString
1538 PWCHAR UnicodeString
,
1546 RtlPinAtomInAtomTable (
1547 IN PRTL_ATOM_TABLE AtomTable
,
1554 PANSI_STRING String1
,
1555 PANSI_STRING String2
,
1556 BOOLEAN CaseInsensitive
1561 RtlPrefixUnicodeString (
1562 PUNICODE_STRING String1
,
1563 PUNICODE_STRING String2
,
1564 BOOLEAN CaseInsensitive
1569 RtlQueryAtomInAtomTable (
1570 IN PRTL_ATOM_TABLE AtomTable
,
1572 IN OUT PULONG RefCount OPTIONAL
,
1573 IN OUT PULONG PinCount OPTIONAL
,
1574 IN OUT PWSTR AtomName OPTIONAL
,
1575 IN OUT PULONG NameLength OPTIONAL
1580 RtlQueryTimeZoneInformation (
1581 IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
1587 IN PEXCEPTION_RECORD ExceptionRecord
1602 IN USHORT CompressionFormat
,
1603 IN OUT PUCHAR
*CompressedBuffer
,
1604 IN PUCHAR EndOfCompressedBufferPlus1
,
1605 OUT PUCHAR
*ChunkBuffer
,
1611 RtlResetRtlTranslations (
1612 IN PNLSTABLEINFO NlsTable
1617 * RtlRetrieveUlong (
1618 * PULONG DestinationAddress,
1619 * PULONG SourceAddress
1622 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
1623 if ((ULONG)(SrcAddress) & LONG_MASK) \
1625 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
1626 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
1627 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
1628 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
1632 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
1637 * RtlRetrieveUshort (
1638 * PUSHORT DestinationAddress,
1639 * PUSHORT SourceAddress
1642 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
1643 if ((ULONG)(SrcAddress) & SHORT_MASK) \
1645 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
1646 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
1650 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
1655 RtlSecondsSince1970ToTime (
1656 ULONG SecondsSince1970
,
1662 RtlSecondsSince1980ToTime (
1663 ULONG SecondsSince1980
,
1670 IN PRTL_BITMAP BitMapHeader
1676 PRTL_BITMAP BitMapHeader
,
1677 ULONG StartingIndex
,
1683 RtlSetDaclSecurityDescriptor (
1684 PSECURITY_DESCRIPTOR SecurityDescriptor
,
1685 BOOLEAN DaclPresent
,
1687 BOOLEAN DaclDefaulted
1692 RtlSetTimeZoneInformation (
1693 IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
1711 #define RtlStoreUlong(Address,Value) \
1712 if ((ULONG)(Address) & LONG_MASK) \
1714 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1715 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1716 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
1717 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
1721 *((PULONG)(Address))=(ULONG)(Value); \
1731 #define RtlStoreUshort(Address,Value) \
1732 if ((ULONG)(Address) & SHORT_MASK) \
1734 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1735 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
1739 *((PUSHORT)(Address))=(USHORT)(Value); \
1744 RtlTimeFieldsToTime (
1745 PTIME_FIELDS TimeFields
,
1751 RtlTimeToSecondsSince1970 (
1752 PLARGE_INTEGER Time
,
1753 PULONG SecondsSince1970
1758 RtlTimeToSecondsSince1980 (
1759 PLARGE_INTEGER Time
,
1760 PULONG SecondsSince1980
1765 RtlTimeToTimeFields (
1766 PLARGE_INTEGER Time
,
1767 PTIME_FIELDS TimeFields
1772 RtlUnicodeStringToAnsiSize (
1773 IN PUNICODE_STRING UnicodeString
1778 RtlUnicodeStringToAnsiString (
1779 IN OUT PANSI_STRING DestinationString
,
1780 IN PUNICODE_STRING SourceString
,
1781 IN BOOLEAN AllocateDestinationString
1786 RtlUnicodeStringToInteger (
1787 IN PUNICODE_STRING String
,
1794 RtlUnicodeStringToOemSize (
1795 IN PUNICODE_STRING UnicodeString
1800 RtlUnicodeStringToCountedOemString (
1801 IN OUT POEM_STRING DestinationString
,
1802 IN PUNICODE_STRING SourceString
,
1803 IN BOOLEAN AllocateDestinationString
1808 RtlUnicodeStringToOemString (
1809 IN OUT POEM_STRING DestinationString
,
1810 IN PUNICODE_STRING SourceString
,
1811 IN BOOLEAN AllocateDestinationString
1816 RtlUnicodeToCustomCPN (
1817 IN PCPTABLEINFO CustomCP
,
1821 PWCHAR UnicodeString
,
1827 RtlUnicodeToMultiByteN (
1831 PWCHAR UnicodeString
,
1837 RtlUnicodeToMultiByteSize (
1839 PWCHAR UnicodeString
,
1849 PWCHAR UnicodeString
,
1862 PEXCEPTION_REGISTRATION RegistrationFrame
,
1863 PVOID ReturnAddress
,
1864 PEXCEPTION_RECORD ExceptionRecord
,
1870 RtlUpcaseUnicodeChar (
1876 RtlUpcaseUnicodeString (
1877 IN OUT PUNICODE_STRING DestinationString
,
1878 IN PCUNICODE_STRING SourceString
,
1879 IN BOOLEAN AllocateDestinationString
1884 RtlUpcaseUnicodeStringToAnsiString (
1885 IN OUT PANSI_STRING DestinationString
,
1886 IN PUNICODE_STRING SourceString
,
1887 IN BOOLEAN AllocateDestinationString
1892 RtlUpcaseUnicodeStringToCountedOemString (
1893 IN OUT POEM_STRING DestinationString
,
1894 IN PUNICODE_STRING SourceString
,
1895 IN BOOLEAN AllocateDestinationString
1900 RtlUpcaseUnicodeStringToOemString (
1901 IN OUT POEM_STRING DestinationString
,
1902 IN PUNICODE_STRING SourceString
,
1903 IN BOOLEAN AllocateDestinationString
1908 RtlUpcaseUnicodeToCustomCPN (
1909 IN PCPTABLEINFO CustomCP
,
1913 PWCHAR UnicodeString
,
1919 RtlUpcaseUnicodeToMultiByteN (
1923 PWCHAR UnicodeString
,
1929 RtlUpcaseUnicodeToOemN (
1933 PWCHAR UnicodeString
,
1946 PSTRING DestinationString
,
1947 PSTRING SourceString
1960 RtlValidSecurityDescriptor (
1961 PSECURITY_DESCRIPTOR SecurityDescriptor
1965 RtlValidSid(IN PSID Sid
);
1969 RtlxAnsiStringToUnicodeSize (
1970 IN PANSI_STRING AnsiString
1975 RtlxOemStringToUnicodeSize (
1976 IN POEM_STRING OemString
1981 RtlxUnicodeStringToAnsiSize (
1982 IN PUNICODE_STRING UnicodeString
1987 RtlxUnicodeStringToOemSize (
1988 IN PUNICODE_STRING UnicodeString
1992 /* Register io functions */
1996 READ_REGISTER_UCHAR (
2002 READ_REGISTER_USHORT (
2008 READ_REGISTER_ULONG (
2014 READ_REGISTER_BUFFER_UCHAR (
2022 READ_REGISTER_BUFFER_USHORT (
2030 READ_REGISTER_BUFFER_ULONG (
2038 WRITE_REGISTER_UCHAR (
2045 WRITE_REGISTER_USHORT (
2052 WRITE_REGISTER_ULONG (
2059 WRITE_REGISTER_BUFFER_UCHAR (
2067 WRITE_REGISTER_BUFFER_USHORT (
2075 WRITE_REGISTER_BUFFER_ULONG (
2082 NTSTATUS STDCALL
RtlCreateAcl(PACL Acl
, ULONG AclSize
, ULONG AclRevision
);
2083 NTSTATUS STDCALL
RtlQueryInformationAcl (PACL Acl
, PVOID Information
, ULONG InformationLength
, ACL_INFORMATION_CLASS InformationClass
);
2084 NTSTATUS STDCALL
RtlSetInformationAcl (PACL Acl
, PVOID Information
, ULONG InformationLength
, ACL_INFORMATION_CLASS InformationClass
);
2085 BOOLEAN STDCALL
RtlValidAcl (PACL Acl
);
2087 NTSTATUS STDCALL
RtlAddAccessAllowedAce(PACL Acl
, ULONG Revision
, ACCESS_MASK AccessMask
, PSID Sid
);
2088 NTSTATUS STDCALL
RtlAddAccessDeniedAce(PACL Acl
, ULONG Revision
, ACCESS_MASK AccessMask
, PSID Sid
);
2089 NTSTATUS STDCALL
RtlAddAce(PACL Acl
, ULONG Revision
, ULONG StartingIndex
, PACE AceList
, ULONG AceListLength
);
2090 NTSTATUS STDCALL
RtlAddAuditAccessAce (PACL Acl
, ULONG Revision
, ACCESS_MASK AccessMask
, PSID Sid
, BOOLEAN Success
, BOOLEAN Failure
);
2091 NTSTATUS STDCALL
RtlDeleteAce(PACL Acl
, ULONG AceIndex
);
2092 BOOLEAN STDCALL
RtlFirstFreeAce(PACL Acl
, PACE
* Ace
);
2093 NTSTATUS STDCALL
RtlGetAce(PACL Acl
, ULONG AceIndex
, PACE
*Ace
);
2095 NTSTATUS STDCALL
RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
, PSECURITY_DESCRIPTOR RelSD
, PULONG BufferLength
);
2096 NTSTATUS STDCALL
RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
, PSECURITY_DESCRIPTOR RelSD
, PULONG BufferLength
);
2097 NTSTATUS STDCALL
RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, ULONG Revision
);
2098 BOOLEAN STDCALL
RtlValidSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
2099 ULONG STDCALL
RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
2100 NTSTATUS STDCALL
RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, BOOLEAN DaclPresent
, PACL Dacl
, BOOLEAN DaclDefaulted
);
2101 NTSTATUS STDCALL
RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PBOOLEAN DaclPresent
, PACL
* Dacl
, PBOOLEAN DaclDefauted
);
2102 NTSTATUS STDCALL
RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PSID Owner
, BOOLEAN OwnerDefaulted
);
2103 NTSTATUS STDCALL
RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PSID
* Owner
, PBOOLEAN OwnerDefaulted
);
2104 NTSTATUS STDCALL
RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PSID Group
, BOOLEAN GroupDefaulted
);
2105 NTSTATUS STDCALL
RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PSID
* Group
, PBOOLEAN GroupDefaulted
);
2106 NTSTATUS STDCALL
RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PSECURITY_DESCRIPTOR_CONTROL Control
, PULONG Revision
);
2107 NTSTATUS STDCALL
RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, BOOLEAN SaclPresent
, PACL Sacl
, BOOLEAN SaclDefaulted
);
2108 NTSTATUS STDCALL
RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
, PBOOLEAN SaclPresent
, PACL
* Sacl
, PBOOLEAN SaclDefauted
);
2109 NTSTATUS STDCALL
RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD
,
2110 PSECURITY_DESCRIPTOR AbsSD
,
2121 NTSTATUS STDCALL
RtlAllocateAndInitializeSid (PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
2122 UCHAR SubAuthorityCount
,
2123 ULONG SubAuthority0
,
2124 ULONG SubAuthority1
,
2125 ULONG SubAuthority2
,
2126 ULONG SubAuthority3
,
2127 ULONG SubAuthority4
,
2128 ULONG SubAuthority5
,
2129 ULONG SubAuthority6
,
2130 ULONG SubAuthority7
,
2132 ULONG STDCALL
RtlLengthRequiredSid (UCHAR SubAuthorityCount
);
2133 PSID_IDENTIFIER_AUTHORITY STDCALL
RtlIdentifierAuthoritySid (PSID Sid
);
2134 NTSTATUS STDCALL
RtlInitializeSid (PSID Sid
, PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
, UCHAR SubAuthorityCount
);
2135 PULONG STDCALL
RtlSubAuthoritySid (PSID Sid
, ULONG SubAuthority
);
2136 BOOLEAN STDCALL
RtlEqualPrefixSid (PSID Sid1
, PSID Sid2
);
2137 BOOLEAN STDCALL
RtlEqualSid(PSID Sid1
, PSID Sid2
);
2138 PSID STDCALL
RtlFreeSid (PSID Sid
);
2139 ULONG STDCALL
RtlLengthSid (PSID Sid
);
2140 PULONG STDCALL
RtlSubAuthoritySid (PSID Sid
, ULONG SubAuthority
);
2141 PUCHAR STDCALL
RtlSubAuthorityCountSid (PSID Sid
);
2142 BOOLEAN STDCALL
RtlValidSid (PSID Sid
);
2143 NTSTATUS STDCALL
RtlConvertSidToUnicodeString (PUNICODE_STRING String
, PSID Sid
, BOOLEAN AllocateBuffer
);
2145 BOOLEAN STDCALL
RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess
, ACCESS_MASK DesiredAccess
);
2146 BOOLEAN STDCALL
RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess
, ACCESS_MASK DesiredAccess
);
2147 VOID STDCALL
RtlMapGenericMask (PACCESS_MASK AccessMask
, PGENERIC_MAPPING GenericMapping
);
2150 RtlRandom (PULONG Seed
);
2152 PRTL_SPLAY_LINKS STDCALL
2153 RtlSubtreePredecessor (IN PRTL_SPLAY_LINKS Links
);
2155 PRTL_SPLAY_LINKS STDCALL
2156 RtlSubtreeSuccessor (IN PRTL_SPLAY_LINKS Links
);
2159 RtlUniform (PULONG Seed
);
2161 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2163 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2165 char *_itoa (int value
, char *string
, int radix
);
2166 int _snprintf(char * buf
, size_t cnt
, const char *fmt
, ...);
2167 int _snwprintf(wchar_t *buf
, size_t cnt
, const wchar_t *fmt
, ...);
2168 int _stricmp(const char *s1
, const char *s2
);
2169 char * _strlwr(char *x
);
2170 int _strnicmp(const char *s1
, const char *s2
, size_t n
);
2171 char * _strnset(char* szToFill
, int szFill
, size_t sizeMaxFill
);
2172 char * _strrev(char *s
);
2173 char * _strset(char* szToFill
, int szFill
);
2174 char * _strupr(char *x
);
2175 int _vsnprintf(char *buf
, size_t cnt
, const char *fmt
, va_list args
);
2176 int _wcsicmp (const wchar_t* cs
, const wchar_t* ct
);
2177 wchar_t * _wcslwr (wchar_t *x
);
2178 int _wcsnicmp (const wchar_t * cs
,const wchar_t * ct
,size_t count
);
2179 wchar_t* _wcsnset (wchar_t* wsToFill
, wchar_t wcFill
, size_t sizeMaxFill
);
2180 wchar_t * _wcsrev(wchar_t *s
);
2181 wchar_t *_wcsupr(wchar_t *x
);
2183 int atoi(const char *str
);
2184 long atol(const char *str
);
2190 int isxdigit(int c
);
2191 size_t mbstowcs (wchar_t *wcstr
, const char *mbstr
, size_t count
);
2192 int mbtowc (wchar_t *wchar
, const char *mbchar
, size_t count
);
2193 void * memchr(const void *s
, int c
, size_t n
);
2194 void * memcpy(void *to
, const void *from
, size_t count
);
2195 void * memmove(void *dest
,const void *src
, size_t count
);
2196 void * memset(void *src
, int val
, size_t count
);
2203 int sprintf(char * buf
, const char *fmt
, ...);
2204 void srand(unsigned seed
);
2205 char * strcat(char *s
, const char *append
);
2206 char * strchr(const char *s
, int c
);
2207 int strcmp(const char *s1
, const char *s2
);
2208 char * strcpy(char *to
, const char *from
);
2209 size_t strlen(const char *str
);
2210 char * strncat(char *dst
, const char *src
, size_t n
);
2211 int strncmp(const char *s1
, const char *s2
, size_t n
);
2212 char *strncpy(char *dst
, const char *src
, size_t n
);
2213 char *strrchr(const char *s
, int c
);
2214 size_t strspn(const char *s1
, const char *s2
);
2215 char *strstr(const char *s
, const char *find
);
2216 int swprintf(wchar_t *buf
, const wchar_t *fmt
, ...);
2219 wchar_t towlower(wchar_t c
);
2220 wchar_t towupper(wchar_t c
);
2221 int vsprintf(char *buf
, const char *fmt
, va_list args
);
2222 wchar_t * wcscat(wchar_t *dest
, const wchar_t *src
);
2223 wchar_t * wcschr(const wchar_t *str
, wchar_t ch
);
2224 int wcscmp(const wchar_t *cs
, const wchar_t *ct
);
2225 wchar_t* wcscpy(wchar_t* str1
, const wchar_t* str2
);
2226 size_t wcscspn(const wchar_t *str
,const wchar_t *reject
);
2227 size_t wcslen(const wchar_t *s
);
2228 wchar_t * wcsncat(wchar_t *dest
, const wchar_t *src
, size_t count
);
2229 int wcsncmp(const wchar_t *cs
, const wchar_t *ct
, size_t count
);
2230 wchar_t * wcsncpy(wchar_t *dest
, const wchar_t *src
, size_t count
);
2231 wchar_t * wcsrchr(const wchar_t *str
, wchar_t ch
);
2232 size_t wcsspn(const wchar_t *str
,const wchar_t *accept
);
2233 wchar_t *wcsstr(const wchar_t *s
,const wchar_t *b
);
2234 size_t wcstombs (char *mbstr
, const wchar_t *wcstr
, size_t count
);
2235 int wctomb (char *mbchar
, wchar_t wchar
);
2237 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2239 #endif /* __DDK_RTL_H */