The structure layout of self-relative security descriptors may be different from...
[reactos.git] / reactos / include / ntos / rtl.h
1 /* $Id$
2 *
3 */
4 #ifndef __DDK_RTL_H
5 #define __DDK_RTL_H
6
7 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined (__NTAPP__)
8
9 #include <stddef.h>
10 #include <stdarg.h>
11
12 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
13
14 #include <pe.h>
15 #include <ole32/guiddef.h>
16
17 #ifndef __USE_W32API
18
19 /*
20 * PURPOSE: Flags for RtlQueryRegistryValues
21 */
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)
29
30
31 /*
32 * PURPOSE: Flags used by RtlIsTextUnicode and IsTextUnicode
33 */
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)
49
50 /*
51 * VOID
52 * InitializeObjectAttributes (
53 * POBJECT_ATTRIBUTES InitializedAttributes,
54 * PUNICODE_STRING ObjectName,
55 * ULONG Attributes,
56 * HANDLE RootDirectory,
57 * PSECURITY_DESCRIPTOR SecurityDescriptor
58 * );
59 *
60 * FUNCTION: Sets up a parameter of type OBJECT_ATTRIBUTES for a
61 * subsequent call to ZwCreateXXX or ZwOpenXXX
62 * ARGUMENTS:
63 * InitializedAttributes (OUT) = Caller supplied storage for the
64 * object attributes
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
69 */
70 #define InitializeObjectAttributes(p,n,a,r,s) \
71 { \
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; \
78 }
79
80
81 /*
82 * VOID
83 * InitializeListHead (
84 * PLIST_ENTRY ListHead
85 * );
86 *
87 * FUNCTION: Initializes a double linked list
88 * ARGUMENTS:
89 * ListHead = Caller supplied storage for the head of the list
90 */
91 static __inline VOID
92 InitializeListHead(
93 IN PLIST_ENTRY ListHead)
94 {
95 ListHead->Flink = ListHead->Blink = ListHead;
96 }
97
98
99 /*
100 * VOID
101 * InsertHeadList (
102 * PLIST_ENTRY ListHead,
103 * PLIST_ENTRY Entry
104 * );
105 *
106 * FUNCTION: Inserts an entry in a double linked list
107 * ARGUMENTS:
108 * ListHead = Head of the list
109 * Entry = Entry to insert
110 */
111 static __inline VOID
112 InsertHeadList(
113 IN PLIST_ENTRY ListHead,
114 IN PLIST_ENTRY Entry)
115 {
116 PLIST_ENTRY OldFlink;
117 OldFlink = ListHead->Flink;
118 Entry->Flink = OldFlink;
119 Entry->Blink = ListHead;
120 OldFlink->Blink = Entry;
121 ListHead->Flink = Entry;
122 }
123
124
125 /*
126 * VOID
127 * InsertTailList (
128 * PLIST_ENTRY ListHead,
129 * PLIST_ENTRY Entry
130 * );
131 *
132 * FUNCTION:
133 * Inserts an entry in a double linked list
134 *
135 * ARGUMENTS:
136 * ListHead = Head of the list
137 * Entry = Entry to insert
138 */
139 static __inline VOID
140 InsertTailList(
141 IN PLIST_ENTRY ListHead,
142 IN PLIST_ENTRY Entry)
143 {
144 PLIST_ENTRY OldBlink;
145 OldBlink = ListHead->Blink;
146 Entry->Flink = ListHead;
147 Entry->Blink = OldBlink;
148 OldBlink->Flink = Entry;
149 ListHead->Blink = Entry;
150 }
151
152 /*
153 * BOOLEAN
154 * IsListEmpty (
155 * PLIST_ENTRY ListHead
156 * );
157 *
158 * FUNCTION:
159 * Checks if a double linked list is empty
160 *
161 * ARGUMENTS:
162 * ListHead = Head of the list
163 */
164 #define IsListEmpty(ListHead) \
165 ((ListHead)->Flink == (ListHead))
166
167
168 /*
169 * PSINGLE_LIST_ENTRY
170 * PopEntryList (
171 * PSINGLE_LIST_ENTRY ListHead
172 * );
173 *
174 * FUNCTION:
175 * Removes an entry from the head of a single linked list
176 *
177 * ARGUMENTS:
178 * ListHead = Head of the list
179 *
180 * RETURNS:
181 * The removed entry
182 */
183 #define PopEntryList(ListHead) \
184 (ListHead)->Next; \
185 { \
186 PSINGLE_LIST_ENTRY _FirstEntry; \
187 _FirstEntry = (ListHead)->Next; \
188 if (_FirstEntry != NULL) \
189 (ListHead)->Next = _FirstEntry->Next; \
190 }
191
192 #define RtlCopyMemory(Destination,Source,Length) \
193 memcpy((Destination),(Source),(Length))
194
195 #define PushEntryList(_ListHead, _Entry) \
196 (_Entry)->Next = (_ListHead)->Next; \
197 (_ListHead)->Next = (_Entry); \
198
199 /*
200 *BOOLEAN
201 *RemoveEntryList (
202 * PLIST_ENTRY Entry
203 * );
204 *
205 * FUNCTION:
206 * Removes an entry from a double linked list
207 *
208 * ARGUMENTS:
209 * ListEntry = Entry to remove
210 */
211 static __inline BOOLEAN
212 RemoveEntryList(
213 IN PLIST_ENTRY Entry)
214 {
215 PLIST_ENTRY OldFlink;
216 PLIST_ENTRY OldBlink;
217
218 OldFlink = Entry->Flink;
219 OldBlink = Entry->Blink;
220 OldFlink->Blink = OldBlink;
221 OldBlink->Flink = OldFlink;
222 return (OldFlink == OldBlink);
223 }
224
225
226 /*
227 * PLIST_ENTRY
228 * RemoveHeadList (
229 * PLIST_ENTRY ListHead
230 * );
231 *
232 * FUNCTION:
233 * Removes the head entry from a double linked list
234 *
235 * ARGUMENTS:
236 * ListHead = Head of the list
237 *
238 * RETURNS:
239 * The removed entry
240 */
241 static __inline PLIST_ENTRY
242 RemoveHeadList(
243 IN PLIST_ENTRY ListHead)
244 {
245 PLIST_ENTRY Flink;
246 PLIST_ENTRY Entry;
247
248 Entry = ListHead->Flink;
249 Flink = Entry->Flink;
250 ListHead->Flink = Flink;
251 Flink->Blink = ListHead;
252 return Entry;
253 }
254
255
256 /*
257 * PLIST_ENTRY
258 * RemoveTailList (
259 * PLIST_ENTRY ListHead
260 * );
261 *
262 * FUNCTION:
263 * Removes the tail entry from a double linked list
264 *
265 * ARGUMENTS:
266 * ListHead = Head of the list
267 *
268 * RETURNS:
269 * The removed entry
270 */
271 static __inline PLIST_ENTRY
272 RemoveTailList(
273 IN PLIST_ENTRY ListHead)
274 {
275 PLIST_ENTRY Blink;
276 PLIST_ENTRY Entry;
277
278 Entry = ListHead->Blink;
279 Blink = Entry->Blink;
280 ListHead->Blink = Blink;
281 Blink->Flink = ListHead;
282 return Entry;
283 }
284
285
286 /*
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).
289 */
290
291 #define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
292 {\
293 PLIST_ENTRY current;\
294 \
295 current = (ListHead)->Flink;\
296 while (current != (ListHead))\
297 {\
298 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
299 (NewEntry)->SortField)\
300 {\
301 break;\
302 }\
303 current = current->Flink;\
304 }\
305 \
306 InsertTailList(current, &((NewEntry)->ListEntryField));\
307 }
308
309
310 #define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
311 {\
312 PLIST_ENTRY current;\
313 \
314 current = (ListHead)->Flink;\
315 while (current != (ListHead))\
316 {\
317 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
318 (NewEntry)->SortField)\
319 {\
320 break;\
321 }\
322 current = current->Flink;\
323 }\
324 \
325 InsertTailList(current, &((NewEntry)->ListEntryField));\
326 }
327
328
329 #define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
330 {\
331 PLIST_ENTRY current;\
332 \
333 current = (ListHead)->Flink;\
334 while (current != (ListHead))\
335 {\
336 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
337 (NewEntry)->SortField)\
338 {\
339 break;\
340 }\
341 current = current->Flink;\
342 }\
343 \
344 InsertTailList(current, &((NewEntry)->ListEntryField));\
345 }
346
347
348 #define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
349 {\
350 PLIST_ENTRY current;\
351 \
352 current = (ListHead)->Flink;\
353 while (current != (ListHead))\
354 {\
355 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
356 (NewEntry)->SortField)\
357 {\
358 break;\
359 }\
360 current = current->Flink;\
361 }\
362 \
363 InsertTailList(current, &((NewEntry)->ListEntryField));\
364 }
365
366
367 /*
368 * BOOLEAN
369 * IsXstEntry (
370 * PLIST_ENTRY ListHead,
371 * PLIST_ENTRY Entry
372 * );
373 */
374 #define IsFirstEntry(ListHead, Entry) ((ListHead)->Flink == Entry)
375
376 #define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
377
378 #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination), (Source), (Length)))
379
380 NTSTATUS
381 STDCALL
382 RtlAppendUnicodeToString (
383 PUNICODE_STRING Destination,
384 PCWSTR Source
385 );
386
387 SIZE_T STDCALL
388 RtlCompareMemory(IN const VOID *Source1,
389 IN const VOID *Source2,
390 IN SIZE_T Length);
391
392 BOOLEAN
393 STDCALL
394 RtlEqualUnicodeString (
395 PUNICODE_STRING String1,
396 PUNICODE_STRING String2,
397 BOOLEAN CaseInSensitive
398 );
399
400 NTSTATUS
401 STDCALL
402 RtlQueryRegistryValues (
403 IN ULONG RelativeTo,
404 IN PCWSTR Path,
405 IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
406 IN PVOID Context,
407 IN PVOID Environment
408 );
409
410 NTSTATUS
411 STDCALL
412 RtlWriteRegistryValue (
413 ULONG RelativeTo,
414 PCWSTR Path,
415 PCWSTR ValueName,
416 ULONG ValueType,
417 PVOID ValueData,
418 ULONG ValueLength
419 );
420
421 NTSTATUS STDCALL
422 RtlDeleteRegistryValue(IN ULONG RelativeTo,
423 IN PCWSTR Path,
424 IN PCWSTR ValueName);
425
426 VOID STDCALL
427 RtlMoveMemory (PVOID Destination, CONST VOID* Source, ULONG Length);
428
429 BOOLEAN STDCALL
430 RtlEqualLuid(IN PLUID Luid1,
431 IN PLUID Luid2);
432
433 VOID
434 STDCALL
435 RtlFillMemory (
436 PVOID Destination,
437 ULONG Length,
438 UCHAR Fill
439 );
440
441 VOID STDCALL
442 RtlZeroMemory (PVOID Destination, ULONG Length);
443
444 #else /* __USE_W32API */
445
446 #include <ddk/ntifs.h>
447
448 #endif /* __USE_W32API */
449
450
451 /*
452 * PURPOSE: Used with RtlCheckRegistryKey, RtlCreateRegistryKey,
453 * RtlDeleteRegistryKey
454 */
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
462
463 #define RTL_REGISTRY_HANDLE 0x40000000
464 #define RTL_REGISTRY_OPTIONAL 0x80000000
465
466
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
472
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)
477
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
481
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
486
487
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
493
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;
500 #else
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__ */
507
508 /*
509 VOID
510 PushEntryList (
511 PSINGLE_LIST_ENTRY ListHead,
512 PSINGLE_LIST_ENTRY Entry
513 );
514 */
515 /*
516 #define PushEntryList(ListHead,Entry) \
517 (Entry)->Next = (ListHead)->Next; \
518 (ListHead)->Next = (Entry)
519 */
520
521
522 NTSTATUS STDCALL
523 RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
524 PSECURITY_DESCRIPTOR_RELATIVE RelSD,
525 PULONG BufferLength);
526
527 NTSTATUS STDCALL
528 RtlAddAccessAllowedAce (PACL Acl,
529 ULONG Revision,
530 ACCESS_MASK AccessMask,
531 PSID Sid);
532
533 NTSTATUS
534 STDCALL
535 RtlAddAccessAllowedAceEx(
536 IN OUT PACL pAcl,
537 IN DWORD dwAceRevision,
538 IN DWORD AceFlags,
539 IN DWORD AccessMask,
540 IN PSID pSid);
541
542
543 NTSTATUS STDCALL
544 RtlAddAccessDeniedAce (PACL Acl,
545 ULONG Revision,
546 ACCESS_MASK AccessMask,
547 PSID Sid);
548
549 NTSTATUS STDCALL
550 RtlAddAce (PACL Acl,
551 ULONG Revision,
552 ULONG StartingIndex,
553 PACE AceList,
554 ULONG AceListLength);
555
556 NTSTATUS STDCALL
557 RtlAddAtomToAtomTable (IN PRTL_ATOM_TABLE AtomTable,
558 IN PWSTR AtomName,
559 OUT PRTL_ATOM Atom);
560
561 NTSTATUS STDCALL
562 RtlAddAuditAccessAce (PACL Acl,
563 ULONG Revision,
564 ACCESS_MASK AccessMask,
565 PSID Sid,
566 BOOLEAN Success,
567 BOOLEAN Failure);
568
569 NTSTATUS STDCALL
570 RtlAddRange (IN OUT PRTL_RANGE_LIST RangeList,
571 IN ULONGLONG Start,
572 IN ULONGLONG End,
573 IN UCHAR Attributes,
574 IN ULONG Flags, /* RTL_RANGE_LIST_ADD_... flags */
575 IN PVOID UserData OPTIONAL,
576 IN PVOID Owner OPTIONAL);
577
578 NTSTATUS STDCALL
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,
589 OUT PSID *Sid);
590
591 PVOID STDCALL
592 RtlAllocateHeap (
593 HANDLE Heap,
594 ULONG Flags,
595 ULONG Size
596 );
597
598 WCHAR STDCALL
599 RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar);
600
601 ULONG
602 STDCALL
603 RtlAnsiStringToUnicodeSize (
604 PANSI_STRING AnsiString
605 );
606
607 NTSTATUS
608 STDCALL
609 RtlAnsiStringToUnicodeString (
610 PUNICODE_STRING DestinationString,
611 PANSI_STRING SourceString,
612 BOOLEAN AllocateDestinationString
613 );
614
615 NTSTATUS
616 STDCALL
617 RtlAppendAsciizToString(
618 PSTRING Destination,
619 PCSZ Source
620 );
621
622 NTSTATUS
623 STDCALL
624 RtlAppendStringToString (
625 PSTRING Destination,
626 PSTRING Source
627 );
628
629 NTSTATUS
630 STDCALL
631 RtlAppendUnicodeStringToString (
632 PUNICODE_STRING Destination,
633 PUNICODE_STRING Source
634 );
635
636 BOOLEAN STDCALL
637 RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess,
638 ACCESS_MASK DesiredAccess);
639
640 BOOLEAN STDCALL
641 RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess,
642 ACCESS_MASK DesiredAccess);
643
644 BOOLEAN
645 STDCALL
646 RtlAreBitsClear (
647 PRTL_BITMAP BitMapHeader,
648 ULONG StartingIndex,
649 ULONG Length
650 );
651
652 BOOLEAN
653 STDCALL
654 RtlAreBitsSet (
655 PRTL_BITMAP BitMapHeader,
656 ULONG StartingIndex,
657 ULONG Length
658 );
659
660 VOID
661 STDCALL
662 RtlAssert (
663 PVOID FailedAssertion,
664 PVOID FileName,
665 ULONG LineNumber,
666 PCHAR Message
667 );
668
669 VOID
670 STDCALL
671 RtlCaptureContext (
672 OUT PCONTEXT ContextRecord
673 );
674
675 USHORT
676 STDCALL
677 RtlCaptureStackBackTrace (
678 IN ULONG FramesToSkip,
679 IN ULONG FramesToCapture,
680 OUT PVOID *BackTrace,
681 OUT PULONG BackTraceHash OPTIONAL
682 );
683
684
685
686 NTSTATUS
687 STDCALL
688 RtlCharToInteger (
689 PCSZ String,
690 ULONG Base,
691 PULONG Value
692 );
693
694 NTSTATUS
695 STDCALL
696 RtlCheckRegistryKey (
697 ULONG RelativeTo,
698 PWSTR Path
699 );
700
701 VOID
702 STDCALL
703 RtlClearAllBits (
704 IN PRTL_BITMAP BitMapHeader
705 );
706
707 VOID
708 STDCALL
709 RtlClearBit (
710 PRTL_BITMAP BitMapHeader,
711 ULONG BitNumber
712 );
713
714 VOID
715 STDCALL
716 RtlClearBits (
717 IN PRTL_BITMAP BitMapHeader,
718 IN ULONG StartingIndex,
719 IN ULONG NumberToClear
720 );
721
722 ULONG STDCALL
723 RtlCompactHeap (
724 HANDLE Heap,
725 ULONG Flags
726 );
727
728 LONG
729 STDCALL
730 RtlCompareString (
731 PSTRING String1,
732 PSTRING String2,
733 BOOLEAN CaseInsensitive
734 );
735
736 LONG
737 STDCALL
738 RtlCompareUnicodeString (
739 PUNICODE_STRING String1,
740 PUNICODE_STRING String2,
741 BOOLEAN CaseInsensitive
742 );
743
744 NTSTATUS STDCALL
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,
752 IN PVOID WorkSpace);
753
754 NTSTATUS STDCALL
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,
761 IN PVOID WorkSpace);
762
763 LARGE_INTEGER STDCALL
764 RtlConvertLongToLargeInteger (IN LONG SignedInteger);
765
766 NTSTATUS STDCALL
767 RtlConvertSidToUnicodeString (IN OUT PUNICODE_STRING String,
768 IN PSID Sid,
769 IN BOOLEAN AllocateString);
770
771 LARGE_INTEGER STDCALL
772 RtlConvertUlongToLargeInteger (IN ULONG UnsignedInteger);
773
774 #if 0
775 VOID
776 RtlCopyBytes (
777 PVOID Destination,
778 CONST VOID * Source,
779 ULONG Length
780 );
781
782 VOID
783 RtlCopyMemory (
784 VOID * Destination,
785 CONST VOID * Source,
786 ULONG Length
787 );
788 #endif
789
790 #define RtlCopyBytes RtlCopyMemory
791
792 VOID STDCALL
793 RtlCopyLuid(IN PLUID LuidDest,
794 IN PLUID LuidSrc);
795
796 VOID STDCALL
797 RtlCopyLuidAndAttributesArray(ULONG Count,
798 PLUID_AND_ATTRIBUTES Src,
799 PLUID_AND_ATTRIBUTES Dest);
800
801 NTSTATUS STDCALL
802 RtlCopyRangeList (OUT PRTL_RANGE_LIST CopyRangeList,
803 IN PRTL_RANGE_LIST RangeList);
804
805 NTSTATUS STDCALL
806 RtlCopySid(ULONG BufferLength,
807 PSID Dest,
808 PSID Src);
809
810 NTSTATUS STDCALL
811 RtlCopySidAndAttributesArray(ULONG Count,
812 PSID_AND_ATTRIBUTES Src,
813 ULONG SidAreaSize,
814 PSID_AND_ATTRIBUTES Dest,
815 PVOID SidArea,
816 PVOID* RemainingSidArea,
817 PULONG RemainingSidAreaSize);
818
819 VOID STDCALL
820 RtlCopyString(PSTRING DestinationString,
821 PSTRING SourceString);
822
823 VOID STDCALL
824 RtlCopyUnicodeString(PUNICODE_STRING DestinationString,
825 PUNICODE_STRING SourceString);
826
827 NTSTATUS STDCALL
828 RtlCreateAcl (PACL Acl,
829 ULONG AclSize,
830 ULONG AclRevision);
831
832 NTSTATUS STDCALL
833 RtlCreateAtomTable(IN ULONG TableSize,
834 IN OUT PRTL_ATOM_TABLE *AtomTable);
835
836 HANDLE
837 STDCALL
838 RtlCreateHeap (
839 ULONG Flags,
840 PVOID BaseAddress,
841 ULONG SizeToReserve, /* dwMaximumSize */
842 ULONG SizeToCommit, /* dwInitialSize */
843 PVOID Unknown,
844 PRTL_HEAP_DEFINITION Definition
845 );
846
847 NTSTATUS STDCALL
848 RtlCreateRegistryKey (ULONG RelativeTo,
849 PWSTR Path);
850
851 NTSTATUS STDCALL
852 RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
853 ULONG Revision);
854
855 NTSTATUS STDCALL
856 RtlCreateSecurityDescriptorRelative (PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
857 ULONG Revision);
858
859 NTSTATUS
860 STDCALL
861 RtlCreateSystemVolumeInformationFolder(
862 IN PUNICODE_STRING VolumeRootPath
863 );
864
865 BOOLEAN STDCALL
866 RtlCreateUnicodeString (OUT PUNICODE_STRING Destination,
867 IN PCWSTR Source);
868
869 BOOLEAN STDCALL
870 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
871 IN PCSZ Source);
872
873 NTSTATUS
874 STDCALL
875 RtlCustomCPToUnicodeN (
876 IN PCPTABLEINFO CustomCP,
877 PWCHAR UnicodeString,
878 ULONG UnicodeSize,
879 PULONG ResultSize,
880 PCHAR CustomString,
881 ULONG CustomSize
882 );
883
884 BOOLEAN STDCALL
885 RtlCutoverTimeToSystemTime(IN PTIME_FIELDS CutoverTimeFields,
886 OUT PLARGE_INTEGER SystemTime,
887 IN PLARGE_INTEGER CurrentTime,
888 IN BOOLEAN ThisYearsCutoverOnly);
889
890 NTSTATUS STDCALL
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);
897
898 NTSTATUS STDCALL
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);
906
907 NTSTATUS STDCALL
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,
915 IN PVOID WorkSpace);
916
917 PRTL_SPLAY_LINKS
918 STDCALL
919 RtlDelete (
920 PRTL_SPLAY_LINKS Links
921 );
922
923 NTSTATUS STDCALL
924 RtlDeleteAce (PACL Acl,
925 ULONG AceIndex);
926
927 NTSTATUS STDCALL
928 RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable,
929 IN RTL_ATOM Atom);
930
931 BOOLEAN
932 STDCALL
933 RtlDeleteElementGenericTable (
934 PRTL_GENERIC_TABLE Table,
935 PVOID Buffer
936 );
937
938 BOOLEAN
939 STDCALL
940 RtlDeleteElementGenericTableAvl (
941 PRTL_AVL_TABLE Table,
942 PVOID Buffer
943 );
944
945 VOID
946 STDCALL
947 RtlDeleteNoSplay (
948 PRTL_SPLAY_LINKS Links,
949 PRTL_SPLAY_LINKS *Root
950 );
951
952
953 NTSTATUS STDCALL
954 RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList,
955 IN PVOID Owner);
956
957 NTSTATUS STDCALL
958 RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList,
959 IN ULONGLONG Start,
960 IN ULONGLONG End,
961 IN PVOID Owner);
962
963 NTSTATUS STDCALL
964 RtlDescribeChunk(IN USHORT CompressionFormat,
965 IN OUT PUCHAR *CompressedBuffer,
966 IN PUCHAR EndOfCompressedBufferPlus1,
967 OUT PUCHAR *ChunkBuffer,
968 OUT PULONG ChunkSize);
969
970 NTSTATUS STDCALL
971 RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable);
972
973 HANDLE STDCALL
974 RtlDestroyHeap (HANDLE hheap);
975
976 NTSTATUS
977 STDCALL
978 RtlDispatchException(
979 PEXCEPTION_RECORD pExcptRec,
980 CONTEXT * pContext
981 );
982
983
984 NTSTATUS
985 STDCALL
986 RtlDowncaseUnicodeString (
987 IN OUT PUNICODE_STRING DestinationString,
988 IN PUNICODE_STRING SourceString,
989 IN BOOLEAN AllocateDestinationString
990 );
991
992 NTSTATUS
993 STDCALL
994 RtlEmptyAtomTable (
995 IN PRTL_ATOM_TABLE AtomTable,
996 IN BOOLEAN DeletePinned
997 );
998
999 LARGE_INTEGER
1000 STDCALL
1001 RtlEnlargedIntegerMultiply (
1002 LONG Multiplicand,
1003 LONG Multiplier
1004 );
1005
1006 ULONG
1007 STDCALL
1008 RtlEnlargedUnsignedDivide (
1009 ULARGE_INTEGER Dividend,
1010 ULONG Divisor,
1011 PULONG Remainder
1012 );
1013
1014 LARGE_INTEGER
1015 STDCALL
1016 RtlEnlargedUnsignedMultiply (
1017 ULONG Multiplicand,
1018 ULONG Multiplier
1019 );
1020
1021 PVOID
1022 STDCALL
1023 RtlEnumerateGenericTable (
1024 PRTL_GENERIC_TABLE Table,
1025 BOOLEAN Restart
1026 );
1027
1028 PVOID
1029 STDCALL
1030 RtlEnumerateGenericTableAvl (
1031 PRTL_AVL_TABLE Table,
1032 BOOLEAN Restart
1033 );
1034
1035 PVOID
1036 STDCALL
1037 RtlEnumerateGenericTableLikeADirectory (
1038 IN PRTL_AVL_TABLE Table,
1039 IN PRTL_AVL_MATCH_FUNCTION MatchFunction,
1040 IN PVOID MatchData,
1041 IN ULONG NextFlag,
1042 IN OUT PVOID *RestartKey,
1043 IN OUT PULONG DeleteCount,
1044 IN OUT PVOID Buffer
1045 );
1046
1047 PVOID
1048 STDCALL
1049 RtlEnumerateGenericTableWithoutSplaying (
1050 PRTL_GENERIC_TABLE Table,
1051 PVOID *RestartKey
1052 );
1053
1054 PVOID
1055 STDCALL
1056 RtlEnumerateGenericTableWithoutSplayingAvl (
1057 PRTL_AVL_TABLE Table,
1058 PVOID *RestartKey
1059 );
1060
1061 BOOLEAN STDCALL
1062 RtlEqualPrefixSid (PSID Sid1,
1063 PSID Sid2);
1064
1065 BOOLEAN STDCALL
1066 RtlEqualSid (PSID Sid1,
1067 PSID Sid2);
1068
1069 BOOLEAN
1070 STDCALL
1071 RtlEqualString (
1072 PSTRING String1,
1073 PSTRING String2,
1074 BOOLEAN CaseInSensitive
1075 );
1076
1077 LARGE_INTEGER
1078 STDCALL
1079 RtlExtendedIntegerMultiply (
1080 LARGE_INTEGER Multiplicand,
1081 LONG Multiplier
1082 );
1083
1084 LARGE_INTEGER
1085 STDCALL
1086 RtlExtendedLargeIntegerDivide (
1087 LARGE_INTEGER Dividend,
1088 ULONG Divisor,
1089 PULONG Remainder
1090 );
1091
1092 LARGE_INTEGER
1093 STDCALL
1094 RtlExtendedMagicDivide (
1095 LARGE_INTEGER Dividend,
1096 LARGE_INTEGER MagicDivisor,
1097 CCHAR ShiftCount
1098 );
1099
1100 VOID
1101 STDCALL
1102 RtlFillMemoryUlong (
1103 PVOID Destination,
1104 ULONG Length,
1105 ULONG Fill
1106 );
1107
1108 ULONG
1109 STDCALL
1110 RtlFindClearBits (
1111 PRTL_BITMAP BitMapHeader,
1112 ULONG NumberToFind,
1113 ULONG HintIndex
1114 );
1115
1116 ULONG
1117 STDCALL
1118 RtlFindClearBitsAndSet (
1119 PRTL_BITMAP BitMapHeader,
1120 ULONG NumberToFind,
1121 ULONG HintIndex
1122 );
1123
1124 ULONG
1125 STDCALL
1126 RtlFindClearRuns (
1127 PRTL_BITMAP BitMapHeader,
1128 PRTL_BITMAP_RUN RunArray,
1129 ULONG SizeOfRunArray,
1130 BOOLEAN LocateLongestRuns
1131 );
1132
1133 ULONG
1134 STDCALL
1135 RtlFindLastBackwardRunClear (
1136 IN PRTL_BITMAP BitMapHeader,
1137 IN ULONG FromIndex,
1138 IN PULONG StartingRunIndex
1139 );
1140
1141 ULONG
1142 STDCALL
1143 RtlFindNextForwardRunClear (
1144 IN PRTL_BITMAP BitMapHeader,
1145 IN ULONG FromIndex,
1146 IN PULONG StartingRunIndex
1147 );
1148
1149
1150 PUNICODE_PREFIX_TABLE_ENTRY
1151 STDCALL
1152 RtlFindUnicodePrefix (
1153 PUNICODE_PREFIX_TABLE PrefixTable,
1154 PUNICODE_STRING FullName,
1155 ULONG CaseInsensitiveIndex
1156 );
1157
1158 ULONG
1159 STDCALL
1160 RtlFindFirstRunClear (
1161 PRTL_BITMAP BitMapHeader,
1162 PULONG StartingIndex
1163 );
1164
1165 ULONG
1166 STDCALL
1167 RtlFindFirstRunSet (
1168 PRTL_BITMAP BitMapHeader,
1169 PULONG StartingIndex
1170 );
1171
1172 CCHAR STDCALL
1173 RtlFindLeastSignificantBit (IN ULONGLONG Set);
1174
1175 ULONG
1176 STDCALL
1177 RtlFindLongestRunClear (
1178 PRTL_BITMAP BitMapHeader,
1179 PULONG StartingIndex
1180 );
1181
1182 ULONG
1183 STDCALL
1184 RtlFindLongestRunSet (
1185 PRTL_BITMAP BitMapHeader,
1186 PULONG StartingIndex
1187 );
1188
1189 NTSTATUS
1190 STDCALL
1191 RtlFindMessage (
1192 IN PVOID BaseAddress,
1193 IN ULONG Type,
1194 IN ULONG Language,
1195 IN ULONG MessageId,
1196 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1197 );
1198
1199 CCHAR STDCALL
1200 RtlFindMostSignificantBit (IN ULONGLONG Set);
1201
1202 NTSTATUS STDCALL
1203 RtlFindRange (IN PRTL_RANGE_LIST RangeList,
1204 IN ULONGLONG Minimum,
1205 IN ULONGLONG Maximum,
1206 IN ULONG Length,
1207 IN ULONG Alignment,
1208 IN ULONG Flags,
1209 IN UCHAR AttributeAvailableMask,
1210 IN PVOID Context OPTIONAL,
1211 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1212 OUT PULONGLONG Start);
1213
1214 ULONG
1215 STDCALL
1216 RtlFindSetBits (
1217 PRTL_BITMAP BitMapHeader,
1218 ULONG NumberToFind,
1219 ULONG HintIndex
1220 );
1221
1222 ULONG
1223 STDCALL
1224 RtlFindSetBitsAndClear (
1225 PRTL_BITMAP BitMapHeader,
1226 ULONG NumberToFind,
1227 ULONG HintIndex
1228 );
1229
1230 BOOLEAN STDCALL
1231 RtlFirstFreeAce (PACL Acl,
1232 PACE* Ace);
1233
1234 NTSTATUS STDCALL
1235 RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath);
1236
1237 VOID STDCALL
1238 RtlFreeAnsiString (IN PANSI_STRING AnsiString);
1239
1240 BOOLEAN
1241 STDCALL
1242 RtlFreeHeap (
1243 HANDLE Heap,
1244 ULONG Flags,
1245 PVOID Address
1246 );
1247
1248 VOID STDCALL
1249 RtlFreeOemString (IN POEM_STRING OemString);
1250
1251 VOID STDCALL
1252 RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList);
1253
1254 PVOID STDCALL
1255 RtlFreeSid (PSID Sid);
1256
1257 VOID STDCALL
1258 RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString);
1259
1260 VOID STDCALL
1261 RtlGenerate8dot3Name (IN PUNICODE_STRING Name,
1262 IN BOOLEAN AllowExtendedCharacters,
1263 IN OUT PGENERATE_NAME_CONTEXT Context,
1264 OUT PUNICODE_STRING Name8dot3);
1265
1266 NTSTATUS STDCALL
1267 RtlGetAce (PACL Acl,
1268 ULONG AceIndex,
1269 PACE *Ace);
1270
1271 VOID
1272 STDCALL
1273 RtlGetCallersAddress(
1274 OUT PVOID *CallersAddress,
1275 OUT PVOID *CallersCaller
1276 );
1277
1278 NTSTATUS STDCALL
1279 RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine,
1280 OUT PULONG CompressBufferAndWorkSpaceSize,
1281 OUT PULONG CompressFragmentWorkSpaceSize);
1282
1283 NTSTATUS STDCALL
1284 RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1285 PSECURITY_DESCRIPTOR_CONTROL Control,
1286 PULONG Revision);
1287
1288 NTSTATUS STDCALL
1289 RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1290 PBOOLEAN DaclPresent,
1291 PACL* Dacl,
1292 PBOOLEAN DaclDefaulted);
1293
1294 VOID STDCALL
1295 RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage,
1296 OUT PUSHORT OemCodePage);
1297
1298 PVOID
1299 STDCALL
1300 RtlGetElementGenericTable(
1301 PRTL_GENERIC_TABLE Table,
1302 ULONG I
1303 );
1304
1305 PVOID
1306 STDCALL
1307 RtlGetElementGenericTableAvl (
1308 PRTL_AVL_TABLE Table,
1309 ULONG I
1310 );
1311
1312 NTSTATUS STDCALL
1313 RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList,
1314 OUT PRTL_RANGE_LIST_ITERATOR Iterator,
1315 OUT PRTL_RANGE *Range);
1316
1317 NTSTATUS STDCALL
1318 RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1319 PSID* Group,
1320 PBOOLEAN GroupDefaulted);
1321
1322 NTSTATUS STDCALL
1323 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator,
1324 OUT PRTL_RANGE *Range,
1325 IN BOOLEAN MoveForwards);
1326
1327 ULONG
1328 STDCALL
1329 RtlGetNtGlobalFlags (
1330 VOID
1331 );
1332
1333 NTSTATUS STDCALL
1334 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1335 PSID* Owner,
1336 PBOOLEAN OwnerDefaulted);
1337
1338 NTSTATUS STDCALL
1339 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1340 PBOOLEAN SaclPresent,
1341 PACL* Sacl,
1342 PBOOLEAN SaclDefaulted);
1343
1344 BOOLEAN STDCALL
1345 RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
1346 PUCHAR RMControl);
1347
1348 NTSTATUS
1349 STDCALL
1350 RtlGetSetBootStatusData(
1351 HANDLE Filehandle,
1352 BOOLEAN WriteMode,
1353 DWORD DataClass,
1354 PVOID Buffer,
1355 ULONG BufferSize,
1356 DWORD DataClass2
1357 );
1358
1359 NTSTATUS STDCALL
1360 RtlGUIDFromString (IN PUNICODE_STRING GuidString,
1361 OUT GUID* Guid);
1362
1363 NTSTATUS
1364 STDCALL
1365 RtlHashUnicodeString(
1366 IN const UNICODE_STRING *String,
1367 IN BOOLEAN CaseInSensitive,
1368 IN ULONG HashAlgorithm,
1369 OUT PULONG HashValue
1370 );
1371
1372 PSID_IDENTIFIER_AUTHORITY STDCALL
1373 RtlIdentifierAuthoritySid (PSID Sid);
1374
1375 PVOID
1376 STDCALL
1377 RtlImageDirectoryEntryToData (
1378 PVOID BaseAddress,
1379 BOOLEAN bFlag,
1380 ULONG Directory,
1381 PULONG Size
1382 );
1383
1384 PIMAGE_NT_HEADERS
1385 STDCALL
1386 RtlImageNtHeader (
1387 IN PVOID BaseAddress
1388 );
1389
1390 PIMAGE_SECTION_HEADER
1391 STDCALL
1392 RtlImageRvaToSection (
1393 PIMAGE_NT_HEADERS NtHeader,
1394 PVOID BaseAddress,
1395 ULONG Rva
1396 );
1397
1398 ULONG
1399 STDCALL
1400 RtlImageRvaToVa (
1401 PIMAGE_NT_HEADERS NtHeader,
1402 PVOID BaseAddress,
1403 ULONG Rva,
1404 PIMAGE_SECTION_HEADER *SectionHeader
1405 );
1406
1407 VOID
1408 STDCALL
1409 RtlInitAnsiString (
1410 PANSI_STRING DestinationString,
1411 PCSZ SourceString
1412 );
1413
1414 VOID
1415 STDCALL
1416 RtlInitCodePageTable (
1417 IN PUSHORT TableBase,
1418 OUT PCPTABLEINFO CodePageTable
1419 );
1420
1421 VOID
1422 STDCALL
1423 RtlInitializeUnicodePrefix (
1424 PUNICODE_PREFIX_TABLE PrefixTable
1425 );
1426
1427 NTSTATUS STDCALL
1428 RtlInitializeSid (PSID Sid,
1429 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
1430 UCHAR SubAuthorityCount);
1431
1432 VOID
1433 STDCALL
1434 RtlInitializeBitMap(
1435 IN PRTL_BITMAP BitMapHeader,
1436 IN PULONG BitMapBuffer,
1437 IN ULONG SizeOfBitMap);
1438
1439 VOID
1440 STDCALL
1441 RtlInitNlsTables (
1442 IN PUSHORT AnsiTableBase,
1443 IN PUSHORT OemTableBase,
1444 IN PUSHORT CaseTableBase,
1445 OUT PNLSTABLEINFO NlsTable
1446 );
1447
1448 VOID
1449 STDCALL
1450 RtlInitString (
1451 PSTRING DestinationString,
1452 PCSZ SourceString
1453 );
1454
1455 VOID
1456 STDCALL
1457 RtlInitUnicodeString (
1458 PUNICODE_STRING DestinationString,
1459 PCWSTR SourceString
1460 );
1461
1462 VOID
1463 STDCALL
1464 RtlInitializeBitMap (
1465 IN OUT PRTL_BITMAP BitMapHeader,
1466 IN PULONG BitMapBuffer,
1467 IN ULONG SizeOfBitMap
1468 );
1469
1470 NTSTATUS
1471 STDCALL
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
1478 );
1479
1480 VOID
1481 STDCALL
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,
1487 PVOID TableContext
1488 );
1489
1490 VOID
1491 STDCALL
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,
1497 PVOID TableContext
1498 );
1499
1500 VOID STDCALL
1501 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList);
1502
1503 PVOID
1504 STDCALL
1505 RtlInsertElementGenericTable (
1506 PRTL_GENERIC_TABLE Table,
1507 PVOID Buffer,
1508 ULONG BufferSize,
1509 PBOOLEAN NewElement OPTIONAL
1510 );
1511
1512 PVOID
1513 STDCALL
1514 RtlInsertElementGenericTableAvl (
1515 PRTL_AVL_TABLE Table,
1516 PVOID Buffer,
1517 ULONG BufferSize,
1518 PBOOLEAN NewElement OPTIONAL
1519 );
1520
1521 PVOID
1522 STDCALL
1523 RtlInsertElementGenericTableFull (
1524 PRTL_GENERIC_TABLE Table,
1525 PVOID Buffer,
1526 ULONG BufferSize,
1527 PBOOLEAN NewElement OPTIONAL,
1528 PVOID NodeOrParent,
1529 TABLE_SEARCH_RESULT SearchResult
1530 );
1531
1532 PVOID
1533 STDCALL
1534 RtlInsertElementGenericTableFullAvl (
1535 PRTL_AVL_TABLE Table,
1536 PVOID Buffer,
1537 ULONG BufferSize,
1538 PBOOLEAN NewElement OPTIONAL,
1539 PVOID NodeOrParent,
1540 TABLE_SEARCH_RESULT SearchResult
1541 );
1542
1543 BOOLEAN
1544 STDCALL
1545 RtlInsertUnicodePrefix (
1546 PUNICODE_PREFIX_TABLE PrefixTable,
1547 PUNICODE_STRING Prefix,
1548 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1549 );
1550
1551 NTSTATUS
1552 STDCALL
1553 RtlInt64ToUnicodeString (
1554 IN ULONGLONG Value,
1555 IN ULONG Base OPTIONAL,
1556 IN OUT PUNICODE_STRING String
1557 );
1558
1559 NTSTATUS
1560 STDCALL
1561 RtlIntegerToChar (
1562 IN ULONG Value,
1563 IN ULONG Base,
1564 IN ULONG Length,
1565 IN OUT PCHAR String
1566 );
1567
1568 NTSTATUS
1569 STDCALL
1570 RtlIntegerToUnicode(
1571 IN ULONG Value,
1572 IN ULONG Base OPTIONAL,
1573 IN ULONG Length OPTIONAL,
1574 IN OUT LPWSTR String
1575 );
1576
1577 NTSTATUS
1578 STDCALL
1579 RtlIntegerToUnicodeString (
1580 IN ULONG Value,
1581 IN ULONG Base,
1582 IN OUT PUNICODE_STRING String
1583 );
1584
1585 NTSTATUS STDCALL
1586 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList,
1587 IN PRTL_RANGE_LIST RangeList);
1588
1589 LPSTR
1590 STDCALL
1591 RtlIpv4AddressToStringA(
1592 PULONG IP,
1593 LPSTR Buffer
1594 );
1595
1596 NTSTATUS
1597 STDCALL
1598 RtlIpv4AddressToStringExA(
1599 PULONG IP,
1600 PULONG Port,
1601 LPSTR Buffer,
1602 PULONG MaxSize
1603 );
1604
1605 LPWSTR
1606 STDCALL
1607 RtlIpv4AddressToStringW(
1608 PULONG IP,
1609 LPWSTR Buffer
1610 );
1611
1612 NTSTATUS
1613 STDCALL
1614 RtlIpv4AddressToStringExW(
1615 PULONG IP,
1616 PULONG Port,
1617 LPWSTR Buffer,
1618 PULONG MaxSize
1619 );
1620
1621 NTSTATUS
1622 STDCALL
1623 RtlIpv4StringToAddressA(
1624 IN LPSTR IpString,
1625 IN ULONG Base,
1626 OUT PVOID PtrToIpAddr,
1627 OUT ULONG IpAddr
1628 );
1629
1630 NTSTATUS
1631 STDCALL
1632 RtlIpv4StringToAddressExA(
1633 IN LPSTR IpString,
1634 IN ULONG Base,
1635 OUT PULONG IpAddr,
1636 OUT PULONG Port
1637 );
1638
1639 NTSTATUS
1640 STDCALL
1641 RtlIpv4StringToAddressW(
1642 IN LPWSTR IpString,
1643 IN ULONG Base,
1644 OUT PVOID PtrToIpAddr,
1645 OUT ULONG IpAddr
1646 );
1647
1648 NTSTATUS
1649 STDCALL
1650 RtlIpv4StringToAddressExW(
1651 IN LPWSTR IpString,
1652 IN ULONG Base,
1653 OUT PULONG IpAddr,
1654 OUT PULONG Port
1655 );
1656
1657 NTSTATUS
1658 STDCALL
1659 RtlIpv6AddressToStringA(
1660 PULONG IP,
1661 LPSTR Buffer
1662 );
1663
1664 NTSTATUS
1665 STDCALL
1666 RtlIpv6AddressToStringExA(
1667 PULONG IP,
1668 PULONG Port,
1669 LPSTR Buffer,
1670 PULONG MaxSize
1671 );
1672
1673 NTSTATUS
1674 STDCALL
1675 RtlIpv6AddressToStringW(
1676 PULONG IP,
1677 LPWSTR Buffer
1678 );
1679
1680 NTSTATUS
1681 STDCALL
1682 RtlIpv6AddressToStringExW(
1683 PULONG IP,
1684 PULONG Port,
1685 LPWSTR Buffer,
1686 PULONG MaxSize
1687 );
1688
1689 NTSTATUS
1690 STDCALL
1691 RtlIpv6StringToAddressA(
1692 IN LPSTR IpString,
1693 IN ULONG Base,
1694 OUT PVOID PtrToIpAddr,
1695 OUT ULONG IpAddr
1696 );
1697
1698 NTSTATUS
1699 STDCALL
1700 RtlIpv6StringToAddressExA(
1701 IN LPSTR IpString,
1702 IN ULONG Base,
1703 OUT PULONG IpAddr,
1704 OUT PULONG Port
1705 );
1706
1707 NTSTATUS
1708 STDCALL
1709 RtlIpv6StringToAddressW(
1710 IN LPWSTR IpString,
1711 IN ULONG Base,
1712 OUT PVOID PtrToIpAddr,
1713 OUT ULONG IpAddr
1714 );
1715
1716 NTSTATUS
1717 STDCALL
1718 RtlIpv6StringToAddressExW(
1719 IN LPWSTR IpString,
1720 IN ULONG Base,
1721 OUT PULONG IpAddr,
1722 OUT PULONG Port
1723 );
1724
1725 BOOLEAN
1726 STDCALL
1727 RtlIsGenericTableEmpty (
1728 PRTL_GENERIC_TABLE Table
1729 );
1730
1731 BOOLEAN
1732 STDCALL
1733 RtlIsGenericTableEmptyAvl (
1734 PRTL_AVL_TABLE Table
1735 );
1736
1737
1738 BOOLEAN STDCALL
1739 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName,
1740 IN PANSI_STRING AnsiName,
1741 OUT PBOOLEAN SpacesFound);
1742
1743 NTSTATUS STDCALL
1744 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList,
1745 IN ULONGLONG Start,
1746 IN ULONGLONG End,
1747 IN ULONG Flags,
1748 IN UCHAR AttributeAvailableMask,
1749 IN PVOID Context OPTIONAL,
1750 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1751 OUT PBOOLEAN Available);
1752
1753 ULONG
1754 STDCALL
1755 RtlIsTextUnicode (
1756 PVOID Buffer,
1757 ULONG Length,
1758 ULONG *Flags
1759 );
1760
1761 BOOLEAN
1762 STDCALL
1763 RtlIsValidOemCharacter (
1764 IN PWCHAR Char
1765 );
1766
1767 LARGE_INTEGER
1768 STDCALL
1769 RtlLargeIntegerAdd (
1770 LARGE_INTEGER Addend1,
1771 LARGE_INTEGER Addend2
1772 );
1773
1774 /*
1775 * VOID
1776 * RtlLargeIntegerAnd (
1777 * PLARGE_INTEGER Result,
1778 * LARGE_INTEGER Source,
1779 * LARGE_INTEGER Mask
1780 * );
1781 */
1782 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1783 { \
1784 Result.HighPart = Source.HighPart & Mask.HighPart; \
1785 Result.LowPart = Source.LowPart & Mask.LowPart; \
1786 }
1787
1788 LARGE_INTEGER
1789 STDCALL
1790 RtlLargeIntegerArithmeticShift (
1791 LARGE_INTEGER LargeInteger,
1792 CCHAR ShiftCount
1793 );
1794
1795 LARGE_INTEGER
1796 STDCALL
1797 RtlLargeIntegerDivide (
1798 LARGE_INTEGER Dividend,
1799 LARGE_INTEGER Divisor,
1800 PLARGE_INTEGER Remainder
1801 );
1802
1803 /*
1804 * BOOLEAN
1805 * RtlLargeIntegerEqualTo (
1806 * LARGE_INTEGER Operand1,
1807 * LARGE_INTEGER Operand2
1808 * );
1809 */
1810 #define RtlLargeIntegerEqualTo(X,Y) \
1811 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1812
1813 /*
1814 * BOOLEAN
1815 * RtlLargeIntegerEqualToZero (
1816 * LARGE_INTEGER Operand
1817 * );
1818 */
1819 #define RtlLargeIntegerEqualToZero(X) \
1820 (!((X).LowPart | (X).HighPart))
1821
1822 /*
1823 * BOOLEAN
1824 * RtlLargeIntegerGreaterThan (
1825 * LARGE_INTEGER Operand1,
1826 * LARGE_INTEGER Operand2
1827 * );
1828 */
1829 #define RtlLargeIntegerGreaterThan(X,Y) \
1830 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1831 ((X).HighPart > (Y).HighPart))
1832
1833 /*
1834 * BOOLEAN
1835 * RtlLargeIntegerGreaterThanOrEqualTo (
1836 * LARGE_INTEGER Operand1,
1837 * LARGE_INTEGER Operand2
1838 * );
1839 */
1840 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1841 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1842 ((X).HighPart > (Y).HighPart))
1843
1844 /*
1845 * BOOLEAN
1846 * RtlLargeIntegerGreaterThanOrEqualToZero (
1847 * LARGE_INTEGER Operand1
1848 * );
1849 */
1850 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1851 ((X).HighPart >= 0)
1852
1853 /*
1854 * BOOLEAN
1855 * RtlLargeIntegerGreaterThanZero (
1856 * LARGE_INTEGER Operand1
1857 * );
1858 */
1859 #define RtlLargeIntegerGreaterThanZero(X) \
1860 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1861 ((X).HighPart > 0 ))
1862
1863 /*
1864 * BOOLEAN
1865 * RtlLargeIntegerLessThan (
1866 * LARGE_INTEGER Operand1,
1867 * LARGE_INTEGER Operand2
1868 * );
1869 */
1870 #define RtlLargeIntegerLessThan(X,Y) \
1871 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1872 ((X).HighPart < (Y).HighPart))
1873
1874 /*
1875 * BOOLEAN
1876 * RtlLargeIntegerLessThanOrEqualTo (
1877 * LARGE_INTEGER Operand1,
1878 * LARGE_INTEGER Operand2
1879 * );
1880 */
1881 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1882 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1883 ((X).HighPart < (Y).HighPart))
1884
1885 /*
1886 * BOOLEAN
1887 * RtlLargeIntegerLessThanOrEqualToZero (
1888 * LARGE_INTEGER Operand
1889 * );
1890 */
1891 #define RtlLargeIntegerLessOrEqualToZero(X) \
1892 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1893
1894 /*
1895 * BOOLEAN
1896 * RtlLargeIntegerLessThanZero (
1897 * LARGE_INTEGER Operand
1898 * );
1899 */
1900 #define RtlLargeIntegerLessThanZero(X) \
1901 (((X).HighPart < 0))
1902
1903 LARGE_INTEGER
1904 STDCALL
1905 RtlLargeIntegerNegate (
1906 LARGE_INTEGER Subtrahend
1907 );
1908
1909 /*
1910 * BOOLEAN
1911 * RtlLargeIntegerNotEqualTo (
1912 * LARGE_INTEGER Operand1,
1913 * LARGE_INTEGER Operand2
1914 * );
1915 */
1916 #define RtlLargeIntegerNotEqualTo(X,Y) \
1917 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1918
1919 /*
1920 * BOOLEAN
1921 * RtlLargeIntegerNotEqualToZero (
1922 * LARGE_INTEGER Operand
1923 * );
1924 */
1925 #define RtlLargeIntegerNotEqualToZero(X) \
1926 (((X).LowPart | (X).HighPart))
1927
1928 LARGE_INTEGER
1929 STDCALL
1930 RtlLargeIntegerShiftLeft (
1931 LARGE_INTEGER LargeInteger,
1932 CCHAR ShiftCount
1933 );
1934
1935 LARGE_INTEGER
1936 STDCALL
1937 RtlLargeIntegerShiftRight (
1938 LARGE_INTEGER LargeInteger,
1939 CCHAR ShiftCount
1940 );
1941
1942 LARGE_INTEGER
1943 STDCALL
1944 RtlLargeIntegerSubtract (
1945 LARGE_INTEGER Minuend,
1946 LARGE_INTEGER Subtrahend
1947 );
1948
1949 ULONG STDCALL
1950 RtlLengthRequiredSid (UCHAR SubAuthorityCount);
1951
1952 ULONG STDCALL
1953 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
1954
1955 ULONG STDCALL
1956 RtlLengthSid (PSID Sid);
1957
1958 NTSTATUS
1959 STDCALL
1960 RtlLockBootStatusData(
1961 HANDLE Filehandle
1962 );
1963
1964 BOOLEAN STDCALL
1965 RtlLockHeap (IN HANDLE Heap);
1966
1967 NTSTATUS STDCALL
1968 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable,
1969 IN PWSTR AtomName,
1970 OUT PRTL_ATOM Atom);
1971
1972 PVOID
1973 STDCALL
1974 RtlLookupElementGenericTable (
1975 PRTL_GENERIC_TABLE Table,
1976 PVOID Buffer
1977 );
1978
1979 PVOID
1980 STDCALL
1981 RtlLookupElementGenericTableAvl (
1982 PRTL_AVL_TABLE Table,
1983 PVOID Buffer
1984 );
1985
1986 PVOID
1987 STDCALL
1988 RtlLookupElementGenericTableFull (
1989 PRTL_GENERIC_TABLE Table,
1990 PVOID Buffer,
1991 OUT PVOID *NodeOrParent,
1992 OUT TABLE_SEARCH_RESULT *SearchResult
1993 );
1994
1995 PVOID
1996 STDCALL
1997 RtlLookupElementGenericTableFullAvl (
1998 PRTL_AVL_TABLE Table,
1999 PVOID Buffer,
2000 OUT PVOID *NodeOrParent,
2001 OUT TABLE_SEARCH_RESULT *SearchResult
2002 );
2003
2004 NTSTATUS STDCALL
2005 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
2006 PSECURITY_DESCRIPTOR_RELATIVE RelSD,
2007 PULONG BufferLength);
2008
2009 VOID STDCALL
2010 RtlMapGenericMask (PACCESS_MASK AccessMask,
2011 PGENERIC_MAPPING GenericMapping);
2012
2013 NTSTATUS
2014 STDCALL
2015 RtlMapSecurityErrorToNtStatus(
2016 IN ULONG SecurityError
2017 );
2018
2019 NTSTATUS STDCALL
2020 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList,
2021 IN PRTL_RANGE_LIST RangeList1,
2022 IN PRTL_RANGE_LIST RangeList2,
2023 IN ULONG Flags);
2024
2025 NTSTATUS
2026 STDCALL
2027 RtlMultiByteToUnicodeN (
2028 PWCHAR UnicodeString,
2029 ULONG UnicodeSize,
2030 PULONG ResultSize,
2031 const PCHAR MbString,
2032 ULONG MbSize
2033 );
2034
2035 NTSTATUS
2036 STDCALL
2037 RtlMultiByteToUnicodeSize (
2038 PULONG UnicodeSize,
2039 PCHAR MbString,
2040 ULONG MbSize
2041 );
2042
2043 PUNICODE_PREFIX_TABLE_ENTRY
2044 STDCALL
2045 RtlNextUnicodePrefix (
2046 PUNICODE_PREFIX_TABLE PrefixTable,
2047 BOOLEAN Restart
2048 );
2049
2050 DWORD
2051 STDCALL
2052 RtlNtStatusToDosError (
2053 NTSTATUS StatusCode
2054 );
2055
2056 DWORD
2057 STDCALL
2058 RtlNtStatusToDosErrorNoTeb (
2059 NTSTATUS StatusCode
2060 );
2061
2062 int
2063 STDCALL
2064 RtlNtStatusToPsxErrno (
2065 NTSTATUS StatusCode
2066 );
2067
2068 ULONG
2069 STDCALL
2070 RtlNumberGenericTableElements(
2071 PRTL_GENERIC_TABLE Table
2072 );
2073
2074 ULONG
2075 STDCALL
2076 RtlNumberGenericTableElementsAvl (
2077 PRTL_AVL_TABLE Table
2078 );
2079
2080
2081 ULONG
2082 STDCALL
2083 RtlNumberOfClearBits (
2084 PRTL_BITMAP BitMapHeader
2085 );
2086
2087 ULONG
2088 STDCALL
2089 RtlNumberOfSetBits (
2090 PRTL_BITMAP BitMapHeader
2091 );
2092
2093 ULONG
2094 STDCALL
2095 RtlOemStringToUnicodeSize (
2096 POEM_STRING AnsiString
2097 );
2098
2099 NTSTATUS
2100 STDCALL
2101 RtlOemStringToUnicodeString (
2102 PUNICODE_STRING DestinationString,
2103 POEM_STRING SourceString,
2104 BOOLEAN AllocateDestinationString
2105 );
2106
2107 NTSTATUS
2108 STDCALL
2109 RtlOemToUnicodeN(
2110 PWSTR UnicodeString,
2111 ULONG MaxBytesInUnicodeString,
2112 PULONG BytesInUnicodeString,
2113 IN PCHAR OemString,
2114 ULONG BytesInOemString
2115 );
2116
2117 NTSTATUS STDCALL
2118 RtlPinAtomInAtomTable (
2119 IN PRTL_ATOM_TABLE AtomTable,
2120 IN RTL_ATOM Atom
2121 );
2122
2123 VOID
2124 FASTCALL
2125 RtlPrefetchMemoryNonTemporal(
2126 IN PVOID Source,
2127 IN SIZE_T Length
2128 );
2129
2130 BOOLEAN
2131 STDCALL
2132 RtlPrefixString (
2133 PANSI_STRING String1,
2134 PANSI_STRING String2,
2135 BOOLEAN CaseInsensitive
2136 );
2137
2138 BOOLEAN
2139 STDCALL
2140 RtlPrefixUnicodeString (
2141 PUNICODE_STRING String1,
2142 PUNICODE_STRING String2,
2143 BOOLEAN CaseInsensitive
2144 );
2145
2146 NTSTATUS
2147 STDCALL
2148 RtlQueryAtomInAtomTable (
2149 IN PRTL_ATOM_TABLE AtomTable,
2150 IN RTL_ATOM Atom,
2151 IN OUT PULONG RefCount OPTIONAL,
2152 IN OUT PULONG PinCount OPTIONAL,
2153 IN OUT PWSTR AtomName OPTIONAL,
2154 IN OUT PULONG NameLength OPTIONAL
2155 );
2156
2157 NTSTATUS STDCALL
2158 RtlQueryInformationAcl (PACL Acl,
2159 PVOID Information,
2160 ULONG InformationLength,
2161 ACL_INFORMATION_CLASS InformationClass);
2162
2163 NTSTATUS STDCALL
2164 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2165
2166 VOID STDCALL
2167 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord);
2168
2169 VOID STDCALL
2170 RtlRaiseStatus(NTSTATUS Status);
2171
2172 ULONG STDCALL
2173 RtlRandom (PULONG Seed);
2174
2175 ULONG
2176 STDCALL
2177 RtlRandomEx(
2178 PULONG Seed
2179 );
2180
2181 PRTL_SPLAY_LINKS
2182 STDCALL
2183 RtlRealPredecessor (
2184 PRTL_SPLAY_LINKS Links
2185 );
2186
2187 PRTL_SPLAY_LINKS
2188 STDCALL
2189 RtlRealSuccessor (
2190 PRTL_SPLAY_LINKS Links
2191 );
2192
2193 PVOID STDCALL
2194 RtlReAllocateHeap (
2195 HANDLE Heap,
2196 ULONG Flags,
2197 PVOID Ptr,
2198 ULONG Size
2199 );
2200
2201 VOID
2202 STDCALL
2203 RtlRemoveUnicodePrefix (
2204 PUNICODE_PREFIX_TABLE PrefixTable,
2205 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2206 );
2207
2208 NTSTATUS
2209 STDCALL
2210 RtlReserveChunk (
2211 IN USHORT CompressionFormat,
2212 IN OUT PUCHAR *CompressedBuffer,
2213 IN PUCHAR EndOfCompressedBufferPlus1,
2214 OUT PUCHAR *ChunkBuffer,
2215 IN ULONG ChunkSize
2216 );
2217
2218 VOID STDCALL
2219 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable);
2220
2221 /*
2222 * VOID
2223 * RtlRetrieveUlong (
2224 * PULONG DestinationAddress,
2225 * PULONG SourceAddress
2226 * );
2227 */
2228 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2229 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2230 { \
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]; \
2235 } \
2236 else \
2237 { \
2238 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2239 }
2240
2241 /*
2242 * VOID
2243 * RtlRetrieveUshort (
2244 * PUSHORT DestinationAddress,
2245 * PUSHORT SourceAddress
2246 * );
2247 */
2248 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2249 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2250 { \
2251 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2252 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2253 } \
2254 else \
2255 { \
2256 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2257 }
2258
2259 VOID STDCALL
2260 RtlSecondsSince1970ToTime (ULONG SecondsSince1970,
2261 PLARGE_INTEGER Time);
2262
2263 VOID STDCALL
2264 RtlSecondsSince1980ToTime (ULONG SecondsSince1980,
2265 PLARGE_INTEGER Time);
2266
2267 NTSTATUS STDCALL
2268 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR_RELATIVE RelSD,
2269 PSECURITY_DESCRIPTOR AbsSD,
2270 PULONG AbsSDSize,
2271 PACL Dacl,
2272 PULONG DaclSize,
2273 PACL Sacl,
2274 PULONG SaclSize,
2275 PSID Owner,
2276 PULONG OwnerSize,
2277 PSID Group,
2278 PULONG GroupSize);
2279
2280 NTSTATUS
2281 STDCALL
2282 RtlSelfRelativeToAbsoluteSD2(
2283 PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
2284 PULONG BufferSize
2285 );
2286
2287 VOID STDCALL
2288 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader);
2289
2290 VOID
2291 STDCALL
2292 RtlSetBit (
2293 PRTL_BITMAP BitMapHeader,
2294 ULONG BitNumber
2295 );
2296
2297 VOID
2298 STDCALL
2299 RtlSetBits (
2300 PRTL_BITMAP BitMapHeader,
2301 ULONG StartingIndex,
2302 ULONG NumberToSet
2303 );
2304
2305 NTSTATUS STDCALL
2306 RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
2307 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
2308 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
2309
2310 NTSTATUS STDCALL
2311 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2312 BOOLEAN DaclPresent,
2313 PACL Dacl,
2314 BOOLEAN DaclDefaulted);
2315
2316 NTSTATUS STDCALL
2317 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2318 PSID Group,
2319 BOOLEAN GroupDefaulted);
2320
2321 NTSTATUS STDCALL
2322 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2323 PSID Owner,
2324 BOOLEAN OwnerDefaulted);
2325
2326 NTSTATUS STDCALL
2327 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2328 BOOLEAN SaclPresent,
2329 PACL Sacl,
2330 BOOLEAN SaclDefaulted);
2331
2332 VOID STDCALL
2333 RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
2334 PUCHAR RMControl);
2335
2336 NTSTATUS STDCALL
2337 RtlSetInformationAcl (PACL Acl,
2338 PVOID Information,
2339 ULONG InformationLength,
2340 ACL_INFORMATION_CLASS InformationClass);
2341
2342 NTSTATUS STDCALL
2343 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2344
2345 ULONG STDCALL
2346 RtlSizeHeap(
2347 IN PVOID HeapHandle,
2348 IN ULONG Flags,
2349 IN PVOID MemoryPointer
2350 );
2351
2352 PRTL_SPLAY_LINKS
2353 STDCALL
2354 RtlSplay (
2355 PRTL_SPLAY_LINKS Links
2356 );
2357
2358 /*
2359 * VOID
2360 * RtlStoreUlong (
2361 * PULONG Address,
2362 * ULONG Value
2363 * );
2364 */
2365 #define RtlStoreUlong(Address,Value) \
2366 if ((ULONG_PTR)(Address) & LONG_MASK) \
2367 { \
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)); \
2372 } \
2373 else \
2374 { \
2375 *((PULONG)(Address))=(ULONG)(Value); \
2376 }
2377
2378 /*
2379 * VOID
2380 * RtlStoreUshort (
2381 * PUSHORT Address,
2382 * USHORT Value
2383 * );
2384 */
2385 #define RtlStoreUshort(Address,Value) \
2386 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2387 { \
2388 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2389 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2390 } \
2391 else \
2392 { \
2393 *((PUSHORT)(Address))=(USHORT)(Value); \
2394 }
2395
2396 NTSTATUS STDCALL
2397 RtlStringFromGUID (IN REFGUID Guid,
2398 OUT PUNICODE_STRING GuidString);
2399
2400 PULONG STDCALL
2401 RtlSubAuthoritySid (PSID Sid,
2402 ULONG SubAuthority);
2403
2404 PULONG STDCALL
2405 RtlSubAuthoritySid (PSID Sid,
2406 ULONG SubAuthority);
2407
2408 PUCHAR STDCALL
2409 RtlSubAuthorityCountSid (PSID Sid);
2410
2411 PRTL_SPLAY_LINKS
2412 STDCALL
2413 RtlSubtreePredecessor (
2414 PRTL_SPLAY_LINKS Links
2415 );
2416
2417 PRTL_SPLAY_LINKS
2418 STDCALL
2419 RtlSubtreeSuccessor (
2420 PRTL_SPLAY_LINKS Links
2421 );
2422
2423 BOOLEAN
2424 STDCALL
2425 RtlTestBit (
2426 PRTL_BITMAP BitMapHeader,
2427 ULONG BitNumber
2428 );
2429
2430
2431 BOOLEAN STDCALL
2432 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields,
2433 PLARGE_INTEGER Time);
2434
2435 BOOLEAN
2436 STDCALL
2437 RtlTimeToSecondsSince1970 (
2438 PLARGE_INTEGER Time,
2439 PULONG SecondsSince1970
2440 );
2441
2442 BOOLEAN
2443 STDCALL
2444 RtlTimeToSecondsSince1980 (
2445 PLARGE_INTEGER Time,
2446 PULONG SecondsSince1980
2447 );
2448
2449 VOID
2450 STDCALL
2451 RtlTimeToElapsedTimeFields(
2452 PLARGE_INTEGER Time,
2453 PTIME_FIELDS TimeFields
2454 );
2455
2456 VOID
2457 STDCALL
2458 RtlTimeToTimeFields (
2459 PLARGE_INTEGER Time,
2460 PTIME_FIELDS TimeFields
2461 );
2462
2463
2464 ULONG FASTCALL
2465 RtlUlongByteSwap (IN ULONG Source);
2466
2467 ULONGLONG FASTCALL
2468 RtlUlonglongByteSwap (IN ULONGLONG Source);
2469
2470 ULONG
2471 STDCALL
2472 RtlUnicodeStringToAnsiSize (
2473 IN PUNICODE_STRING UnicodeString
2474 );
2475
2476 NTSTATUS
2477 STDCALL
2478 RtlUnicodeStringToAnsiString (
2479 IN OUT PANSI_STRING DestinationString,
2480 IN PUNICODE_STRING SourceString,
2481 IN BOOLEAN AllocateDestinationString
2482 );
2483
2484 NTSTATUS
2485 STDCALL
2486 RtlUnicodeStringToInteger (
2487 IN PUNICODE_STRING String,
2488 IN ULONG Base,
2489 OUT PULONG Value
2490 );
2491
2492 ULONG
2493 STDCALL
2494 RtlUnicodeStringToOemSize (
2495 IN PUNICODE_STRING UnicodeString
2496 );
2497
2498 NTSTATUS
2499 STDCALL
2500 RtlUnicodeStringToCountedOemString (
2501 IN OUT POEM_STRING DestinationString,
2502 IN PUNICODE_STRING SourceString,
2503 IN BOOLEAN AllocateDestinationString
2504 );
2505
2506 NTSTATUS
2507 STDCALL
2508 RtlUnicodeStringToOemString (
2509 IN OUT POEM_STRING DestinationString,
2510 IN PUNICODE_STRING SourceString,
2511 IN BOOLEAN AllocateDestinationString
2512 );
2513
2514 NTSTATUS
2515 STDCALL
2516 RtlUnicodeToCustomCPN (
2517 IN PCPTABLEINFO CustomCP,
2518 PCHAR MbString,
2519 ULONG MbSize,
2520 PULONG ResultSize,
2521 PWCHAR UnicodeString,
2522 ULONG UnicodeSize
2523 );
2524
2525 NTSTATUS
2526 STDCALL
2527 RtlUnicodeToMultiByteN (
2528 PCHAR MbString,
2529 ULONG MbSize,
2530 PULONG ResultSize,
2531 PWCHAR UnicodeString,
2532 ULONG UnicodeSize
2533 );
2534
2535 NTSTATUS
2536 STDCALL
2537 RtlUnicodeToMultiByteSize (
2538 PULONG MbSize,
2539 PWCHAR UnicodeString,
2540 ULONG UnicodeSize
2541 );
2542
2543 NTSTATUS
2544 STDCALL
2545 RtlUnicodeToOemN (
2546 PCHAR OemString,
2547 ULONG OemSize,
2548 PULONG ResultSize,
2549 PWCHAR UnicodeString,
2550 ULONG UnicodeSize
2551 );
2552
2553 ULONG STDCALL
2554 RtlUniform (PULONG Seed);
2555
2556 BOOLEAN STDCALL
2557 RtlUnlockHeap (IN HANDLE Heap);
2558
2559 NTSTATUS
2560 STDCALL
2561 RtlUnlockBootStatusData(
2562 HANDLE Filehandle
2563 );
2564
2565 VOID
2566 STDCALL
2567 RtlUnwind (
2568 PEXCEPTION_REGISTRATION RegistrationFrame,
2569 PVOID ReturnAddress,
2570 PEXCEPTION_RECORD ExceptionRecord,
2571 DWORD EaxValue
2572 );
2573
2574 WCHAR
2575 STDCALL
2576 RtlUpcaseUnicodeChar (
2577 WCHAR Source
2578 );
2579
2580 NTSTATUS
2581 STDCALL
2582 RtlUpcaseUnicodeString (
2583 IN OUT PUNICODE_STRING DestinationString,
2584 IN PCUNICODE_STRING SourceString,
2585 IN BOOLEAN AllocateDestinationString
2586 );
2587
2588 NTSTATUS
2589 STDCALL
2590 RtlUpcaseUnicodeStringToAnsiString (
2591 IN OUT PANSI_STRING DestinationString,
2592 IN PUNICODE_STRING SourceString,
2593 IN BOOLEAN AllocateDestinationString
2594 );
2595
2596 NTSTATUS
2597 STDCALL
2598 RtlUpcaseUnicodeStringToCountedOemString (
2599 IN OUT POEM_STRING DestinationString,
2600 IN PUNICODE_STRING SourceString,
2601 IN BOOLEAN AllocateDestinationString
2602 );
2603
2604 NTSTATUS
2605 STDCALL
2606 RtlUpcaseUnicodeStringToOemString (
2607 IN OUT POEM_STRING DestinationString,
2608 IN PUNICODE_STRING SourceString,
2609 IN BOOLEAN AllocateDestinationString
2610 );
2611
2612 NTSTATUS
2613 STDCALL
2614 RtlUpcaseUnicodeToCustomCPN (
2615 IN PCPTABLEINFO CustomCP,
2616 PCHAR MbString,
2617 ULONG MbSize,
2618 PULONG ResultSize,
2619 PWCHAR UnicodeString,
2620 ULONG UnicodeSize
2621 );
2622
2623 NTSTATUS
2624 STDCALL
2625 RtlUpcaseUnicodeToMultiByteN (
2626 PCHAR MbString,
2627 ULONG MbSize,
2628 PULONG ResultSize,
2629 PWCHAR UnicodeString,
2630 ULONG UnicodeSize
2631 );
2632
2633 NTSTATUS
2634 STDCALL
2635 RtlUpcaseUnicodeToOemN (
2636 PCHAR OemString,
2637 ULONG OemSize,
2638 PULONG ResultSize,
2639 PWCHAR UnicodeString,
2640 ULONG UnicodeSize
2641 );
2642
2643 CHAR STDCALL
2644 RtlUpperChar (CHAR Source);
2645
2646 VOID STDCALL
2647 RtlUpperString (PSTRING DestinationString,
2648 PSTRING SourceString);
2649
2650 USHORT FASTCALL
2651 RtlUshortByteSwap (IN USHORT Source);
2652
2653 BOOLEAN STDCALL
2654 RtlValidAcl (PACL Acl);
2655
2656 BOOLEAN STDCALL
2657 RtlValidateHeap (
2658 HANDLE Heap,
2659 ULONG Flags,
2660 PVOID pmem
2661 );
2662
2663 BOOLEAN
2664 STDCALL
2665 RtlValidRelativeSecurityDescriptor (
2666 IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
2667 IN ULONG SecurityDescriptorLength,
2668 IN SECURITY_INFORMATION RequiredInformation
2669 );
2670
2671 BOOLEAN STDCALL
2672 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor);
2673
2674 BOOLEAN STDCALL
2675 RtlValidSid (IN PSID Sid);
2676
2677 /*
2678 NTSTATUS
2679 STDCALL
2680 RtlVerifyVersionInfo(
2681 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2682 IN ULONG TypeMask,
2683 IN ULONGLONG ConditionMask
2684 );
2685 */
2686
2687 NTSTATUS
2688 STDCALL
2689 RtlVolumeDeviceToDosName(
2690 IN PVOID VolumeDeviceObject,
2691 OUT PUNICODE_STRING DosName
2692 );
2693
2694 ULONG
2695 STDCALL
2696 RtlWalkFrameChain (
2697 OUT PVOID *Callers,
2698 IN ULONG Count,
2699 IN ULONG Flags
2700 );
2701
2702 BOOLEAN STDCALL
2703 RtlZeroHeap(
2704 IN PVOID HeapHandle,
2705 IN ULONG Flags
2706 );
2707
2708 ULONG
2709 STDCALL
2710 RtlxAnsiStringToUnicodeSize (
2711 IN PANSI_STRING AnsiString
2712 );
2713
2714 ULONG
2715 STDCALL
2716 RtlxOemStringToUnicodeSize (
2717 IN POEM_STRING OemString
2718 );
2719
2720 ULONG
2721 STDCALL
2722 RtlxUnicodeStringToAnsiSize (
2723 IN PUNICODE_STRING UnicodeString
2724 );
2725
2726 ULONG
2727 STDCALL
2728 RtlxUnicodeStringToOemSize (
2729 IN PUNICODE_STRING UnicodeString
2730 );
2731
2732 NTSTATUS
2733 FASTCALL
2734 RtlpOemStringToCountedUnicodeString(
2735 IN OUT PUNICODE_STRING UniDest,
2736 IN POEM_STRING OemSource,
2737 IN BOOLEAN AllocateDestinationString,
2738 IN POOL_TYPE PoolType);
2739
2740 NTSTATUS
2741 FASTCALL
2742 RtlpUpcaseUnicodeString(
2743 IN OUT PUNICODE_STRING UniDest,
2744 IN PCUNICODE_STRING UniSource,
2745 IN BOOLEAN AllocateDestinationString,
2746 IN POOL_TYPE PoolType);
2747
2748 NTSTATUS
2749 FASTCALL
2750 RtlpUpcaseUnicodeStringToAnsiString(
2751 IN OUT PANSI_STRING AnsiDest,
2752 IN PUNICODE_STRING UniSource,
2753 IN BOOLEAN AllocateDestinationString,
2754 IN POOL_TYPE PoolType);
2755
2756 NTSTATUS
2757 FASTCALL
2758 RtlpUpcaseUnicodeStringToCountedOemString(
2759 IN OUT POEM_STRING OemDest,
2760 IN PUNICODE_STRING UniSource,
2761 IN BOOLEAN AllocateDestinationString,
2762 IN POOL_TYPE PoolType);
2763
2764 NTSTATUS
2765 FASTCALL
2766 RtlpUpcaseUnicodeStringToOemString (
2767 IN OUT POEM_STRING OemDest,
2768 IN PUNICODE_STRING UniSource,
2769 IN BOOLEAN AllocateDestinationString,
2770 IN POOL_TYPE PoolType);
2771
2772 NTSTATUS
2773 FASTCALL
2774 RtlpDowncaseUnicodeString(
2775 IN OUT PUNICODE_STRING UniDest,
2776 IN PUNICODE_STRING UniSource,
2777 IN BOOLEAN AllocateDestinationString,
2778 IN POOL_TYPE PoolType);
2779
2780 NTSTATUS
2781 FASTCALL
2782 RtlpAnsiStringToUnicodeString(
2783 IN OUT PUNICODE_STRING DestinationString,
2784 IN PANSI_STRING SourceString,
2785 IN BOOLEAN AllocateDestinationString,
2786 IN POOL_TYPE PoolType);
2787
2788 NTSTATUS
2789 FASTCALL
2790 RtlpUnicodeStringToAnsiString(
2791 IN OUT PANSI_STRING AnsiDest,
2792 IN PUNICODE_STRING UniSource,
2793 IN BOOLEAN AllocateDestinationString,
2794 IN POOL_TYPE PoolType);
2795
2796 NTSTATUS
2797 FASTCALL
2798 RtlpOemStringToUnicodeString(
2799 IN OUT PUNICODE_STRING UniDest,
2800 IN POEM_STRING OemSource,
2801 IN BOOLEAN AllocateDestinationString,
2802 IN POOL_TYPE PoolType);
2803
2804 NTSTATUS
2805 FASTCALL
2806 RtlpUnicodeStringToOemString(
2807 IN OUT POEM_STRING OemDest,
2808 IN PUNICODE_STRING UniSource,
2809 IN BOOLEAN AllocateDestinationString,
2810 IN POOL_TYPE PoolType);
2811
2812 BOOLEAN
2813 FASTCALL
2814 RtlpCreateUnicodeString(
2815 IN OUT PUNICODE_STRING UniDest,
2816 IN PCWSTR Source,
2817 IN POOL_TYPE PoolType);
2818
2819 NTSTATUS
2820 FASTCALL
2821 RtlpUnicodeStringToCountedOemString(
2822 IN OUT POEM_STRING OemDest,
2823 IN PUNICODE_STRING UniSource,
2824 IN BOOLEAN AllocateDestinationString,
2825 IN POOL_TYPE PoolType);
2826
2827 NTSTATUS STDCALL
2828 RtlpDuplicateUnicodeString(
2829 INT AddNull,
2830 IN PUNICODE_STRING SourceString,
2831 PUNICODE_STRING DestinationString,
2832 POOL_TYPE PoolType);
2833
2834 /* Register io functions */
2835
2836 UCHAR
2837 STDCALL
2838 READ_REGISTER_UCHAR (
2839 PUCHAR Register
2840 );
2841
2842 USHORT
2843 STDCALL
2844 READ_REGISTER_USHORT (
2845 PUSHORT Register
2846 );
2847
2848 ULONG
2849 STDCALL
2850 READ_REGISTER_ULONG (
2851 PULONG Register
2852 );
2853
2854 VOID
2855 STDCALL
2856 READ_REGISTER_BUFFER_UCHAR (
2857 PUCHAR Register,
2858 PUCHAR Buffer,
2859 ULONG Count
2860 );
2861
2862 VOID
2863 STDCALL
2864 READ_REGISTER_BUFFER_USHORT (
2865 PUSHORT Register,
2866 PUSHORT Buffer,
2867 ULONG Count
2868 );
2869
2870 VOID
2871 STDCALL
2872 READ_REGISTER_BUFFER_ULONG (
2873 PULONG Register,
2874 PULONG Buffer,
2875 ULONG Count
2876 );
2877
2878 VOID
2879 STDCALL
2880 WRITE_REGISTER_UCHAR (
2881 PUCHAR Register,
2882 UCHAR Value
2883 );
2884
2885 VOID
2886 STDCALL
2887 WRITE_REGISTER_USHORT (
2888 PUSHORT Register,
2889 USHORT Value
2890 );
2891
2892 VOID
2893 STDCALL
2894 WRITE_REGISTER_ULONG (
2895 PULONG Register,
2896 ULONG Value
2897 );
2898
2899 VOID
2900 STDCALL
2901 WRITE_REGISTER_BUFFER_UCHAR (
2902 PUCHAR Register,
2903 PUCHAR Buffer,
2904 ULONG Count
2905 );
2906
2907 VOID
2908 STDCALL
2909 WRITE_REGISTER_BUFFER_USHORT (
2910 PUSHORT Register,
2911 PUSHORT Buffer,
2912 ULONG Count
2913 );
2914
2915 VOID
2916 STDCALL
2917 WRITE_REGISTER_BUFFER_ULONG (
2918 PULONG Register,
2919 PULONG Buffer,
2920 ULONG Count
2921 );
2922
2923
2924 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2925
2926 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2927
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);
2946
2947 int atoi(const char *str);
2948 long atol(const char *str);
2949 int isdigit(int c);
2950 int islower(int c);
2951 int isprint(int c);
2952 int isspace(int c);
2953 int isupper(int c);
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);
2961
2962 #if 0
2963 qsort
2964 #endif
2965
2966 int rand(void);
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, ...);
2981 int tolower(int c);
2982 int toupper(int c);
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);
3000
3001 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
3002
3003 #endif /* __DDK_RTL_H */
3004
3005