1 /* $Id: rtl.h,v 1.30 2004/06/20 23:37:52 gdalsnes 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)
611 RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
612 PSECURITY_DESCRIPTOR RelSD
,
613 PULONG BufferLength
);
616 RtlAddAccessAllowedAce (PACL Acl
,
618 ACCESS_MASK AccessMask
,
622 RtlAddAccessDeniedAce (PACL Acl
,
624 ACCESS_MASK AccessMask
,
632 ULONG AceListLength
);
635 RtlAddAtomToAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
640 RtlAddAuditAccessAce (PACL Acl
,
642 ACCESS_MASK AccessMask
,
648 RtlAddRange (IN OUT PRTL_RANGE_LIST RangeList
,
652 IN ULONG Flags
, /* RTL_RANGE_LIST_ADD_... flags */
653 IN PVOID UserData OPTIONAL
,
654 IN PVOID Owner OPTIONAL
);
657 RtlAllocateAndInitializeSid (IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
658 IN UCHAR SubAuthorityCount
,
659 IN ULONG SubAuthority0
,
660 IN ULONG SubAuthority1
,
661 IN ULONG SubAuthority2
,
662 IN ULONG SubAuthority3
,
663 IN ULONG SubAuthority4
,
664 IN ULONG SubAuthority5
,
665 IN ULONG SubAuthority6
,
666 IN ULONG SubAuthority7
,
677 RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar
);
681 RtlAnsiStringToUnicodeSize (
682 PANSI_STRING AnsiString
687 RtlAnsiStringToUnicodeString (
688 PUNICODE_STRING DestinationString
,
689 PANSI_STRING SourceString
,
690 BOOLEAN AllocateDestinationString
695 RtlAppendAsciizToString(
702 RtlAppendStringToString (
709 RtlAppendUnicodeStringToString (
710 PUNICODE_STRING Destination
,
711 PUNICODE_STRING Source
715 RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess
,
716 ACCESS_MASK DesiredAccess
);
719 RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess
,
720 ACCESS_MASK DesiredAccess
);
725 PRTL_BITMAP BitMapHeader
,
733 PRTL_BITMAP BitMapHeader
,
741 PVOID FailedAssertion
,
757 RtlCheckRegistryKey (
765 IN PRTL_BITMAP BitMapHeader
771 IN PRTL_BITMAP BitMapHeader
,
772 IN ULONG StartingIndex
,
773 IN ULONG NumberToClear
788 BOOLEAN CaseInsensitive
793 RtlCompareUnicodeString (
794 PUNICODE_STRING String1
,
795 PUNICODE_STRING String2
,
796 BOOLEAN CaseInsensitive
800 RtlCompressBuffer(IN USHORT CompressionFormatAndEngine
,
801 IN PUCHAR UncompressedBuffer
,
802 IN ULONG UncompressedBufferSize
,
803 OUT PUCHAR CompressedBuffer
,
804 IN ULONG CompressedBufferSize
,
805 IN ULONG UncompressedChunkSize
,
806 OUT PULONG FinalCompressedSize
,
810 RtlCompressChunks(IN PUCHAR UncompressedBuffer
,
811 IN ULONG UncompressedBufferSize
,
812 OUT PUCHAR CompressedBuffer
,
813 IN ULONG CompressedBufferSize
,
814 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
815 IN ULONG CompressedDataInfoLength
,
818 LARGE_INTEGER STDCALL
819 RtlConvertLongToLargeInteger (IN LONG SignedInteger
);
822 RtlConvertSidToUnicodeString (IN OUT PUNICODE_STRING String
,
824 IN BOOLEAN AllocateString
);
826 LARGE_INTEGER STDCALL
827 RtlConvertUlongToLargeInteger (IN ULONG UnsignedInteger
);
845 #define RtlCopyBytes RtlCopyMemory
848 RtlCopyLuid(IN PLUID LuidDest
,
852 RtlCopyLuidAndAttributesArray(ULONG Count
,
853 PLUID_AND_ATTRIBUTES Src
,
854 PLUID_AND_ATTRIBUTES Dest
);
857 RtlCopyRangeList (OUT PRTL_RANGE_LIST CopyRangeList
,
858 IN PRTL_RANGE_LIST RangeList
);
861 RtlCopySid(ULONG BufferLength
,
866 RtlCopySidAndAttributesArray(ULONG Count
,
867 PSID_AND_ATTRIBUTES Src
,
869 PSID_AND_ATTRIBUTES Dest
,
871 PVOID
* RemainingSidArea
,
872 PULONG RemainingSidAreaSize
);
875 RtlCopyString(PSTRING DestinationString
,
876 PSTRING SourceString
);
879 RtlCopyUnicodeString(PUNICODE_STRING DestinationString
,
880 PUNICODE_STRING SourceString
);
883 RtlCreateAcl (PACL Acl
,
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
903 RtlCreateRegistryKey (ULONG RelativeTo
,
907 RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
911 RtlCreateUnicodeString (OUT PUNICODE_STRING Destination
,
915 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination
,
920 RtlCustomCPToUnicodeN (
921 IN PCPTABLEINFO CustomCP
,
922 PWCHAR UnicodeString
,
930 RtlDecompressBuffer(IN USHORT CompressionFormat
,
931 OUT PUCHAR UncompressedBuffer
,
932 IN ULONG UncompressedBufferSize
,
933 IN PUCHAR CompressedBuffer
,
934 IN ULONG CompressedBufferSize
,
935 OUT PULONG FinalUncompressedSize
);
938 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer
,
939 IN ULONG UncompressedBufferSize
,
940 IN PUCHAR CompressedBuffer
,
941 IN ULONG CompressedBufferSize
,
942 IN PUCHAR CompressedTail
,
943 IN ULONG CompressedTailSize
,
944 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
);
947 RtlDecompressFragment(IN USHORT CompressionFormat
,
948 OUT PUCHAR UncompressedFragment
,
949 IN ULONG UncompressedFragmentSize
,
950 IN PUCHAR CompressedBuffer
,
951 IN ULONG CompressedBufferSize
,
952 IN ULONG FragmentOffset
,
953 OUT PULONG FinalUncompressedSize
,
957 RtlDeleteAce (PACL Acl
,
961 RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
965 RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList
,
969 RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList
,
975 RtlDescribeChunk(IN USHORT CompressionFormat
,
976 IN OUT PUCHAR
*CompressedBuffer
,
977 IN PUCHAR EndOfCompressedBufferPlus1
,
978 OUT PUCHAR
*ChunkBuffer
,
979 OUT PULONG ChunkSize
);
982 RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable
);
985 RtlDestroyHeap (HANDLE hheap
);
989 RtlDowncaseUnicodeString (
990 IN OUT PUNICODE_STRING DestinationString
,
991 IN PUNICODE_STRING SourceString
,
992 IN BOOLEAN AllocateDestinationString
998 IN PRTL_ATOM_TABLE AtomTable
,
999 IN BOOLEAN DeletePinned
1004 RtlEnlargedIntegerMultiply (
1011 RtlEnlargedUnsignedDivide (
1012 ULARGE_INTEGER Dividend
,
1019 RtlEnlargedUnsignedMultiply (
1025 RtlEqualPrefixSid (PSID Sid1
,
1029 RtlEqualSid (PSID Sid1
,
1037 BOOLEAN CaseInSensitive
1042 RtlExtendedIntegerMultiply (
1043 LARGE_INTEGER Multiplicand
,
1049 RtlExtendedLargeIntegerDivide (
1050 LARGE_INTEGER Dividend
,
1057 RtlExtendedMagicDivide (
1058 LARGE_INTEGER Dividend
,
1059 LARGE_INTEGER MagicDivisor
,
1065 RtlFillMemoryUlong (
1074 PRTL_BITMAP BitMapHeader
,
1081 RtlFindClearBitsAndSet (
1082 PRTL_BITMAP BitMapHeader
,
1089 RtlFindFirstRunClear (
1090 PRTL_BITMAP BitMapHeader
,
1091 PULONG StartingIndex
1096 RtlFindFirstRunSet (
1097 PRTL_BITMAP BitMapHeader
,
1098 PULONG StartingIndex
1102 RtlFindLeastSignificantBit (IN ULONGLONG Set
);
1106 RtlFindLongestRunClear (
1107 PRTL_BITMAP BitMapHeader
,
1108 PULONG StartingIndex
1113 RtlFindLongestRunSet (
1114 PRTL_BITMAP BitMapHeader
,
1115 PULONG StartingIndex
1121 IN PVOID BaseAddress
,
1125 OUT PRTL_MESSAGE_RESOURCE_ENTRY
*MessageResourceEntry
1129 RtlFindMostSignificantBit (IN ULONGLONG Set
);
1132 RtlFindRange (IN PRTL_RANGE_LIST RangeList
,
1133 IN ULONGLONG Minimum
,
1134 IN ULONGLONG Maximum
,
1138 IN UCHAR AttributeAvailableMask
,
1139 IN PVOID Context OPTIONAL
,
1140 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1141 OUT PULONGLONG Start
);
1146 PRTL_BITMAP BitMapHeader
,
1153 RtlFindSetBitsAndClear (
1154 PRTL_BITMAP BitMapHeader
,
1160 RtlFirstFreeAce (PACL Acl
,
1164 RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath
);
1167 RtlFreeAnsiString (IN PANSI_STRING AnsiString
);
1178 RtlFreeOemString (IN POEM_STRING OemString
);
1181 RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList
);
1184 RtlFreeSid (PSID Sid
);
1187 RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString
);
1190 RtlGenerate8dot3Name (IN PUNICODE_STRING Name
,
1191 IN BOOLEAN AllowExtendedCharacters
,
1192 IN OUT PGENERATE_NAME_CONTEXT Context
,
1193 OUT PUNICODE_STRING Name8dot3
);
1196 RtlGetAce (PACL Acl
,
1201 RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine
,
1202 OUT PULONG CompressBufferAndWorkSpaceSize
,
1203 OUT PULONG CompressFragmentWorkSpaceSize
);
1206 RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1207 PSECURITY_DESCRIPTOR_CONTROL Control
,
1211 RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1212 PBOOLEAN DaclPresent
,
1214 PBOOLEAN DaclDefaulted
);
1217 RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage
,
1218 OUT PUSHORT OemCodePage
);
1221 RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList
,
1222 OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1223 OUT PRTL_RANGE
*Range
);
1226 RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1228 PBOOLEAN GroupDefaulted
);
1231 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1232 OUT PRTL_RANGE
*Range
,
1233 IN BOOLEAN MoveForwards
);
1236 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1238 PBOOLEAN OwnerDefaulted
);
1241 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1242 PBOOLEAN SaclPresent
,
1244 PBOOLEAN SaclDefaulted
);
1247 RtlGUIDFromString (IN PUNICODE_STRING GuidString
,
1250 PSID_IDENTIFIER_AUTHORITY STDCALL
1251 RtlIdentifierAuthoritySid (PSID Sid
);
1255 RtlImageDirectoryEntryToData (
1265 IN PVOID BaseAddress
1268 PIMAGE_SECTION_HEADER
1270 RtlImageRvaToSection (
1271 PIMAGE_NT_HEADERS NtHeader
,
1279 PIMAGE_NT_HEADERS NtHeader
,
1282 PIMAGE_SECTION_HEADER
*SectionHeader
1288 PANSI_STRING DestinationString
,
1294 RtlInitCodePageTable (
1295 IN PUSHORT TableBase
,
1296 OUT PCPTABLEINFO CodePageTable
1300 RtlInitializeSid (PSID Sid
,
1301 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
1302 UCHAR SubAuthorityCount
);
1307 IN PUSHORT AnsiTableBase
,
1308 IN PUSHORT OemTableBase
,
1309 IN PUSHORT CaseTableBase
,
1310 OUT PNLSTABLEINFO NlsTable
1316 PSTRING DestinationString
,
1322 RtlInitUnicodeString (
1323 PUNICODE_STRING DestinationString
,
1329 RtlInitializeBitMap (
1330 IN OUT PRTL_BITMAP BitMapHeader
,
1331 IN PULONG BitMapBuffer
,
1332 IN ULONG SizeOfBitMap
1337 RtlInitializeContext (
1338 IN HANDLE ProcessHandle
,
1339 IN PCONTEXT Context
,
1341 IN PTHREAD_START_ROUTINE StartAddress
,
1342 IN OUT PUSER_STACK UserStack
1347 RtlInitializeGenericTable (
1348 IN OUT PRTL_GENERIC_TABLE Table
,
1349 IN PVOID CompareRoutine
,
1350 IN PVOID AllocateRoutine
,
1351 IN PVOID FreeRoutine
,
1352 IN ULONG UserParameter
1356 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList
);
1360 RtlInsertElementGenericTable (
1361 IN OUT PRTL_GENERIC_TABLE Table
,
1363 IN ULONG ElementSize
,
1378 RtlIntegerToUnicodeString (
1381 IN OUT PUNICODE_STRING String
1385 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList
,
1386 IN PRTL_RANGE_LIST RangeList
);
1389 RtlIsGenericTableEmpty (IN PRTL_GENERIC_TABLE Table
);
1392 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName
,
1393 IN PANSI_STRING AnsiName
,
1394 OUT PBOOLEAN SpacesFound
);
1397 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList
,
1401 IN UCHAR AttributeAvailableMask
,
1402 IN PVOID Context OPTIONAL
,
1403 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1404 OUT PBOOLEAN Available
);
1416 RtlLargeIntegerAdd (
1417 LARGE_INTEGER Addend1
,
1418 LARGE_INTEGER Addend2
1423 * RtlLargeIntegerAnd (
1424 * PLARGE_INTEGER Result,
1425 * LARGE_INTEGER Source,
1426 * LARGE_INTEGER Mask
1429 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1431 Result.HighPart = Source.HighPart & Mask.HighPart; \
1432 Result.LowPart = Source.LowPart & Mask.LowPart; \
1437 RtlLargeIntegerArithmeticShift (
1438 LARGE_INTEGER LargeInteger
,
1444 RtlLargeIntegerDivide (
1445 LARGE_INTEGER Dividend
,
1446 LARGE_INTEGER Divisor
,
1447 PLARGE_INTEGER Remainder
1452 * RtlLargeIntegerEqualTo (
1453 * LARGE_INTEGER Operand1,
1454 * LARGE_INTEGER Operand2
1457 #define RtlLargeIntegerEqualTo(X,Y) \
1458 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1462 * RtlLargeIntegerEqualToZero (
1463 * LARGE_INTEGER Operand
1466 #define RtlLargeIntegerEqualToZero(X) \
1467 (!((X).LowPart | (X).HighPart))
1471 * RtlLargeIntegerGreaterThan (
1472 * LARGE_INTEGER Operand1,
1473 * LARGE_INTEGER Operand2
1476 #define RtlLargeIntegerGreaterThan(X,Y) \
1477 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1478 ((X).HighPart > (Y).HighPart))
1482 * RtlLargeIntegerGreaterThanOrEqualTo (
1483 * LARGE_INTEGER Operand1,
1484 * LARGE_INTEGER Operand2
1487 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1488 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1489 ((X).HighPart > (Y).HighPart))
1493 * RtlLargeIntegerGreaterThanOrEqualToZero (
1494 * LARGE_INTEGER Operand1
1497 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1502 * RtlLargeIntegerGreaterThanZero (
1503 * LARGE_INTEGER Operand1
1506 #define RtlLargeIntegerGreaterThanZero(X) \
1507 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1508 ((X).HighPart > 0 ))
1512 * RtlLargeIntegerLessThan (
1513 * LARGE_INTEGER Operand1,
1514 * LARGE_INTEGER Operand2
1517 #define RtlLargeIntegerLessThan(X,Y) \
1518 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1519 ((X).HighPart < (Y).HighPart))
1523 * RtlLargeIntegerLessThanOrEqualTo (
1524 * LARGE_INTEGER Operand1,
1525 * LARGE_INTEGER Operand2
1528 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1529 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1530 ((X).HighPart < (Y).HighPart))
1534 * RtlLargeIntegerLessThanOrEqualToZero (
1535 * LARGE_INTEGER Operand
1538 #define RtlLargeIntegerLessOrEqualToZero(X) \
1539 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1543 * RtlLargeIntegerLessThanZero (
1544 * LARGE_INTEGER Operand
1547 #define RtlLargeIntegerLessThanZero(X) \
1548 (((X).HighPart < 0))
1552 RtlLargeIntegerNegate (
1553 LARGE_INTEGER Subtrahend
1558 * RtlLargeIntegerNotEqualTo (
1559 * LARGE_INTEGER Operand1,
1560 * LARGE_INTEGER Operand2
1563 #define RtlLargeIntegerNotEqualTo(X,Y) \
1564 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1568 * RtlLargeIntegerNotEqualToZero (
1569 * LARGE_INTEGER Operand
1572 #define RtlLargeIntegerNotEqualToZero(X) \
1573 (((X).LowPart | (X).HighPart))
1577 RtlLargeIntegerShiftLeft (
1578 LARGE_INTEGER LargeInteger
,
1584 RtlLargeIntegerShiftRight (
1585 LARGE_INTEGER LargeInteger
,
1591 RtlLargeIntegerSubtract (
1592 LARGE_INTEGER Minuend
,
1593 LARGE_INTEGER Subtrahend
1597 RtlLengthRequiredSid (UCHAR SubAuthorityCount
);
1600 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
1603 RtlLengthSid (PSID Sid
);
1612 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
1614 OUT PRTL_ATOM Atom
);
1617 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
1618 PSECURITY_DESCRIPTOR RelSD
,
1619 PULONG BufferLength
);
1622 RtlMapGenericMask (PACCESS_MASK AccessMask
,
1623 PGENERIC_MAPPING GenericMapping
);
1626 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList
,
1627 IN PRTL_RANGE_LIST RangeList1
,
1628 IN PRTL_RANGE_LIST RangeList2
,
1633 RtlMultiByteToUnicodeN (
1634 PWCHAR UnicodeString
,
1637 const PCHAR MbString
,
1643 RtlMultiByteToUnicodeSize (
1651 RtlNtStatusToDosError (
1657 RtlNtStatusToDosErrorNoTeb (
1663 RtlNtStatusToPsxErrno (
1669 RtlNumberGenericTableElements (
1670 IN PRTL_GENERIC_TABLE Table
1675 RtlNumberOfClearBits (
1676 PRTL_BITMAP BitMapHeader
1681 RtlNumberOfSetBits (
1682 PRTL_BITMAP BitMapHeader
1687 RtlOemStringToUnicodeSize (
1688 POEM_STRING AnsiString
1693 RtlOemStringToUnicodeString (
1694 PUNICODE_STRING DestinationString
,
1695 POEM_STRING SourceString
,
1696 BOOLEAN AllocateDestinationString
1702 PWCHAR UnicodeString
,
1710 RtlPinAtomInAtomTable (
1711 IN PRTL_ATOM_TABLE AtomTable
,
1718 PANSI_STRING String1
,
1719 PANSI_STRING String2
,
1720 BOOLEAN CaseInsensitive
1725 RtlPrefixUnicodeString (
1726 PUNICODE_STRING String1
,
1727 PUNICODE_STRING String2
,
1728 BOOLEAN CaseInsensitive
1733 RtlQueryAtomInAtomTable (
1734 IN PRTL_ATOM_TABLE AtomTable
,
1736 IN OUT PULONG RefCount OPTIONAL
,
1737 IN OUT PULONG PinCount OPTIONAL
,
1738 IN OUT PWSTR AtomName OPTIONAL
,
1739 IN OUT PULONG NameLength OPTIONAL
1743 RtlQueryInformationAcl (PACL Acl
,
1745 ULONG InformationLength
,
1746 ACL_INFORMATION_CLASS InformationClass
);
1749 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
1752 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord
);
1755 RtlRandom (PULONG Seed
);
1769 IN USHORT CompressionFormat
,
1770 IN OUT PUCHAR
*CompressedBuffer
,
1771 IN PUCHAR EndOfCompressedBufferPlus1
,
1772 OUT PUCHAR
*ChunkBuffer
,
1777 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable
);
1781 * RtlRetrieveUlong (
1782 * PULONG DestinationAddress,
1783 * PULONG SourceAddress
1786 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
1787 if ((ULONG)(SrcAddress) & LONG_MASK) \
1789 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
1790 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
1791 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
1792 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
1796 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
1801 * RtlRetrieveUshort (
1802 * PUSHORT DestinationAddress,
1803 * PUSHORT SourceAddress
1806 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
1807 if ((ULONG)(SrcAddress) & SHORT_MASK) \
1809 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
1810 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
1814 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
1818 RtlSecondsSince1970ToTime (ULONG SecondsSince1970
,
1819 PLARGE_INTEGER Time
);
1822 RtlSecondsSince1980ToTime (ULONG SecondsSince1980
,
1823 PLARGE_INTEGER Time
);
1826 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD
,
1827 PSECURITY_DESCRIPTOR AbsSD
,
1839 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader
);
1844 PRTL_BITMAP BitMapHeader
,
1845 ULONG StartingIndex
,
1850 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1851 BOOLEAN DaclPresent
,
1853 BOOLEAN DaclDefaulted
);
1856 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1858 BOOLEAN GroupDefaulted
);
1861 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1863 BOOLEAN OwnerDefaulted
);
1866 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1867 BOOLEAN SaclPresent
,
1869 BOOLEAN SaclDefaulted
);
1872 RtlSetInformationAcl (PACL Acl
,
1874 ULONG InformationLength
,
1875 ACL_INFORMATION_CLASS InformationClass
);
1878 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
1895 #define RtlStoreUlong(Address,Value) \
1896 if ((ULONG)(Address) & LONG_MASK) \
1898 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1899 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1900 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
1901 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
1905 *((PULONG)(Address))=(ULONG)(Value); \
1915 #define RtlStoreUshort(Address,Value) \
1916 if ((ULONG)(Address) & SHORT_MASK) \
1918 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
1919 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
1923 *((PUSHORT)(Address))=(USHORT)(Value); \
1927 RtlStringFromGUID (IN REFGUID Guid
,
1928 OUT PUNICODE_STRING GuidString
);
1931 RtlSubAuthoritySid (PSID Sid
,
1932 ULONG SubAuthority
);
1935 RtlSubAuthoritySid (PSID Sid
,
1936 ULONG SubAuthority
);
1939 RtlSubAuthorityCountSid (PSID Sid
);
1941 PRTL_SPLAY_LINKS STDCALL
1942 RtlSubtreePredecessor (IN PRTL_SPLAY_LINKS Links
);
1944 PRTL_SPLAY_LINKS STDCALL
1945 RtlSubtreeSuccessor (IN PRTL_SPLAY_LINKS Links
);
1948 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields
,
1949 PLARGE_INTEGER Time
);
1953 RtlTimeToSecondsSince1970 (
1954 PLARGE_INTEGER Time
,
1955 PULONG SecondsSince1970
1960 RtlTimeToSecondsSince1980 (
1961 PLARGE_INTEGER Time
,
1962 PULONG SecondsSince1980
1967 RtlTimeToTimeFields (
1968 PLARGE_INTEGER Time
,
1969 PTIME_FIELDS TimeFields
1973 RtlUlongByteSwap (IN ULONG Source
);
1976 RtlUlonglongByteSwap (IN ULONGLONG Source
);
1980 RtlUnicodeStringToAnsiSize (
1981 IN PUNICODE_STRING UnicodeString
1986 RtlUnicodeStringToAnsiString (
1987 IN OUT PANSI_STRING DestinationString
,
1988 IN PUNICODE_STRING SourceString
,
1989 IN BOOLEAN AllocateDestinationString
1994 RtlUnicodeStringToInteger (
1995 IN PUNICODE_STRING String
,
2002 RtlUnicodeStringToOemSize (
2003 IN PUNICODE_STRING UnicodeString
2008 RtlUnicodeStringToCountedOemString (
2009 IN OUT POEM_STRING DestinationString
,
2010 IN PUNICODE_STRING SourceString
,
2011 IN BOOLEAN AllocateDestinationString
2016 RtlUnicodeStringToOemString (
2017 IN OUT POEM_STRING DestinationString
,
2018 IN PUNICODE_STRING SourceString
,
2019 IN BOOLEAN AllocateDestinationString
2024 RtlUnicodeToCustomCPN (
2025 IN PCPTABLEINFO CustomCP
,
2029 PWCHAR UnicodeString
,
2035 RtlUnicodeToMultiByteN (
2039 PWCHAR UnicodeString
,
2045 RtlUnicodeToMultiByteSize (
2047 PWCHAR UnicodeString
,
2057 PWCHAR UnicodeString
,
2062 RtlUniform (PULONG Seed
);
2073 PEXCEPTION_REGISTRATION RegistrationFrame
,
2074 PVOID ReturnAddress
,
2075 PEXCEPTION_RECORD ExceptionRecord
,
2081 RtlUpcaseUnicodeChar (
2087 RtlUpcaseUnicodeString (
2088 IN OUT PUNICODE_STRING DestinationString
,
2089 IN PCUNICODE_STRING SourceString
,
2090 IN BOOLEAN AllocateDestinationString
2095 RtlUpcaseUnicodeStringToAnsiString (
2096 IN OUT PANSI_STRING DestinationString
,
2097 IN PUNICODE_STRING SourceString
,
2098 IN BOOLEAN AllocateDestinationString
2103 RtlUpcaseUnicodeStringToCountedOemString (
2104 IN OUT POEM_STRING DestinationString
,
2105 IN PUNICODE_STRING SourceString
,
2106 IN BOOLEAN AllocateDestinationString
2111 RtlUpcaseUnicodeStringToOemString (
2112 IN OUT POEM_STRING DestinationString
,
2113 IN PUNICODE_STRING SourceString
,
2114 IN BOOLEAN AllocateDestinationString
2119 RtlUpcaseUnicodeToCustomCPN (
2120 IN PCPTABLEINFO CustomCP
,
2124 PWCHAR UnicodeString
,
2130 RtlUpcaseUnicodeToMultiByteN (
2134 PWCHAR UnicodeString
,
2140 RtlUpcaseUnicodeToOemN (
2144 PWCHAR UnicodeString
,
2149 RtlUpperChar (CHAR Source
);
2152 RtlUpperString (PSTRING DestinationString
,
2153 PSTRING SourceString
);
2156 RtlUshortByteSwap (IN USHORT Source
);
2159 RtlValidAcl (PACL Acl
);
2170 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2173 RtlValidSid (IN PSID Sid
);
2177 RtlxAnsiStringToUnicodeSize (
2178 IN PANSI_STRING AnsiString
2183 RtlxOemStringToUnicodeSize (
2184 IN POEM_STRING OemString
2189 RtlxUnicodeStringToAnsiSize (
2190 IN PUNICODE_STRING UnicodeString
2195 RtlxUnicodeStringToOemSize (
2196 IN PUNICODE_STRING UnicodeString
2201 RtlpOemStringToCountedUnicodeString(
2202 IN OUT PUNICODE_STRING UniDest
,
2203 IN POEM_STRING OemSource
,
2204 IN BOOLEAN AllocateDestinationString
,
2205 IN POOL_TYPE PoolType
);
2209 RtlpUpcaseUnicodeString(
2210 IN OUT PUNICODE_STRING UniDest
,
2211 IN PCUNICODE_STRING UniSource
,
2212 IN BOOLEAN AllocateDestinationString
,
2213 IN POOL_TYPE PoolType
);
2217 RtlpUpcaseUnicodeStringToAnsiString(
2218 IN OUT PANSI_STRING AnsiDest
,
2219 IN PUNICODE_STRING UniSource
,
2220 IN BOOLEAN AllocateDestinationString
,
2221 IN POOL_TYPE PoolType
);
2225 RtlpUpcaseUnicodeStringToCountedOemString(
2226 IN OUT POEM_STRING OemDest
,
2227 IN PUNICODE_STRING UniSource
,
2228 IN BOOLEAN AllocateDestinationString
,
2229 IN POOL_TYPE PoolType
);
2233 RtlpUpcaseUnicodeStringToOemString (
2234 IN OUT POEM_STRING OemDest
,
2235 IN PUNICODE_STRING UniSource
,
2236 IN BOOLEAN AllocateDestinationString
,
2237 IN POOL_TYPE PoolType
);
2241 RtlpDowncaseUnicodeString(
2242 IN OUT PUNICODE_STRING UniDest
,
2243 IN PUNICODE_STRING UniSource
,
2244 IN BOOLEAN AllocateDestinationString
,
2245 IN POOL_TYPE PoolType
);
2249 RtlpAnsiStringToUnicodeString(
2250 IN OUT PUNICODE_STRING DestinationString
,
2251 IN PANSI_STRING SourceString
,
2252 IN BOOLEAN AllocateDestinationString
,
2253 IN POOL_TYPE PoolType
);
2257 RtlpUnicodeStringToAnsiString(
2258 IN OUT PANSI_STRING AnsiDest
,
2259 IN PUNICODE_STRING UniSource
,
2260 IN BOOLEAN AllocateDestinationString
,
2261 IN POOL_TYPE PoolType
);
2265 RtlpOemStringToUnicodeString(
2266 IN OUT PUNICODE_STRING UniDest
,
2267 IN POEM_STRING OemSource
,
2268 IN BOOLEAN AllocateDestinationString
,
2269 IN POOL_TYPE PoolType
);
2273 RtlpUnicodeStringToOemString(
2274 IN OUT POEM_STRING OemDest
,
2275 IN PUNICODE_STRING UniSource
,
2276 IN BOOLEAN AllocateDestinationString
,
2277 IN POOL_TYPE PoolType
);
2281 RtlpCreateUnicodeString(
2282 IN OUT PUNICODE_STRING UniDest
,
2284 IN POOL_TYPE PoolType
);
2288 RtlpUnicodeStringToCountedOemString(
2289 IN OUT POEM_STRING OemDest
,
2290 IN PUNICODE_STRING UniSource
,
2291 IN BOOLEAN AllocateDestinationString
,
2292 IN POOL_TYPE PoolType
);
2295 RtlpDuplicateUnicodeString(
2297 IN PUNICODE_STRING SourceString
,
2298 PUNICODE_STRING DestinationString
,
2299 POOL_TYPE PoolType
);
2301 /* Register io functions */
2305 READ_REGISTER_UCHAR (
2311 READ_REGISTER_USHORT (
2317 READ_REGISTER_ULONG (
2323 READ_REGISTER_BUFFER_UCHAR (
2331 READ_REGISTER_BUFFER_USHORT (
2339 READ_REGISTER_BUFFER_ULONG (
2347 WRITE_REGISTER_UCHAR (
2354 WRITE_REGISTER_USHORT (
2361 WRITE_REGISTER_ULONG (
2368 WRITE_REGISTER_BUFFER_UCHAR (
2376 WRITE_REGISTER_BUFFER_USHORT (
2384 WRITE_REGISTER_BUFFER_ULONG (
2391 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2393 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2395 char *_itoa (int value
, char *string
, int radix
);
2396 wchar_t *_itow (int value
, wchar_t *string
, int radix
);
2397 int _snprintf(char * buf
, size_t cnt
, const char *fmt
, ...);
2398 int _snwprintf(wchar_t *buf
, size_t cnt
, const wchar_t *fmt
, ...);
2399 int _stricmp(const char *s1
, const char *s2
);
2400 char * _strlwr(char *x
);
2401 int _strnicmp(const char *s1
, const char *s2
, size_t n
);
2402 char * _strnset(char* szToFill
, int szFill
, size_t sizeMaxFill
);
2403 char * _strrev(char *s
);
2404 char * _strset(char* szToFill
, int szFill
);
2405 char * _strupr(char *x
);
2406 int _vsnprintf(char *buf
, size_t cnt
, const char *fmt
, va_list args
);
2407 int _wcsicmp (const wchar_t* cs
, const wchar_t* ct
);
2408 wchar_t * _wcslwr (wchar_t *x
);
2409 int _wcsnicmp (const wchar_t * cs
,const wchar_t * ct
,size_t count
);
2410 wchar_t* _wcsnset (wchar_t* wsToFill
, wchar_t wcFill
, size_t sizeMaxFill
);
2411 wchar_t * _wcsrev(wchar_t *s
);
2412 wchar_t *_wcsupr(wchar_t *x
);
2414 int atoi(const char *str
);
2415 long atol(const char *str
);
2421 int isxdigit(int c
);
2422 size_t mbstowcs (wchar_t *wcstr
, const char *mbstr
, size_t count
);
2423 int mbtowc (wchar_t *wchar
, const char *mbchar
, size_t count
);
2424 void * memchr(const void *s
, int c
, size_t n
);
2425 void * memcpy(void *to
, const void *from
, size_t count
);
2426 void * memmove(void *dest
,const void *src
, size_t count
);
2427 void * memset(void *src
, int val
, size_t count
);
2434 int sprintf(char * buf
, const char *fmt
, ...);
2435 void srand(unsigned seed
);
2436 char * strcat(char *s
, const char *append
);
2437 char * strchr(const char *s
, int c
);
2438 int strcmp(const char *s1
, const char *s2
);
2439 char * strcpy(char *to
, const char *from
);
2440 size_t strlen(const char *str
);
2441 char * strncat(char *dst
, const char *src
, size_t n
);
2442 int strncmp(const char *s1
, const char *s2
, size_t n
);
2443 char *strncpy(char *dst
, const char *src
, size_t n
);
2444 char *strrchr(const char *s
, int c
);
2445 size_t strspn(const char *s1
, const char *s2
);
2446 char *strstr(const char *s
, const char *find
);
2447 int swprintf(wchar_t *buf
, const wchar_t *fmt
, ...);
2450 wchar_t towlower(wchar_t c
);
2451 wchar_t towupper(wchar_t c
);
2452 int vsprintf(char *buf
, const char *fmt
, va_list args
);
2453 wchar_t * wcscat(wchar_t *dest
, const wchar_t *src
);
2454 wchar_t * wcschr(const wchar_t *str
, wchar_t ch
);
2455 int wcscmp(const wchar_t *cs
, const wchar_t *ct
);
2456 wchar_t* wcscpy(wchar_t* str1
, const wchar_t* str2
);
2457 size_t wcscspn(const wchar_t *str
,const wchar_t *reject
);
2458 size_t wcslen(const wchar_t *s
);
2459 wchar_t * wcsncat(wchar_t *dest
, const wchar_t *src
, size_t count
);
2460 int wcsncmp(const wchar_t *cs
, const wchar_t *ct
, size_t count
);
2461 wchar_t * wcsncpy(wchar_t *dest
, const wchar_t *src
, size_t count
);
2462 wchar_t * wcsrchr(const wchar_t *str
, wchar_t ch
);
2463 size_t wcsspn(const wchar_t *str
,const wchar_t *accept
);
2464 wchar_t *wcsstr(const wchar_t *s
,const wchar_t *b
);
2465 size_t wcstombs (char *mbstr
, const wchar_t *wcstr
, size_t count
);
2466 int wctomb (char *mbchar
, wchar_t wchar
);
2468 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2470 #endif /* __DDK_RTL_H */