ReactOS 0.4.16-dev-736-g28b802b
rtlfuncs.h
Go to the documentation of this file.
1/******************************************************************************
2 * Runtime Library Functions *
3 ******************************************************************************/
4
6#define FAST_FAIL_LEGACY_GS_VIOLATION 0
7#define FAST_FAIL_VTGUARD_CHECK_FAILURE 1
8#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2
9#define FAST_FAIL_CORRUPT_LIST_ENTRY 3
10#define FAST_FAIL_INCORRECT_STACK 4
11#define FAST_FAIL_INVALID_ARG 5
12#define FAST_FAIL_GS_COOKIE_INIT 6
13#define FAST_FAIL_FATAL_APP_EXIT 7
14#define FAST_FAIL_RANGE_CHECK_FAILURE 8
15#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9
16#define FAST_FAIL_GUARD_ICALL_CHECK_FAILURE 10
17#define FAST_FAIL_GUARD_WRITE_CHECK_FAILURE 11
18#define FAST_FAIL_INVALID_FIBER_SWITCH 12
19#define FAST_FAIL_INVALID_SET_OF_CONTEXT 13
20#define FAST_FAIL_INVALID_REFERENCE_COUNT 14
21#define FAST_FAIL_INVALID_JUMP_BUFFER 18
22#define FAST_FAIL_MRDATA_MODIFIED 19
23#define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xFFFFFFFF
24
27VOID
28RtlFailFast(
30{
32}
33
36
37#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && (defined(_M_CEE_PURE) || defined(_M_CEE_SAFE))
38#define NO_KERNEL_LIST_ENTRY_CHECKS
39#endif
40
41#if !defined(EXTRA_KERNEL_LIST_ENTRY_CHECKS) && defined(__REACTOS__)
42#define EXTRA_KERNEL_LIST_ENTRY_CHECKS
43#endif
44
45#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
46
47#define RTL_STATIC_LIST_HEAD(x) LIST_ENTRY x = { &x, &x }
48
50VOID
52 _Out_ PLIST_ENTRY ListHead)
53{
54 ListHead->Flink = ListHead->Blink = ListHead;
55}
56
61 _In_ const LIST_ENTRY * ListHead)
62{
63 return (BOOLEAN)(ListHead->Flink == ListHead);
64}
65
70{
71 PLIST_ENTRY OldFlink;
72 PLIST_ENTRY OldBlink;
73
74 OldFlink = Entry->Flink;
75 OldBlink = Entry->Blink;
76 OldFlink->Blink = OldBlink;
77 OldBlink->Flink = OldFlink;
78 return (BOOLEAN)(OldFlink == OldBlink);
79}
80
81#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
83VOID
85 _In_ PVOID P1,
86 _In_ PVOID P2,
87 _In_ PVOID P3)
88{
92
94}
95
97VOID
100{
101 if (Entry->Flink->Blink != Entry || Entry->Blink->Flink != Entry)
102 FatalListEntryError(Entry->Blink, Entry, Entry->Flink);
103}
104#endif
105
110{
111 PLIST_ENTRY OldFlink;
112 PLIST_ENTRY OldBlink;
113
114 OldFlink = Entry->Flink;
115 OldBlink = Entry->Blink;
116#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
117#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
118 if (OldFlink == Entry || OldBlink == Entry)
119 FatalListEntryError(OldBlink, Entry, OldFlink);
120#endif
121 if (OldFlink->Blink != Entry || OldBlink->Flink != Entry)
122 FatalListEntryError(OldBlink, Entry, OldFlink);
123#endif
124 OldFlink->Blink = OldBlink;
125 OldBlink->Flink = OldFlink;
126 return (BOOLEAN)(OldFlink == OldBlink);
127}
128
132 _Inout_ PLIST_ENTRY ListHead)
133{
134 PLIST_ENTRY Flink;
136
137#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
138 RtlpCheckListEntry(ListHead);
139#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
140 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
141 FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
142#endif
143#endif
144 Entry = ListHead->Flink;
145 Flink = Entry->Flink;
146#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
147 if (Entry->Blink != ListHead || Flink->Blink != Entry)
148 FatalListEntryError(ListHead, Entry, Flink);
149#endif
150 ListHead->Flink = Flink;
151 Flink->Blink = ListHead;
152 return Entry;
153}
154
158 _Inout_ PLIST_ENTRY ListHead)
159{
160 PLIST_ENTRY Blink;
162
163#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
164 RtlpCheckListEntry(ListHead);
165#ifdef EXTRA_KERNEL_LIST_ENTRY_CHECKS
166 if (ListHead->Flink == ListHead || ListHead->Blink == ListHead)
167 FatalListEntryError(ListHead->Blink, ListHead, ListHead->Flink);
168#endif
169#endif
170 Entry = ListHead->Blink;
171 Blink = Entry->Blink;
172#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
173 if (Blink->Flink != Entry || Entry->Flink != ListHead)
174 FatalListEntryError(Blink, Entry, ListHead);
175#endif
176 ListHead->Blink = Blink;
177 Blink->Flink = ListHead;
178 return Entry;
179}
180
182VOID
184 _Inout_ PLIST_ENTRY ListHead,
186{
187 PLIST_ENTRY OldBlink;
188#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
189 RtlpCheckListEntry(ListHead);
190#endif
191 OldBlink = ListHead->Blink;
192 Entry->Flink = ListHead;
193 Entry->Blink = OldBlink;
194#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
195 if (OldBlink->Flink != ListHead)
196 FatalListEntryError(OldBlink->Blink, OldBlink, ListHead);
197#endif
198 OldBlink->Flink = Entry;
199 ListHead->Blink = Entry;
200}
201
203VOID
205 _Inout_ PLIST_ENTRY ListHead,
207{
208 PLIST_ENTRY OldFlink;
209#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS) && DBG
210 RtlpCheckListEntry(ListHead);
211#endif
212 OldFlink = ListHead->Flink;
213 Entry->Flink = OldFlink;
214 Entry->Blink = ListHead;
215#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
216 if (OldFlink->Blink != ListHead)
217 FatalListEntryError(ListHead, OldFlink, OldFlink->Flink);
218#endif
219 OldFlink->Blink = Entry;
220 ListHead->Flink = Entry;
221}
222
224VOID
226 _Inout_ PLIST_ENTRY ListHead,
227 _Inout_ PLIST_ENTRY ListToAppend)
228{
229 PLIST_ENTRY ListEnd = ListHead->Blink;
230
231#if !defined(NO_KERNEL_LIST_ENTRY_CHECKS)
232 RtlpCheckListEntry(ListHead);
233 RtlpCheckListEntry(ListToAppend);
234#endif
235 ListHead->Blink->Flink = ListToAppend;
236 ListHead->Blink = ListToAppend->Blink;
237 ListToAppend->Blink->Flink = ListHead;
238 ListToAppend->Blink = ListEnd;
239}
240
245{
246 PSINGLE_LIST_ENTRY FirstEntry;
247 FirstEntry = ListHead->Next;
248 if (FirstEntry != NULL) {
249 ListHead->Next = FirstEntry->Next;
250 }
251 return FirstEntry;
252}
253
255VOID
259{
260 Entry->Next = ListHead->Next;
261 ListHead->Next = Entry;
262}
263
264#endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */
265
268VOID
269NTAPI
271 _In_ PVOID FailedAssertion,
275
276/* VOID
277 * RtlCopyMemory(
278 * IN VOID UNALIGNED *Destination,
279 * IN CONST VOID UNALIGNED *Source,
280 * IN SIZE_T Length)
281 */
282#define RtlCopyMemory(Destination, Source, Length) \
283 memcpy(Destination, Source, Length)
284
285#define RtlCopyBytes RtlCopyMemory
286
287#if defined(_M_AMD64)
289VOID
290NTAPI
295#else
296#define RtlCopyMemoryNonTemporal RtlCopyMemory
297#endif
298
299/* BOOLEAN
300 * RtlEqualLuid(
301 * IN PLUID Luid1,
302 * IN PLUID Luid2)
303 */
304#define RtlEqualLuid(Luid1, Luid2) \
305 (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart))
306
307/* LOGICAL
308 * RtlEqualMemory(
309 * IN VOID UNALIGNED *Destination,
310 * IN CONST VOID UNALIGNED *Source,
311 * IN SIZE_T Length)
312 */
313#define RtlEqualMemory(Destination, Source, Length) \
314 (!memcmp(Destination, Source, Length))
315
316/* VOID
317 * RtlFillMemory(
318 * IN VOID UNALIGNED *Destination,
319 * IN SIZE_T Length,
320 * IN UCHAR Fill)
321 */
322#define RtlFillMemory(Destination, Length, Fill) \
323 memset(Destination, Fill, Length)
324
325#define RtlFillBytes RtlFillMemory
326
329VOID
330NTAPI
334
339NTAPI
343
347_At_(DestinationString->Length, _Post_equal_to_(_String_length_(SourceString) * sizeof(WCHAR)))
353VOID
354NTAPI
358
359/* VOID
360 * RtlMoveMemory(
361 * IN VOID UNALIGNED *Destination,
362 * IN CONST VOID UNALIGNED *Source,
363 * IN SIZE_T Length)
364 */
365#define RtlMoveMemory(Destination, Source, Length) \
366 memmove(Destination, Source, Length)
367
372NTAPI
377
378/* VOID
379 * RtlZeroMemory(
380 * IN VOID UNALIGNED *Destination,
381 * IN SIZE_T Length)
382 */
383#define RtlZeroMemory(Destination, Length) \
384 memset(Destination, 0, Length)
385
386#define RtlZeroBytes RtlZeroMemory
388
389#if (NTDDI_VERSION >= NTDDI_WIN2K)
390
395NTAPI
397 _In_ PRTL_BITMAP BitMapHeader,
400
404NTAPI
406 _In_ PRTL_BITMAP BitMapHeader,
409
414NTAPI
421
424ULONG
425NTAPI
428
429#define RtlAnsiStringToUnicodeSize(String) ( \
430 NLS_MB_CODE_PAGE_TAG ? \
431 RtlxAnsiStringToUnicodeSize(String) : \
432 ((String)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
433)
434
440 _At_(return, _Out_range_(==, 0)))
443 _At_(return, _Out_range_(<, 0)))
446NTAPI
450
451_Success_(1)
454/* _When_(_Old_(Destination->Length) + _String_length_(Source) * sizeof(WCHAR) <= Destination->MaximumLength,
455 _At_(Destination->Length, _Post_equal_to_(_Old_(Destination->Length) + _String_length_(Source) * sizeof(WCHAR)))
456 _At_(return, _Out_range_(==, 0)))
457_When_(_Old_(Destination->Length) + _String_length_(Source) * sizeof(WCHAR) > Destination->MaximumLength,
458 _Unchanged_(Destination->Length)
459 _At_(return, _Out_range_(<, 0))) */
462NTAPI
466
471NTAPI
473 _In_ ULONG RelativeTo,
475
477VOID
478NTAPI
480 _In_ PRTL_BITMAP BitMapHeader);
481
483VOID
484NTAPI
486 _In_ PRTL_BITMAP BitMapHeader,
487 _In_range_(0, BitMapHeader->SizeOfBitMap - NumberToClear) ULONG StartingIndex,
488 _In_range_(0, BitMapHeader->SizeOfBitMap - StartingIndex) ULONG NumberToClear);
489
492SIZE_T
493NTAPI
495 _In_ const VOID *Source1,
496 _In_ const VOID *Source2,
498
502LONG
503NTAPI
505 _In_ PCUNICODE_STRING String1,
508
512LONG
513NTAPI
520
529VOID
530NTAPI
534
538NTAPI
540 _In_ ULONG RelativeTo,
541 _In_ PWSTR Path);
542
546NTAPI
550
554NTAPI
556 _In_ ULONG RelativeTo,
559
564NTAPI
566 _In_ CONST UNICODE_STRING *String1,
569
570#if !defined(_AMD64_) && !defined(_IA64_)
573NTAPI
575 _In_ LARGE_INTEGER Multiplicand,
576 _In_ LONG Multiplier);
577
580NTAPI
582 _In_ LARGE_INTEGER Dividend,
585#endif
586
587#if defined(_X86_) || defined(_IA64_)
590NTAPI
592 _In_ LARGE_INTEGER Dividend,
593 _In_ LARGE_INTEGER MagicDivisor,
594 _In_ CCHAR ShiftCount);
595#endif
596
599VOID
600NTAPI
604
605_Success_(return != -1)
608ULONG
609NTAPI
611 _In_ PRTL_BITMAP BitMapHeader,
614
615_Success_(return != -1)
617ULONG
618NTAPI
620 _In_ PRTL_BITMAP BitMapHeader,
623
625ULONG
626NTAPI
628 _In_ PRTL_BITMAP BitMapHeader,
630
632ULONG
633NTAPI
635 _In_ PRTL_BITMAP BitMapHeader,
636 _Out_writes_to_(SizeOfRunArray, return) PRTL_BITMAP_RUN RunArray,
637 _In_range_(>, 0) ULONG SizeOfRunArray,
638 _In_ BOOLEAN LocateLongestRuns);
639
641ULONG
642NTAPI
644 _In_ PRTL_BITMAP BitMapHeader,
645 _In_ ULONG FromIndex,
646 _Out_ PULONG StartingRunIndex);
647
648_Success_(return != -1)
651CCHAR
652NTAPI
655
657ULONG
658NTAPI
660 _In_ PRTL_BITMAP BitMapHeader,
662
663_Success_(return != -1)
666CCHAR
667NTAPI
670
672ULONG
673NTAPI
675 _In_ PRTL_BITMAP BitMapHeader,
676 _In_ ULONG FromIndex,
677 _Out_ PULONG StartingRunIndex);
678
680ULONG
681NTAPI
683 _In_ PRTL_BITMAP BitMapHeader,
684 _In_ ULONG FromIndex,
685 _Out_ PULONG StartingRunIndex);
686
687_Success_(return != -1)
690ULONG
691NTAPI
693 _In_ PRTL_BITMAP BitMapHeader,
696
697_Success_(return != -1)
699ULONG
700NTAPI
702 _In_ PRTL_BITMAP BitMapHeader,
705
708VOID
709NTAPI
713
714_At_(BitMapHeader->SizeOfBitMap, _Post_equal_to_(SizeOfBitMap))
715_At_(BitMapHeader->Buffer, _Post_equal_to_(BitMapBuffer))
717VOID
718NTAPI
720 _Out_ PRTL_BITMAP BitMapHeader,
721 _In_opt_ __drv_aliasesMem PULONG BitMapBuffer,
722 _In_opt_ ULONG SizeOfBitMap);
723
726VOID
727NTAPI
731
736NTAPI
741
746NTAPI
751
752#ifdef _WIN64
753#define RtlIntPtrToUnicodeString(Value, Base, String) \
754 RtlInt64ToUnicodeString(Value, Base, String)
755#else
756#define RtlIntPtrToUnicodeString(Value, Base, String) \
757 RtlIntegerToUnicodeString(Value, Base, String)
758#endif
759
760/* BOOLEAN
761 * RtlIsZeroLuid(
762 * IN PLUID L1);
763 */
764#define RtlIsZeroLuid(_L1) \
765 ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
766
769ULONG
770NTAPI
773
775ULONG
776NTAPI
778 _In_ PRTL_BITMAP BitMapHeader);
779
781ULONG
782NTAPI
784 _In_ PRTL_BITMAP BitMapHeader);
785
789NTAPI
791 _In_ ULONG RelativeTo,
793 _Inout_ _At_(*(*QueryTable).EntryContext, _Pre_unknown_)
797
798#define SHORT_SIZE (sizeof(USHORT))
799#define SHORT_MASK (SHORT_SIZE - 1)
800#define LONG_SIZE (sizeof(LONG))
801#define LONGLONG_SIZE (sizeof(LONGLONG))
802#define LONG_MASK (LONG_SIZE - 1)
803#define LONGLONG_MASK (LONGLONG_SIZE - 1)
804#define LOWBYTE_MASK 0x00FF
805
806#define FIRSTBYTE(VALUE) ((VALUE) & LOWBYTE_MASK)
807#define SECONDBYTE(VALUE) (((VALUE) >> 8) & LOWBYTE_MASK)
808#define THIRDBYTE(VALUE) (((VALUE) >> 16) & LOWBYTE_MASK)
809#define FOURTHBYTE(VALUE) (((VALUE) >> 24) & LOWBYTE_MASK)
810
812VOID
813NTAPI
815 _In_ PRTL_BITMAP BitMapHeader);
816
818VOID
819NTAPI
821 _In_ PRTL_BITMAP BitMapHeader,
822 _In_range_(0, BitMapHeader->SizeOfBitMap - NumberToSet) ULONG StartingIndex,
823 _In_range_(0, BitMapHeader->SizeOfBitMap - StartingIndex) ULONG NumberToSet);
824
828NTAPI
834
835//
836// These functions are really bad and shouldn't be used.
837// They have no type checking and can easily overwrite the target
838// variable or only set half of it.
839// Use Read/WriteUnalignedU16/U32/U64 from reactos/unaligned.h instead.
840//
841#if defined(_AMD64_) || defined(_M_AMD64) || defined(_X86) || defined(_M_IX86)
842
843/* VOID
844 * RtlStoreUlong(
845 * IN PULONG Address,
846 * IN ULONG Value);
847 */
848#define RtlStoreUlong(Address,Value) \
849 *(ULONG UNALIGNED *)(Address) = (Value)
850
851/* VOID
852 * RtlStoreUlonglong(
853 * IN OUT PULONGLONG Address,
854 * ULONGLONG Value);
855 */
856#define RtlStoreUlonglong(Address,Value) \
857 *(ULONGLONG UNALIGNED *)(Address) = (Value)
858
859/* VOID
860 * RtlStoreUshort(
861 * IN PUSHORT Address,
862 * IN USHORT Value);
863 */
864#define RtlStoreUshort(Address,Value) \
865 *(USHORT UNALIGNED *)(Address) = (Value)
866
867/* VOID
868 * RtlRetrieveUshort(
869 * PUSHORT DestinationAddress,
870 * PUSHORT SourceAddress);
871 */
872#define RtlRetrieveUshort(DestAddress,SrcAddress) \
873 *(USHORT*)(DestAddress) = *(USHORT UNALIGNED *)(SrcAddress)
874
875/* VOID
876 * RtlRetrieveUlong(
877 * PULONG DestinationAddress,
878 * PULONG SourceAddress);
879 */
880#define RtlRetrieveUlong(DestAddress,SrcAddress) \
881 *(ULONG*)(DestAddress) = *(ULONG UNALIGNED *)(SrcAddress)
882
883#else
884
885#define RtlStoreUlong(Address,Value) \
886 if ((ULONG_PTR)(Address) & LONG_MASK) { \
887 ((PUCHAR) (Address))[LONG_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \
888 ((PUCHAR) (Address))[LONG_3RD_MOST_SIGNIFICANT_BIT] = (UCHAR)(SECONDBYTE(Value)); \
889 ((PUCHAR) (Address))[LONG_2ND_MOST_SIGNIFICANT_BIT] = (UCHAR)(THIRDBYTE(Value)); \
890 ((PUCHAR) (Address))[LONG_MOST_SIGNIFICANT_BIT] = (UCHAR)(FOURTHBYTE(Value)); \
891 } \
892 else { \
893 *((PULONG)(Address)) = (ULONG) (Value); \
894 }
895
896#define RtlStoreUlonglong(Address,Value) \
897 if ((ULONG_PTR)(Address) & LONGLONG_MASK) { \
898 RtlStoreUlong((ULONG_PTR)(Address), \
899 (ULONGLONG)(Value) & 0xFFFFFFFF); \
900 RtlStoreUlong((ULONG_PTR)(Address)+sizeof(ULONG), \
901 (ULONGLONG)(Value) >> 32); \
902 } else { \
903 *((PULONGLONG)(Address)) = (ULONGLONG)(Value); \
904 }
905
906#define RtlStoreUshort(Address,Value) \
907 if ((ULONG_PTR)(Address) & SHORT_MASK) { \
908 ((PUCHAR) (Address))[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(Value)); \
909 ((PUCHAR) (Address))[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(Value)); \
910 } \
911 else { \
912 *((PUSHORT) (Address)) = (USHORT)Value; \
913 }
914
915#define RtlRetrieveUshort(DestAddress,SrcAddress) \
916 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
917 { \
918 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
919 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
920 } \
921 else \
922 { \
923 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
924 }
925
926#define RtlRetrieveUlong(DestAddress,SrcAddress) \
927 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
928 { \
929 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
930 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
931 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
932 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
933 } \
934 else \
935 { \
936 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
937 }
938
939#endif /* defined(_AMD64_) || defined(_M_AMD64) || defined(_X86) || defined(_M_IX86) */
940
941#ifdef _WIN64
942/* VOID
943 * RtlStoreUlongPtr(
944 * IN OUT PULONG_PTR Address,
945 * IN ULONG_PTR Value);
946 */
947#define RtlStoreUlongPtr(Address,Value) RtlStoreUlonglong(Address,Value)
948#else
949#define RtlStoreUlongPtr(Address,Value) RtlStoreUlong(Address,Value)
950#endif /* _WIN64 */
951
952_Success_(return != FALSE)
955NTAPI
959
961VOID
962NTAPI
966
968USHORT
972
974ULONG
978
984
987 _Out_range_(<=, (SourceString->MaximumLength / sizeof(WCHAR)))))
995NTAPI
1002
1007NTAPI
1014
1017ULONG
1018NTAPI
1021
1022#define RtlUnicodeStringToAnsiSize(String) ( \
1023 NLS_MB_CODE_PAGE_TAG ? \
1024 RtlxUnicodeStringToAnsiSize(String) : \
1025 ((String)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
1026)
1027
1031NTAPI
1036
1039WCHAR
1040NTAPI
1042 _In_ WCHAR SourceCharacter);
1043
1047BOOLEAN
1048NTAPI
1053
1057BOOLEAN
1058NTAPI
1061
1065NTAPI
1067 _Out_
1068 _At_(lpVersionInformation->dwOSVersionInfoSize, _Pre_ _Valid_)
1069 _When_(lpVersionInformation->dwOSVersionInfoSize == sizeof(RTL_OSVERSIONINFOEXW),
1070 _At_((PRTL_OSVERSIONINFOEXW)lpVersionInformation, _Out_))
1071 PRTL_OSVERSIONINFOW lpVersionInformation);
1072
1077NTAPI
1082
1086NTAPI
1088 _In_ ULONG RelativeTo,
1094
1096$if (_NTDDK_)
1097
1098#ifndef RTL_USE_AVL_TABLES
1099
1101VOID
1102NTAPI
1109
1111PVOID
1112NTAPI
1117 _Out_opt_ PBOOLEAN NewElement);
1118
1120PVOID
1121NTAPI
1126 _Out_opt_ PBOOLEAN NewElement,
1127 _In_ PVOID NodeOrParent,
1128 _In_ TABLE_SEARCH_RESULT SearchResult);
1129
1131BOOLEAN
1132NTAPI
1135 _In_ PVOID Buffer);
1136
1139PVOID
1140NTAPI
1143 _In_ PVOID Buffer);
1144
1146PVOID
1147NTAPI
1151 _Out_ PVOID *NodeOrParent,
1152 _Out_ TABLE_SEARCH_RESULT *SearchResult);
1153
1156PVOID
1157NTAPI
1161
1164PVOID
1165NTAPI
1168 _Inout_ PVOID *RestartKey);
1169
1172PVOID
1173NTAPI
1176 _In_ ULONG I);
1177
1179ULONG
1180NTAPI
1183
1186BOOLEAN
1187NTAPI
1190
1191#endif /* !RTL_USE_AVL_TABLES */
1192
1193#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8
1194
1197NTAPI
1200
1203NTAPI
1205 _In_ PRTL_SPLAY_LINKS Links);
1206
1208VOID
1209NTAPI
1211 _In_ PRTL_SPLAY_LINKS Links,
1213
1217NTAPI
1219 _In_ PRTL_SPLAY_LINKS Links);
1220
1224NTAPI
1226 _In_ PRTL_SPLAY_LINKS Links);
1227
1231NTAPI
1233 _In_ PRTL_SPLAY_LINKS Links);
1234
1238NTAPI
1240 _In_ PRTL_SPLAY_LINKS Links);
1241
1245BOOLEAN
1246NTAPI
1248 _In_ PCUNICODE_STRING String1,
1251
1254VOID
1255NTAPI
1258 _In_ const STRING *SourceString);
1259
1264NTAPI
1271
1274VOID
1275NTAPI
1279
1283NTAPI
1284RtlVolumeDeviceToDosName(
1285 _In_ PVOID VolumeDeviceObject,
1287
1291LONG
1292NTAPI
1294 _In_ const STRING *String1,
1295 _In_ const STRING *String2,
1297
1299VOID
1300NTAPI
1304
1308BOOLEAN
1309NTAPI
1311 _In_ const STRING *String1,
1312 _In_ const STRING *String2,
1314
1318NTAPI
1323
1326CHAR
1327NTAPI
1329 _In_ CHAR Character);
1330
1332ULONG
1333NTAPI
1336 PVOID *Callers,
1338 _In_ ULONG Flags);
1339
1341$if (_NTIFS_)
1342
1347PVOID
1348NTAPI
1350 _In_ HANDLE HeapHandle,
1353
1354_Success_(return != 0)
1356BOOLEAN
1357NTAPI
1359 _In_ PVOID HeapHandle,
1362
1364VOID
1365NTAPI
1368
1371ULONG
1372NTAPI
1373RtlRandom(
1374 _Inout_ PULONG Seed);
1375
1377_Success_(return != 0)
1380BOOLEAN
1381NTAPI
1386
1390BOOLEAN
1391NTAPI
1393 _In_ const STRING *String1,
1396
1400NTAPI
1404
1409NTAPI
1416
1421NTAPI
1428
1433NTAPI
1440
1445NTAPI
1452
1457NTAPI
1458RtlUnicodeStringToCountedOemString(
1464
1469NTAPI
1476
1481NTAPI
1485 PUNICODE_STRING UniDest,
1486 _In_ PCUNICODE_STRING UniSource,
1488
1491VOID
1492NTAPI
1495
1498ULONG
1499NTAPI
1502
1505ULONG
1506NTAPI
1509
1513NTAPI
1520
1524NTAPI
1529
1533NTAPI
1538
1542NTAPI
1549
1553NTAPI
1560
1564NTAPI
1571
1575NTAPI
1582
1586NTAPI
1593
1594#if (NTDDI_VERSION >= NTDDI_VISTASP1)
1598NTAPI
1604#else
1607VOID
1608NTAPI
1614#endif
1615
1619BOOLEAN
1620NTAPI
1625
1629BOOLEAN
1630NTAPI
1632 _Inout_ PWCHAR Char);
1633
1636VOID
1637NTAPI
1639 _Out_ PPREFIX_TABLE PrefixTable);
1640
1643BOOLEAN
1644NTAPI
1646 _In_ PPREFIX_TABLE PrefixTable,
1649
1652VOID
1653NTAPI
1655 _In_ PPREFIX_TABLE PrefixTable,
1657
1662NTAPI
1664 _In_ PPREFIX_TABLE PrefixTable,
1666
1669VOID
1670NTAPI
1672 _Out_ PUNICODE_PREFIX_TABLE PrefixTable);
1673
1676BOOLEAN
1677NTAPI
1679 _In_ PUNICODE_PREFIX_TABLE PrefixTable,
1682
1685VOID
1686NTAPI
1688 _In_ PUNICODE_PREFIX_TABLE PrefixTable,
1690
1695NTAPI
1697 _In_ PUNICODE_PREFIX_TABLE PrefixTable,
1700
1705NTAPI
1707 _In_ PUNICODE_PREFIX_TABLE PrefixTable,
1709
1712SIZE_T
1713NTAPI
1717 _In_ ULONG Pattern);
1718
1719_Success_(return != 0)
1721BOOLEAN
1722NTAPI
1726
1728VOID
1729NTAPI
1733
1734_Success_(return != 0)
1736BOOLEAN
1737NTAPI
1741
1743VOID
1744NTAPI
1748
1752BOOLEAN
1753NTAPI
1755 _In_ PSID Sid);
1756
1759BOOLEAN
1760NTAPI
1762 _In_ PSID Sid1,
1763 _In_ PSID Sid2);
1764
1768BOOLEAN
1769NTAPI
1771 _In_ PSID Sid1,
1773
1776ULONG
1777NTAPI
1780
1782PVOID
1783NTAPI
1786
1790NTAPI
1794 _In_ ULONG SubAuthority0,
1795 _In_ ULONG SubAuthority1,
1796 _In_ ULONG SubAuthority2,
1797 _In_ ULONG SubAuthority3,
1798 _In_ ULONG SubAuthority4,
1799 _In_ ULONG SubAuthority5,
1800 _In_ ULONG SubAuthority6,
1801 _In_ ULONG SubAuthority7,
1802 _Outptr_ PSID *Sid);
1803
1807NTAPI
1809 _Out_ PSID Sid,
1812
1814PULONG
1815NTAPI
1817 _In_ PSID Sid,
1818 _In_ ULONG SubAuthority);
1819
1822ULONG
1823NTAPI
1825 _In_ PSID Sid);
1826
1830NTAPI
1832 _In_ ULONG DestinationSidLength,
1833 _Out_writes_bytes_(DestinationSidLength) PSID DestinationSid,
1835
1839NTAPI
1844
1847VOID
1848NTAPI
1850 _Out_ PLUID DestinationLuid,
1852
1856NTAPI
1861
1865NTAPI
1866RtlAddAce(
1867 _Inout_ PACL Acl,
1872
1876NTAPI
1878 _Inout_ PACL Acl,
1880
1883NTAPI
1885 _In_ PACL Acl,
1887 _Outptr_ PVOID *Ace);
1888
1892NTAPI
1894 _Inout_ PACL Acl,
1897 _In_ PSID Sid);
1898
1902NTAPI
1904 _Inout_ PACL Acl,
1908 _In_ PSID Sid);
1909
1913NTAPI
1917
1920NTAPI
1924 _Out_ PACL *Dacl,
1926
1930NTAPI
1935
1939NTAPI
1942 _Out_ PSID *Owner,
1944
1947_When_(Status >= 0, _Out_range_(==, 0))
1949ULONG
1950NTAPI
1953
1957NTAPI
1959 _In_ PCPTABLEINFO CustomCP,
1965
1969NTAPI
1971 _In_ PCPTABLEINFO CustomCP,
1977
1981NTAPI
1983 _In_ PCPTABLEINFO CustomCP,
1989
1992VOID
1993NTAPI
1995 _In_ PUSHORT TableBase,
1997
1999
2000#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
2001
2002$if (_WDMDDK_)
2003
2004#if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
2006VOID
2011#endif
2012
2014
2015#if (NTDDI_VERSION >= NTDDI_WINXP)
2016
2017$if (_WDMDDK_)
2018
2020VOID
2021NTAPI
2023 _In_ PRTL_BITMAP BitMapHeader,
2024 _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitNumber);
2025
2028WCHAR
2029NTAPI
2031 _In_ WCHAR SourceCharacter);
2032
2034VOID
2035NTAPI
2036RtlSetBit(
2037 _In_ PRTL_BITMAP BitMapHeader,
2038 _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitNumber);
2039
2042BOOLEAN
2043NTAPI
2045 _In_ PRTL_BITMAP BitMapHeader,
2046 _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitNumber);
2047
2051NTAPI
2057
2059
2060$if (_NTDDK_)
2061
2063VOID
2064NTAPI
2071
2073PVOID
2074NTAPI
2079 _Out_opt_ PBOOLEAN NewElement);
2080
2082PVOID
2083NTAPI
2088 _Out_opt_ PBOOLEAN NewElement,
2089 _In_ PVOID NodeOrParent,
2090 _In_ TABLE_SEARCH_RESULT SearchResult);
2091
2093BOOLEAN
2094NTAPI
2097 _In_ PVOID Buffer);
2098
2101PVOID
2102NTAPI
2105 _In_ PVOID Buffer);
2106
2108PVOID
2109NTAPI
2113 _Out_ PVOID *NodeOrParent,
2114 _Out_ TABLE_SEARCH_RESULT *SearchResult);
2115
2118PVOID
2119NTAPI
2123
2126PVOID
2127NTAPI
2130 _Inout_ PVOID *RestartKey);
2131
2134PVOID
2135NTAPI
2139 _Out_ PVOID *RestartKey);
2140
2143PVOID
2144NTAPI
2147 _In_opt_ PRTL_AVL_MATCH_FUNCTION MatchFunction,
2149 _In_ ULONG NextFlag,
2150 _Inout_ PVOID *RestartKey,
2151 _Inout_ PULONG DeleteCount,
2152 _In_ PVOID Buffer);
2153
2156PVOID
2157NTAPI
2160 _In_ ULONG I);
2161
2163ULONG
2164NTAPI
2167
2170BOOLEAN
2171NTAPI
2174
2176$if (_NTIFS_)
2177
2180PVOID
2181NTAPI
2189
2191PVOID
2192NTAPI
2194 _In_ _Post_invalid_ PVOID HeapHandle);
2195
2197USHORT
2198NTAPI
2200 _In_ ULONG FramesToSkip,
2202 _Out_writes_to_(FramesToCapture, return) PVOID *BackTrace,
2204
2207ULONG
2208NTAPI
2210 _Inout_ PULONG Seed);
2211
2215NTAPI
2219
2223NTAPI
2227
2232NTAPI
2237
2240NTAPI
2242 _In_ USHORT CompressionFormatAndEngine,
2243 _Out_ PULONG CompressBufferWorkSpaceSize,
2244 _Out_ PULONG CompressFragmentWorkSpaceSize);
2245
2248NTAPI
2250 _In_ USHORT CompressionFormatAndEngine,
2255 _In_ ULONG UncompressedChunkSize,
2256 _Out_ PULONG FinalCompressedSize,
2258
2262NTAPI
2264 _In_ USHORT CompressionFormat,
2270
2274NTAPI
2276 _In_ USHORT CompressionFormat,
2284
2288NTAPI
2290 _In_ USHORT CompressionFormat,
2295
2299NTAPI
2301 _In_ USHORT CompressionFormat,
2306
2310NTAPI
2319
2323NTAPI
2332
2336NTAPI
2338 _In_ PSID Sid);
2339
2341PUCHAR
2342NTAPI
2344 _In_ PSID Sid);
2345
2347_When_(Status >= 0, _Out_range_(==, 0))
2349ULONG
2350NTAPI
2353
2357NTAPI
2359 _In_ PCUNICODE_STRING VolumeRootPath);
2360
2361#if defined(_M_AMD64)
2362
2364VOID
2368 _In_ ULONG Pattern)
2369{
2371 if ((Length /= 4) != 0) {
2372 if (((ULONG64)Address & 4) != 0) {
2373 *Address = Pattern;
2374 if ((Length -= 1) == 0) {
2375 return;
2376 }
2377 Address += 1;
2378 }
2379 __stosq((PULONG64)(Address), Pattern | ((ULONG64)Pattern << 32), Length / 2);
2380 if ((Length & 1) != 0) Address[Length - 1] = Pattern;
2381 }
2382 return;
2383}
2384
2385#define RtlFillMemoryUlonglong(Destination, Length, Pattern) \
2386 __stosq((PULONG64)(Destination), Pattern, (Length) / 8)
2387
2388#else
2389
2391VOID
2392NTAPI
2396 _In_ ULONG Pattern);
2397
2399VOID
2400NTAPI
2404 _In_ ULONGLONG Pattern);
2405
2406#endif /* defined(_M_AMD64) */
2408
2409#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
2410
2411$if (_NTIFS_)
2412#if (NTDDI_VERSION >= NTDDI_WS03)
2416NTAPI
2420#endif
2421
2422#if (NTDDI_VERSION >= NTDDI_WS03SP1)
2423
2427NTAPI
2433
2437NTAPI
2442
2446NTAPI
2449 _Out_ PSID *Group,
2451
2455NTAPI
2460
2464NTAPI
2477
2478#endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
2480
2481#if (NTDDI_VERSION >= NTDDI_VISTA)
2482
2483$if (_WDMDDK_)
2485ULONG
2486NTAPI
2487RtlNumberOfSetBitsUlongPtr(
2489
2492NTAPI
2496 _Out_opt_ PULONGLONG MinimumAddress,
2497 _Out_opt_ PULONGLONG MaximumAddress);
2498
2501NTAPI
2504 _In_ UCHAR Type,
2507 _In_ ULONGLONG MinimumAddress,
2508 _In_ ULONGLONG MaximumAddress);
2509
2512NTAPI
2516
2519NTAPI
2521 _In_ ULONGLONG SourceLength,
2522 _Out_ PULONGLONG TargetLength);
2523
2526NTAPI
2529 _In_ UCHAR Type,
2532
2534$if (_NTDDK_)
2535
2538VOID
2539NTAPI
2541 _Out_ PRTL_RUN_ONCE RunOnce);
2542
2547NTAPI
2549 _Inout_ PRTL_RUN_ONCE RunOnce,
2553
2558NTAPI
2560 _Inout_ PRTL_RUN_ONCE RunOnce,
2563
2567NTAPI
2569 _Inout_ PRTL_RUN_ONCE RunOnce,
2572
2574BOOLEAN
2575NTAPI
2577 _In_ ULONG OSMajorVersion,
2578 _In_ ULONG OSMinorVersion,
2579 _In_ ULONG SpMajorVersion,
2580 _In_ ULONG SpMinorVersion,
2581 _Out_ PULONG ReturnedProductType);
2582
2584$if (_NTIFS_)
2587NTAPI
2588RtlNormalizeString(
2589 _In_ ULONG NormForm,
2594
2597NTAPI
2599 _In_ ULONG NormForm,
2602 _Out_ PBOOLEAN Normalized);
2603
2606NTAPI
2613
2616NTAPI
2618 IN ULONG Flags,
2623
2626NTAPI
2633
2636NTAPI
2639 _Out_writes_bytes_opt_(*ServiceSidLength) PSID ServiceSid,
2640 _Inout_ PULONG ServiceSidLength);
2641
2643LONG
2644NTAPI
2646 _In_ PCUNICODE_STRING Altitude1,
2647 _In_ PCUNICODE_STRING Altitude2);
2648
2650
2651#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
2652
2653#if (NTDDI_VERSION >= NTDDI_WIN7)
2654
2655$if (_WDMDDK_)
2660NTAPI
2668
2673NTAPI
2681
2683ULONG64
2684NTAPI
2686 IN ULONG64 FeatureMask);
2687
2689$if (_NTDDK_)
2690
2693BOOLEAN
2694NTAPI
2695RtlCreateHashTable(
2700
2702VOID
2703NTAPI
2707
2709BOOLEAN
2710NTAPI
2716
2718BOOLEAN
2719NTAPI
2724
2728NTAPI
2733
2737NTAPI
2741
2743BOOLEAN
2744NTAPI
2748
2752NTAPI
2756
2758VOID
2759NTAPI
2763
2765BOOLEAN
2766NTAPI
2770
2774NTAPI
2778
2780VOID
2781NTAPI
2785
2787BOOLEAN
2788NTAPI
2791
2793BOOLEAN
2794NTAPI
2797
2799$if (_NTIFS_)
2804NTAPI
2809 _In_reads_bytes_(UnicodeStringByteCount) PCWCH UnicodeStringSource,
2811
2816NTAPI
2821 _In_reads_bytes_(UTF8StringByteCount) PCCH UTF8StringSource,
2823
2827NTAPI
2828RtlReplaceSidInSd(
2833
2836NTAPI
2839 _In_ ULONG BaseSubAuthority,
2840 _Out_writes_bytes_(*SidLength) PSID Sid,
2841 _Inout_ PULONG SidLength);
2843
2844#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
2845
2846$if (_WDMDDK_)
2847
2848#if !defined(MIDL_PASS)
2849/* inline funftions */
2850//DECLSPEC_DEPRECATED_DDK_WINXP
2851static __inline
2855 _In_ LONG SignedInteger)
2856{
2858 ret.QuadPart = SignedInteger;
2859 return ret;
2860}
2861
2862//DECLSPEC_DEPRECATED_DDK_WINXP
2863static __inline
2867 _In_ ULONG UnsignedInteger)
2868{
2870 ret.QuadPart = UnsignedInteger;
2871 return ret;
2872}
2873
2874//DECLSPEC_DEPRECATED_DDK_WINXP
2875static __inline
2879 _In_ LARGE_INTEGER LargeInteger,
2880 _In_ CCHAR ShiftCount)
2881{
2883
2884 Result.QuadPart = LargeInteger.QuadPart << ShiftCount;
2885 return Result;
2886}
2887
2888//DECLSPEC_DEPRECATED_DDK_WINXP
2889static __inline
2893 _In_ LARGE_INTEGER LargeInteger,
2894 _In_ CCHAR ShiftCount)
2895{
2897
2898 Result.QuadPart = (ULONG64)LargeInteger.QuadPart >> ShiftCount;
2899 return Result;
2900}
2901
2902//DECLSPEC_DEPRECATED_DDK
2903static __inline
2904ULONG
2907 _In_ ULARGE_INTEGER Dividend,
2910{
2911 if (Remainder)
2912 *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
2913 return (ULONG)(Dividend.QuadPart / Divisor);
2914}
2915
2916//DECLSPEC_DEPRECATED_DDK
2917static __inline
2921 _In_ LARGE_INTEGER Subtrahend)
2922{
2923 LARGE_INTEGER Difference;
2924
2925 Difference.QuadPart = -Subtrahend.QuadPart;
2926 return Difference;
2927}
2928
2929//DECLSPEC_DEPRECATED_DDK
2930static __inline
2934 _In_ LARGE_INTEGER Minuend,
2935 _In_ LARGE_INTEGER Subtrahend)
2936{
2937 LARGE_INTEGER Difference;
2938
2939 Difference.QuadPart = Minuend.QuadPart - Subtrahend.QuadPart;
2940 return Difference;
2941}
2942
2943//DECLSPEC_DEPRECATED_DDK
2944static __inline
2948 _In_ ULONG Multiplicand,
2949 _In_ ULONG Multiplier)
2950{
2952 ret.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
2953 return ret;
2954}
2955
2956//DECLSPEC_DEPRECATED_DDK
2957static __inline
2961 _In_ LONG Multiplicand,
2962 _In_ LONG Multiplier)
2963{
2965 ret.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
2966 return ret;
2967}
2968
2970_At_(AnsiString->Length, _Post_equal_to_(0))
2973VOID
2974RtlInitEmptyAnsiString(
2978{
2979 AnsiString->Length = 0;
2980 AnsiString->MaximumLength = BufferSize;
2981 AnsiString->Buffer = Buffer;
2982}
2983
2988VOID
2989RtlInitEmptyUnicodeString(
2995{
2996 UnicodeString->Length = 0;
2997 UnicodeString->MaximumLength = BufferSize;
2998 UnicodeString->Buffer = Buffer;
2999}
3001
3002#if defined(_AMD64_) || defined(_IA64_)
3003
3004$if (_WDMDDK_)
3005
3006static __inline
3010 _In_ LARGE_INTEGER Multiplicand,
3011 _In_ LONG Multiplier)
3012{
3014 ret.QuadPart = Multiplicand.QuadPart * Multiplier;
3015 return ret;
3016}
3017
3018static __inline
3022 _In_ LARGE_INTEGER Dividend,
3025{
3027 ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor;
3028 if (Remainder)
3029 *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
3030 return ret;
3031}
3032
3034
3035$if (_NTDDK_)
3036
3037//DECLSPEC_DEPRECATED_DDK_WINXP
3042 _In_ LARGE_INTEGER Dividend,
3045{
3047 ret.QuadPart = Dividend.QuadPart / Divisor.QuadPart;
3048 if (Remainder)
3049 Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart;
3050 return ret;
3051}
3052
3053#else
3054
3055#if (NTDDI_VERSION >= NTDDI_WIN2K)
3058NTAPI
3060 _In_ LARGE_INTEGER Dividend,
3063#endif
3064
3066
3067#endif /* defined(_AMD64_) || defined(_IA64_) */
3068
3069$if (_WDMDDK_)
3070
3071#if defined(_AMD64_)
3072
3073#define MultiplyHigh __mulh
3074#define UnsignedMultiplyHigh __umulh
3075
3076//DECLSPEC_DEPRECATED_DDK
3077static __inline
3081 _In_ LARGE_INTEGER Dividend,
3082 _In_ LARGE_INTEGER MagicDivisor,
3083 _In_ CCHAR ShiftCount)
3084{
3086 ULONG64 ret64;
3087 BOOLEAN Pos;
3088 Pos = (Dividend.QuadPart >= 0);
3089 ret64 = UnsignedMultiplyHigh(Pos ? Dividend.QuadPart : -Dividend.QuadPart,
3090 MagicDivisor.QuadPart);
3091 ret64 >>= ShiftCount;
3092 ret.QuadPart = Pos ? ret64 : -(LONG64)ret64;
3093 return ret;
3094}
3095#endif
3096
3097//DECLSPEC_DEPRECATED_DDK
3098static __inline
3102 _In_ LARGE_INTEGER Addend1,
3104{
3106 ret.QuadPart = Addend1.QuadPart + Addend2.QuadPart;
3107 return ret;
3108}
3109
3110/* VOID
3111 * RtlLargeIntegerAnd(
3112 * IN OUT LARGE_INTEGER Result,
3113 * IN LARGE_INTEGER Source,
3114 * IN LARGE_INTEGER Mask);
3115 */
3116#define RtlLargeIntegerAnd(Result, Source, Mask) \
3117 Result.QuadPart = Source.QuadPart & Mask.QuadPart
3118
3119//DECLSPEC_DEPRECATED_DDK
3120static __inline
3124 _In_ LARGE_INTEGER LargeInteger,
3125 _In_ CCHAR ShiftCount)
3126{
3128 ret.QuadPart = LargeInteger.QuadPart >> ShiftCount;
3129 return ret;
3130}
3131
3132/* BOOLEAN
3133 * RtlLargeIntegerEqualTo(
3134 * IN LARGE_INTEGER Operand1,
3135 * IN LARGE_INTEGER Operand2);
3136 */
3137#define RtlLargeIntegerEqualTo(X,Y) \
3138 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
3139
3141PVOID
3145{
3146 volatile char* vptr = (volatile char*)Pointer;
3147#if defined(_M_AMD64)
3148 __stosb((PUCHAR)vptr, 0, Size);
3149#else
3150 char * endptr = (char *)vptr + Size;
3151 while (vptr < endptr) {
3152 *vptr = 0; vptr++;
3153 }
3154#endif
3155 return Pointer;
3156}
3157
3158#if defined(_M_AMD64)
3161BOOLEAN
3163 _In_ PRTL_BITMAP BitMapHeader,
3164 _In_range_(<, BitMapHeader->SizeOfBitMap) ULONG BitPosition)
3165{
3166 return BitTest64((LONG64 CONST*)BitMapHeader->Buffer, (LONG64)BitPosition);
3167}
3168#else
3169#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP)/32]) >> ((BP)%32)) & 0x1)
3170#endif /* defined(_M_AMD64) */
3171
3172#define RtlLargeIntegerGreaterThan(X,Y) ( \
3173 (((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
3174 ((X).HighPart > (Y).HighPart) \
3175)
3176
3177#define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) ( \
3178 (((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
3179 ((X).HighPart > (Y).HighPart) \
3180)
3181
3182#define RtlLargeIntegerNotEqualTo(X,Y) ( \
3183 (((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)) \
3184)
3185
3186#define RtlLargeIntegerLessThan(X,Y) ( \
3187 (((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
3188 ((X).HighPart < (Y).HighPart) \
3189)
3190
3191#define RtlLargeIntegerLessThanOrEqualTo(X,Y) ( \
3192 (((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
3193 ((X).HighPart < (Y).HighPart) \
3194)
3195
3196#define RtlLargeIntegerGreaterThanZero(X) ( \
3197 (((X).HighPart == 0) && ((X).LowPart > 0)) || \
3198 ((X).HighPart > 0 ) \
3199)
3200
3201#define RtlLargeIntegerGreaterOrEqualToZero(X) ( (X).HighPart >= 0 )
3202
3203#define RtlLargeIntegerEqualToZero(X) ( !((X).LowPart | (X).HighPart) )
3204
3205#define RtlLargeIntegerNotEqualToZero(X) ( ((X).LowPart | (X).HighPart) )
3206
3207#define RtlLargeIntegerLessThanZero(X) ( ((X).HighPart < 0) )
3208
3209#define RtlLargeIntegerLessOrEqualToZero(X) ( ((X).HighPart < 0) || !((X).LowPart | (X).HighPart) )
3210
3211#endif /* !defined(MIDL_PASS) */
3212
3213/* Byte Swap Functions */
3214#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
3215#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
3216#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
3217
3218#if defined(_MSC_VER) && !defined(__clang__)
3219# define __assert_annotationA(msg) __annotation(L"Debug", L"AssertFail", L ## msg)
3220# define __assert_annotationW(msg) __annotation(L"Debug", L"AssertFail", msg)
3221#else
3222# define __assert_annotationA(msg) \
3223 DbgPrint("Assertion failed at %s(%d): %s\n", __FILE__, __LINE__, msg)
3224# define __assert_annotationW(msg) \
3225 DbgPrint("Assertion failed at %s(%d): %S\n", __FILE__, __LINE__, msg)
3226#endif
3227
3228#ifdef _PREFAST_
3229# define NT_ANALYSIS_ASSUME(_exp) _Analysis_assume_(_exp)
3230#elif DBG
3231# define NT_ANALYSIS_ASSUME(_exp) ((void)0)
3232#else
3233# define NT_ANALYSIS_ASSUME(_exp) __noop(_exp)
3234#endif
3235
3236#define NT_ASSERT_ACTION(exp) \
3237 (NT_ANALYSIS_ASSUME(exp), \
3238 ((!(exp)) ? \
3239 (__assert_annotationA(#exp), \
3240 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3241
3242#define NT_ASSERTMSG_ACTION(msg, exp) \
3243 (NT_ANALYSIS_ASSUME(exp), \
3244 ((!(exp)) ? \
3245 (__assert_annotationA(msg), \
3246 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3247
3248#define NT_ASSERTMSGW_ACTION(msg, exp) \
3249 (NT_ANALYSIS_ASSUME(exp), \
3250 ((!(exp)) ? \
3251 (__assert_annotationW(msg), \
3252 DbgRaiseAssertionFailure(), FALSE) : TRUE))
3253
3254#if DBG
3255
3256#define RTL_VERIFY(exp) \
3257 ((!(exp)) ? \
3258 RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
3259
3260#define RTL_VERIFYMSG(msg, exp) \
3261 ((!(exp)) ? \
3262 RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, (PCHAR)msg ), FALSE : TRUE)
3263
3264#define RTL_SOFT_VERIFY(exp) \
3265 ((!(exp)) ? \
3266 DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
3267
3268#define RTL_SOFT_VERIFYMSG(msg, exp) \
3269 ((!(exp)) ? \
3270 DbgPrint("%s(%d): Soft assertion failed\n Expression: %s\n Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
3271
3272/* The ASSERTs must be cast to void to avoid warnings about unused results. */
3273#define ASSERT (void)RTL_VERIFY
3274#define ASSERTMSG (void)RTL_VERIFYMSG
3275#define RTL_SOFT_ASSERT (void)RTL_SOFT_VERIFY
3276#define RTL_SOFT_ASSERTMSG (void)RTL_SOFT_VERIFYMSG
3277
3278#define NT_VERIFY NT_ASSERT_ACTION
3279#define NT_VERIFYMSG NT_ASSERTMSG_ACTION
3280#define NT_VERIFYMSGW NT_ASSERTMSGW_ACTION
3281
3282#define NT_ASSERT_ASSUME (void)NT_ASSERT_ACTION
3283#define NT_ASSERTMSG_ASSUME (void)NT_ASSERTMSG_ACTION
3284#define NT_ASSERTMSGW_ASSUME (void)NT_ASSERTMSGW_ACTION
3285
3286#define NT_ASSERT_NOASSUME (void)NT_ASSERT_ACTION
3287#define NT_ASSERTMSG_NOASSUME (void)NT_ASSERTMSG_ACTION
3288#define NT_ASSERTMSGW_NOASSUME (void)NT_ASSERTMSGW_ACTION
3289
3290#else /* !DBG */
3291
3292#define ASSERT(exp) ((void)0)
3293#define ASSERTMSG(msg, exp) ((void)0)
3294
3295#define RTL_SOFT_ASSERT(exp) ((void)0)
3296#define RTL_SOFT_ASSERTMSG(msg, exp) ((void)0)
3297
3298#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
3299#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
3300
3301#define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
3302#define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
3303
3304#define NT_VERIFY(exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3305#define NT_VERIFYMSG(msg, exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3306#define NT_VERIFYMSGW(msg, exp) (NT_ANALYSIS_ASSUME(exp), ((exp) ? TRUE : FALSE))
3307
3308#define NT_ASSERT_ASSUME(exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3309#define NT_ASSERTMSG_ASSUME(msg, exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3310#define NT_ASSERTMSGW_ASSUME(msg, exp) (NT_ANALYSIS_ASSUME(exp), (void)0)
3311
3312#define NT_ASSERT_NOASSUME(exp) ((void)0)
3313#define NT_ASSERTMSG_NOASSUME(msg, exp) ((void)0)
3314#define NT_ASSERTMSGW_NOASSUME(msg, exp) ((void)0)
3315
3316#endif /* DBG */
3317
3318#define NT_FRE_ASSERT (void)NT_ASSERT_ACTION
3319#define NT_FRE_ASSERTMSG (void)NT_ASSERTMSG_ACTION
3320#define NT_FRE_ASSERTMSGW (void)NT_ASSERTMSGW_ACTION
3321
3322#ifdef NT_ASSERT_ALWAYS_ASSUMES
3323# define NT_ASSERT NT_ASSERT_ASSUME
3324# define NT_ASSERTMSG NT_ASSERTMSG_ASSUME
3325# define NT_ASSERTMSGW NT_ASSERTMSGW_ASSUME
3326#else
3327# define NT_ASSERT NT_ASSERT_NOASSUME
3328# define NT_ASSERTMSG NT_ASSERTMSG_NOASSUME
3329# define NT_ASSERTMSGW NT_ASSERTMSGW_NOASSUME
3330#endif /* NT_ASSERT_ALWAYS_ASSUMES */
3331
3332#if defined(_MSC_VER) && (defined(__REACTOS__) || defined(ASSERT_ALWAYS_NT_ASSERT)) && !defined(_BLDR_)
3333#undef ASSERT
3334#define ASSERT NT_ASSERT
3335#undef ASSERTMSG
3336#define ASSERTMSG NT_ASSERTMSG
3337#undef ASSERTMSGW
3338#define ASSERTMSGW NT_ASSERTMSGW
3339#undef RTL_VERIFY
3340#define RTL_VERIFY NT_VERIFY
3341#endif
3342
3343#define InitializeListHead32(ListHead) (\
3344 (ListHead)->Flink = (ListHead)->Blink = PtrToUlong((ListHead)))
3345
3346#if !defined(_WINBASE_)
3347
3348#if defined(_WIN64) && !defined(_NTSYSTEM_) && (defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || !defined(_NTOSP_))
3349
3351VOID
3353 _Out_ PSLIST_HEADER SListHead);
3354
3355#else /* defined(_WIN64) && ... */
3356
3357/* HACK */
3361VOID
3362NTAPI
3365
3367VOID
3369 _Out_ PSLIST_HEADER SListHead)
3370{
3371#if defined(_WIN64)
3372 if (((ULONG_PTR)SListHead & 0xf) != 0) {
3374 }
3375#if defined(_IA64_)
3376 SListHead->Region = (ULONG_PTR)SListHead & VRN_MASK;
3377#else
3378 SListHead->Region = 0;
3379#endif /* _IA64_ */
3380#endif /* _WIN64 */
3381 SListHead->Alignment = 0;
3382}
3383
3384#endif /* defined(_WIN64) && ... */
3385
3386#ifdef _X86_
3387
3392 _Inout_ PSLIST_HEADER SListHead,
3394
3399 _Inout_ PSLIST_HEADER SListHead);
3400
3401#define InterlockedFlushSList(SListHead) \
3402 ExInterlockedFlushSList(SListHead)
3403
3404#else /* !_X86_ */
3405
3406#define InterlockedPushEntrySList(SListHead, SListEntry) \
3407 ExpInterlockedPushEntrySList(SListHead, SListEntry)
3408
3409#define InterlockedPopEntrySList(SListHead) \
3410 ExpInterlockedPopEntrySList(SListHead)
3411
3412#define InterlockedFlushSList(SListHead) \
3413 ExpInterlockedFlushSList(SListHead)
3414
3415#endif /* _X86_ */
3416
3417#define QueryDepthSList(SListHead) \
3418 ExQueryDepthSList(SListHead)
3419
3420#endif /* !defined(_WINBASE_) */
3421
3422#define RTL_CONTEXT_EX_OFFSET(ContextEx, Chunk) ((ContextEx)->Chunk.Offset)
3423#define RTL_CONTEXT_EX_LENGTH(ContextEx, Chunk) ((ContextEx)->Chunk.Length)
3424#define RTL_CONTEXT_EX_CHUNK(Base, Layout, Chunk) \
3425 ((PVOID)((PCHAR)(Base) + RTL_CONTEXT_EX_OFFSET(Layout, Chunk)))
3426#define RTL_CONTEXT_OFFSET(Context, Chunk) \
3427 RTL_CONTEXT_EX_OFFSET((PCONTEXT_EX)(Context + 1), Chunk)
3428#define RTL_CONTEXT_LENGTH(Context, Chunk) \
3429 RTL_CONTEXT_EX_LENGTH((PCONTEXT_EX)(Context + 1), Chunk)
3430#define RTL_CONTEXT_CHUNK(Context, Chunk) \
3431 RTL_CONTEXT_EX_CHUNK((PCONTEXT_EX)(Context + 1), \
3432 (PCONTEXT_EX)(Context + 1), \
3433 Chunk)
3434
3435BOOLEAN
3438
3439BOOLEAN
3442
3443#ifndef RtlIsNtDdiVersionAvailable
3444#define RtlIsNtDdiVersionAvailable WdmlibRtlIsNtDdiVersionAvailable
3445#endif
3446
3447#ifndef RtlIsServicePackVersionInstalled
3448#define RtlIsServicePackVersionInstalled WdmlibRtlIsServicePackVersionInstalled
3449#endif
3450
3451#define RtlInterlockedSetBits(Flags, Flag) \
3452 InterlockedOr((PLONG)(Flags), Flag)
3453
3454#define RtlInterlockedAndBits(Flags, Flag) \
3455 InterlockedAnd((PLONG)(Flags), Flag)
3456
3457#define RtlInterlockedClearBits(Flags, Flag) \
3458 RtlInterlockedAndBits(Flags, ~(Flag))
3459
3460#define RtlInterlockedXorBits(Flags, Flag) \
3461 InterlockedXor(Flags, Flag)
3462
3463#define RtlInterlockedSetBitsDiscardReturn(Flags, Flag) \
3464 (VOID) RtlInterlockedSetBits(Flags, Flag)
3465
3466#define RtlInterlockedAndBitsDiscardReturn(Flags, Flag) \
3467 (VOID) RtlInterlockedAndBits(Flags, Flag)
3468
3469#define RtlInterlockedClearBitsDiscardReturn(Flags, Flag) \
3470 RtlInterlockedAndBitsDiscardReturn(Flags, ~(Flag))
3471
3473
3474$if (_NTDDK_)
3475
3476#ifdef RTL_USE_AVL_TABLES
3477
3478#define RtlInitializeGenericTable RtlInitializeGenericTableAvl
3479#define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl
3480#define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl
3481#define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl
3482#define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl
3483#define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl
3484#define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl
3485#define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl
3486#define RtlGetElementGenericTable RtlGetElementGenericTableAvl
3487#define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl
3488#define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl
3489
3490#endif /* RTL_USE_AVL_TABLES */
3491
3492#define RtlInitializeSplayLinks(Links) { \
3493 PRTL_SPLAY_LINKS _SplayLinks; \
3494 _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
3495 _SplayLinks->Parent = _SplayLinks; \
3496 _SplayLinks->LeftChild = NULL; \
3497 _SplayLinks->RightChild = NULL; \
3498}
3499
3500#define RtlIsLeftChild(Links) \
3501 (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3502
3503#define RtlIsRightChild(Links) \
3504 (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
3505
3506#define RtlRightChild(Links) \
3507 ((PRTL_SPLAY_LINKS)(Links))->RightChild
3508
3509#define RtlIsRoot(Links) \
3510 (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
3511
3512#define RtlLeftChild(Links) \
3513 ((PRTL_SPLAY_LINKS)(Links))->LeftChild
3514
3515#define RtlParent(Links) \
3516 ((PRTL_SPLAY_LINKS)(Links))->Parent
3517
3518#define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
3519 { \
3520 PRTL_SPLAY_LINKS _SplayParent; \
3521 PRTL_SPLAY_LINKS _SplayChild; \
3522 _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
3523 _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
3524 _SplayParent->LeftChild = _SplayChild; \
3525 _SplayChild->Parent = _SplayParent; \
3526 }
3527
3528#define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
3529 { \
3530 PRTL_SPLAY_LINKS _SplayParent; \
3531 PRTL_SPLAY_LINKS _SplayChild; \
3532 _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
3533 _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
3534 _SplayParent->RightChild = _SplayChild; \
3535 _SplayChild->Parent = _SplayParent; \
3536 }
3537
3538#if !defined(MIDL_PASS)
3539
3541LUID
3543RtlConvertLongToLuid(
3544 _In_ LONG Val)
3545{
3546 LUID Luid;
3547 LARGE_INTEGER Temp;
3548
3549 Temp.QuadPart = Val;
3550 Luid.LowPart = Temp.u.LowPart;
3551 Luid.HighPart = Temp.u.HighPart;
3552 return Luid;
3553}
3554
3556LUID
3559 _In_ ULONG Val)
3560{
3561 LUID Luid;
3562
3563 Luid.LowPart = Val;
3564 Luid.HighPart = 0;
3565 return Luid;
3566}
3567
3568#endif /* !defined(MIDL_PASS) */
3569
3570#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
3571#define RtlGetCallersAddress(CallersAddress, CallersCaller) \
3572 *CallersAddress = (PVOID)_ReturnAddress(); \
3573 *CallersCaller = NULL;
3574#else
3575#if (NTDDI_VERSION >= NTDDI_WIN2K)
3577VOID
3578NTAPI
3580 _Out_ PVOID *CallersAddress,
3581 _Out_ PVOID *CallersCaller);
3582#endif
3583#endif
3584
3585#if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
3586
3587#if (NTDDI_VERSION >= NTDDI_WIN7)
3588
3590VOID
3591NTAPI
3594{
3595 Context->ChainHead = NULL;
3596 Context->PrevLinkage = NULL;
3597}
3598
3600VOID
3601NTAPI
3605{
3606 Context->ChainHead = Enumerator->ChainHead;
3607 Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink;
3608}
3609
3611VOID
3612NTAPI
3615{
3617 return;
3618}
3619
3621ULONG
3622NTAPI
3625{
3626 return HashTable->TableSize;
3627}
3628
3630ULONG
3631NTAPI
3634{
3635 return HashTable->NonEmptyBuckets;
3636}
3637
3639ULONG
3640NTAPI
3643{
3644 return HashTable->TableSize - HashTable->NonEmptyBuckets;
3645}
3646
3648ULONG
3649NTAPI
3652{
3653 return HashTable->NumEntries;
3654}
3655
3657ULONG
3658NTAPI
3661{
3662 return HashTable->NumEnumerators;
3663}
3664
3665#endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
3666
3667#endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */
3668
3670$if (_NTIFS_)
3671
3672#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
3673#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
3674
3675#define RtlUnicodeStringToOemSize(STRING) (NLS_MB_OEM_CODE_PAGE_TAG ? \
3676 RtlxUnicodeStringToOemSize(STRING) : \
3677 ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
3678)
3679
3680#define RtlOemStringToUnicodeSize(STRING) ( \
3681 NLS_MB_OEM_CODE_PAGE_TAG ? \
3682 RtlxOemStringToUnicodeSize(STRING) : \
3683 ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
3684)
3685
3686#define RtlOemStringToCountedUnicodeSize(STRING) ( \
3687 (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
3688)
3689
3690#define RtlOffsetToPointer(B,O) ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O))))
3691#define RtlPointerToOffset(B,P) ((ULONG)(((PCHAR)(P)) - ((PCHAR)(B))))
unsigned char BOOLEAN
NTSYSAPI VOID NTAPI RtlGenerate8dot3Name(_In_ PCUNICODE_STRING Name, _In_ BOOLEAN AllowExtendedCharacters, _Inout_ PGENERATE_NAME_CONTEXT Context, _Inout_ PUNICODE_STRING Name8dot3)
static GENERIC_MAPPING GenericMapping
Definition: SeInheritance.c:11
Type
Definition: Type.h:7
#define __inline
Definition: _wctype.cpp:15
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 LineNumber
Definition: acpixf.h:1220
VOID NTAPI RtlInitializeGenericTableAvl(IN OUT PRTL_AVL_TABLE Table, IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine, IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, IN PRTL_AVL_FREE_ROUTINE FreeRoutine, IN PVOID TableContext)
Definition: avltable.c:26
LONG NTSTATUS
Definition: precomp.h:26
static WCHAR ServiceName[]
Definition: browser.c:19
NTSYSAPI ULONG NTAPI RtlRandomEx(PULONG Seed)
OSVERSIONINFOW VersionInfo
Definition: wkssvc.c:40
#define NTSYSAPI
Definition: ntoskrnl.h:12
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:616
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:634
#define __drv_aliasesMem
Definition: btrfs_drv.h:203
@ Ace
Definition: card.h:12
return
Definition: dirsup.c:529
Definition: bufpool.h:45
#define RtlAreBitsSet
Definition: dbgbitmap.h:328
#define RtlFindClearBits
Definition: dbgbitmap.h:332
#define RtlClearBits
Definition: dbgbitmap.h:331
#define RtlAreBitsClear
Definition: dbgbitmap.h:327
#define RtlInitializeBitMap
Definition: dbgbitmap.h:326
#define RtlFindNextForwardRunClear
Definition: dbgbitmap.h:338
#define RtlClearAllBits
Definition: dbgbitmap.h:329
#define RtlFindLastBackwardRunClear
Definition: dbgbitmap.h:336
#define RtlClearBit
Definition: dbgbitmap.h:330
#define RtlFindClearBitsAndSet
Definition: dbgbitmap.h:333
#define RtlTestBit
Definition: dbgbitmap.h:347
#define RtlNumberOfSetBits
Definition: dbgbitmap.h:343
#define RtlFindNextForwardRunSet
Definition: dbgbitmap.h:339
#define RtlSetAllBits
Definition: dbgbitmap.h:346
#define RtlCheckBit
Definition: dbgbitmap.h:349
#define RtlFindLongestRunClear
Definition: dbgbitmap.h:337
#define RtlFindClearRuns
Definition: dbgbitmap.h:335
#define RtlFindFirstRunClear
Definition: dbgbitmap.h:334
#define RtlSetBit
Definition: dbgbitmap.h:344
#define RtlFindSetBitsAndClear
Definition: dbgbitmap.h:341
#define RtlNumberOfClearBits
Definition: dbgbitmap.h:342
#define RtlSetBits
Definition: dbgbitmap.h:345
#define RtlFindSetBits
Definition: dbgbitmap.h:340
ush Pos
Definition: deflate.h:92
#define BufferSize
Definition: mmc.h:75
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
NTSTATUS NTAPI RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation)
Definition: version.c:158
static const WCHAR Signature[]
Definition: parser.c:141
static const WCHAR Message[]
Definition: register.c:74
@ AnsiString
Definition: dnslib.h:19
BOOLEAN NTAPI RtlIsValidOemCharacter(IN PWCHAR Char)
Definition: unicode.c:514
#define ULONG_PTR
Definition: config.h:101
#define __drv_freesMem(kind)
Definition: driverspecs.h:272
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define __drv_allocatesMem(kind)
Definition: driverspecs.h:257
BOOLEAN RtlTimeFieldsToTime(IN PTIME_FIELDS TimeFields, IN PLARGE_INTEGER Time)
#define RemoveEntryList(Entry)
Definition: env_spec_w32.h:986
#define InsertTailList(ListHead, Entry)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
Definition: env_spec_w32.h:954
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define RtlCompareMemory(s1, s2, l)
Definition: env_spec_w32.h:465
#define APC_LEVEL
Definition: env_spec_w32.h:695
#define RemoveTailList(ListHead)
Definition: env_spec_w32.h:975
#define RemoveHeadList(ListHead)
Definition: env_spec_w32.h:964
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
std::wstring STRING
Definition: fontsub.cpp:33
return pTarget Start()
_In_ ULONG FramesToCapture
_In_ ULONG _Out_opt_ PULONG BackTraceHash
Status
Definition: gdiplustypes.h:25
VOID NTAPI RtlInitializeGenericTable(IN PRTL_GENERIC_TABLE Table, IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine, IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine, IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine, IN PVOID TableContext)
Definition: generictable.c:100
ASMGENDATA Table[]
Definition: genincdata.c:61
_In_ GUID _In_ PVOID ValueData
Definition: hubbusif.h:312
#define _NTIFS_
Definition: ifssupp.h:20
VOID NTAPI RtlFreeOemString(POEM_STRING OemString)
BOOLEAN NTAPI RtlTimeToSecondsSince1970(PLARGE_INTEGER Time, PULONG ElapsedSeconds)
BOOLEAN NTAPI RtlIsNameLegalDOS8Dot3(_In_ PUNICODE_STRING Name, _Inout_opt_ POEM_STRING OemName, _Inout_opt_ PBOOLEAN NameContainsSpaces)
NTSYSAPI NTSTATUS WINAPI RtlDeleteRegistryValue(ULONG, PCWSTR, PCWSTR)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS)
NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG, PCWSTR, PCWSTR, ULONG, PVOID, ULONG)
NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW *, DWORD, DWORDLONG)
NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR)
NTSYSAPI CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG)
Definition: bitmap.c:211
NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING, PCSZ)
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG, UINT, UINT *)
NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG, LONGLONG, INT)
NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG)
Definition: largeint.c:31
NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING, PCWSTR)
NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG, ULONG, UNICODE_STRING *)
NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING *, const STRING *, BOOLEAN)
Definition: unicode.c:886
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR, PSID, BOOLEAN)
NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide(ULONGLONG, ULONGLONG, ULONGLONG *)
NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *, LPDWORD)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG)
Definition: bitmap.c:235
NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG, LONGLONG)
NTSYSAPI NTSTATUS WINAPI RtlDuplicateUnicodeString(int, const UNICODE_STRING *, UNICODE_STRING *)
NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR, ULONG, SECURITY_INFORMATION)
NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING *, const UNICODE_STRING *, BOOLEAN)
NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR)
NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT, PUCHAR, ULONG, PUCHAR, ULONG, PULONG)
NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSYSAPI ULONGLONG WINAPI RtlEnlargedUnsignedMultiply(UINT, UINT)
Definition: largeint.c:97
NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT, INT)
NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR, BOOLEAN, PACL, BOOLEAN)
NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG, INT, INT *)
NTSYSAPI NTSTATUS WINAPI RtlAppendStringToString(STRING *, const STRING *)
NTSYSAPI void WINAPI RtlCopyLuid(PLUID, const LUID *)
NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD, PSID, PSID)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
PPC_QUAL void __stosb(unsigned char *Dest, const unsigned char Data, unsigned long Count)
Definition: intrin_ppc.h:306
__fastfail(FAST_FAIL_INVALID_ARG)
#define I(s)
NTSTATUS NTAPI RtlUnicodeToUTF8N(CHAR *utf8_dest, ULONG utf8_bytes_max, ULONG *utf8_bytes_written, const WCHAR *uni_src, ULONG uni_bytes)
Definition: utf8.c:20
if(dx< 0)
Definition: linetemp.h:194
#define RtlFillMemoryUlong(dst, len, val)
Definition: mkhive.h:55
unsigned __int64 * PULONG64
Definition: imports.h:198
unsigned __int64 ULONG64
Definition: imports.h:198
static PWSTR GuidString
Definition: apphelp.c:93
static PTIME_FIELDS TimeFields
Definition: time.c:104
DWORD SECURITY_INFORMATION
Definition: ms-dtyp.idl:311
#define _Unchanged_(e)
Definition: ms_sal.h:582
#define __inner_callback
Definition: ms_sal.h:2636
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
NTSYSAPI NTSTATUS NTAPI RtlCreateRegistryKey(_In_ ULONG RelativeTo, _In_ PWSTR Path)
NTSYSAPI NTSTATUS NTAPI RtlAddAce(_Inout_ PACL Acl, _In_ ULONG AceRevision, _In_ ULONG StartingAceIndex, _In_reads_bytes_(AceListLength) PVOID AceList, _In_ ULONG AceListLength)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL Dacl
Definition: rtlfuncs.h:1605
_In_ PLUID SourceLuid
Definition: rtlfuncs.h:1329
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor
Definition: rtlfuncs.h:1603
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG OwnerSize
Definition: rtlfuncs.h:1610
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
_In_ const STRING * String2
Definition: rtlfuncs.h:2369
_In_opt_ PSID Group
Definition: rtlfuncs.h:1658
NTSYSAPI PULONG NTAPI RtlSubAuthoritySid(_In_ PSID Sid, _In_ ULONG SubAuthority)
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
Definition: rtlfuncs.h:1922
_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeString(_When_(AllocateDestinationString, _Out_ _At_(DestinationString->Buffer, __drv_allocatesMem(Mem))) _When_(!AllocateDestinationString, _Inout_) PUNICODE_STRING DestinationString, _In_ PCUNICODE_STRING SourceString, _In_ BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlCompressBuffer(_In_ USHORT CompressionFormatAndEngine, _In_reads_bytes_(UncompressedBufferSize) PUCHAR UncompressedBuffer, _In_ ULONG UncompressedBufferSize, _Out_writes_bytes_to_(CompressedBufferSize, *FinalCompressedSize) PUCHAR CompressedBuffer, _In_ ULONG CompressedBufferSize, _In_ ULONG UncompressedChunkSize, _Out_ PULONG FinalCompressedSize, _In_ PVOID WorkSpace)
NTSYSAPI ULONG NTAPI RtlLengthRequiredSid(IN ULONG SubAuthorityCount)
Definition: sid.c:54
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
Definition: rtlfuncs.h:1609
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlHashUnicodeString(_In_ CONST UNICODE_STRING *String, _In_ BOOLEAN CaseInSensitive, _In_ ULONG HashAlgorithm, _Out_ PULONG HashValue)
_When_(Status< 0, _Out_range_(>, 0)) _When_(Status >=0
_Out_ PLARGE_INTEGER Time
Definition: rtlfuncs.h:4649
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID PrimaryGroup
Definition: rtlfuncs.h:1611
_In_ const STRING _In_ BOOLEAN CaseInSensitive
Definition: rtlfuncs.h:2402
_In_ PSID_IDENTIFIER_AUTHORITY _In_ UCHAR SubAuthorityCount
Definition: rtlfuncs.h:1527
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
NTSYSAPI NTSTATUS NTAPI RtlGetCompressionWorkSpaceSize(_In_ USHORT CompressionFormatAndEngine, _Out_ PULONG CompressBufferWorkSpaceSize, _Out_ PULONG CompressFragmentWorkSpaceSize)
_Out_ PCPTABLEINFO CodePageTable
Definition: rtlfuncs.h:4328
_In_ ULONG TypeMask
Definition: rtlfuncs.h:4686
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE QueryTable
Definition: rtlfuncs.h:4220
NTSYSAPI NTSTATUS NTAPI RtlUnicodeToMultiByteSize(PULONG MbSize, PCWCH UnicodeString, ULONG UnicodeSize)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG SaclSize
Definition: rtlfuncs.h:1608
_Inout_opt_ POEM_STRING _Out_opt_ PBOOLEAN NameContainsSpaces
Definition: rtlfuncs.h:3103
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlGetAce(PACL Acl, ULONG AceIndex, PVOID *Ace)
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG BytesInUnicodeString
Definition: rtlfuncs.h:2047
_In_ const STRING _In_ BOOLEAN CaseInsensitive
Definition: rtlfuncs.h:2371
_In_ ULONG _In_ ULONG AceFlags
Definition: rtlfuncs.h:1154
_In_opt_ PSID _In_opt_ BOOLEAN GroupDefaulted
Definition: rtlfuncs.h:1660
_In_ PSID _In_ BOOLEAN AllocateDestinationString
Definition: rtlfuncs.h:1361
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
Definition: sid.c:150
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:3016
_In_ PSID SourceSid
Definition: rtlfuncs.h:1371
_Must_inspect_result_ NTSYSAPI LONG NTAPI RtlCompareUnicodeStrings(_In_reads_(String1Length) PCWCH String1, _In_ SIZE_T String1Length, _In_reads_(String2Length) PCWCH String2, _In_ SIZE_T String2Length, _In_ BOOLEAN CaseInSensitive)
_In_ PCWSTR _Inout_ _At_ QueryTable _Pre_unknown_ PRTL_QUERY_REGISTRY_TABLE _In_opt_ PVOID _In_opt_ PVOID Environment
Definition: rtlfuncs.h:4223
NTSYSAPI NTSTATUS NTAPI RtlOemStringToUnicodeString(PUNICODE_STRING DestinationString, PCOEM_STRING SourceString, BOOLEAN AllocateDestinationString)
_In_ BOOLEAN DaclPresent
Definition: rtlfuncs.h:1647
NTSYSAPI ULONG NTAPI RtlxAnsiStringToUnicodeSize(PCANSI_STRING AnsiString)
NTSYSAPI LONG NTAPI RtlCompareUnicodeString(PCUNICODE_STRING String1, PCUNICODE_STRING String2, BOOLEAN CaseInsensitive)
Definition: string_lib.cpp:31
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2451
NTSYSAPI NTSTATUS NTAPI RtlGetSaclSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN SaclPresent, _Out_ PACL *Sacl, _Out_ PBOOLEAN SaclDefaulted)
NTSYSAPI BOOLEAN NTAPI RtlValidSid(IN PSID Sid)
Definition: sid.c:21
NTSYSAPI CHAR NTAPI RtlUpperChar(CHAR Source)
NTSYSAPI BOOLEAN NTAPI RtlEqualPrefixSid(PSID Sid1, PSID Sid2)
_In_ ULONG _In_ ULONGLONG ConditionMask
Definition: rtlfuncs.h:4688
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Revision)
NTSYSAPI ULONG NTAPI RtlRandom(_Inout_ PULONG Seed)
_Out_writes_bytes_to_opt_ BufferLength PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor
Definition: rtlfuncs.h:1132
NTSYSAPI NTSTATUS NTAPI RtlUnicodeToMultiByteN(PCHAR MbString, ULONG MbSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
NTSYSAPI NTSTATUS NTAPI RtlValidateUnicodeString(_In_ ULONG Flags, _In_ PCUNICODE_STRING String)
Definition: unicode.c:2605
_In_opt_ PSID _In_opt_ BOOLEAN OwnerDefaulted
Definition: rtlfuncs.h:1684
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL Sacl
Definition: rtlfuncs.h:1607
_Out_ _Inout_ POEM_STRING DestinationString
Definition: rtlfuncs.h:1921
_In_ ULONG _In_ SECURITY_INFORMATION RequiredInformation
Definition: rtlfuncs.h:1728
NTSYSAPI PUCHAR NTAPI RtlSubAuthorityCountSid(_In_ PSID Sid)
_In_ ULONG _In_ ULONG CompressedBufferSize
Definition: rtlfuncs.h:3294
_In_ ULONG _In_ ULONG _Out_ PULONG FinalUncompressedSize
Definition: rtlfuncs.h:3296
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PCUNICODE_STRING Source)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID _Inout_ PULONG _Out_writes_bytes_to_opt_ PrimaryGroupSize PSID _Inout_ PULONG PrimaryGroupSize
Definition: rtlfuncs.h:1613
_In_ ULONG _In_ ACCESS_MASK _In_ PSID Sid
Definition: rtlfuncs.h:1145
NTSYSAPI NTSTATUS NTAPI RtlGetGroupSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PSID *Group, _Out_ PBOOLEAN GroupDefaulted)
NTSYSAPI PVOID NTAPI RtlFreeSid(_In_ _Post_invalid_ PSID Sid)
NTSYSAPI VOID NTAPI RtlTimeToTimeFields(PLARGE_INTEGER Time, PTIME_FIELDS TimeFields)
NTSYSAPI ULONG NTAPI RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString)
Definition: unicode.c:1091
_Out_ PULONG ElapsedSeconds
Definition: rtlfuncs.h:4658
_Must_inspect_result_ NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(_In_ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, _In_ UCHAR SubAuthorityCount, _In_ ULONG SubAuthority0, _In_ ULONG SubAuthority1, _In_ ULONG SubAuthority2, _In_ ULONG SubAuthority3, _In_ ULONG SubAuthority4, _In_ ULONG SubAuthority5, _In_ ULONG SubAuthority6, _In_ ULONG SubAuthority7, _Outptr_ PSID *Sid)
NTSYSAPI ULONG NTAPI RtlWalkFrameChain(_Out_writes_(Count -(Flags > > RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT)) PVOID *Callers, _In_ ULONG Count, _In_ ULONG Flags)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG AbsoluteSecurityDescriptorSize
Definition: rtlfuncs.h:1604
NTSYSAPI PSID_IDENTIFIER_AUTHORITY NTAPI RtlIdentifierAuthoritySid(PSID Sid)
_In_ ULONG SecurityDescriptorLength
Definition: rtlfuncs.h:1726
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeToString(PUNICODE_STRING Destination, PCWSTR Source)
NTSYSAPI NTSTATUS NTAPI RtlDeleteAce(PACL Acl, ULONG AceIndex)
_In_ ULONG Revision
Definition: rtlfuncs.h:1142
NTSYSAPI VOID NTAPI RtlMapGenericMask(PACCESS_MASK AccessMask, PGENERIC_MAPPING GenericMapping)
_In_ const STRING * Source
Definition: rtlfuncs.h:2430
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI ULONG NTAPI RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString)
Definition: unicode.c:2177
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptorRelative(_Out_ PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor, _In_ ULONG Revision)
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInMultiByteString
Definition: rtlfuncs.h:2588
NTSYSAPI NTSTATUS NTAPI RtlGetDaclSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PBOOLEAN DaclPresent, _Out_ PACL *Dacl, _Out_ PBOOLEAN DaclDefaulted)
NTSYSAPI NTSTATUS NTAPI RtlGetOwnerSecurityDescriptor(_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _Out_ PSID *Owner, _Out_ PBOOLEAN OwnerDefaulted)
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeToOemN(PCHAR OemString, ULONG OemSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
_Inout_opt_ POEM_STRING OemName
Definition: rtlfuncs.h:3101
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG DaclSize
Definition: rtlfuncs.h:1606
_In_ ULONG UncompressedBufferSize
Definition: rtlfuncs.h:3292
NTSYSAPI VOID NTAPI RtlCopyString(_Out_ PSTRING DestinationString, _In_opt_ const STRING *SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualSid(_In_ PSID Sid1, _In_ PSID Sid2)
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PCUNICODE_STRING SourceString)
_In_ ULONG _In_ ACCESS_MASK AccessMask
Definition: rtlfuncs.h:1143
NTSYSAPI NTSTATUS NTAPI RtlUnicodeToOemN(PCHAR OemString, ULONG OemSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PCUNICODE_STRING String1, PCUNICODE_STRING String2, BOOLEAN CaseInsensitive)
NTSYSAPI VOID NTAPI RtlCaptureContext(_Out_ PCONTEXT ContextRecord)
NTSYSAPI BOOLEAN NTAPI RtlValidSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor)
Definition: sd.c:1054
*BytesInUnicodeString PWCH _In_ ULONG _Out_opt_ PULONG _In_ ULONG BytesInOemString
Definition: rtlfuncs.h:2050
#define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT
Definition: rtlfuncs.h:820
NTSYSAPI WCHAR NTAPI RtlDowncaseUnicodeChar(IN WCHAR Source)
Definition: nls.c:131
NTSYSAPI VOID NTAPI RtlSecondsSince1970ToTime(_In_ ULONG SecondsSince1970, _Out_ PLARGE_INTEGER Time)
NTSYSAPI ULONG NTAPI RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString)
Definition: unicode.c:2124
_In_ PWSTR Path
Definition: rtlfuncs.h:4186
_In_ PSID_IDENTIFIER_AUTHORITY IdentifierAuthority
Definition: rtlfuncs.h:1525
_In_ BOOLEAN _In_opt_ PACL _In_opt_ BOOLEAN DaclDefaulted
Definition: rtlfuncs.h:1650
*BytesInUnicodeString PWCH _In_ ULONG MaxBytesInUnicodeString
Definition: rtlfuncs.h:2046
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PCANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeToMultiByteN(PCHAR MbString, ULONG MbSize, PULONG ResultSize, PCWCH UnicodeString, ULONG UnicodeSize)
NTSYSAPI NTSTATUS NTAPI RtlCharToInteger(PCSZ String, ULONG Base, PULONG Value)
Definition: unicode.c:261
NTSYSAPI WCHAR NTAPI RtlUpcaseUnicodeChar(WCHAR Source)
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeN(_Out_ PWCH UnicodeString, _In_ ULONG UnicodeSize, _Out_opt_ PULONG ResultSize, _In_ PCCH MbString, _In_ ULONG MbSize)
Definition: nlsboot.c:62
_Use_decl_annotations_ NTSTATUS NTAPI RtlOemToUnicodeN(_Out_ PWCHAR UnicodeString, _In_ ULONG UnicodeSize, _Out_opt_ PULONG ResultSize, _In_ PCCH OemString, _In_ ULONG OemSize)
Definition: nlsboot.c:282
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeSize(_Out_ PULONG UnicodeSize, _In_ PCCH MbString, _In_ ULONG MbSize)
Definition: nlsboot.c:93
#define _Pre_unknown_
Definition: no_sal2.h:98
#define _In_reads_bytes_(s)
Definition: no_sal2.h:170
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Out_opt_
Definition: no_sal2.h:214
#define _Notnull_
Definition: no_sal2.h:54
#define _Inout_
Definition: no_sal2.h:162
#define _Ret_maybenull_
Definition: no_sal2.h:328
#define _Success_(c)
Definition: no_sal2.h:84
#define _At_(t, a)
Definition: no_sal2.h:40
#define _In_z_
Definition: no_sal2.h:164
#define _Pre_maybenull_
Definition: no_sal2.h:514
#define _In_opt_z_
Definition: no_sal2.h:218
#define _Outptr_
Definition: no_sal2.h:262
#define _Out_range_(l, h)
Definition: