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 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator
,
1324 OUT PRTL_RANGE
*Range
,
1325 IN BOOLEAN MoveForwards
);
1329 RtlGetNtGlobalFlags (
1334 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1336 PBOOLEAN OwnerDefaulted
);
1339 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
1340 PBOOLEAN SaclPresent
,
1342 PBOOLEAN SaclDefaulted
);
1345 RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor
,
1350 RtlGetSetBootStatusData(
1360 RtlGUIDFromString (IN PUNICODE_STRING GuidString
,
1365 RtlHashUnicodeString(
1366 IN
const UNICODE_STRING
*String
,
1367 IN BOOLEAN CaseInSensitive
,
1368 IN ULONG HashAlgorithm
,
1369 OUT PULONG HashValue
1372 PSID_IDENTIFIER_AUTHORITY STDCALL
1373 RtlIdentifierAuthoritySid (PSID Sid
);
1377 RtlImageDirectoryEntryToData (
1387 IN PVOID BaseAddress
1390 PIMAGE_SECTION_HEADER
1392 RtlImageRvaToSection (
1393 PIMAGE_NT_HEADERS NtHeader
,
1401 PIMAGE_NT_HEADERS NtHeader
,
1404 PIMAGE_SECTION_HEADER
*SectionHeader
1410 PANSI_STRING DestinationString
,
1416 RtlInitCodePageTable (
1417 IN PUSHORT TableBase
,
1418 OUT PCPTABLEINFO CodePageTable
1423 RtlInitializeUnicodePrefix (
1424 PUNICODE_PREFIX_TABLE PrefixTable
1428 RtlInitializeSid (PSID Sid
,
1429 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
,
1430 UCHAR SubAuthorityCount
);
1434 RtlInitializeBitMap(
1435 IN PRTL_BITMAP BitMapHeader
,
1436 IN PULONG BitMapBuffer
,
1437 IN ULONG SizeOfBitMap
);
1442 IN PUSHORT AnsiTableBase
,
1443 IN PUSHORT OemTableBase
,
1444 IN PUSHORT CaseTableBase
,
1445 OUT PNLSTABLEINFO NlsTable
1451 PSTRING DestinationString
,
1457 RtlInitUnicodeString (
1458 PUNICODE_STRING DestinationString
,
1464 RtlInitializeBitMap (
1465 IN OUT PRTL_BITMAP BitMapHeader
,
1466 IN PULONG BitMapBuffer
,
1467 IN ULONG SizeOfBitMap
1472 RtlInitializeContext (
1473 IN HANDLE ProcessHandle
,
1474 OUT PCONTEXT ThreadContext
,
1475 IN PVOID ThreadStartParam OPTIONAL
,
1476 IN PTHREAD_START_ROUTINE ThreadStartAddress
,
1477 IN PINITIAL_TEB InitialTeb
1482 RtlInitializeGenericTable (
1483 PRTL_GENERIC_TABLE Table
,
1484 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine
,
1485 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine
,
1486 PRTL_GENERIC_FREE_ROUTINE FreeRoutine
,
1492 RtlInitializeGenericTableAvl (
1493 PRTL_AVL_TABLE Table
,
1494 PRTL_AVL_COMPARE_ROUTINE CompareRoutine
,
1495 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine
,
1496 PRTL_AVL_FREE_ROUTINE FreeRoutine
,
1501 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList
);
1505 RtlInsertElementGenericTable (
1506 PRTL_GENERIC_TABLE Table
,
1509 PBOOLEAN NewElement OPTIONAL
1514 RtlInsertElementGenericTableAvl (
1515 PRTL_AVL_TABLE Table
,
1518 PBOOLEAN NewElement OPTIONAL
1523 RtlInsertElementGenericTableFull (
1524 PRTL_GENERIC_TABLE Table
,
1527 PBOOLEAN NewElement OPTIONAL
,
1529 TABLE_SEARCH_RESULT SearchResult
1534 RtlInsertElementGenericTableFullAvl (
1535 PRTL_AVL_TABLE Table
,
1538 PBOOLEAN NewElement OPTIONAL
,
1540 TABLE_SEARCH_RESULT SearchResult
1545 RtlInsertUnicodePrefix (
1546 PUNICODE_PREFIX_TABLE PrefixTable
,
1547 PUNICODE_STRING Prefix
,
1548 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1553 RtlInt64ToUnicodeString (
1555 IN ULONG Base OPTIONAL
,
1556 IN OUT PUNICODE_STRING String
1570 RtlIntegerToUnicode(
1572 IN ULONG Base OPTIONAL
,
1573 IN ULONG Length OPTIONAL
,
1574 IN OUT LPWSTR String
1579 RtlIntegerToUnicodeString (
1582 IN OUT PUNICODE_STRING String
1586 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList
,
1587 IN PRTL_RANGE_LIST RangeList
);
1591 RtlIpv4AddressToStringA(
1598 RtlIpv4AddressToStringExA(
1607 RtlIpv4AddressToStringW(
1614 RtlIpv4AddressToStringExW(
1623 RtlIpv4StringToAddressA(
1626 OUT PVOID PtrToIpAddr
,
1632 RtlIpv4StringToAddressExA(
1641 RtlIpv4StringToAddressW(
1644 OUT PVOID PtrToIpAddr
,
1650 RtlIpv4StringToAddressExW(
1659 RtlIpv6AddressToStringA(
1666 RtlIpv6AddressToStringExA(
1675 RtlIpv6AddressToStringW(
1682 RtlIpv6AddressToStringExW(
1691 RtlIpv6StringToAddressA(
1694 OUT PVOID PtrToIpAddr
,
1700 RtlIpv6StringToAddressExA(
1709 RtlIpv6StringToAddressW(
1712 OUT PVOID PtrToIpAddr
,
1718 RtlIpv6StringToAddressExW(
1727 RtlIsGenericTableEmpty (
1728 PRTL_GENERIC_TABLE Table
1733 RtlIsGenericTableEmptyAvl (
1734 PRTL_AVL_TABLE Table
1739 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName
,
1740 IN PANSI_STRING AnsiName
,
1741 OUT PBOOLEAN SpacesFound
);
1744 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList
,
1748 IN UCHAR AttributeAvailableMask
,
1749 IN PVOID Context OPTIONAL
,
1750 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL
,
1751 OUT PBOOLEAN Available
);
1763 RtlIsValidOemCharacter (
1769 RtlLargeIntegerAdd (
1770 LARGE_INTEGER Addend1
,
1771 LARGE_INTEGER Addend2
1776 * RtlLargeIntegerAnd (
1777 * PLARGE_INTEGER Result,
1778 * LARGE_INTEGER Source,
1779 * LARGE_INTEGER Mask
1782 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1784 Result.HighPart = Source.HighPart & Mask.HighPart; \
1785 Result.LowPart = Source.LowPart & Mask.LowPart; \
1790 RtlLargeIntegerArithmeticShift (
1791 LARGE_INTEGER LargeInteger
,
1797 RtlLargeIntegerDivide (
1798 LARGE_INTEGER Dividend
,
1799 LARGE_INTEGER Divisor
,
1800 PLARGE_INTEGER Remainder
1805 * RtlLargeIntegerEqualTo (
1806 * LARGE_INTEGER Operand1,
1807 * LARGE_INTEGER Operand2
1810 #define RtlLargeIntegerEqualTo(X,Y) \
1811 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1815 * RtlLargeIntegerEqualToZero (
1816 * LARGE_INTEGER Operand
1819 #define RtlLargeIntegerEqualToZero(X) \
1820 (!((X).LowPart | (X).HighPart))
1824 * RtlLargeIntegerGreaterThan (
1825 * LARGE_INTEGER Operand1,
1826 * LARGE_INTEGER Operand2
1829 #define RtlLargeIntegerGreaterThan(X,Y) \
1830 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1831 ((X).HighPart > (Y).HighPart))
1835 * RtlLargeIntegerGreaterThanOrEqualTo (
1836 * LARGE_INTEGER Operand1,
1837 * LARGE_INTEGER Operand2
1840 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1841 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1842 ((X).HighPart > (Y).HighPart))
1846 * RtlLargeIntegerGreaterThanOrEqualToZero (
1847 * LARGE_INTEGER Operand1
1850 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1855 * RtlLargeIntegerGreaterThanZero (
1856 * LARGE_INTEGER Operand1
1859 #define RtlLargeIntegerGreaterThanZero(X) \
1860 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1861 ((X).HighPart > 0 ))
1865 * RtlLargeIntegerLessThan (
1866 * LARGE_INTEGER Operand1,
1867 * LARGE_INTEGER Operand2
1870 #define RtlLargeIntegerLessThan(X,Y) \
1871 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1872 ((X).HighPart < (Y).HighPart))
1876 * RtlLargeIntegerLessThanOrEqualTo (
1877 * LARGE_INTEGER Operand1,
1878 * LARGE_INTEGER Operand2
1881 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1882 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1883 ((X).HighPart < (Y).HighPart))
1887 * RtlLargeIntegerLessThanOrEqualToZero (
1888 * LARGE_INTEGER Operand
1891 #define RtlLargeIntegerLessOrEqualToZero(X) \
1892 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1896 * RtlLargeIntegerLessThanZero (
1897 * LARGE_INTEGER Operand
1900 #define RtlLargeIntegerLessThanZero(X) \
1901 (((X).HighPart < 0))
1905 RtlLargeIntegerNegate (
1906 LARGE_INTEGER Subtrahend
1911 * RtlLargeIntegerNotEqualTo (
1912 * LARGE_INTEGER Operand1,
1913 * LARGE_INTEGER Operand2
1916 #define RtlLargeIntegerNotEqualTo(X,Y) \
1917 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1921 * RtlLargeIntegerNotEqualToZero (
1922 * LARGE_INTEGER Operand
1925 #define RtlLargeIntegerNotEqualToZero(X) \
1926 (((X).LowPart | (X).HighPart))
1930 RtlLargeIntegerShiftLeft (
1931 LARGE_INTEGER LargeInteger
,
1937 RtlLargeIntegerShiftRight (
1938 LARGE_INTEGER LargeInteger
,
1944 RtlLargeIntegerSubtract (
1945 LARGE_INTEGER Minuend
,
1946 LARGE_INTEGER Subtrahend
1950 RtlLengthRequiredSid (UCHAR SubAuthorityCount
);
1953 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
);
1956 RtlLengthSid (PSID Sid
);
1960 RtlLockBootStatusData(
1965 RtlLockHeap (IN HANDLE Heap
);
1968 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable
,
1970 OUT PRTL_ATOM Atom
);
1974 RtlLookupElementGenericTable (
1975 PRTL_GENERIC_TABLE Table
,
1981 RtlLookupElementGenericTableAvl (
1982 PRTL_AVL_TABLE Table
,
1988 RtlLookupElementGenericTableFull (
1989 PRTL_GENERIC_TABLE Table
,
1991 OUT PVOID
*NodeOrParent
,
1992 OUT TABLE_SEARCH_RESULT
*SearchResult
1997 RtlLookupElementGenericTableFullAvl (
1998 PRTL_AVL_TABLE Table
,
2000 OUT PVOID
*NodeOrParent
,
2001 OUT TABLE_SEARCH_RESULT
*SearchResult
2005 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD
,
2006 PSECURITY_DESCRIPTOR_RELATIVE RelSD
,
2007 PULONG BufferLength
);
2010 RtlMapGenericMask (PACCESS_MASK AccessMask
,
2011 PGENERIC_MAPPING GenericMapping
);
2015 RtlMapSecurityErrorToNtStatus(
2016 IN ULONG SecurityError
2020 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList
,
2021 IN PRTL_RANGE_LIST RangeList1
,
2022 IN PRTL_RANGE_LIST RangeList2
,
2027 RtlMultiByteToUnicodeN (
2028 PWCHAR UnicodeString
,
2031 const PCHAR MbString
,
2037 RtlMultiByteToUnicodeSize (
2043 PUNICODE_PREFIX_TABLE_ENTRY
2045 RtlNextUnicodePrefix (
2046 PUNICODE_PREFIX_TABLE PrefixTable
,
2052 RtlNtStatusToDosError (
2058 RtlNtStatusToDosErrorNoTeb (
2064 RtlNtStatusToPsxErrno (
2070 RtlNumberGenericTableElements(
2071 PRTL_GENERIC_TABLE Table
2076 RtlNumberGenericTableElementsAvl (
2077 PRTL_AVL_TABLE Table
2083 RtlNumberOfClearBits (
2084 PRTL_BITMAP BitMapHeader
2089 RtlNumberOfSetBits (
2090 PRTL_BITMAP BitMapHeader
2095 RtlOemStringToUnicodeSize (
2096 POEM_STRING AnsiString
2101 RtlOemStringToUnicodeString (
2102 PUNICODE_STRING DestinationString
,
2103 POEM_STRING SourceString
,
2104 BOOLEAN AllocateDestinationString
2110 PWSTR UnicodeString
,
2111 ULONG MaxBytesInUnicodeString
,
2112 PULONG BytesInUnicodeString
,
2114 ULONG BytesInOemString
2118 RtlPinAtomInAtomTable (
2119 IN PRTL_ATOM_TABLE AtomTable
,
2125 RtlPrefetchMemoryNonTemporal(
2133 PANSI_STRING String1
,
2134 PANSI_STRING String2
,
2135 BOOLEAN CaseInsensitive
2140 RtlPrefixUnicodeString (
2141 PUNICODE_STRING String1
,
2142 PUNICODE_STRING String2
,
2143 BOOLEAN CaseInsensitive
2148 RtlQueryAtomInAtomTable (
2149 IN PRTL_ATOM_TABLE AtomTable
,
2151 IN OUT PULONG RefCount OPTIONAL
,
2152 IN OUT PULONG PinCount OPTIONAL
,
2153 IN OUT PWSTR AtomName OPTIONAL
,
2154 IN OUT PULONG NameLength OPTIONAL
2158 RtlQueryInformationAcl (PACL Acl
,
2160 ULONG InformationLength
,
2161 ACL_INFORMATION_CLASS InformationClass
);
2164 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2167 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord
);
2170 RtlRaiseStatus(NTSTATUS Status
);
2173 RtlRandom (PULONG Seed
);
2183 RtlRealPredecessor (
2184 PRTL_SPLAY_LINKS Links
2190 PRTL_SPLAY_LINKS Links
2203 RtlRemoveUnicodePrefix (
2204 PUNICODE_PREFIX_TABLE PrefixTable
,
2205 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2211 IN USHORT CompressionFormat
,
2212 IN OUT PUCHAR
*CompressedBuffer
,
2213 IN PUCHAR EndOfCompressedBufferPlus1
,
2214 OUT PUCHAR
*ChunkBuffer
,
2219 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable
);
2223 * RtlRetrieveUlong (
2224 * PULONG DestinationAddress,
2225 * PULONG SourceAddress
2228 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2229 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2231 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2232 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2233 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2234 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2238 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2243 * RtlRetrieveUshort (
2244 * PUSHORT DestinationAddress,
2245 * PUSHORT SourceAddress
2248 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2249 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2251 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2252 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2256 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2260 RtlSecondsSince1970ToTime (ULONG SecondsSince1970
,
2261 PLARGE_INTEGER Time
);
2264 RtlSecondsSince1980ToTime (ULONG SecondsSince1980
,
2265 PLARGE_INTEGER Time
);
2268 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR_RELATIVE RelSD
,
2269 PSECURITY_DESCRIPTOR AbsSD
,
2282 RtlSelfRelativeToAbsoluteSD2(
2283 PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor
,
2288 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader
);
2293 PRTL_BITMAP BitMapHeader
,
2300 PRTL_BITMAP BitMapHeader
,
2301 ULONG StartingIndex
,
2306 RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
2307 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest
,
2308 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
);
2311 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2312 BOOLEAN DaclPresent
,
2314 BOOLEAN DaclDefaulted
);
2317 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2319 BOOLEAN GroupDefaulted
);
2322 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2324 BOOLEAN OwnerDefaulted
);
2327 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor
,
2328 BOOLEAN SaclPresent
,
2330 BOOLEAN SaclDefaulted
);
2333 RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor
,
2337 RtlSetInformationAcl (PACL Acl
,
2339 ULONG InformationLength
,
2340 ACL_INFORMATION_CLASS InformationClass
);
2343 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
);
2347 IN PVOID HeapHandle
,
2349 IN PVOID MemoryPointer
2355 PRTL_SPLAY_LINKS Links
2365 #define RtlStoreUlong(Address,Value) \
2366 if ((ULONG_PTR)(Address) & LONG_MASK) \
2368 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2369 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2370 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2371 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2375 *((PULONG)(Address))=(ULONG)(Value); \
2385 #define RtlStoreUshort(Address,Value) \
2386 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2388 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2389 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2393 *((PUSHORT)(Address))=(USHORT)(Value); \
2397 RtlStringFromGUID (IN REFGUID Guid
,
2398 OUT PUNICODE_STRING GuidString
);
2401 RtlSubAuthoritySid (PSID Sid
,
2402 ULONG SubAuthority
);
2405 RtlSubAuthoritySid (PSID Sid
,
2406 ULONG SubAuthority
);
2409 RtlSubAuthorityCountSid (PSID Sid
);
2413 RtlSubtreePredecessor (
2414 PRTL_SPLAY_LINKS Links
2419 RtlSubtreeSuccessor (
2420 PRTL_SPLAY_LINKS Links
2426 PRTL_BITMAP BitMapHeader
,
2432 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields
,
2433 PLARGE_INTEGER Time
);
2437 RtlTimeToSecondsSince1970 (
2438 PLARGE_INTEGER Time
,
2439 PULONG SecondsSince1970
2444 RtlTimeToSecondsSince1980 (
2445 PLARGE_INTEGER Time
,
2446 PULONG SecondsSince1980
2451 RtlTimeToElapsedTimeFields(
2452 PLARGE_INTEGER Time
,
2453 PTIME_FIELDS TimeFields
2458 RtlTimeToTimeFields (
2459 PLARGE_INTEGER Time
,
2460 PTIME_FIELDS TimeFields
2465 RtlUlongByteSwap (IN ULONG Source
);
2468 RtlUlonglongByteSwap (IN ULONGLONG Source
);
2472 RtlUnicodeStringToAnsiSize (
2473 IN PUNICODE_STRING UnicodeString
2478 RtlUnicodeStringToAnsiString (
2479 IN OUT PANSI_STRING DestinationString
,
2480 IN PUNICODE_STRING SourceString
,
2481 IN BOOLEAN AllocateDestinationString
2486 RtlUnicodeStringToInteger (
2487 IN PUNICODE_STRING String
,
2494 RtlUnicodeStringToOemSize (
2495 IN PUNICODE_STRING UnicodeString
2500 RtlUnicodeStringToCountedOemString (
2501 IN OUT POEM_STRING DestinationString
,
2502 IN PUNICODE_STRING SourceString
,
2503 IN BOOLEAN AllocateDestinationString
2508 RtlUnicodeStringToOemString (
2509 IN OUT POEM_STRING DestinationString
,
2510 IN PUNICODE_STRING SourceString
,
2511 IN BOOLEAN AllocateDestinationString
2516 RtlUnicodeToCustomCPN (
2517 IN PCPTABLEINFO CustomCP
,
2521 PWCHAR UnicodeString
,
2527 RtlUnicodeToMultiByteN (
2531 PWCHAR UnicodeString
,
2537 RtlUnicodeToMultiByteSize (
2539 PWCHAR UnicodeString
,
2549 PWCHAR UnicodeString
,
2554 RtlUniform (PULONG Seed
);
2557 RtlUnlockHeap (IN HANDLE Heap
);
2561 RtlUnlockBootStatusData(
2568 PEXCEPTION_REGISTRATION RegistrationFrame
,
2569 PVOID ReturnAddress
,
2570 PEXCEPTION_RECORD ExceptionRecord
,
2576 RtlUpcaseUnicodeChar (
2582 RtlUpcaseUnicodeString (
2583 IN OUT PUNICODE_STRING DestinationString
,
2584 IN PCUNICODE_STRING SourceString
,
2585 IN BOOLEAN AllocateDestinationString
2590 RtlUpcaseUnicodeStringToAnsiString (
2591 IN OUT PANSI_STRING DestinationString
,
2592 IN PUNICODE_STRING SourceString
,
2593 IN BOOLEAN AllocateDestinationString
2598 RtlUpcaseUnicodeStringToCountedOemString (
2599 IN OUT POEM_STRING DestinationString
,
2600 IN PUNICODE_STRING SourceString
,
2601 IN BOOLEAN AllocateDestinationString
2606 RtlUpcaseUnicodeStringToOemString (
2607 IN OUT POEM_STRING DestinationString
,
2608 IN PUNICODE_STRING SourceString
,
2609 IN BOOLEAN AllocateDestinationString
2614 RtlUpcaseUnicodeToCustomCPN (
2615 IN PCPTABLEINFO CustomCP
,
2619 PWCHAR UnicodeString
,
2625 RtlUpcaseUnicodeToMultiByteN (
2629 PWCHAR UnicodeString
,
2635 RtlUpcaseUnicodeToOemN (
2639 PWCHAR UnicodeString
,
2644 RtlUpperChar (CHAR Source
);
2647 RtlUpperString (PSTRING DestinationString
,
2648 PSTRING SourceString
);
2651 RtlUshortByteSwap (IN USHORT Source
);
2654 RtlValidAcl (PACL Acl
);
2665 RtlValidRelativeSecurityDescriptor (
2666 IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput
,
2667 IN ULONG SecurityDescriptorLength
,
2668 IN SECURITY_INFORMATION RequiredInformation
2672 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
2675 RtlValidSid (IN PSID Sid
);
2680 RtlVerifyVersionInfo(
2681 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2683 IN ULONGLONG ConditionMask
2689 RtlVolumeDeviceToDosName(
2690 IN PVOID VolumeDeviceObject
,
2691 OUT PUNICODE_STRING DosName
2704 IN PVOID HeapHandle
,
2710 RtlxAnsiStringToUnicodeSize (
2711 IN PANSI_STRING AnsiString
2716 RtlxOemStringToUnicodeSize (
2717 IN POEM_STRING OemString
2722 RtlxUnicodeStringToAnsiSize (
2723 IN PUNICODE_STRING UnicodeString
2728 RtlxUnicodeStringToOemSize (
2729 IN PUNICODE_STRING UnicodeString
2734 RtlpOemStringToCountedUnicodeString(
2735 IN OUT PUNICODE_STRING UniDest
,
2736 IN POEM_STRING OemSource
,
2737 IN BOOLEAN AllocateDestinationString
,
2738 IN POOL_TYPE PoolType
);
2742 RtlpUpcaseUnicodeString(
2743 IN OUT PUNICODE_STRING UniDest
,
2744 IN PCUNICODE_STRING UniSource
,
2745 IN BOOLEAN AllocateDestinationString
,
2746 IN POOL_TYPE PoolType
);
2750 RtlpUpcaseUnicodeStringToAnsiString(
2751 IN OUT PANSI_STRING AnsiDest
,
2752 IN PUNICODE_STRING UniSource
,
2753 IN BOOLEAN AllocateDestinationString
,
2754 IN POOL_TYPE PoolType
);
2758 RtlpUpcaseUnicodeStringToCountedOemString(
2759 IN OUT POEM_STRING OemDest
,
2760 IN PUNICODE_STRING UniSource
,
2761 IN BOOLEAN AllocateDestinationString
,
2762 IN POOL_TYPE PoolType
);
2766 RtlpUpcaseUnicodeStringToOemString (
2767 IN OUT POEM_STRING OemDest
,
2768 IN PUNICODE_STRING UniSource
,
2769 IN BOOLEAN AllocateDestinationString
,
2770 IN POOL_TYPE PoolType
);
2774 RtlpDowncaseUnicodeString(
2775 IN OUT PUNICODE_STRING UniDest
,
2776 IN PUNICODE_STRING UniSource
,
2777 IN BOOLEAN AllocateDestinationString
,
2778 IN POOL_TYPE PoolType
);
2782 RtlpAnsiStringToUnicodeString(
2783 IN OUT PUNICODE_STRING DestinationString
,
2784 IN PANSI_STRING SourceString
,
2785 IN BOOLEAN AllocateDestinationString
,
2786 IN POOL_TYPE PoolType
);
2790 RtlpUnicodeStringToAnsiString(
2791 IN OUT PANSI_STRING AnsiDest
,
2792 IN PUNICODE_STRING UniSource
,
2793 IN BOOLEAN AllocateDestinationString
,
2794 IN POOL_TYPE PoolType
);
2798 RtlpOemStringToUnicodeString(
2799 IN OUT PUNICODE_STRING UniDest
,
2800 IN POEM_STRING OemSource
,
2801 IN BOOLEAN AllocateDestinationString
,
2802 IN POOL_TYPE PoolType
);
2806 RtlpUnicodeStringToOemString(
2807 IN OUT POEM_STRING OemDest
,
2808 IN PUNICODE_STRING UniSource
,
2809 IN BOOLEAN AllocateDestinationString
,
2810 IN POOL_TYPE PoolType
);
2814 RtlpCreateUnicodeString(
2815 IN OUT PUNICODE_STRING UniDest
,
2817 IN POOL_TYPE PoolType
);
2821 RtlpUnicodeStringToCountedOemString(
2822 IN OUT POEM_STRING OemDest
,
2823 IN PUNICODE_STRING UniSource
,
2824 IN BOOLEAN AllocateDestinationString
,
2825 IN POOL_TYPE PoolType
);
2828 RtlpDuplicateUnicodeString(
2830 IN PUNICODE_STRING SourceString
,
2831 PUNICODE_STRING DestinationString
,
2832 POOL_TYPE PoolType
);
2834 /* Register io functions */
2838 READ_REGISTER_UCHAR (
2844 READ_REGISTER_USHORT (
2850 READ_REGISTER_ULONG (
2856 READ_REGISTER_BUFFER_UCHAR (
2864 READ_REGISTER_BUFFER_USHORT (
2872 READ_REGISTER_BUFFER_ULONG (
2880 WRITE_REGISTER_UCHAR (
2887 WRITE_REGISTER_USHORT (
2894 WRITE_REGISTER_ULONG (
2901 WRITE_REGISTER_BUFFER_UCHAR (
2909 WRITE_REGISTER_BUFFER_USHORT (
2917 WRITE_REGISTER_BUFFER_ULONG (
2924 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2926 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2928 char *_itoa (int value
, char *string
, int radix
);
2929 wchar_t *_itow (int value
, wchar_t *string
, int radix
);
2930 int _snprintf(char * buf
, size_t cnt
, const char *fmt
, ...);
2931 int _snwprintf(wchar_t *buf
, size_t cnt
, const wchar_t *fmt
, ...);
2932 int _stricmp(const char *s1
, const char *s2
);
2933 char * _strlwr(char *x
);
2934 int _strnicmp(const char *s1
, const char *s2
, size_t n
);
2935 char * _strnset(char* szToFill
, int szFill
, size_t sizeMaxFill
);
2936 char * _strrev(char *s
);
2937 char * _strset(char* szToFill
, int szFill
);
2938 char * _strupr(char *x
);
2939 int _vsnprintf(char *buf
, size_t cnt
, const char *fmt
, va_list args
);
2940 int _wcsicmp (const wchar_t* cs
, const wchar_t* ct
);
2941 wchar_t * _wcslwr (wchar_t *x
);
2942 int _wcsnicmp (const wchar_t * cs
,const wchar_t * ct
,size_t count
);
2943 wchar_t* _wcsnset (wchar_t* wsToFill
, wchar_t wcFill
, size_t sizeMaxFill
);
2944 wchar_t * _wcsrev(wchar_t *s
);
2945 wchar_t *_wcsupr(wchar_t *x
);
2947 int atoi(const char *str
);
2948 long atol(const char *str
);
2954 int isxdigit(int c
);
2955 size_t mbstowcs (wchar_t *wcstr
, const char *mbstr
, size_t count
);
2956 int mbtowc (wchar_t *wchar
, const char *mbchar
, size_t count
);
2957 void * memchr(const void *s
, int c
, size_t n
);
2958 void * memcpy(void *to
, const void *from
, size_t count
);
2959 void * memmove(void *dest
,const void *src
, size_t count
);
2960 void * memset(void *src
, int val
, size_t count
);
2967 int sprintf(char * buf
, const char *fmt
, ...);
2968 void srand(unsigned seed
);
2969 char * strcat(char *s
, const char *append
);
2970 char * strchr(const char *s
, int c
);
2971 int strcmp(const char *s1
, const char *s2
);
2972 char * strcpy(char *to
, const char *from
);
2973 size_t strlen(const char *str
);
2974 char * strncat(char *dst
, const char *src
, size_t n
);
2975 int strncmp(const char *s1
, const char *s2
, size_t n
);
2976 char *strncpy(char *dst
, const char *src
, size_t n
);
2977 char *strrchr(const char *s
, int c
);
2978 size_t strspn(const char *s1
, const char *s2
);
2979 char *strstr(const char *s
, const char *find
);
2980 int swprintf(wchar_t *buf
, const wchar_t *fmt
, ...);
2983 wchar_t towlower(wchar_t c
);
2984 wchar_t towupper(wchar_t c
);
2985 int vsprintf(char *buf
, const char *fmt
, va_list args
);
2986 wchar_t * wcscat(wchar_t *dest
, const wchar_t *src
);
2987 wchar_t * wcschr(const wchar_t *str
, wchar_t ch
);
2988 int wcscmp(const wchar_t *cs
, const wchar_t *ct
);
2989 wchar_t* wcscpy(wchar_t* str1
, const wchar_t* str2
);
2990 size_t wcscspn(const wchar_t *str
,const wchar_t *reject
);
2991 size_t wcslen(const wchar_t *s
);
2992 wchar_t * wcsncat(wchar_t *dest
, const wchar_t *src
, size_t count
);
2993 int wcsncmp(const wchar_t *cs
, const wchar_t *ct
, size_t count
);
2994 wchar_t * wcsncpy(wchar_t *dest
, const wchar_t *src
, size_t count
);
2995 wchar_t * wcsrchr(const wchar_t *str
, wchar_t ch
);
2996 size_t wcsspn(const wchar_t *str
,const wchar_t *accept
);
2997 wchar_t *wcsstr(const wchar_t *s
,const wchar_t *b
);
2998 size_t wcstombs (char *mbstr
, const wchar_t *wcstr
, size_t count
);
2999 int wctomb (char *mbchar
, wchar_t wchar
);
3001 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
3003 #endif /* __DDK_RTL_H */