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
);
1341 RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor
,
1346 RtlGetSetBootStatusData(
1356 RtlGUIDFromString (IN PUNICODE_STRING GuidString
,
1361 RtlHashUnicodeString(
1362 IN
const UNICODE_STRING
*String
,
1363 IN BOOLEAN CaseInSensitive
,
1364 IN ULONG HashAlgorithm
,
1365 OUT PULONG HashValue
1368 PSID_IDENTIFIER_AUTHORITY STDCALL
1369 RtlIdentifierAuthoritySid (PSID Sid
);
1373 RtlImageDirectoryEntryToData (
1383 IN PVOID BaseAddress
1386 PIMAGE_SECTION_HEADER
1388 RtlImageRvaToSection (
1389 PIMAGE_NT_HEADERS NtHeader
,
1397 PIMAGE_NT_HEADERS NtHeader
,
1400 PIMAGE_SECTION_HEADER
*SectionHeader
1406 PANSI_STRING DestinationString
,
1412 RtlInitCodePageTable (
1413 IN PUSHORT TableBase
,
1414 OUT PCPTABLEINFO CodePageTable
1419 RtlInitializeUnicodePrefix (
1420 PUNICODE_PREFIX_TABLE PrefixTable
1424 RtlInitializeSid (PSID Sid
,
1425 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
1426 UCHAR SubAuthorityCount
);
1430 RtlInitializeBitMap(
1431 IN PRTL_BITMAP BitMapHeader
,
1432 IN PULONG BitMapBuffer
,
1433 IN ULONG SizeOfBitMap
);
1438 IN PUSHORT AnsiTableBase
,
1439 IN PUSHORT OemTableBase
,
1440 IN PUSHORT CaseTableBase
,
1441 OUT PNLSTABLEINFO NlsTable
1447 PSTRING DestinationString
,
1453 RtlInitUnicodeString (
1454 PUNICODE_STRING DestinationString
,
1460 RtlInitializeBitMap (
1461 IN OUT PRTL_BITMAP BitMapHeader
,
1462 IN PULONG BitMapBuffer
,
1463 IN ULONG SizeOfBitMap
1468 RtlInitializeContext (
1469 IN HANDLE ProcessHandle
,
1470 OUT PCONTEXT ThreadContext
,
1471 IN PVOID ThreadStartParam OPTIONAL
,
1472 IN PTHREAD_START_ROUTINE ThreadStartAddress
,
1473 IN PINITIAL_TEB InitialTeb
1478 RtlInitializeGenericTable (
1479 PRTL_GENERIC_TABLE Table
,
1480 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
,
1481 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
,
1482 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
,
1488 RtlInitializeGenericTableAvl (
1489 PRTL_AVL_TABLE Table
,
1490 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
,
1491 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
,
1492 PRTL_AVL_FREE_ROUTINE FreeRoutine
,
1497 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList
);
1501 RtlInsertElementGenericTable (
1502 PRTL_GENERIC_TABLE Table
,
1505 PBOOLEAN NewElement OPTIONAL
1510 RtlInsertElementGenericTableAvl (
1511 PRTL_AVL_TABLE Table
,
1514 PBOOLEAN NewElement OPTIONAL
1519 RtlInsertElementGenericTableFull (
1520 PRTL_GENERIC_TABLE Table
,
1523 PBOOLEAN NewElement OPTIONAL
,
1525 TABLE_SEARCH_RESULT SearchResult
1530 RtlInsertElementGenericTableFullAvl (
1531 PRTL_AVL_TABLE Table
,
1534 PBOOLEAN NewElement OPTIONAL
,
1536 TABLE_SEARCH_RESULT SearchResult
1541 RtlInsertUnicodePrefix (
1542 PUNICODE_PREFIX_TABLE PrefixTable
,
1543 PUNICODE_STRING Prefix
,
1544 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1549 RtlInt64ToUnicodeString (
1551 IN ULONG Base OPTIONAL
,
1552 IN OUT PUNICODE_STRING String
1566 RtlIntegerToUnicode(
1568 IN ULONG Base OPTIONAL
,
1569 IN ULONG Length OPTIONAL
,
1570 IN OUT LPWSTR String
1575 RtlIntegerToUnicodeString (
1578 IN OUT PUNICODE_STRING String
1582 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList
,
1583 IN PRTL_RANGE_LIST RangeList
);
1587 RtlIpv4AddressToStringA(
1594 RtlIpv4AddressToStringExA(
1603 RtlIpv4AddressToStringW(
1610 RtlIpv4AddressToStringExW(
1619 RtlIpv4StringToAddressA(
1622 OUT PVOID PtrToIpAddr
,
1628 RtlIpv4StringToAddressExA(
1637 RtlIpv4StringToAddressW(
1640 OUT PVOID PtrToIpAddr
,
1646 RtlIpv4StringToAddressExW(
1655 RtlIpv6AddressToStringA(
1662 RtlIpv6AddressToStringExA(
1671 RtlIpv6AddressToStringW(
1678 RtlIpv6AddressToStringExW(
1687 RtlIpv6StringToAddressA(
1690 OUT PVOID PtrToIpAddr
,
1696 RtlIpv6StringToAddressExA(
1705 RtlIpv6StringToAddressW(
1708 OUT PVOID PtrToIpAddr
,
1714 RtlIpv6StringToAddressExW(
1723 RtlIsGenericTableEmpty (
1724 PRTL_GENERIC_TABLE Table
1729 RtlIsGenericTableEmptyAvl (
1730 PRTL_AVL_TABLE Table
1735 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName
,
1736 IN PANSI_STRING AnsiName
,
1737 OUT PBOOLEAN SpacesFound
);
1740 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList
,
1744 IN UCHAR AttributeAvailableMask
,
1745 IN PVOID Context OPTIONAL
,
1746 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1747 OUT PBOOLEAN Available
);
1759 RtlIsValidOemCharacter (
1765 RtlLargeIntegerAdd (
1766 LARGE_INTEGER Addend1
,
1767 LARGE_INTEGER Addend2
1772 * RtlLargeIntegerAnd (
1773 * PLARGE_INTEGER Result,
1774 * LARGE_INTEGER Source,
1775 * LARGE_INTEGER Mask
1778 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1780 Result.HighPart = Source.HighPart & Mask.HighPart; \
1781 Result.LowPart = Source.LowPart & Mask.LowPart; \
1786 RtlLargeIntegerArithmeticShift (
1787 LARGE_INTEGER LargeInteger
,
1793 RtlLargeIntegerDivide (
1794 LARGE_INTEGER Dividend
,
1795 LARGE_INTEGER Divisor
,
1796 PLARGE_INTEGER Remainder
1801 * RtlLargeIntegerEqualTo (
1802 * LARGE_INTEGER Operand1,
1803 * LARGE_INTEGER Operand2
1806 #define RtlLargeIntegerEqualTo(X,Y) \
1807 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1811 * RtlLargeIntegerEqualToZero (
1812 * LARGE_INTEGER Operand
1815 #define RtlLargeIntegerEqualToZero(X) \
1816 (!((X).LowPart | (X).HighPart))
1820 * RtlLargeIntegerGreaterThan (
1821 * LARGE_INTEGER Operand1,
1822 * LARGE_INTEGER Operand2
1825 #define RtlLargeIntegerGreaterThan(X,Y) \
1826 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1827 ((X).HighPart > (Y).HighPart))
1831 * RtlLargeIntegerGreaterThanOrEqualTo (
1832 * LARGE_INTEGER Operand1,
1833 * LARGE_INTEGER Operand2
1836 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1837 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1838 ((X).HighPart > (Y).HighPart))
1842 * RtlLargeIntegerGreaterThanOrEqualToZero (
1843 * LARGE_INTEGER Operand1
1846 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1851 * RtlLargeIntegerGreaterThanZero (
1852 * LARGE_INTEGER Operand1
1855 #define RtlLargeIntegerGreaterThanZero(X) \
1856 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1857 ((X).HighPart > 0 ))
1861 * RtlLargeIntegerLessThan (
1862 * LARGE_INTEGER Operand1,
1863 * LARGE_INTEGER Operand2
1866 #define RtlLargeIntegerLessThan(X,Y) \
1867 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1868 ((X).HighPart < (Y).HighPart))
1872 * RtlLargeIntegerLessThanOrEqualTo (
1873 * LARGE_INTEGER Operand1,
1874 * LARGE_INTEGER Operand2
1877 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1878 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1879 ((X).HighPart < (Y).HighPart))
1883 * RtlLargeIntegerLessThanOrEqualToZero (
1884 * LARGE_INTEGER Operand
1887 #define RtlLargeIntegerLessOrEqualToZero(X) \
1888 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1892 * RtlLargeIntegerLessThanZero (
1893 * LARGE_INTEGER Operand
1896 #define RtlLargeIntegerLessThanZero(X) \
1897 (((X).HighPart < 0))
1901 RtlLargeIntegerNegate (
1902 LARGE_INTEGER Subtrahend
1907 * RtlLargeIntegerNotEqualTo (
1908 * LARGE_INTEGER Operand1,
1909 * LARGE_INTEGER Operand2
1912 #define RtlLargeIntegerNotEqualTo(X,Y) \
1913 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1917 * RtlLargeIntegerNotEqualToZero (
1918 * LARGE_INTEGER Operand
1921 #define RtlLargeIntegerNotEqualToZero(X) \
1922 (((X).LowPart | (X).HighPart))
1926 RtlLargeIntegerShiftLeft (
1927 LARGE_INTEGER LargeInteger
,
1933 RtlLargeIntegerShiftRight (
1934 LARGE_INTEGER LargeInteger
,
1940 RtlLargeIntegerSubtract (
1941 LARGE_INTEGER Minuend
,
1942 LARGE_INTEGER Subtrahend
1946 RtlLengthRequiredSid (UCHAR SubAuthorityCount
);
1949 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
1952 RtlLengthSid (PSID Sid
);
1956 RtlLockBootStatusData(
1961 RtlLockHeap (IN HANDLE Heap
);
1964 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
1966 OUT PRTL_ATOM Atom
);
1970 RtlLookupElementGenericTable (
1971 PRTL_GENERIC_TABLE Table
,
1977 RtlLookupElementGenericTableAvl (
1978 PRTL_AVL_TABLE Table
,
1984 RtlLookupElementGenericTableFull (
1985 PRTL_GENERIC_TABLE Table
,
1987 OUT PVOID
*NodeOrParent
,
1988 OUT TABLE_SEARCH_RESULT
*SearchResult
1993 RtlLookupElementGenericTableFullAvl (
1994 PRTL_AVL_TABLE Table
,
1996 OUT PVOID
*NodeOrParent
,
1997 OUT TABLE_SEARCH_RESULT
*SearchResult
2001 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
2002 PSECURITY_DESCRIPTOR RelSD
,
2003 PULONG BufferLength
);
2006 RtlMapGenericMask (PACCESS_MASK AccessMask
,
2007 PGENERIC_MAPPING GenericMapping
);
2011 RtlMapSecurityErrorToNtStatus(
2012 IN ULONG SecurityError
2016 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList
,
2017 IN PRTL_RANGE_LIST RangeList1
,
2018 IN PRTL_RANGE_LIST RangeList2
,
2023 RtlMultiByteToUnicodeN (
2024 PWCHAR UnicodeString
,
2027 const PCHAR MbString
,
2033 RtlMultiByteToUnicodeSize (
2039 PUNICODE_PREFIX_TABLE_ENTRY
2041 RtlNextUnicodePrefix (
2042 PUNICODE_PREFIX_TABLE PrefixTable
,
2048 RtlNtStatusToDosError (
2054 RtlNtStatusToDosErrorNoTeb (
2060 RtlNtStatusToPsxErrno (
2066 RtlNumberGenericTableElements(
2067 PRTL_GENERIC_TABLE Table
2072 RtlNumberGenericTableElementsAvl (
2073 PRTL_AVL_TABLE Table
2079 RtlNumberOfClearBits (
2080 PRTL_BITMAP BitMapHeader
2085 RtlNumberOfSetBits (
2086 PRTL_BITMAP BitMapHeader
2091 RtlOemStringToUnicodeSize (
2092 POEM_STRING AnsiString
2097 RtlOemStringToUnicodeString (
2098 PUNICODE_STRING DestinationString
,
2099 POEM_STRING SourceString
,
2100 BOOLEAN AllocateDestinationString
2106 PWSTR UnicodeString
,
2107 ULONG MaxBytesInUnicodeString
,
2108 PULONG BytesInUnicodeString
,
2110 ULONG BytesInOemString
2114 RtlPinAtomInAtomTable (
2115 IN PRTL_ATOM_TABLE AtomTable
,
2121 RtlPrefetchMemoryNonTemporal(
2129 PANSI_STRING String1
,
2130 PANSI_STRING String2
,
2131 BOOLEAN CaseInsensitive
2136 RtlPrefixUnicodeString (
2137 PUNICODE_STRING String1
,
2138 PUNICODE_STRING String2
,
2139 BOOLEAN CaseInsensitive
2144 RtlQueryAtomInAtomTable (
2145 IN PRTL_ATOM_TABLE AtomTable
,
2147 IN OUT PULONG RefCount OPTIONAL
,
2148 IN OUT PULONG PinCount OPTIONAL
,
2149 IN OUT PWSTR AtomName OPTIONAL
,
2150 IN OUT PULONG NameLength OPTIONAL
2154 RtlQueryInformationAcl (PACL Acl
,
2156 ULONG InformationLength
,
2157 ACL_INFORMATION_CLASS InformationClass
);
2160 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2163 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord
);
2166 RtlRaiseStatus(NTSTATUS Status
);
2169 RtlRandom (PULONG Seed
);
2179 RtlRealPredecessor (
2180 PRTL_SPLAY_LINKS Links
2186 PRTL_SPLAY_LINKS Links
2199 RtlRemoveUnicodePrefix (
2200 PUNICODE_PREFIX_TABLE PrefixTable
,
2201 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2207 IN USHORT CompressionFormat
,
2208 IN OUT PUCHAR
*CompressedBuffer
,
2209 IN PUCHAR EndOfCompressedBufferPlus1
,
2210 OUT PUCHAR
*ChunkBuffer
,
2215 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable
);
2219 * RtlRetrieveUlong (
2220 * PULONG DestinationAddress,
2221 * PULONG SourceAddress
2224 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2225 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2227 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2228 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2229 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2230 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2234 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2239 * RtlRetrieveUshort (
2240 * PUSHORT DestinationAddress,
2241 * PUSHORT SourceAddress
2244 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2245 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2247 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2248 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2252 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2256 RtlSecondsSince1970ToTime (ULONG SecondsSince1970
,
2257 PLARGE_INTEGER Time
);
2260 RtlSecondsSince1980ToTime (ULONG SecondsSince1980
,
2261 PLARGE_INTEGER Time
);
2264 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD
,
2265 PSECURITY_DESCRIPTOR AbsSD
,
2278 RtlSelfRelativeToAbsoluteSD2(
2279 PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor
,
2284 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader
);
2289 PRTL_BITMAP BitMapHeader
,
2296 PRTL_BITMAP BitMapHeader
,
2297 ULONG StartingIndex
,
2302 RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2303 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest
,
2304 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
);
2307 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2308 BOOLEAN DaclPresent
,
2310 BOOLEAN DaclDefaulted
);
2313 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2315 BOOLEAN GroupDefaulted
);
2318 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2320 BOOLEAN OwnerDefaulted
);
2323 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2324 BOOLEAN SaclPresent
,
2326 BOOLEAN SaclDefaulted
);
2329 RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor
,
2333 RtlSetInformationAcl (PACL Acl
,
2335 ULONG InformationLength
,
2336 ACL_INFORMATION_CLASS InformationClass
);
2339 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2343 IN PVOID HeapHandle
,
2345 IN PVOID MemoryPointer
2351 PRTL_SPLAY_LINKS Links
2361 #define RtlStoreUlong(Address,Value) \
2362 if ((ULONG_PTR)(Address) & LONG_MASK) \
2364 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2365 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2366 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2367 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2371 *((PULONG)(Address))=(ULONG)(Value); \
2381 #define RtlStoreUshort(Address,Value) \
2382 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2384 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2385 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2389 *((PUSHORT)(Address))=(USHORT)(Value); \
2393 RtlStringFromGUID (IN REFGUID Guid
,
2394 OUT PUNICODE_STRING GuidString
);
2397 RtlSubAuthoritySid (PSID Sid
,
2398 ULONG SubAuthority
);
2401 RtlSubAuthoritySid (PSID Sid
,
2402 ULONG SubAuthority
);
2405 RtlSubAuthorityCountSid (PSID Sid
);
2409 RtlSubtreePredecessor (
2410 PRTL_SPLAY_LINKS Links
2415 RtlSubtreeSuccessor (
2416 PRTL_SPLAY_LINKS Links
2422 PRTL_BITMAP BitMapHeader
,
2428 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields
,
2429 PLARGE_INTEGER Time
);
2433 RtlTimeToSecondsSince1970 (
2434 PLARGE_INTEGER Time
,
2435 PULONG SecondsSince1970
2440 RtlTimeToSecondsSince1980 (
2441 PLARGE_INTEGER Time
,
2442 PULONG SecondsSince1980
2447 RtlTimeToElapsedTimeFields(
2448 PLARGE_INTEGER Time
,
2449 PTIME_FIELDS TimeFields
2454 RtlTimeToTimeFields (
2455 PLARGE_INTEGER Time
,
2456 PTIME_FIELDS TimeFields
2461 RtlUlongByteSwap (IN ULONG Source
);
2464 RtlUlonglongByteSwap (IN ULONGLONG Source
);
2468 RtlUnicodeStringToAnsiSize (
2469 IN PUNICODE_STRING UnicodeString
2474 RtlUnicodeStringToAnsiString (
2475 IN OUT PANSI_STRING DestinationString
,
2476 IN PUNICODE_STRING SourceString
,
2477 IN BOOLEAN AllocateDestinationString
2482 RtlUnicodeStringToInteger (
2483 IN PUNICODE_STRING String
,
2490 RtlUnicodeStringToOemSize (
2491 IN PUNICODE_STRING UnicodeString
2496 RtlUnicodeStringToCountedOemString (
2497 IN OUT POEM_STRING DestinationString
,
2498 IN PUNICODE_STRING SourceString
,
2499 IN BOOLEAN AllocateDestinationString
2504 RtlUnicodeStringToOemString (
2505 IN OUT POEM_STRING DestinationString
,
2506 IN PUNICODE_STRING SourceString
,
2507 IN BOOLEAN AllocateDestinationString
2512 RtlUnicodeToCustomCPN (
2513 IN PCPTABLEINFO CustomCP
,
2517 PWCHAR UnicodeString
,
2523 RtlUnicodeToMultiByteN (
2527 PWCHAR UnicodeString
,
2533 RtlUnicodeToMultiByteSize (
2535 PWCHAR UnicodeString
,
2545 PWCHAR UnicodeString
,
2550 RtlUniform (PULONG Seed
);
2553 RtlUnlockHeap (IN HANDLE Heap
);
2557 RtlUnlockBootStatusData(
2564 PEXCEPTION_REGISTRATION RegistrationFrame
,
2565 PVOID ReturnAddress
,
2566 PEXCEPTION_RECORD ExceptionRecord
,
2572 RtlUpcaseUnicodeChar (
2578 RtlUpcaseUnicodeString (
2579 IN OUT PUNICODE_STRING DestinationString
,
2580 IN PCUNICODE_STRING SourceString
,
2581 IN BOOLEAN AllocateDestinationString
2586 RtlUpcaseUnicodeStringToAnsiString (
2587 IN OUT PANSI_STRING DestinationString
,
2588 IN PUNICODE_STRING SourceString
,
2589 IN BOOLEAN AllocateDestinationString
2594 RtlUpcaseUnicodeStringToCountedOemString (
2595 IN OUT POEM_STRING DestinationString
,
2596 IN PUNICODE_STRING SourceString
,
2597 IN BOOLEAN AllocateDestinationString
2602 RtlUpcaseUnicodeStringToOemString (
2603 IN OUT POEM_STRING DestinationString
,
2604 IN PUNICODE_STRING SourceString
,
2605 IN BOOLEAN AllocateDestinationString
2610 RtlUpcaseUnicodeToCustomCPN (
2611 IN PCPTABLEINFO CustomCP
,
2615 PWCHAR UnicodeString
,
2621 RtlUpcaseUnicodeToMultiByteN (
2625 PWCHAR UnicodeString
,
2631 RtlUpcaseUnicodeToOemN (
2635 PWCHAR UnicodeString
,
2640 RtlUpperChar (CHAR Source
);
2643 RtlUpperString (PSTRING DestinationString
,
2644 PSTRING SourceString
);
2647 RtlUshortByteSwap (IN USHORT Source
);
2650 RtlValidAcl (PACL Acl
);
2661 RtlValidRelativeSecurityDescriptor (
2662 IN PSECURITY_DESCRIPTOR SecurityDescriptorInput
,
2663 IN ULONG SecurityDescriptorLength
,
2664 IN SECURITY_INFORMATION RequiredInformation
2668 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2671 RtlValidSid (IN PSID Sid
);
2676 RtlVerifyVersionInfo(
2677 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2679 IN ULONGLONG ConditionMask
2685 RtlVolumeDeviceToDosName(
2686 IN PVOID VolumeDeviceObject
,
2687 OUT PUNICODE_STRING DosName
2700 IN PVOID HeapHandle
,
2706 RtlxAnsiStringToUnicodeSize (
2707 IN PANSI_STRING AnsiString
2712 RtlxOemStringToUnicodeSize (
2713 IN POEM_STRING OemString
2718 RtlxUnicodeStringToAnsiSize (
2719 IN PUNICODE_STRING UnicodeString
2724 RtlxUnicodeStringToOemSize (
2725 IN PUNICODE_STRING UnicodeString
2730 RtlpOemStringToCountedUnicodeString(
2731 IN OUT PUNICODE_STRING UniDest
,
2732 IN POEM_STRING OemSource
,
2733 IN BOOLEAN AllocateDestinationString
,
2734 IN POOL_TYPE PoolType
);
2738 RtlpUpcaseUnicodeString(
2739 IN OUT PUNICODE_STRING UniDest
,
2740 IN PCUNICODE_STRING UniSource
,
2741 IN BOOLEAN AllocateDestinationString
,
2742 IN POOL_TYPE PoolType
);
2746 RtlpUpcaseUnicodeStringToAnsiString(
2747 IN OUT PANSI_STRING AnsiDest
,
2748 IN PUNICODE_STRING UniSource
,
2749 IN BOOLEAN AllocateDestinationString
,
2750 IN POOL_TYPE PoolType
);
2754 RtlpUpcaseUnicodeStringToCountedOemString(
2755 IN OUT POEM_STRING OemDest
,
2756 IN PUNICODE_STRING UniSource
,
2757 IN BOOLEAN AllocateDestinationString
,
2758 IN POOL_TYPE PoolType
);
2762 RtlpUpcaseUnicodeStringToOemString (
2763 IN OUT POEM_STRING OemDest
,
2764 IN PUNICODE_STRING UniSource
,
2765 IN BOOLEAN AllocateDestinationString
,
2766 IN POOL_TYPE PoolType
);
2770 RtlpDowncaseUnicodeString(
2771 IN OUT PUNICODE_STRING UniDest
,
2772 IN PUNICODE_STRING UniSource
,
2773 IN BOOLEAN AllocateDestinationString
,
2774 IN POOL_TYPE PoolType
);
2778 RtlpAnsiStringToUnicodeString(
2779 IN OUT PUNICODE_STRING DestinationString
,
2780 IN PANSI_STRING SourceString
,
2781 IN BOOLEAN AllocateDestinationString
,
2782 IN POOL_TYPE PoolType
);
2786 RtlpUnicodeStringToAnsiString(
2787 IN OUT PANSI_STRING AnsiDest
,
2788 IN PUNICODE_STRING UniSource
,
2789 IN BOOLEAN AllocateDestinationString
,
2790 IN POOL_TYPE PoolType
);
2794 RtlpOemStringToUnicodeString(
2795 IN OUT PUNICODE_STRING UniDest
,
2796 IN POEM_STRING OemSource
,
2797 IN BOOLEAN AllocateDestinationString
,
2798 IN POOL_TYPE PoolType
);
2802 RtlpUnicodeStringToOemString(
2803 IN OUT POEM_STRING OemDest
,
2804 IN PUNICODE_STRING UniSource
,
2805 IN BOOLEAN AllocateDestinationString
,
2806 IN POOL_TYPE PoolType
);
2810 RtlpCreateUnicodeString(
2811 IN OUT PUNICODE_STRING UniDest
,
2813 IN POOL_TYPE PoolType
);
2817 RtlpUnicodeStringToCountedOemString(
2818 IN OUT POEM_STRING OemDest
,
2819 IN PUNICODE_STRING UniSource
,
2820 IN BOOLEAN AllocateDestinationString
,
2821 IN POOL_TYPE PoolType
);
2824 RtlpDuplicateUnicodeString(
2826 IN PUNICODE_STRING SourceString
,
2827 PUNICODE_STRING DestinationString
,
2828 POOL_TYPE PoolType
);
2830 /* Register io functions */
2834 READ_REGISTER_UCHAR (
2840 READ_REGISTER_USHORT (
2846 READ_REGISTER_ULONG (
2852 READ_REGISTER_BUFFER_UCHAR (
2860 READ_REGISTER_BUFFER_USHORT (
2868 READ_REGISTER_BUFFER_ULONG (
2876 WRITE_REGISTER_UCHAR (
2883 WRITE_REGISTER_USHORT (
2890 WRITE_REGISTER_ULONG (
2897 WRITE_REGISTER_BUFFER_UCHAR (
2905 WRITE_REGISTER_BUFFER_USHORT (
2913 WRITE_REGISTER_BUFFER_ULONG (
2920 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2922 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2924 char *_itoa (int value
, char *string
, int radix
);
2925 wchar_t *_itow (int value
, wchar_t *string
, int radix
);
2926 int _snprintf(char * buf
, size_t cnt
, const char *fmt
, ...);
2927 int _snwprintf(wchar_t *buf
, size_t cnt
, const wchar_t *fmt
, ...);
2928 int _stricmp(const char *s1
, const char *s2
);
2929 char * _strlwr(char *x
);
2930 int _strnicmp(const char *s1
, const char *s2
, size_t n
);
2931 char * _strnset(char* szToFill
, int szFill
, size_t sizeMaxFill
);
2932 char * _strrev(char *s
);
2933 char * _strset(char* szToFill
, int szFill
);
2934 char * _strupr(char *x
);
2935 int _vsnprintf(char *buf
, size_t cnt
, const char *fmt
, va_list args
);
2936 int _wcsicmp (const wchar_t* cs
, const wchar_t* ct
);
2937 wchar_t * _wcslwr (wchar_t *x
);
2938 int _wcsnicmp (const wchar_t * cs
,const wchar_t * ct
,size_t count
);
2939 wchar_t* _wcsnset (wchar_t* wsToFill
, wchar_t wcFill
, size_t sizeMaxFill
);
2940 wchar_t * _wcsrev(wchar_t *s
);
2941 wchar_t *_wcsupr(wchar_t *x
);
2943 int atoi(const char *str
);
2944 long atol(const char *str
);
2950 int isxdigit(int c
);
2951 size_t mbstowcs (wchar_t *wcstr
, const char *mbstr
, size_t count
);
2952 int mbtowc (wchar_t *wchar
, const char *mbchar
, size_t count
);
2953 void * memchr(const void *s
, int c
, size_t n
);
2954 void * memcpy(void *to
, const void *from
, size_t count
);
2955 void * memmove(void *dest
,const void *src
, size_t count
);
2956 void * memset(void *src
, int val
, size_t count
);
2963 int sprintf(char * buf
, const char *fmt
, ...);
2964 void srand(unsigned seed
);
2965 char * strcat(char *s
, const char *append
);
2966 char * strchr(const char *s
, int c
);
2967 int strcmp(const char *s1
, const char *s2
);
2968 char * strcpy(char *to
, const char *from
);
2969 size_t strlen(const char *str
);
2970 char * strncat(char *dst
, const char *src
, size_t n
);
2971 int strncmp(const char *s1
, const char *s2
, size_t n
);
2972 char *strncpy(char *dst
, const char *src
, size_t n
);
2973 char *strrchr(const char *s
, int c
);
2974 size_t strspn(const char *s1
, const char *s2
);
2975 char *strstr(const char *s
, const char *find
);
2976 int swprintf(wchar_t *buf
, const wchar_t *fmt
, ...);
2979 wchar_t towlower(wchar_t c
);
2980 wchar_t towupper(wchar_t c
);
2981 int vsprintf(char *buf
, const char *fmt
, va_list args
);
2982 wchar_t * wcscat(wchar_t *dest
, const wchar_t *src
);
2983 wchar_t * wcschr(const wchar_t *str
, wchar_t ch
);
2984 int wcscmp(const wchar_t *cs
, const wchar_t *ct
);
2985 wchar_t* wcscpy(wchar_t* str1
, const wchar_t* str2
);
2986 size_t wcscspn(const wchar_t *str
,const wchar_t *reject
);
2987 size_t wcslen(const wchar_t *s
);
2988 wchar_t * wcsncat(wchar_t *dest
, const wchar_t *src
, size_t count
);
2989 int wcsncmp(const wchar_t *cs
, const wchar_t *ct
, size_t count
);
2990 wchar_t * wcsncpy(wchar_t *dest
, const wchar_t *src
, size_t count
);
2991 wchar_t * wcsrchr(const wchar_t *str
, wchar_t ch
);
2992 size_t wcsspn(const wchar_t *str
,const wchar_t *accept
);
2993 wchar_t *wcsstr(const wchar_t *s
,const wchar_t *b
);
2994 size_t wcstombs (char *mbstr
, const wchar_t *wcstr
, size_t count
);
2995 int wctomb (char *mbchar
, wchar_t wchar
);
2997 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2999 #endif /* __DDK_RTL_H */