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
93 IN PLIST_ENTRY ListHead
)
95 ListHead
->Flink
= ListHead
->Blink
= ListHead
;
102 * PLIST_ENTRY ListHead,
106 * FUNCTION: Inserts an entry in a double linked list
108 * ListHead = Head of the list
109 * Entry = Entry to insert
113 IN PLIST_ENTRY ListHead
,
114 IN PLIST_ENTRY Entry
)
116 PLIST_ENTRY OldFlink
;
117 OldFlink
= ListHead
->Flink
;
118 Entry
->Flink
= OldFlink
;
119 Entry
->Blink
= ListHead
;
120 OldFlink
->Blink
= Entry
;
121 ListHead
->Flink
= Entry
;
128 * PLIST_ENTRY ListHead,
133 * Inserts an entry in a double linked list
136 * ListHead = Head of the list
137 * Entry = Entry to insert
141 IN PLIST_ENTRY ListHead
,
142 IN PLIST_ENTRY Entry
)
144 PLIST_ENTRY OldBlink
;
145 OldBlink
= ListHead
->Blink
;
146 Entry
->Flink
= ListHead
;
147 Entry
->Blink
= OldBlink
;
148 OldBlink
->Flink
= Entry
;
149 ListHead
->Blink
= Entry
;
155 * PLIST_ENTRY ListHead
159 * Checks if a double linked list is empty
162 * ListHead = Head of the list
164 #define IsListEmpty(ListHead) \
165 ((ListHead)->Flink == (ListHead))
171 * PSINGLE_LIST_ENTRY ListHead
175 * Removes an entry from the head of a single linked list
178 * ListHead = Head of the list
183 #define PopEntryList(ListHead) \
186 PSINGLE_LIST_ENTRY _FirstEntry; \
187 _FirstEntry = (ListHead)->Next; \
188 if (_FirstEntry != NULL) \
189 (ListHead)->Next = _FirstEntry->Next; \
192 #define RtlCopyMemory(Destination,Source,Length) \
193 memcpy((Destination),(Source),(Length))
195 #define PushEntryList(_ListHead, _Entry) \
196 (_Entry)->Next = (_ListHead)->Next; \
197 (_ListHead)->Next = (_Entry); \
206 * Removes an entry from a double linked list
209 * ListEntry = Entry to remove
211 static __inline BOOLEAN
213 IN PLIST_ENTRY Entry
)
215 PLIST_ENTRY OldFlink
;
216 PLIST_ENTRY OldBlink
;
218 OldFlink
= Entry
->Flink
;
219 OldBlink
= Entry
->Blink
;
220 OldFlink
->Blink
= OldBlink
;
221 OldBlink
->Flink
= OldFlink
;
222 return (OldFlink
== OldBlink
);
229 * PLIST_ENTRY ListHead
233 * Removes the head entry from a double linked list
236 * ListHead = Head of the list
241 static __inline PLIST_ENTRY
243 IN PLIST_ENTRY ListHead
)
248 Entry
= ListHead
->Flink
;
249 Flink
= Entry
->Flink
;
250 ListHead
->Flink
= Flink
;
251 Flink
->Blink
= ListHead
;
259 * PLIST_ENTRY ListHead
263 * Removes the tail entry from a double linked list
266 * ListHead = Head of the list
271 static __inline PLIST_ENTRY
273 IN PLIST_ENTRY ListHead
)
278 Entry
= ListHead
->Blink
;
279 Blink
= Entry
->Blink
;
280 ListHead
->Blink
= Blink
;
281 Blink
->Flink
= ListHead
;
287 * FIFO versions are slower but ensures that entries with equal SortField value
288 * are placed in FIFO order (assuming that entries are removed from Head).
291 #define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
293 PLIST_ENTRY current;\
295 current = (ListHead)->Flink;\
296 while (current != (ListHead))\
298 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
299 (NewEntry)->SortField)\
303 current = current->Flink;\
306 InsertTailList(current, &((NewEntry)->ListEntryField));\
310 #define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
312 PLIST_ENTRY current;\
314 current = (ListHead)->Flink;\
315 while (current != (ListHead))\
317 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
318 (NewEntry)->SortField)\
322 current = current->Flink;\
325 InsertTailList(current, &((NewEntry)->ListEntryField));\
329 #define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
331 PLIST_ENTRY current;\
333 current = (ListHead)->Flink;\
334 while (current != (ListHead))\
336 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
337 (NewEntry)->SortField)\
341 current = current->Flink;\
344 InsertTailList(current, &((NewEntry)->ListEntryField));\
348 #define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
350 PLIST_ENTRY current;\
352 current = (ListHead)->Flink;\
353 while (current != (ListHead))\
355 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
356 (NewEntry)->SortField)\
360 current = current->Flink;\
363 InsertTailList(current, &((NewEntry)->ListEntryField));\
370 * PLIST_ENTRY ListHead,
374 #define IsFirstEntry(ListHead, Entry) ((ListHead)->Flink == Entry)
376 #define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
378 #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination), (Source), (Length)))
382 RtlAppendUnicodeToString (
383 PUNICODE_STRING Destination
,
388 RtlCompareMemory(IN
const VOID
*Source1
,
389 IN
const VOID
*Source2
,
394 RtlEqualUnicodeString (
395 PUNICODE_STRING String1
,
396 PUNICODE_STRING String2
,
397 BOOLEAN CaseInSensitive
402 RtlQueryRegistryValues (
405 IN PRTL_QUERY_REGISTRY_TABLE QueryTable
,
412 RtlWriteRegistryValue (
422 RtlDeleteRegistryValue(IN ULONG RelativeTo
,
424 IN PCWSTR ValueName
);
427 RtlMoveMemory (PVOID Destination
, CONST VOID
* Source
, ULONG Length
);
430 RtlEqualLuid(IN PLUID Luid1
,
442 RtlZeroMemory (PVOID Destination
, ULONG Length
);
444 #else /* __USE_W32API */
446 #include <ddk/ntifs.h>
448 #endif /* __USE_W32API */
452 * PURPOSE: Used with RtlCheckRegistryKey, RtlCreateRegistryKey,
453 * RtlDeleteRegistryKey
455 #define RTL_REGISTRY_ABSOLUTE 0
456 #define RTL_REGISTRY_SERVICES 1
457 #define RTL_REGISTRY_CONTROL 2
458 #define RTL_REGISTRY_WINDOWS_NT 3
459 #define RTL_REGISTRY_DEVICEMAP 4
460 #define RTL_REGISTRY_USER 5
461 #define RTL_REGISTRY_MAXIMUM 6
463 #define RTL_REGISTRY_HANDLE 0x40000000
464 #define RTL_REGISTRY_OPTIONAL 0x80000000
467 #define SHORT_SIZE (sizeof(USHORT))
468 #define SHORT_MASK (SHORT_SIZE-1)
469 #define LONG_SIZE (sizeof(ULONG))
470 #define LONG_MASK (LONG_SIZE-1)
471 #define LOWBYTE_MASK 0x00FF
473 #define FIRSTBYTE(Value) ((Value) & LOWBYTE_MASK)
474 #define SECONDBYTE(Value) (((Value) >> 8) & LOWBYTE_MASK)
475 #define THIRDBYTE(Value) (((Value) >> 16) & LOWBYTE_MASK)
476 #define FOURTHBYTE(Value) (((Value) >> 24) & LOWBYTE_MASK)
478 /* FIXME: reverse byte-order on big-endian machines (e.g. MIPS) */
479 #define SHORT_LEAST_SIGNIFICANT_BIT 0
480 #define SHORT_MOST_SIGNIFICANT_BIT 1
482 #define LONG_LEAST_SIGNIFICANT_BIT 0
483 #define LONG_3RD_MOST_SIGNIFICANT_BIT 1
484 #define LONG_2RD_MOST_SIGNIFICANT_BIT 2
485 #define LONG_MOST_SIGNIFICANT_BIT 3
488 #define NLS_ANSI_CODE_PAGE NlsAnsiCodePage
489 #define NLS_LEAD_BYTE_INFO NlsLeadByteInfo
490 #define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
491 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
492 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
494 #if defined(__NTOSKRNL__) || defined(__NTDLL__)
495 extern USHORT EXPORTED NlsAnsiCodePage
;
496 extern PUSHORT EXPORTED NlsLeadByteInfo
;
497 extern BOOLEAN EXPORTED NlsMbCodePageTag
;
498 extern BOOLEAN EXPORTED NlsMbOemCodePageTag
;
499 extern PUSHORT EXPORTED NlsOemLeadByteInfo
;
501 extern USHORT IMPORTED NlsAnsiCodePage
;
502 extern PUSHORT IMPORTED NlsLeadByteInfo
;
503 extern BOOLEAN IMPORTED NlsMbCodePageTag
;
504 extern BOOLEAN IMPORTED NlsMbOemCodePageTag
;
505 extern PUSHORT IMPORTED NlsOemLeadByteInfo
;
506 #endif /* __NTOSKRNL__ || __NTDLL__ */
511 PSINGLE_LIST_ENTRY ListHead,
512 PSINGLE_LIST_ENTRY Entry
516 #define PushEntryList(ListHead,Entry) \
517 (Entry)->Next = (ListHead)->Next; \
518 (ListHead)->Next = (Entry)
523 RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
524 PSECURITY_DESCRIPTOR RelSD
,
525 PULONG BufferLength
);
528 RtlAddAccessAllowedAce (PACL Acl
,
530 ACCESS_MASK AccessMask
,
535 RtlAddAccessAllowedAceEx(
537 IN DWORD dwAceRevision
,
544 RtlAddAccessDeniedAce (PACL Acl
,
546 ACCESS_MASK AccessMask
,
554 ULONG AceListLength
);
557 RtlAddAtomToAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
562 RtlAddAuditAccessAce (PACL Acl
,
564 ACCESS_MASK AccessMask
,
570 RtlAddRange (IN OUT PRTL_RANGE_LIST RangeList
,
574 IN ULONG Flags
, /* RTL_RANGE_LIST_ADD_... flags */
575 IN PVOID UserData OPTIONAL
,
576 IN PVOID Owner OPTIONAL
);
579 RtlAllocateAndInitializeSid (IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
580 IN UCHAR SubAuthorityCount
,
581 IN ULONG SubAuthority0
,
582 IN ULONG SubAuthority1
,
583 IN ULONG SubAuthority2
,
584 IN ULONG SubAuthority3
,
585 IN ULONG SubAuthority4
,
586 IN ULONG SubAuthority5
,
587 IN ULONG SubAuthority6
,
588 IN ULONG SubAuthority7
,
599 RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar
);
603 RtlAnsiStringToUnicodeSize (
604 PANSI_STRING AnsiString
609 RtlAnsiStringToUnicodeString (
610 PUNICODE_STRING DestinationString
,
611 PANSI_STRING SourceString
,
612 BOOLEAN AllocateDestinationString
617 RtlAppendAsciizToString(
624 RtlAppendStringToString (
631 RtlAppendUnicodeStringToString (
632 PUNICODE_STRING Destination
,
633 PUNICODE_STRING Source
637 RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess
,
638 ACCESS_MASK DesiredAccess
);
641 RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess
,
642 ACCESS_MASK DesiredAccess
);
647 PRTL_BITMAP BitMapHeader
,
655 PRTL_BITMAP BitMapHeader
,
663 PVOID FailedAssertion
,
672 OUT PCONTEXT ContextRecord
677 RtlCaptureStackBackTrace (
678 IN ULONG FramesToSkip
,
679 IN ULONG FramesToCapture
,
680 OUT PVOID
*BackTrace
,
681 OUT PULONG BackTraceHash OPTIONAL
696 RtlCheckRegistryKey (
704 IN PRTL_BITMAP BitMapHeader
710 PRTL_BITMAP BitMapHeader
,
717 IN PRTL_BITMAP BitMapHeader
,
718 IN ULONG StartingIndex
,
719 IN ULONG NumberToClear
733 BOOLEAN CaseInsensitive
738 RtlCompareUnicodeString (
739 PUNICODE_STRING String1
,
740 PUNICODE_STRING String2
,
741 BOOLEAN CaseInsensitive
745 RtlCompressBuffer(IN USHORT CompressionFormatAndEngine
,
746 IN PUCHAR UncompressedBuffer
,
747 IN ULONG UncompressedBufferSize
,
748 OUT PUCHAR CompressedBuffer
,
749 IN ULONG CompressedBufferSize
,
750 IN ULONG UncompressedChunkSize
,
751 OUT PULONG FinalCompressedSize
,
755 RtlCompressChunks(IN PUCHAR UncompressedBuffer
,
756 IN ULONG UncompressedBufferSize
,
757 OUT PUCHAR CompressedBuffer
,
758 IN ULONG CompressedBufferSize
,
759 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo
,
760 IN ULONG CompressedDataInfoLength
,
763 LARGE_INTEGER STDCALL
764 RtlConvertLongToLargeInteger (IN LONG SignedInteger
);
767 RtlConvertSidToUnicodeString (IN OUT PUNICODE_STRING String
,
769 IN BOOLEAN AllocateString
);
771 LARGE_INTEGER STDCALL
772 RtlConvertUlongToLargeInteger (IN ULONG UnsignedInteger
);
790 #define RtlCopyBytes RtlCopyMemory
793 RtlCopyLuid(IN PLUID LuidDest
,
797 RtlCopyLuidAndAttributesArray(ULONG Count
,
798 PLUID_AND_ATTRIBUTES Src
,
799 PLUID_AND_ATTRIBUTES Dest
);
802 RtlCopyRangeList (OUT PRTL_RANGE_LIST CopyRangeList
,
803 IN PRTL_RANGE_LIST RangeList
);
806 RtlCopySid(ULONG BufferLength
,
811 RtlCopySidAndAttributesArray(ULONG Count
,
812 PSID_AND_ATTRIBUTES Src
,
814 PSID_AND_ATTRIBUTES Dest
,
816 PVOID
* RemainingSidArea
,
817 PULONG RemainingSidAreaSize
);
820 RtlCopyString(PSTRING DestinationString
,
821 PSTRING SourceString
);
824 RtlCopyUnicodeString(PUNICODE_STRING DestinationString
,
825 PUNICODE_STRING SourceString
);
828 RtlCreateAcl (PACL Acl
,
833 RtlCreateAtomTable(IN ULONG TableSize
,
834 IN OUT PRTL_ATOM_TABLE
*AtomTable
);
841 ULONG SizeToReserve
, /* dwMaximumSize */
842 ULONG SizeToCommit
, /* dwInitialSize */
844 PRTL_HEAP_DEFINITION Definition
848 RtlCreateRegistryKey (ULONG RelativeTo
,
852 RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
857 RtlCreateSystemVolumeInformationFolder(
858 IN PUNICODE_STRING VolumeRootPath
862 RtlCreateUnicodeString (OUT PUNICODE_STRING Destination
,
866 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination
,
871 RtlCustomCPToUnicodeN (
872 IN PCPTABLEINFO CustomCP
,
873 PWCHAR UnicodeString
,
881 RtlCutoverTimeToSystemTime(IN PTIME_FIELDS CutoverTimeFields
,
882 OUT PLARGE_INTEGER SystemTime
,
883 IN PLARGE_INTEGER CurrentTime
,
884 IN BOOLEAN ThisYearsCutoverOnly
);
887 RtlDecompressBuffer(IN USHORT CompressionFormat
,
888 OUT PUCHAR UncompressedBuffer
,
889 IN ULONG UncompressedBufferSize
,
890 IN PUCHAR CompressedBuffer
,
891 IN ULONG CompressedBufferSize
,
892 OUT PULONG FinalUncompressedSize
);
895 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer
,
896 IN ULONG UncompressedBufferSize
,
897 IN PUCHAR CompressedBuffer
,
898 IN ULONG CompressedBufferSize
,
899 IN PUCHAR CompressedTail
,
900 IN ULONG CompressedTailSize
,
901 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
);
904 RtlDecompressFragment(IN USHORT CompressionFormat
,
905 OUT PUCHAR UncompressedFragment
,
906 IN ULONG UncompressedFragmentSize
,
907 IN PUCHAR CompressedBuffer
,
908 IN ULONG CompressedBufferSize
,
909 IN ULONG FragmentOffset
,
910 OUT PULONG FinalUncompressedSize
,
916 PRTL_SPLAY_LINKS Links
920 RtlDeleteAce (PACL Acl
,
924 RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
929 RtlDeleteElementGenericTable (
930 PRTL_GENERIC_TABLE Table
,
936 RtlDeleteElementGenericTableAvl (
937 PRTL_AVL_TABLE Table
,
944 PRTL_SPLAY_LINKS Links
,
945 PRTL_SPLAY_LINKS
*Root
950 RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList
,
954 RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList
,
960 RtlDescribeChunk(IN USHORT CompressionFormat
,
961 IN OUT PUCHAR
*CompressedBuffer
,
962 IN PUCHAR EndOfCompressedBufferPlus1
,
963 OUT PUCHAR
*ChunkBuffer
,
964 OUT PULONG ChunkSize
);
967 RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable
);
970 RtlDestroyHeap (HANDLE hheap
);
974 RtlDispatchException(
975 PEXCEPTION_RECORD pExcptRec
,
982 RtlDowncaseUnicodeString (
983 IN OUT PUNICODE_STRING DestinationString
,
984 IN PUNICODE_STRING SourceString
,
985 IN BOOLEAN AllocateDestinationString
991 IN PRTL_ATOM_TABLE AtomTable
,
992 IN BOOLEAN DeletePinned
997 RtlEnlargedIntegerMultiply (
1004 RtlEnlargedUnsignedDivide (
1005 ULARGE_INTEGER Dividend
,
1012 RtlEnlargedUnsignedMultiply (
1019 RtlEnumerateGenericTable (
1020 PRTL_GENERIC_TABLE Table
,
1026 RtlEnumerateGenericTableAvl (
1027 PRTL_AVL_TABLE Table
,
1033 RtlEnumerateGenericTableLikeADirectory (
1034 IN PRTL_AVL_TABLE Table
,
1035 IN PRTL_AVL_MATCH_FUNCTION MatchFunction
,
1038 IN OUT PVOID
*RestartKey
,
1039 IN OUT PULONG DeleteCount
,
1045 RtlEnumerateGenericTableWithoutSplaying (
1046 PRTL_GENERIC_TABLE Table
,
1052 RtlEnumerateGenericTableWithoutSplayingAvl (
1053 PRTL_AVL_TABLE Table
,
1058 RtlEqualPrefixSid (PSID Sid1
,
1062 RtlEqualSid (PSID Sid1
,
1070 BOOLEAN CaseInSensitive
1075 RtlExtendedIntegerMultiply (
1076 LARGE_INTEGER Multiplicand
,
1082 RtlExtendedLargeIntegerDivide (
1083 LARGE_INTEGER Dividend
,
1090 RtlExtendedMagicDivide (
1091 LARGE_INTEGER Dividend
,
1092 LARGE_INTEGER MagicDivisor
,
1098 RtlFillMemoryUlong (
1107 PRTL_BITMAP BitMapHeader
,
1114 RtlFindClearBitsAndSet (
1115 PRTL_BITMAP BitMapHeader
,
1123 PRTL_BITMAP BitMapHeader
,
1124 PRTL_BITMAP_RUN RunArray
,
1125 ULONG SizeOfRunArray
,
1126 BOOLEAN LocateLongestRuns
1131 RtlFindLastBackwardRunClear (
1132 IN PRTL_BITMAP BitMapHeader
,
1134 IN PULONG StartingRunIndex
1139 RtlFindNextForwardRunClear (
1140 IN PRTL_BITMAP BitMapHeader
,
1142 IN PULONG StartingRunIndex
1146 PUNICODE_PREFIX_TABLE_ENTRY
1148 RtlFindUnicodePrefix (
1149 PUNICODE_PREFIX_TABLE PrefixTable
,
1150 PUNICODE_STRING FullName
,
1151 ULONG CaseInsensitiveIndex
1156 RtlFindFirstRunClear (
1157 PRTL_BITMAP BitMapHeader
,
1158 PULONG StartingIndex
1163 RtlFindFirstRunSet (
1164 PRTL_BITMAP BitMapHeader
,
1165 PULONG StartingIndex
1169 RtlFindLeastSignificantBit (IN ULONGLONG Set
);
1173 RtlFindLongestRunClear (
1174 PRTL_BITMAP BitMapHeader
,
1175 PULONG StartingIndex
1180 RtlFindLongestRunSet (
1181 PRTL_BITMAP BitMapHeader
,
1182 PULONG StartingIndex
1188 IN PVOID BaseAddress
,
1192 OUT PRTL_MESSAGE_RESOURCE_ENTRY
*MessageResourceEntry
1196 RtlFindMostSignificantBit (IN ULONGLONG Set
);
1199 RtlFindRange (IN PRTL_RANGE_LIST RangeList
,
1200 IN ULONGLONG Minimum
,
1201 IN ULONGLONG Maximum
,
1205 IN UCHAR AttributeAvailableMask
,
1206 IN PVOID Context OPTIONAL
,
1207 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1208 OUT PULONGLONG Start
);
1213 PRTL_BITMAP BitMapHeader
,
1220 RtlFindSetBitsAndClear (
1221 PRTL_BITMAP BitMapHeader
,
1227 RtlFirstFreeAce (PACL Acl
,
1231 RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath
);
1234 RtlFreeAnsiString (IN PANSI_STRING AnsiString
);
1245 RtlFreeOemString (IN POEM_STRING OemString
);
1248 RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList
);
1251 RtlFreeSid (PSID Sid
);
1254 RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString
);
1257 RtlGenerate8dot3Name (IN PUNICODE_STRING Name
,
1258 IN BOOLEAN AllowExtendedCharacters
,
1259 IN OUT PGENERATE_NAME_CONTEXT Context
,
1260 OUT PUNICODE_STRING Name8dot3
);
1263 RtlGetAce (PACL Acl
,
1269 RtlGetCallersAddress(
1270 OUT PVOID
*CallersAddress
,
1271 OUT PVOID
*CallersCaller
1275 RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine
,
1276 OUT PULONG CompressBufferAndWorkSpaceSize
,
1277 OUT PULONG CompressFragmentWorkSpaceSize
);
1280 RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1281 PSECURITY_DESCRIPTOR_CONTROL Control
,
1285 RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1286 PBOOLEAN DaclPresent
,
1288 PBOOLEAN DaclDefaulted
);
1291 RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage
,
1292 OUT PUSHORT OemCodePage
);
1296 RtlGetElementGenericTable(
1297 PRTL_GENERIC_TABLE Table
,
1303 RtlGetElementGenericTableAvl (
1304 PRTL_AVL_TABLE Table
,
1309 RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList
,
1310 OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1311 OUT PRTL_RANGE
*Range
);
1314 RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1316 PBOOLEAN GroupDefaulted
);
1319 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1320 OUT PRTL_RANGE
*Range
,
1321 IN BOOLEAN MoveForwards
);
1325 RtlGetNtGlobalFlags (
1330 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1332 PBOOLEAN OwnerDefaulted
);
1335 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1336 PBOOLEAN SaclPresent
,
1338 PBOOLEAN SaclDefaulted
);
1342 RtlGetSetBootStatusData(
1352 RtlGUIDFromString (IN PUNICODE_STRING GuidString
,
1357 RtlHashUnicodeString(
1358 IN
const UNICODE_STRING
*String
,
1359 IN BOOLEAN CaseInSensitive
,
1360 IN ULONG HashAlgorithm
,
1361 OUT PULONG HashValue
1364 PSID_IDENTIFIER_AUTHORITY STDCALL
1365 RtlIdentifierAuthoritySid (PSID Sid
);
1369 RtlImageDirectoryEntryToData (
1379 IN PVOID BaseAddress
1382 PIMAGE_SECTION_HEADER
1384 RtlImageRvaToSection (
1385 PIMAGE_NT_HEADERS NtHeader
,
1393 PIMAGE_NT_HEADERS NtHeader
,
1396 PIMAGE_SECTION_HEADER
*SectionHeader
1402 PANSI_STRING DestinationString
,
1408 RtlInitCodePageTable (
1409 IN PUSHORT TableBase
,
1410 OUT PCPTABLEINFO CodePageTable
1415 RtlInitializeUnicodePrefix (
1416 PUNICODE_PREFIX_TABLE PrefixTable
1420 RtlInitializeSid (PSID Sid
,
1421 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
1422 UCHAR SubAuthorityCount
);
1426 RtlInitializeBitMap(
1427 IN PRTL_BITMAP BitMapHeader
,
1428 IN PULONG BitMapBuffer
,
1429 IN ULONG SizeOfBitMap
);
1434 IN PUSHORT AnsiTableBase
,
1435 IN PUSHORT OemTableBase
,
1436 IN PUSHORT CaseTableBase
,
1437 OUT PNLSTABLEINFO NlsTable
1443 PSTRING DestinationString
,
1449 RtlInitUnicodeString (
1450 PUNICODE_STRING DestinationString
,
1456 RtlInitializeBitMap (
1457 IN OUT PRTL_BITMAP BitMapHeader
,
1458 IN PULONG BitMapBuffer
,
1459 IN ULONG SizeOfBitMap
1464 RtlInitializeContext (
1465 IN HANDLE ProcessHandle
,
1466 OUT PCONTEXT ThreadContext
,
1467 IN PVOID ThreadStartParam OPTIONAL
,
1468 IN PTHREAD_START_ROUTINE ThreadStartAddress
,
1469 IN PINITIAL_TEB InitialTeb
1474 RtlInitializeGenericTable (
1475 PRTL_GENERIC_TABLE Table
,
1476 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
,
1477 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
,
1478 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
,
1484 RtlInitializeGenericTableAvl (
1485 PRTL_AVL_TABLE Table
,
1486 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
,
1487 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
,
1488 PRTL_AVL_FREE_ROUTINE FreeRoutine
,
1493 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList
);
1497 RtlInsertElementGenericTable (
1498 PRTL_GENERIC_TABLE Table
,
1501 PBOOLEAN NewElement OPTIONAL
1506 RtlInsertElementGenericTableAvl (
1507 PRTL_AVL_TABLE Table
,
1510 PBOOLEAN NewElement OPTIONAL
1515 RtlInsertElementGenericTableFull (
1516 PRTL_GENERIC_TABLE Table
,
1519 PBOOLEAN NewElement OPTIONAL
,
1521 TABLE_SEARCH_RESULT SearchResult
1526 RtlInsertElementGenericTableFullAvl (
1527 PRTL_AVL_TABLE Table
,
1530 PBOOLEAN NewElement OPTIONAL
,
1532 TABLE_SEARCH_RESULT SearchResult
1537 RtlInsertUnicodePrefix (
1538 PUNICODE_PREFIX_TABLE PrefixTable
,
1539 PUNICODE_STRING Prefix
,
1540 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1545 RtlInt64ToUnicodeString (
1547 IN ULONG Base OPTIONAL
,
1548 IN OUT PUNICODE_STRING String
1562 RtlIntegerToUnicode(
1564 IN ULONG Base OPTIONAL
,
1565 IN ULONG Length OPTIONAL
,
1566 IN OUT LPWSTR String
1571 RtlIntegerToUnicodeString (
1574 IN OUT PUNICODE_STRING String
1578 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList
,
1579 IN PRTL_RANGE_LIST RangeList
);
1583 RtlIpv4AddressToStringA(
1590 RtlIpv4AddressToStringExA(
1599 RtlIpv4AddressToStringW(
1606 RtlIpv4AddressToStringExW(
1615 RtlIpv4StringToAddressA(
1618 OUT PVOID PtrToIpAddr
,
1624 RtlIpv4StringToAddressExA(
1633 RtlIpv4StringToAddressW(
1636 OUT PVOID PtrToIpAddr
,
1642 RtlIpv4StringToAddressExW(
1651 RtlIpv6AddressToStringA(
1658 RtlIpv6AddressToStringExA(
1667 RtlIpv6AddressToStringW(
1674 RtlIpv6AddressToStringExW(
1683 RtlIpv6StringToAddressA(
1686 OUT PVOID PtrToIpAddr
,
1692 RtlIpv6StringToAddressExA(
1701 RtlIpv6StringToAddressW(
1704 OUT PVOID PtrToIpAddr
,
1710 RtlIpv6StringToAddressExW(
1719 RtlIsGenericTableEmpty (
1720 PRTL_GENERIC_TABLE Table
1725 RtlIsGenericTableEmptyAvl (
1726 PRTL_AVL_TABLE Table
1731 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName
,
1732 IN PANSI_STRING AnsiName
,
1733 OUT PBOOLEAN SpacesFound
);
1736 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList
,
1740 IN UCHAR AttributeAvailableMask
,
1741 IN PVOID Context OPTIONAL
,
1742 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1743 OUT PBOOLEAN Available
);
1755 RtlIsValidOemCharacter (
1761 RtlLargeIntegerAdd (
1762 LARGE_INTEGER Addend1
,
1763 LARGE_INTEGER Addend2
1768 * RtlLargeIntegerAnd (
1769 * PLARGE_INTEGER Result,
1770 * LARGE_INTEGER Source,
1771 * LARGE_INTEGER Mask
1774 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1776 Result.HighPart = Source.HighPart & Mask.HighPart; \
1777 Result.LowPart = Source.LowPart & Mask.LowPart; \
1782 RtlLargeIntegerArithmeticShift (
1783 LARGE_INTEGER LargeInteger
,
1789 RtlLargeIntegerDivide (
1790 LARGE_INTEGER Dividend
,
1791 LARGE_INTEGER Divisor
,
1792 PLARGE_INTEGER Remainder
1797 * RtlLargeIntegerEqualTo (
1798 * LARGE_INTEGER Operand1,
1799 * LARGE_INTEGER Operand2
1802 #define RtlLargeIntegerEqualTo(X,Y) \
1803 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1807 * RtlLargeIntegerEqualToZero (
1808 * LARGE_INTEGER Operand
1811 #define RtlLargeIntegerEqualToZero(X) \
1812 (!((X).LowPart | (X).HighPart))
1816 * RtlLargeIntegerGreaterThan (
1817 * LARGE_INTEGER Operand1,
1818 * LARGE_INTEGER Operand2
1821 #define RtlLargeIntegerGreaterThan(X,Y) \
1822 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1823 ((X).HighPart > (Y).HighPart))
1827 * RtlLargeIntegerGreaterThanOrEqualTo (
1828 * LARGE_INTEGER Operand1,
1829 * LARGE_INTEGER Operand2
1832 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1833 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1834 ((X).HighPart > (Y).HighPart))
1838 * RtlLargeIntegerGreaterThanOrEqualToZero (
1839 * LARGE_INTEGER Operand1
1842 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1847 * RtlLargeIntegerGreaterThanZero (
1848 * LARGE_INTEGER Operand1
1851 #define RtlLargeIntegerGreaterThanZero(X) \
1852 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1853 ((X).HighPart > 0 ))
1857 * RtlLargeIntegerLessThan (
1858 * LARGE_INTEGER Operand1,
1859 * LARGE_INTEGER Operand2
1862 #define RtlLargeIntegerLessThan(X,Y) \
1863 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1864 ((X).HighPart < (Y).HighPart))
1868 * RtlLargeIntegerLessThanOrEqualTo (
1869 * LARGE_INTEGER Operand1,
1870 * LARGE_INTEGER Operand2
1873 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1874 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1875 ((X).HighPart < (Y).HighPart))
1879 * RtlLargeIntegerLessThanOrEqualToZero (
1880 * LARGE_INTEGER Operand
1883 #define RtlLargeIntegerLessOrEqualToZero(X) \
1884 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1888 * RtlLargeIntegerLessThanZero (
1889 * LARGE_INTEGER Operand
1892 #define RtlLargeIntegerLessThanZero(X) \
1893 (((X).HighPart < 0))
1897 RtlLargeIntegerNegate (
1898 LARGE_INTEGER Subtrahend
1903 * RtlLargeIntegerNotEqualTo (
1904 * LARGE_INTEGER Operand1,
1905 * LARGE_INTEGER Operand2
1908 #define RtlLargeIntegerNotEqualTo(X,Y) \
1909 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1913 * RtlLargeIntegerNotEqualToZero (
1914 * LARGE_INTEGER Operand
1917 #define RtlLargeIntegerNotEqualToZero(X) \
1918 (((X).LowPart | (X).HighPart))
1922 RtlLargeIntegerShiftLeft (
1923 LARGE_INTEGER LargeInteger
,
1929 RtlLargeIntegerShiftRight (
1930 LARGE_INTEGER LargeInteger
,
1936 RtlLargeIntegerSubtract (
1937 LARGE_INTEGER Minuend
,
1938 LARGE_INTEGER Subtrahend
1942 RtlLengthRequiredSid (UCHAR SubAuthorityCount
);
1945 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
1948 RtlLengthSid (PSID Sid
);
1952 RtlLockBootStatusData(
1957 RtlLockHeap (IN HANDLE Heap
);
1960 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
1962 OUT PRTL_ATOM Atom
);
1966 RtlLookupElementGenericTable (
1967 PRTL_GENERIC_TABLE Table
,
1973 RtlLookupElementGenericTableAvl (
1974 PRTL_AVL_TABLE Table
,
1980 RtlLookupElementGenericTableFull (
1981 PRTL_GENERIC_TABLE Table
,
1983 OUT PVOID
*NodeOrParent
,
1984 OUT TABLE_SEARCH_RESULT
*SearchResult
1989 RtlLookupElementGenericTableFullAvl (
1990 PRTL_AVL_TABLE Table
,
1992 OUT PVOID
*NodeOrParent
,
1993 OUT TABLE_SEARCH_RESULT
*SearchResult
1997 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
1998 PSECURITY_DESCRIPTOR RelSD
,
1999 PULONG BufferLength
);
2002 RtlMapGenericMask (PACCESS_MASK AccessMask
,
2003 PGENERIC_MAPPING GenericMapping
);
2007 RtlMapSecurityErrorToNtStatus(
2008 IN ULONG SecurityError
2012 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList
,
2013 IN PRTL_RANGE_LIST RangeList1
,
2014 IN PRTL_RANGE_LIST RangeList2
,
2019 RtlMultiByteToUnicodeN (
2020 PWCHAR UnicodeString
,
2023 const PCHAR MbString
,
2029 RtlMultiByteToUnicodeSize (
2035 PUNICODE_PREFIX_TABLE_ENTRY
2037 RtlNextUnicodePrefix (
2038 PUNICODE_PREFIX_TABLE PrefixTable
,
2044 RtlNtStatusToDosError (
2050 RtlNtStatusToDosErrorNoTeb (
2056 RtlNtStatusToPsxErrno (
2062 RtlNumberGenericTableElements(
2063 PRTL_GENERIC_TABLE Table
2068 RtlNumberGenericTableElementsAvl (
2069 PRTL_AVL_TABLE Table
2075 RtlNumberOfClearBits (
2076 PRTL_BITMAP BitMapHeader
2081 RtlNumberOfSetBits (
2082 PRTL_BITMAP BitMapHeader
2087 RtlOemStringToUnicodeSize (
2088 POEM_STRING AnsiString
2093 RtlOemStringToUnicodeString (
2094 PUNICODE_STRING DestinationString
,
2095 POEM_STRING SourceString
,
2096 BOOLEAN AllocateDestinationString
2102 PWSTR UnicodeString
,
2103 ULONG MaxBytesInUnicodeString
,
2104 PULONG BytesInUnicodeString
,
2106 ULONG BytesInOemString
2110 RtlPinAtomInAtomTable (
2111 IN PRTL_ATOM_TABLE AtomTable
,
2117 RtlPrefetchMemoryNonTemporal(
2125 PANSI_STRING String1
,
2126 PANSI_STRING String2
,
2127 BOOLEAN CaseInsensitive
2132 RtlPrefixUnicodeString (
2133 PUNICODE_STRING String1
,
2134 PUNICODE_STRING String2
,
2135 BOOLEAN CaseInsensitive
2140 RtlQueryAtomInAtomTable (
2141 IN PRTL_ATOM_TABLE AtomTable
,
2143 IN OUT PULONG RefCount OPTIONAL
,
2144 IN OUT PULONG PinCount OPTIONAL
,
2145 IN OUT PWSTR AtomName OPTIONAL
,
2146 IN OUT PULONG NameLength OPTIONAL
2150 RtlQueryInformationAcl (PACL Acl
,
2152 ULONG InformationLength
,
2153 ACL_INFORMATION_CLASS InformationClass
);
2156 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2159 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord
);
2162 RtlRaiseStatus(NTSTATUS Status
);
2165 RtlRandom (PULONG Seed
);
2175 RtlRealPredecessor (
2176 PRTL_SPLAY_LINKS Links
2182 PRTL_SPLAY_LINKS Links
2195 RtlRemoveUnicodePrefix (
2196 PUNICODE_PREFIX_TABLE PrefixTable
,
2197 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2203 IN USHORT CompressionFormat
,
2204 IN OUT PUCHAR
*CompressedBuffer
,
2205 IN PUCHAR EndOfCompressedBufferPlus1
,
2206 OUT PUCHAR
*ChunkBuffer
,
2211 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable
);
2215 * RtlRetrieveUlong (
2216 * PULONG DestinationAddress,
2217 * PULONG SourceAddress
2220 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2221 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2223 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2224 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2225 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2226 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2230 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2235 * RtlRetrieveUshort (
2236 * PUSHORT DestinationAddress,
2237 * PUSHORT SourceAddress
2240 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2241 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2243 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2244 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2248 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2252 RtlSecondsSince1970ToTime (ULONG SecondsSince1970
,
2253 PLARGE_INTEGER Time
);
2256 RtlSecondsSince1980ToTime (ULONG SecondsSince1980
,
2257 PLARGE_INTEGER Time
);
2260 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD
,
2261 PSECURITY_DESCRIPTOR AbsSD
,
2274 RtlSelfRelativeToAbsoluteSD2(
2275 PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor
,
2280 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader
);
2285 PRTL_BITMAP BitMapHeader
,
2292 PRTL_BITMAP BitMapHeader
,
2293 ULONG StartingIndex
,
2298 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2299 BOOLEAN DaclPresent
,
2301 BOOLEAN DaclDefaulted
);
2304 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2306 BOOLEAN GroupDefaulted
);
2309 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2311 BOOLEAN OwnerDefaulted
);
2314 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2315 BOOLEAN SaclPresent
,
2317 BOOLEAN SaclDefaulted
);
2320 RtlSetInformationAcl (PACL Acl
,
2322 ULONG InformationLength
,
2323 ACL_INFORMATION_CLASS InformationClass
);
2326 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2330 IN PVOID HeapHandle
,
2332 IN PVOID MemoryPointer
2338 PRTL_SPLAY_LINKS Links
2348 #define RtlStoreUlong(Address,Value) \
2349 if ((ULONG_PTR)(Address) & LONG_MASK) \
2351 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2352 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2353 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2354 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2358 *((PULONG)(Address))=(ULONG)(Value); \
2368 #define RtlStoreUshort(Address,Value) \
2369 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2371 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2372 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2376 *((PUSHORT)(Address))=(USHORT)(Value); \
2380 RtlStringFromGUID (IN REFGUID Guid
,
2381 OUT PUNICODE_STRING GuidString
);
2384 RtlSubAuthoritySid (PSID Sid
,
2385 ULONG SubAuthority
);
2388 RtlSubAuthoritySid (PSID Sid
,
2389 ULONG SubAuthority
);
2392 RtlSubAuthorityCountSid (PSID Sid
);
2396 RtlSubtreePredecessor (
2397 PRTL_SPLAY_LINKS Links
2402 RtlSubtreeSuccessor (
2403 PRTL_SPLAY_LINKS Links
2409 PRTL_BITMAP BitMapHeader
,
2415 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields
,
2416 PLARGE_INTEGER Time
);
2420 RtlTimeToSecondsSince1970 (
2421 PLARGE_INTEGER Time
,
2422 PULONG SecondsSince1970
2427 RtlTimeToSecondsSince1980 (
2428 PLARGE_INTEGER Time
,
2429 PULONG SecondsSince1980
2434 RtlTimeToElapsedTimeFields(
2435 PLARGE_INTEGER Time
,
2436 PTIME_FIELDS TimeFields
2441 RtlTimeToTimeFields (
2442 PLARGE_INTEGER Time
,
2443 PTIME_FIELDS TimeFields
2448 RtlUlongByteSwap (IN ULONG Source
);
2451 RtlUlonglongByteSwap (IN ULONGLONG Source
);
2455 RtlUnicodeStringToAnsiSize (
2456 IN PUNICODE_STRING UnicodeString
2461 RtlUnicodeStringToAnsiString (
2462 IN OUT PANSI_STRING DestinationString
,
2463 IN PUNICODE_STRING SourceString
,
2464 IN BOOLEAN AllocateDestinationString
2469 RtlUnicodeStringToInteger (
2470 IN PUNICODE_STRING String
,
2477 RtlUnicodeStringToOemSize (
2478 IN PUNICODE_STRING UnicodeString
2483 RtlUnicodeStringToCountedOemString (
2484 IN OUT POEM_STRING DestinationString
,
2485 IN PUNICODE_STRING SourceString
,
2486 IN BOOLEAN AllocateDestinationString
2491 RtlUnicodeStringToOemString (
2492 IN OUT POEM_STRING DestinationString
,
2493 IN PUNICODE_STRING SourceString
,
2494 IN BOOLEAN AllocateDestinationString
2499 RtlUnicodeToCustomCPN (
2500 IN PCPTABLEINFO CustomCP
,
2504 PWCHAR UnicodeString
,
2510 RtlUnicodeToMultiByteN (
2514 PWCHAR UnicodeString
,
2520 RtlUnicodeToMultiByteSize (
2522 PWCHAR UnicodeString
,
2532 PWCHAR UnicodeString
,
2537 RtlUniform (PULONG Seed
);
2540 RtlUnlockHeap (IN HANDLE Heap
);
2544 RtlUnlockBootStatusData(
2551 PEXCEPTION_REGISTRATION RegistrationFrame
,
2552 PVOID ReturnAddress
,
2553 PEXCEPTION_RECORD ExceptionRecord
,
2559 RtlUpcaseUnicodeChar (
2565 RtlUpcaseUnicodeString (
2566 IN OUT PUNICODE_STRING DestinationString
,
2567 IN PCUNICODE_STRING SourceString
,
2568 IN BOOLEAN AllocateDestinationString
2573 RtlUpcaseUnicodeStringToAnsiString (
2574 IN OUT PANSI_STRING DestinationString
,
2575 IN PUNICODE_STRING SourceString
,
2576 IN BOOLEAN AllocateDestinationString
2581 RtlUpcaseUnicodeStringToCountedOemString (
2582 IN OUT POEM_STRING DestinationString
,
2583 IN PUNICODE_STRING SourceString
,
2584 IN BOOLEAN AllocateDestinationString
2589 RtlUpcaseUnicodeStringToOemString (
2590 IN OUT POEM_STRING DestinationString
,
2591 IN PUNICODE_STRING SourceString
,
2592 IN BOOLEAN AllocateDestinationString
2597 RtlUpcaseUnicodeToCustomCPN (
2598 IN PCPTABLEINFO CustomCP
,
2602 PWCHAR UnicodeString
,
2608 RtlUpcaseUnicodeToMultiByteN (
2612 PWCHAR UnicodeString
,
2618 RtlUpcaseUnicodeToOemN (
2622 PWCHAR UnicodeString
,
2627 RtlUpperChar (CHAR Source
);
2630 RtlUpperString (PSTRING DestinationString
,
2631 PSTRING SourceString
);
2634 RtlUshortByteSwap (IN USHORT Source
);
2637 RtlValidAcl (PACL Acl
);
2648 RtlValidRelativeSecurityDescriptor (
2649 IN PSECURITY_DESCRIPTOR SecurityDescriptorInput
,
2650 IN ULONG SecurityDescriptorLength
,
2651 IN SECURITY_INFORMATION RequiredInformation
2655 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2658 RtlValidSid (IN PSID Sid
);
2663 RtlVerifyVersionInfo(
2664 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2666 IN ULONGLONG ConditionMask
2672 RtlVolumeDeviceToDosName(
2673 IN PVOID VolumeDeviceObject
,
2674 OUT PUNICODE_STRING DosName
2687 IN PVOID HeapHandle
,
2693 RtlxAnsiStringToUnicodeSize (
2694 IN PANSI_STRING AnsiString
2699 RtlxOemStringToUnicodeSize (
2700 IN POEM_STRING OemString
2705 RtlxUnicodeStringToAnsiSize (
2706 IN PUNICODE_STRING UnicodeString
2711 RtlxUnicodeStringToOemSize (
2712 IN PUNICODE_STRING UnicodeString
2717 RtlpOemStringToCountedUnicodeString(
2718 IN OUT PUNICODE_STRING UniDest
,
2719 IN POEM_STRING OemSource
,
2720 IN BOOLEAN AllocateDestinationString
,
2721 IN POOL_TYPE PoolType
);
2725 RtlpUpcaseUnicodeString(
2726 IN OUT PUNICODE_STRING UniDest
,
2727 IN PCUNICODE_STRING UniSource
,
2728 IN BOOLEAN AllocateDestinationString
,
2729 IN POOL_TYPE PoolType
);
2733 RtlpUpcaseUnicodeStringToAnsiString(
2734 IN OUT PANSI_STRING AnsiDest
,
2735 IN PUNICODE_STRING UniSource
,
2736 IN BOOLEAN AllocateDestinationString
,
2737 IN POOL_TYPE PoolType
);
2741 RtlpUpcaseUnicodeStringToCountedOemString(
2742 IN OUT POEM_STRING OemDest
,
2743 IN PUNICODE_STRING UniSource
,
2744 IN BOOLEAN AllocateDestinationString
,
2745 IN POOL_TYPE PoolType
);
2749 RtlpUpcaseUnicodeStringToOemString (
2750 IN OUT POEM_STRING OemDest
,
2751 IN PUNICODE_STRING UniSource
,
2752 IN BOOLEAN AllocateDestinationString
,
2753 IN POOL_TYPE PoolType
);
2757 RtlpDowncaseUnicodeString(
2758 IN OUT PUNICODE_STRING UniDest
,
2759 IN PUNICODE_STRING UniSource
,
2760 IN BOOLEAN AllocateDestinationString
,
2761 IN POOL_TYPE PoolType
);
2765 RtlpAnsiStringToUnicodeString(
2766 IN OUT PUNICODE_STRING DestinationString
,
2767 IN PANSI_STRING SourceString
,
2768 IN BOOLEAN AllocateDestinationString
,
2769 IN POOL_TYPE PoolType
);
2773 RtlpUnicodeStringToAnsiString(
2774 IN OUT PANSI_STRING AnsiDest
,
2775 IN PUNICODE_STRING UniSource
,
2776 IN BOOLEAN AllocateDestinationString
,
2777 IN POOL_TYPE PoolType
);
2781 RtlpOemStringToUnicodeString(
2782 IN OUT PUNICODE_STRING UniDest
,
2783 IN POEM_STRING OemSource
,
2784 IN BOOLEAN AllocateDestinationString
,
2785 IN POOL_TYPE PoolType
);
2789 RtlpUnicodeStringToOemString(
2790 IN OUT POEM_STRING OemDest
,
2791 IN PUNICODE_STRING UniSource
,
2792 IN BOOLEAN AllocateDestinationString
,
2793 IN POOL_TYPE PoolType
);
2797 RtlpCreateUnicodeString(
2798 IN OUT PUNICODE_STRING UniDest
,
2800 IN POOL_TYPE PoolType
);
2804 RtlpUnicodeStringToCountedOemString(
2805 IN OUT POEM_STRING OemDest
,
2806 IN PUNICODE_STRING UniSource
,
2807 IN BOOLEAN AllocateDestinationString
,
2808 IN POOL_TYPE PoolType
);
2811 RtlpDuplicateUnicodeString(
2813 IN PUNICODE_STRING SourceString
,
2814 PUNICODE_STRING DestinationString
,
2815 POOL_TYPE PoolType
);
2817 /* Register io functions */
2821 READ_REGISTER_UCHAR (
2827 READ_REGISTER_USHORT (
2833 READ_REGISTER_ULONG (
2839 READ_REGISTER_BUFFER_UCHAR (
2847 READ_REGISTER_BUFFER_USHORT (
2855 READ_REGISTER_BUFFER_ULONG (
2863 WRITE_REGISTER_UCHAR (
2870 WRITE_REGISTER_USHORT (
2877 WRITE_REGISTER_ULONG (
2884 WRITE_REGISTER_BUFFER_UCHAR (
2892 WRITE_REGISTER_BUFFER_USHORT (
2900 WRITE_REGISTER_BUFFER_ULONG (
2907 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2909 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2911 char *_itoa (int value
, char *string
, int radix
);
2912 wchar_t *_itow (int value
, wchar_t *string
, int radix
);
2913 int _snprintf(char * buf
, size_t cnt
, const char *fmt
, ...);
2914 int _snwprintf(wchar_t *buf
, size_t cnt
, const wchar_t *fmt
, ...);
2915 int _stricmp(const char *s1
, const char *s2
);
2916 char * _strlwr(char *x
);
2917 int _strnicmp(const char *s1
, const char *s2
, size_t n
);
2918 char * _strnset(char* szToFill
, int szFill
, size_t sizeMaxFill
);
2919 char * _strrev(char *s
);
2920 char * _strset(char* szToFill
, int szFill
);
2921 char * _strupr(char *x
);
2922 int _vsnprintf(char *buf
, size_t cnt
, const char *fmt
, va_list args
);
2923 int _wcsicmp (const wchar_t* cs
, const wchar_t* ct
);
2924 wchar_t * _wcslwr (wchar_t *x
);
2925 int _wcsnicmp (const wchar_t * cs
,const wchar_t * ct
,size_t count
);
2926 wchar_t* _wcsnset (wchar_t* wsToFill
, wchar_t wcFill
, size_t sizeMaxFill
);
2927 wchar_t * _wcsrev(wchar_t *s
);
2928 wchar_t *_wcsupr(wchar_t *x
);
2930 int atoi(const char *str
);
2931 long atol(const char *str
);
2937 int isxdigit(int c
);
2938 size_t mbstowcs (wchar_t *wcstr
, const char *mbstr
, size_t count
);
2939 int mbtowc (wchar_t *wchar
, const char *mbchar
, size_t count
);
2940 void * memchr(const void *s
, int c
, size_t n
);
2941 void * memcpy(void *to
, const void *from
, size_t count
);
2942 void * memmove(void *dest
,const void *src
, size_t count
);
2943 void * memset(void *src
, int val
, size_t count
);
2950 int sprintf(char * buf
, const char *fmt
, ...);
2951 void srand(unsigned seed
);
2952 char * strcat(char *s
, const char *append
);
2953 char * strchr(const char *s
, int c
);
2954 int strcmp(const char *s1
, const char *s2
);
2955 char * strcpy(char *to
, const char *from
);
2956 size_t strlen(const char *str
);
2957 char * strncat(char *dst
, const char *src
, size_t n
);
2958 int strncmp(const char *s1
, const char *s2
, size_t n
);
2959 char *strncpy(char *dst
, const char *src
, size_t n
);
2960 char *strrchr(const char *s
, int c
);
2961 size_t strspn(const char *s1
, const char *s2
);
2962 char *strstr(const char *s
, const char *find
);
2963 int swprintf(wchar_t *buf
, const wchar_t *fmt
, ...);
2966 wchar_t towlower(wchar_t c
);
2967 wchar_t towupper(wchar_t c
);
2968 int vsprintf(char *buf
, const char *fmt
, va_list args
);
2969 wchar_t * wcscat(wchar_t *dest
, const wchar_t *src
);
2970 wchar_t * wcschr(const wchar_t *str
, wchar_t ch
);
2971 int wcscmp(const wchar_t *cs
, const wchar_t *ct
);
2972 wchar_t* wcscpy(wchar_t* str1
, const wchar_t* str2
);
2973 size_t wcscspn(const wchar_t *str
,const wchar_t *reject
);
2974 size_t wcslen(const wchar_t *s
);
2975 wchar_t * wcsncat(wchar_t *dest
, const wchar_t *src
, size_t count
);
2976 int wcsncmp(const wchar_t *cs
, const wchar_t *ct
, size_t count
);
2977 wchar_t * wcsncpy(wchar_t *dest
, const wchar_t *src
, size_t count
);
2978 wchar_t * wcsrchr(const wchar_t *str
, wchar_t ch
);
2979 size_t wcsspn(const wchar_t *str
,const wchar_t *accept
);
2980 wchar_t *wcsstr(const wchar_t *s
,const wchar_t *b
);
2981 size_t wcstombs (char *mbstr
, const wchar_t *wcstr
, size_t count
);
2982 int wctomb (char *mbchar
, wchar_t wchar
);
2984 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2986 #endif /* __DDK_RTL_H */