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_RELATIVE 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
,
856 RtlCreateSecurityDescriptorRelative (PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor
,
861 RtlCreateSystemVolumeInformationFolder(
862 IN PUNICODE_STRING VolumeRootPath
866 RtlCreateUnicodeString (OUT PUNICODE_STRING Destination
,
870 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination
,
875 RtlCustomCPToUnicodeN (
876 IN PCPTABLEINFO CustomCP
,
877 PWCHAR UnicodeString
,
885 RtlCutoverTimeToSystemTime(IN PTIME_FIELDS CutoverTimeFields
,
886 OUT PLARGE_INTEGER SystemTime
,
887 IN PLARGE_INTEGER CurrentTime
,
888 IN BOOLEAN ThisYearsCutoverOnly
);
891 RtlDecompressBuffer(IN USHORT CompressionFormat
,
892 OUT PUCHAR UncompressedBuffer
,
893 IN ULONG UncompressedBufferSize
,
894 IN PUCHAR CompressedBuffer
,
895 IN ULONG CompressedBufferSize
,
896 OUT PULONG FinalUncompressedSize
);
899 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer
,
900 IN ULONG UncompressedBufferSize
,
901 IN PUCHAR CompressedBuffer
,
902 IN ULONG CompressedBufferSize
,
903 IN PUCHAR CompressedTail
,
904 IN ULONG CompressedTailSize
,
905 IN PCOMPRESSED_DATA_INFO CompressedDataInfo
);
908 RtlDecompressFragment(IN USHORT CompressionFormat
,
909 OUT PUCHAR UncompressedFragment
,
910 IN ULONG UncompressedFragmentSize
,
911 IN PUCHAR CompressedBuffer
,
912 IN ULONG CompressedBufferSize
,
913 IN ULONG FragmentOffset
,
914 OUT PULONG FinalUncompressedSize
,
920 PRTL_SPLAY_LINKS Links
924 RtlDeleteAce (PACL Acl
,
928 RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
933 RtlDeleteElementGenericTable (
934 PRTL_GENERIC_TABLE Table
,
940 RtlDeleteElementGenericTableAvl (
941 PRTL_AVL_TABLE Table
,
948 PRTL_SPLAY_LINKS Links
,
949 PRTL_SPLAY_LINKS
*Root
954 RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList
,
958 RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList
,
964 RtlDescribeChunk(IN USHORT CompressionFormat
,
965 IN OUT PUCHAR
*CompressedBuffer
,
966 IN PUCHAR EndOfCompressedBufferPlus1
,
967 OUT PUCHAR
*ChunkBuffer
,
968 OUT PULONG ChunkSize
);
971 RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable
);
974 RtlDestroyHeap (HANDLE hheap
);
978 RtlDispatchException(
979 PEXCEPTION_RECORD pExcptRec
,
986 RtlDowncaseUnicodeString (
987 IN OUT PUNICODE_STRING DestinationString
,
988 IN PUNICODE_STRING SourceString
,
989 IN BOOLEAN AllocateDestinationString
995 IN PRTL_ATOM_TABLE AtomTable
,
996 IN BOOLEAN DeletePinned
1001 RtlEnlargedIntegerMultiply (
1008 RtlEnlargedUnsignedDivide (
1009 ULARGE_INTEGER Dividend
,
1016 RtlEnlargedUnsignedMultiply (
1023 RtlEnumerateGenericTable (
1024 PRTL_GENERIC_TABLE Table
,
1030 RtlEnumerateGenericTableAvl (
1031 PRTL_AVL_TABLE Table
,
1037 RtlEnumerateGenericTableLikeADirectory (
1038 IN PRTL_AVL_TABLE Table
,
1039 IN PRTL_AVL_MATCH_FUNCTION MatchFunction
,
1042 IN OUT PVOID
*RestartKey
,
1043 IN OUT PULONG DeleteCount
,
1049 RtlEnumerateGenericTableWithoutSplaying (
1050 PRTL_GENERIC_TABLE Table
,
1056 RtlEnumerateGenericTableWithoutSplayingAvl (
1057 PRTL_AVL_TABLE Table
,
1062 RtlEqualPrefixSid (PSID Sid1
,
1066 RtlEqualSid (PSID Sid1
,
1074 BOOLEAN CaseInSensitive
1079 RtlExtendedIntegerMultiply (
1080 LARGE_INTEGER Multiplicand
,
1086 RtlExtendedLargeIntegerDivide (
1087 LARGE_INTEGER Dividend
,
1094 RtlExtendedMagicDivide (
1095 LARGE_INTEGER Dividend
,
1096 LARGE_INTEGER MagicDivisor
,
1102 RtlFillMemoryUlong (
1111 PRTL_BITMAP BitMapHeader
,
1118 RtlFindClearBitsAndSet (
1119 PRTL_BITMAP BitMapHeader
,
1127 PRTL_BITMAP BitMapHeader
,
1128 PRTL_BITMAP_RUN RunArray
,
1129 ULONG SizeOfRunArray
,
1130 BOOLEAN LocateLongestRuns
1135 RtlFindLastBackwardRunClear (
1136 IN PRTL_BITMAP BitMapHeader
,
1138 IN PULONG StartingRunIndex
1143 RtlFindNextForwardRunClear (
1144 IN PRTL_BITMAP BitMapHeader
,
1146 IN PULONG StartingRunIndex
1150 PUNICODE_PREFIX_TABLE_ENTRY
1152 RtlFindUnicodePrefix (
1153 PUNICODE_PREFIX_TABLE PrefixTable
,
1154 PUNICODE_STRING FullName
,
1155 ULONG CaseInsensitiveIndex
1160 RtlFindFirstRunClear (
1161 PRTL_BITMAP BitMapHeader
,
1162 PULONG StartingIndex
1167 RtlFindFirstRunSet (
1168 PRTL_BITMAP BitMapHeader
,
1169 PULONG StartingIndex
1173 RtlFindLeastSignificantBit (IN ULONGLONG Set
);
1177 RtlFindLongestRunClear (
1178 PRTL_BITMAP BitMapHeader
,
1179 PULONG StartingIndex
1184 RtlFindLongestRunSet (
1185 PRTL_BITMAP BitMapHeader
,
1186 PULONG StartingIndex
1192 IN PVOID BaseAddress
,
1196 OUT PRTL_MESSAGE_RESOURCE_ENTRY
*MessageResourceEntry
1200 RtlFindMostSignificantBit (IN ULONGLONG Set
);
1203 RtlFindRange (IN PRTL_RANGE_LIST RangeList
,
1204 IN ULONGLONG Minimum
,
1205 IN ULONGLONG Maximum
,
1209 IN UCHAR AttributeAvailableMask
,
1210 IN PVOID Context OPTIONAL
,
1211 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1212 OUT PULONGLONG Start
);
1217 PRTL_BITMAP BitMapHeader
,
1224 RtlFindSetBitsAndClear (
1225 PRTL_BITMAP BitMapHeader
,
1231 RtlFirstFreeAce (PACL Acl
,
1235 RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath
);
1238 RtlFreeAnsiString (IN PANSI_STRING AnsiString
);
1249 RtlFreeOemString (IN POEM_STRING OemString
);
1252 RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList
);
1255 RtlFreeSid (PSID Sid
);
1258 RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString
);
1261 RtlGenerate8dot3Name (IN PUNICODE_STRING Name
,
1262 IN BOOLEAN AllowExtendedCharacters
,
1263 IN OUT PGENERATE_NAME_CONTEXT Context
,
1264 OUT PUNICODE_STRING Name8dot3
);
1267 RtlGetAce (PACL Acl
,
1273 RtlGetCallersAddress(
1274 OUT PVOID
*CallersAddress
,
1275 OUT PVOID
*CallersCaller
1279 RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine
,
1280 OUT PULONG CompressBufferAndWorkSpaceSize
,
1281 OUT PULONG CompressFragmentWorkSpaceSize
);
1284 RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1285 PSECURITY_DESCRIPTOR_CONTROL Control
,
1289 RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1290 PBOOLEAN DaclPresent
,
1292 PBOOLEAN DaclDefaulted
);
1295 RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage
,
1296 OUT PUSHORT OemCodePage
);
1300 RtlGetElementGenericTable(
1301 PRTL_GENERIC_TABLE Table
,
1307 RtlGetElementGenericTableAvl (
1308 PRTL_AVL_TABLE Table
,
1313 RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList
,
1314 OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1315 OUT PRTL_RANGE
*Range
);
1318 RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1320 PBOOLEAN GroupDefaulted
);
1323 RtlGetLastNtStatus(VOID
);
1326 RtlGetLastWin32Error(VOID
);
1329 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1330 OUT PRTL_RANGE
*Range
,
1331 IN BOOLEAN MoveForwards
);
1335 RtlGetNtGlobalFlags (
1340 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1342 PBOOLEAN OwnerDefaulted
);
1345 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1346 PBOOLEAN SaclPresent
,
1348 PBOOLEAN SaclDefaulted
);
1351 RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor
,
1356 RtlGetSetBootStatusData(
1366 RtlGUIDFromString (IN PUNICODE_STRING GuidString
,
1371 RtlHashUnicodeString(
1372 IN
const UNICODE_STRING
*String
,
1373 IN BOOLEAN CaseInSensitive
,
1374 IN ULONG HashAlgorithm
,
1375 OUT PULONG HashValue
1378 PSID_IDENTIFIER_AUTHORITY STDCALL
1379 RtlIdentifierAuthoritySid (PSID Sid
);
1383 RtlImageDirectoryEntryToData (
1393 IN PVOID BaseAddress
1396 PIMAGE_SECTION_HEADER
1398 RtlImageRvaToSection (
1399 PIMAGE_NT_HEADERS NtHeader
,
1407 PIMAGE_NT_HEADERS NtHeader
,
1410 PIMAGE_SECTION_HEADER
*SectionHeader
1416 PANSI_STRING DestinationString
,
1422 RtlInitCodePageTable (
1423 IN PUSHORT TableBase
,
1424 OUT PCPTABLEINFO CodePageTable
1429 RtlInitializeUnicodePrefix (
1430 PUNICODE_PREFIX_TABLE PrefixTable
1434 RtlInitializeSid (PSID Sid
,
1435 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
1436 UCHAR SubAuthorityCount
);
1440 RtlInitializeBitMap(
1441 IN PRTL_BITMAP BitMapHeader
,
1442 IN PULONG BitMapBuffer
,
1443 IN ULONG SizeOfBitMap
);
1448 IN PUSHORT AnsiTableBase
,
1449 IN PUSHORT OemTableBase
,
1450 IN PUSHORT CaseTableBase
,
1451 OUT PNLSTABLEINFO NlsTable
1457 PSTRING DestinationString
,
1463 RtlInitUnicodeString (
1464 PUNICODE_STRING DestinationString
,
1470 RtlInitializeBitMap (
1471 IN OUT PRTL_BITMAP BitMapHeader
,
1472 IN PULONG BitMapBuffer
,
1473 IN ULONG SizeOfBitMap
1478 RtlInitializeContext (
1479 IN HANDLE ProcessHandle
,
1480 OUT PCONTEXT ThreadContext
,
1481 IN PVOID ThreadStartParam OPTIONAL
,
1482 IN PTHREAD_START_ROUTINE ThreadStartAddress
,
1483 IN PINITIAL_TEB InitialTeb
1488 RtlInitializeGenericTable (
1489 PRTL_GENERIC_TABLE Table
,
1490 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
,
1491 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
,
1492 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
,
1498 RtlInitializeGenericTableAvl (
1499 PRTL_AVL_TABLE Table
,
1500 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
,
1501 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
,
1502 PRTL_AVL_FREE_ROUTINE FreeRoutine
,
1507 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList
);
1511 RtlInsertElementGenericTable (
1512 PRTL_GENERIC_TABLE Table
,
1515 PBOOLEAN NewElement OPTIONAL
1520 RtlInsertElementGenericTableAvl (
1521 PRTL_AVL_TABLE Table
,
1524 PBOOLEAN NewElement OPTIONAL
1529 RtlInsertElementGenericTableFull (
1530 PRTL_GENERIC_TABLE Table
,
1533 PBOOLEAN NewElement OPTIONAL
,
1535 TABLE_SEARCH_RESULT SearchResult
1540 RtlInsertElementGenericTableFullAvl (
1541 PRTL_AVL_TABLE Table
,
1544 PBOOLEAN NewElement OPTIONAL
,
1546 TABLE_SEARCH_RESULT SearchResult
1551 RtlInsertUnicodePrefix (
1552 PUNICODE_PREFIX_TABLE PrefixTable
,
1553 PUNICODE_STRING Prefix
,
1554 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1559 RtlInt64ToUnicodeString (
1561 IN ULONG Base OPTIONAL
,
1562 IN OUT PUNICODE_STRING String
1576 RtlIntegerToUnicode(
1578 IN ULONG Base OPTIONAL
,
1579 IN ULONG Length OPTIONAL
,
1580 IN OUT LPWSTR String
1585 RtlIntegerToUnicodeString (
1588 IN OUT PUNICODE_STRING String
1592 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList
,
1593 IN PRTL_RANGE_LIST RangeList
);
1597 RtlIpv4AddressToStringA(
1604 RtlIpv4AddressToStringExA(
1613 RtlIpv4AddressToStringW(
1620 RtlIpv4AddressToStringExW(
1629 RtlIpv4StringToAddressA(
1632 OUT PVOID PtrToIpAddr
,
1638 RtlIpv4StringToAddressExA(
1647 RtlIpv4StringToAddressW(
1650 OUT PVOID PtrToIpAddr
,
1656 RtlIpv4StringToAddressExW(
1665 RtlIpv6AddressToStringA(
1672 RtlIpv6AddressToStringExA(
1681 RtlIpv6AddressToStringW(
1688 RtlIpv6AddressToStringExW(
1697 RtlIpv6StringToAddressA(
1700 OUT PVOID PtrToIpAddr
,
1706 RtlIpv6StringToAddressExA(
1715 RtlIpv6StringToAddressW(
1718 OUT PVOID PtrToIpAddr
,
1724 RtlIpv6StringToAddressExW(
1733 RtlIsGenericTableEmpty (
1734 PRTL_GENERIC_TABLE Table
1739 RtlIsGenericTableEmptyAvl (
1740 PRTL_AVL_TABLE Table
1745 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName
,
1746 IN PANSI_STRING AnsiName
,
1747 OUT PBOOLEAN SpacesFound
);
1750 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList
,
1754 IN UCHAR AttributeAvailableMask
,
1755 IN PVOID Context OPTIONAL
,
1756 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1757 OUT PBOOLEAN Available
);
1769 RtlIsValidOemCharacter (
1775 RtlLargeIntegerAdd (
1776 LARGE_INTEGER Addend1
,
1777 LARGE_INTEGER Addend2
1782 * RtlLargeIntegerAnd (
1783 * PLARGE_INTEGER Result,
1784 * LARGE_INTEGER Source,
1785 * LARGE_INTEGER Mask
1788 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1790 Result.HighPart = Source.HighPart & Mask.HighPart; \
1791 Result.LowPart = Source.LowPart & Mask.LowPart; \
1796 RtlLargeIntegerArithmeticShift (
1797 LARGE_INTEGER LargeInteger
,
1803 RtlLargeIntegerDivide (
1804 LARGE_INTEGER Dividend
,
1805 LARGE_INTEGER Divisor
,
1806 PLARGE_INTEGER Remainder
1811 * RtlLargeIntegerEqualTo (
1812 * LARGE_INTEGER Operand1,
1813 * LARGE_INTEGER Operand2
1816 #define RtlLargeIntegerEqualTo(X,Y) \
1817 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1821 * RtlLargeIntegerEqualToZero (
1822 * LARGE_INTEGER Operand
1825 #define RtlLargeIntegerEqualToZero(X) \
1826 (!((X).LowPart | (X).HighPart))
1830 * RtlLargeIntegerGreaterThan (
1831 * LARGE_INTEGER Operand1,
1832 * LARGE_INTEGER Operand2
1835 #define RtlLargeIntegerGreaterThan(X,Y) \
1836 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1837 ((X).HighPart > (Y).HighPart))
1841 * RtlLargeIntegerGreaterThanOrEqualTo (
1842 * LARGE_INTEGER Operand1,
1843 * LARGE_INTEGER Operand2
1846 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1847 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1848 ((X).HighPart > (Y).HighPart))
1852 * RtlLargeIntegerGreaterThanOrEqualToZero (
1853 * LARGE_INTEGER Operand1
1856 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1861 * RtlLargeIntegerGreaterThanZero (
1862 * LARGE_INTEGER Operand1
1865 #define RtlLargeIntegerGreaterThanZero(X) \
1866 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1867 ((X).HighPart > 0 ))
1871 * RtlLargeIntegerLessThan (
1872 * LARGE_INTEGER Operand1,
1873 * LARGE_INTEGER Operand2
1876 #define RtlLargeIntegerLessThan(X,Y) \
1877 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1878 ((X).HighPart < (Y).HighPart))
1882 * RtlLargeIntegerLessThanOrEqualTo (
1883 * LARGE_INTEGER Operand1,
1884 * LARGE_INTEGER Operand2
1887 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1888 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1889 ((X).HighPart < (Y).HighPart))
1893 * RtlLargeIntegerLessThanOrEqualToZero (
1894 * LARGE_INTEGER Operand
1897 #define RtlLargeIntegerLessOrEqualToZero(X) \
1898 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1902 * RtlLargeIntegerLessThanZero (
1903 * LARGE_INTEGER Operand
1906 #define RtlLargeIntegerLessThanZero(X) \
1907 (((X).HighPart < 0))
1911 RtlLargeIntegerNegate (
1912 LARGE_INTEGER Subtrahend
1917 * RtlLargeIntegerNotEqualTo (
1918 * LARGE_INTEGER Operand1,
1919 * LARGE_INTEGER Operand2
1922 #define RtlLargeIntegerNotEqualTo(X,Y) \
1923 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1927 * RtlLargeIntegerNotEqualToZero (
1928 * LARGE_INTEGER Operand
1931 #define RtlLargeIntegerNotEqualToZero(X) \
1932 (((X).LowPart | (X).HighPart))
1936 RtlLargeIntegerShiftLeft (
1937 LARGE_INTEGER LargeInteger
,
1943 RtlLargeIntegerShiftRight (
1944 LARGE_INTEGER LargeInteger
,
1950 RtlLargeIntegerSubtract (
1951 LARGE_INTEGER Minuend
,
1952 LARGE_INTEGER Subtrahend
1956 RtlLengthRequiredSid (UCHAR SubAuthorityCount
);
1959 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
1962 RtlLengthSid (PSID Sid
);
1966 RtlLockBootStatusData(
1971 RtlLockHeap (IN HANDLE Heap
);
1974 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
1976 OUT PRTL_ATOM Atom
);
1980 RtlLookupElementGenericTable (
1981 PRTL_GENERIC_TABLE Table
,
1987 RtlLookupElementGenericTableAvl (
1988 PRTL_AVL_TABLE Table
,
1994 RtlLookupElementGenericTableFull (
1995 PRTL_GENERIC_TABLE Table
,
1997 OUT PVOID
*NodeOrParent
,
1998 OUT TABLE_SEARCH_RESULT
*SearchResult
2003 RtlLookupElementGenericTableFullAvl (
2004 PRTL_AVL_TABLE Table
,
2006 OUT PVOID
*NodeOrParent
,
2007 OUT TABLE_SEARCH_RESULT
*SearchResult
2011 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
2012 PSECURITY_DESCRIPTOR_RELATIVE RelSD
,
2013 PULONG BufferLength
);
2016 RtlMapGenericMask (PACCESS_MASK AccessMask
,
2017 PGENERIC_MAPPING GenericMapping
);
2021 RtlMapSecurityErrorToNtStatus(
2022 IN ULONG SecurityError
2026 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList
,
2027 IN PRTL_RANGE_LIST RangeList1
,
2028 IN PRTL_RANGE_LIST RangeList2
,
2033 RtlMultiByteToUnicodeN (
2034 PWCHAR UnicodeString
,
2037 const PCHAR MbString
,
2043 RtlMultiByteToUnicodeSize (
2049 PUNICODE_PREFIX_TABLE_ENTRY
2051 RtlNextUnicodePrefix (
2052 PUNICODE_PREFIX_TABLE PrefixTable
,
2058 RtlNtStatusToDosError (
2064 RtlNtStatusToDosErrorNoTeb (
2070 RtlNtStatusToPsxErrno (
2076 RtlNumberGenericTableElements(
2077 PRTL_GENERIC_TABLE Table
2082 RtlNumberGenericTableElementsAvl (
2083 PRTL_AVL_TABLE Table
2089 RtlNumberOfClearBits (
2090 PRTL_BITMAP BitMapHeader
2095 RtlNumberOfSetBits (
2096 PRTL_BITMAP BitMapHeader
2101 RtlOemStringToUnicodeSize (
2102 POEM_STRING AnsiString
2107 RtlOemStringToUnicodeString (
2108 PUNICODE_STRING DestinationString
,
2109 POEM_STRING SourceString
,
2110 BOOLEAN AllocateDestinationString
2116 PWSTR UnicodeString
,
2117 ULONG MaxBytesInUnicodeString
,
2118 PULONG BytesInUnicodeString
,
2120 ULONG BytesInOemString
2124 RtlPinAtomInAtomTable (
2125 IN PRTL_ATOM_TABLE AtomTable
,
2131 RtlPrefetchMemoryNonTemporal(
2139 PANSI_STRING String1
,
2140 PANSI_STRING String2
,
2141 BOOLEAN CaseInsensitive
2146 RtlPrefixUnicodeString (
2147 PUNICODE_STRING String1
,
2148 PUNICODE_STRING String2
,
2149 BOOLEAN CaseInsensitive
2154 RtlQueryAtomInAtomTable (
2155 IN PRTL_ATOM_TABLE AtomTable
,
2157 IN OUT PULONG RefCount OPTIONAL
,
2158 IN OUT PULONG PinCount OPTIONAL
,
2159 IN OUT PWSTR AtomName OPTIONAL
,
2160 IN OUT PULONG NameLength OPTIONAL
2164 RtlQueryInformationAcl (PACL Acl
,
2166 ULONG InformationLength
,
2167 ACL_INFORMATION_CLASS InformationClass
);
2170 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2173 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord
);
2176 RtlRaiseStatus(NTSTATUS Status
);
2179 RtlRandom (PULONG Seed
);
2189 RtlRealPredecessor (
2190 PRTL_SPLAY_LINKS Links
2196 PRTL_SPLAY_LINKS Links
2209 RtlRemoveUnicodePrefix (
2210 PUNICODE_PREFIX_TABLE PrefixTable
,
2211 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2217 IN USHORT CompressionFormat
,
2218 IN OUT PUCHAR
*CompressedBuffer
,
2219 IN PUCHAR EndOfCompressedBufferPlus1
,
2220 OUT PUCHAR
*ChunkBuffer
,
2225 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable
);
2228 RtlRestoreLastWin32Error(IN ULONG Error
);
2232 * RtlRetrieveUlong (
2233 * PULONG DestinationAddress,
2234 * PULONG SourceAddress
2237 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2238 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2240 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2241 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2242 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2243 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2247 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2252 * RtlRetrieveUshort (
2253 * PUSHORT DestinationAddress,
2254 * PUSHORT SourceAddress
2257 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2258 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2260 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2261 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2265 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2269 RtlSecondsSince1970ToTime (ULONG SecondsSince1970
,
2270 PLARGE_INTEGER Time
);
2273 RtlSecondsSince1980ToTime (ULONG SecondsSince1980
,
2274 PLARGE_INTEGER Time
);
2277 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR_RELATIVE RelSD
,
2278 PSECURITY_DESCRIPTOR AbsSD
,
2291 RtlSelfRelativeToAbsoluteSD2(
2292 PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor
,
2297 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader
);
2300 RtlSetAttributesSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2301 IN SECURITY_DESCRIPTOR_CONTROL Control
,
2302 OUT PULONG Revision
);
2307 PRTL_BITMAP BitMapHeader
,
2314 PRTL_BITMAP BitMapHeader
,
2315 ULONG StartingIndex
,
2320 RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2321 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest
,
2322 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
);
2325 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2326 BOOLEAN DaclPresent
,
2328 BOOLEAN DaclDefaulted
);
2331 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2333 BOOLEAN GroupDefaulted
);
2336 RtlSetInformationAcl (PACL Acl
,
2338 ULONG InformationLength
,
2339 ACL_INFORMATION_CLASS InformationClass
);
2342 RtlSetLastWin32Error(IN ULONG Error
);
2345 RtlSetLastWin32ErrorAndNtStatusFromNtStatus(IN NTSTATUS Status
);
2348 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2350 BOOLEAN OwnerDefaulted
);
2353 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2354 BOOLEAN SaclPresent
,
2356 BOOLEAN SaclDefaulted
);
2359 RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor
,
2363 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2367 IN PVOID HeapHandle
,
2369 IN PVOID MemoryPointer
2375 PRTL_SPLAY_LINKS Links
2385 #define RtlStoreUlong(Address,Value) \
2386 if ((ULONG_PTR)(Address) & LONG_MASK) \
2388 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2389 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2390 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2391 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2395 *((PULONG)(Address))=(ULONG)(Value); \
2405 #define RtlStoreUshort(Address,Value) \
2406 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2408 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2409 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2413 *((PUSHORT)(Address))=(USHORT)(Value); \
2417 RtlStringFromGUID (IN REFGUID Guid
,
2418 OUT PUNICODE_STRING GuidString
);
2421 RtlSubAuthoritySid (PSID Sid
,
2422 ULONG SubAuthority
);
2425 RtlSubAuthoritySid (PSID Sid
,
2426 ULONG SubAuthority
);
2429 RtlSubAuthorityCountSid (PSID Sid
);
2433 RtlSubtreePredecessor (
2434 PRTL_SPLAY_LINKS Links
2439 RtlSubtreeSuccessor (
2440 PRTL_SPLAY_LINKS Links
2446 PRTL_BITMAP BitMapHeader
,
2452 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields
,
2453 PLARGE_INTEGER Time
);
2457 RtlTimeToSecondsSince1970 (
2458 PLARGE_INTEGER Time
,
2459 PULONG SecondsSince1970
2464 RtlTimeToSecondsSince1980 (
2465 PLARGE_INTEGER Time
,
2466 PULONG SecondsSince1980
2471 RtlTimeToElapsedTimeFields(
2472 PLARGE_INTEGER Time
,
2473 PTIME_FIELDS TimeFields
2478 RtlTimeToTimeFields (
2479 PLARGE_INTEGER Time
,
2480 PTIME_FIELDS TimeFields
2485 RtlUlongByteSwap (IN ULONG Source
);
2488 RtlUlonglongByteSwap (IN ULONGLONG Source
);
2492 RtlUnicodeStringToAnsiSize (
2493 IN PUNICODE_STRING UnicodeString
2498 RtlUnicodeStringToAnsiString (
2499 IN OUT PANSI_STRING DestinationString
,
2500 IN PUNICODE_STRING SourceString
,
2501 IN BOOLEAN AllocateDestinationString
2506 RtlUnicodeStringToInteger (
2507 IN PUNICODE_STRING String
,
2514 RtlUnicodeStringToOemSize (
2515 IN PUNICODE_STRING UnicodeString
2520 RtlUnicodeStringToCountedOemString (
2521 IN OUT POEM_STRING DestinationString
,
2522 IN PUNICODE_STRING SourceString
,
2523 IN BOOLEAN AllocateDestinationString
2528 RtlUnicodeStringToOemString (
2529 IN OUT POEM_STRING DestinationString
,
2530 IN PUNICODE_STRING SourceString
,
2531 IN BOOLEAN AllocateDestinationString
2536 RtlUnicodeToCustomCPN (
2537 IN PCPTABLEINFO CustomCP
,
2541 PWCHAR UnicodeString
,
2547 RtlUnicodeToMultiByteN (
2551 PWCHAR UnicodeString
,
2557 RtlUnicodeToMultiByteSize (
2559 PWCHAR UnicodeString
,
2569 PWCHAR UnicodeString
,
2574 RtlUniform (PULONG Seed
);
2577 RtlUnlockHeap (IN HANDLE Heap
);
2581 RtlUnlockBootStatusData(
2588 PEXCEPTION_REGISTRATION RegistrationFrame
,
2589 PVOID ReturnAddress
,
2590 PEXCEPTION_RECORD ExceptionRecord
,
2596 RtlUpcaseUnicodeChar (
2602 RtlUpcaseUnicodeString (
2603 IN OUT PUNICODE_STRING DestinationString
,
2604 IN PCUNICODE_STRING SourceString
,
2605 IN BOOLEAN AllocateDestinationString
2610 RtlUpcaseUnicodeStringToAnsiString (
2611 IN OUT PANSI_STRING DestinationString
,
2612 IN PUNICODE_STRING SourceString
,
2613 IN BOOLEAN AllocateDestinationString
2618 RtlUpcaseUnicodeStringToCountedOemString (
2619 IN OUT POEM_STRING DestinationString
,
2620 IN PUNICODE_STRING SourceString
,
2621 IN BOOLEAN AllocateDestinationString
2626 RtlUpcaseUnicodeStringToOemString (
2627 IN OUT POEM_STRING DestinationString
,
2628 IN PUNICODE_STRING SourceString
,
2629 IN BOOLEAN AllocateDestinationString
2634 RtlUpcaseUnicodeToCustomCPN (
2635 IN PCPTABLEINFO CustomCP
,
2639 PWCHAR UnicodeString
,
2645 RtlUpcaseUnicodeToMultiByteN (
2649 PWCHAR UnicodeString
,
2655 RtlUpcaseUnicodeToOemN (
2659 PWCHAR UnicodeString
,
2664 RtlUpperChar (CHAR Source
);
2667 RtlUpperString (PSTRING DestinationString
,
2668 PSTRING SourceString
);
2671 RtlUshortByteSwap (IN USHORT Source
);
2674 RtlValidAcl (PACL Acl
);
2685 RtlValidRelativeSecurityDescriptor (
2686 IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput
,
2687 IN ULONG SecurityDescriptorLength
,
2688 IN SECURITY_INFORMATION RequiredInformation
2692 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2695 RtlValidSid (IN PSID Sid
);
2700 RtlVerifyVersionInfo(
2701 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2703 IN ULONGLONG ConditionMask
2709 RtlVolumeDeviceToDosName(
2710 IN PVOID VolumeDeviceObject
,
2711 OUT PUNICODE_STRING DosName
2724 IN PVOID HeapHandle
,
2730 RtlxAnsiStringToUnicodeSize (
2731 IN PANSI_STRING AnsiString
2736 RtlxOemStringToUnicodeSize (
2737 IN POEM_STRING OemString
2742 RtlxUnicodeStringToAnsiSize (
2743 IN PUNICODE_STRING UnicodeString
2748 RtlxUnicodeStringToOemSize (
2749 IN PUNICODE_STRING UnicodeString
2754 RtlpOemStringToCountedUnicodeString(
2755 IN OUT PUNICODE_STRING UniDest
,
2756 IN POEM_STRING OemSource
,
2757 IN BOOLEAN AllocateDestinationString
,
2758 IN POOL_TYPE PoolType
);
2762 RtlpUpcaseUnicodeString(
2763 IN OUT PUNICODE_STRING UniDest
,
2764 IN PCUNICODE_STRING UniSource
,
2765 IN BOOLEAN AllocateDestinationString
,
2766 IN POOL_TYPE PoolType
);
2770 RtlpUpcaseUnicodeStringToAnsiString(
2771 IN OUT PANSI_STRING AnsiDest
,
2772 IN PUNICODE_STRING UniSource
,
2773 IN BOOLEAN AllocateDestinationString
,
2774 IN POOL_TYPE PoolType
);
2778 RtlpUpcaseUnicodeStringToCountedOemString(
2779 IN OUT POEM_STRING OemDest
,
2780 IN PUNICODE_STRING UniSource
,
2781 IN BOOLEAN AllocateDestinationString
,
2782 IN POOL_TYPE PoolType
);
2786 RtlpUpcaseUnicodeStringToOemString (
2787 IN OUT POEM_STRING OemDest
,
2788 IN PUNICODE_STRING UniSource
,
2789 IN BOOLEAN AllocateDestinationString
,
2790 IN POOL_TYPE PoolType
);
2794 RtlpDowncaseUnicodeString(
2795 IN OUT PUNICODE_STRING UniDest
,
2796 IN PUNICODE_STRING UniSource
,
2797 IN BOOLEAN AllocateDestinationString
,
2798 IN POOL_TYPE PoolType
);
2802 RtlpAnsiStringToUnicodeString(
2803 IN OUT PUNICODE_STRING DestinationString
,
2804 IN PANSI_STRING SourceString
,
2805 IN BOOLEAN AllocateDestinationString
,
2806 IN POOL_TYPE PoolType
);
2810 RtlpUnicodeStringToAnsiString(
2811 IN OUT PANSI_STRING AnsiDest
,
2812 IN PUNICODE_STRING UniSource
,
2813 IN BOOLEAN AllocateDestinationString
,
2814 IN POOL_TYPE PoolType
);
2818 RtlpOemStringToUnicodeString(
2819 IN OUT PUNICODE_STRING UniDest
,
2820 IN POEM_STRING OemSource
,
2821 IN BOOLEAN AllocateDestinationString
,
2822 IN POOL_TYPE PoolType
);
2826 RtlpUnicodeStringToOemString(
2827 IN OUT POEM_STRING OemDest
,
2828 IN PUNICODE_STRING UniSource
,
2829 IN BOOLEAN AllocateDestinationString
,
2830 IN POOL_TYPE PoolType
);
2834 RtlpCreateUnicodeString(
2835 IN OUT PUNICODE_STRING UniDest
,
2837 IN POOL_TYPE PoolType
);
2841 RtlpUnicodeStringToCountedOemString(
2842 IN OUT POEM_STRING OemDest
,
2843 IN PUNICODE_STRING UniSource
,
2844 IN BOOLEAN AllocateDestinationString
,
2845 IN POOL_TYPE PoolType
);
2848 RtlpDuplicateUnicodeString(
2850 IN PUNICODE_STRING SourceString
,
2851 PUNICODE_STRING DestinationString
,
2852 POOL_TYPE PoolType
);
2854 /* Register io functions */
2858 READ_REGISTER_UCHAR (
2864 READ_REGISTER_USHORT (
2870 READ_REGISTER_ULONG (
2876 READ_REGISTER_BUFFER_UCHAR (
2884 READ_REGISTER_BUFFER_USHORT (
2892 READ_REGISTER_BUFFER_ULONG (
2900 WRITE_REGISTER_UCHAR (
2907 WRITE_REGISTER_USHORT (
2914 WRITE_REGISTER_ULONG (
2921 WRITE_REGISTER_BUFFER_UCHAR (
2929 WRITE_REGISTER_BUFFER_USHORT (
2937 WRITE_REGISTER_BUFFER_ULONG (
2944 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2946 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2948 char *_itoa (int value
, char *string
, int radix
);
2949 wchar_t *_itow (int value
, wchar_t *string
, int radix
);
2950 int _snprintf(char * buf
, size_t cnt
, const char *fmt
, ...);
2951 int _snwprintf(wchar_t *buf
, size_t cnt
, const wchar_t *fmt
, ...);
2952 int _stricmp(const char *s1
, const char *s2
);
2953 char * _strlwr(char *x
);
2954 int _strnicmp(const char *s1
, const char *s2
, size_t n
);
2955 char * _strnset(char* szToFill
, int szFill
, size_t sizeMaxFill
);
2956 char * _strrev(char *s
);
2957 char * _strset(char* szToFill
, int szFill
);
2958 char * _strupr(char *x
);
2959 int _vsnprintf(char *buf
, size_t cnt
, const char *fmt
, va_list args
);
2960 int _wcsicmp (const wchar_t* cs
, const wchar_t* ct
);
2961 wchar_t * _wcslwr (wchar_t *x
);
2962 int _wcsnicmp (const wchar_t * cs
,const wchar_t * ct
,size_t count
);
2963 wchar_t* _wcsnset (wchar_t* wsToFill
, wchar_t wcFill
, size_t sizeMaxFill
);
2964 wchar_t * _wcsrev(wchar_t *s
);
2965 wchar_t *_wcsupr(wchar_t *x
);
2967 int atoi(const char *str
);
2968 long atol(const char *str
);
2974 int isxdigit(int c
);
2975 size_t mbstowcs (wchar_t *wcstr
, const char *mbstr
, size_t count
);
2976 int mbtowc (wchar_t *wchar
, const char *mbchar
, size_t count
);
2977 void * memchr(const void *s
, int c
, size_t n
);
2978 void * memcpy(void *to
, const void *from
, size_t count
);
2979 void * memmove(void *dest
,const void *src
, size_t count
);
2980 void * memset(void *src
, int val
, size_t count
);
2987 int sprintf(char * buf
, const char *fmt
, ...);
2988 void srand(unsigned seed
);
2989 char * strcat(char *s
, const char *append
);
2990 char * strchr(const char *s
, int c
);
2991 int strcmp(const char *s1
, const char *s2
);
2992 char * strcpy(char *to
, const char *from
);
2993 size_t strlen(const char *str
);
2994 char * strncat(char *dst
, const char *src
, size_t n
);
2995 int strncmp(const char *s1
, const char *s2
, size_t n
);
2996 char *strncpy(char *dst
, const char *src
, size_t n
);
2997 char *strrchr(const char *s
, int c
);
2998 size_t strspn(const char *s1
, const char *s2
);
2999 char *strstr(const char *s
, const char *find
);
3000 int swprintf(wchar_t *buf
, const wchar_t *fmt
, ...);
3003 wchar_t towlower(wchar_t c
);
3004 wchar_t towupper(wchar_t c
);
3005 int vsprintf(char *buf
, const char *fmt
, va_list args
);
3006 wchar_t * wcscat(wchar_t *dest
, const wchar_t *src
);
3007 wchar_t * wcschr(const wchar_t *str
, wchar_t ch
);
3008 int wcscmp(const wchar_t *cs
, const wchar_t *ct
);
3009 wchar_t* wcscpy(wchar_t* str1
, const wchar_t* str2
);
3010 size_t wcscspn(const wchar_t *str
,const wchar_t *reject
);
3011 size_t wcslen(const wchar_t *s
);
3012 wchar_t * wcsncat(wchar_t *dest
, const wchar_t *src
, size_t count
);
3013 int wcsncmp(const wchar_t *cs
, const wchar_t *ct
, size_t count
);
3014 wchar_t * wcsncpy(wchar_t *dest
, const wchar_t *src
, size_t count
);
3015 wchar_t * wcsrchr(const wchar_t *str
, wchar_t ch
);
3016 size_t wcsspn(const wchar_t *str
,const wchar_t *accept
);
3017 wchar_t *wcsstr(const wchar_t *s
,const wchar_t *b
);
3018 size_t wcstombs (char *mbstr
, const wchar_t *wcstr
, size_t count
);
3019 int wctomb (char *mbchar
, wchar_t wchar
);
3021 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
3023 #endif /* __DDK_RTL_H */