get rid of the reactos-only RTL_REGISTRY_ENUM flag and added more debug messages...
[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 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
856 STDCALL
857 RtlCreateSystemVolumeInformationFolder(
858 IN PUNICODE_STRING VolumeRootPath
859 );
860
861 BOOLEAN STDCALL
862 RtlCreateUnicodeString (OUT PUNICODE_STRING Destination,
863 IN PCWSTR Source);
864
865 BOOLEAN STDCALL
866 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
867 IN PCSZ Source);
868
869 NTSTATUS
870 STDCALL
871 RtlCustomCPToUnicodeN (
872 IN PCPTABLEINFO CustomCP,
873 PWCHAR UnicodeString,
874 ULONG UnicodeSize,
875 PULONG ResultSize,
876 PCHAR CustomString,
877 ULONG CustomSize
878 );
879
880 BOOLEAN STDCALL
881 RtlCutoverTimeToSystemTime(IN PTIME_FIELDS CutoverTimeFields,
882 OUT PLARGE_INTEGER SystemTime,
883 IN PLARGE_INTEGER CurrentTime,
884 IN BOOLEAN ThisYearsCutoverOnly);
885
886 NTSTATUS STDCALL
887 RtlDecompressBuffer(IN USHORT CompressionFormat,
888 OUT PUCHAR UncompressedBuffer,
889 IN ULONG UncompressedBufferSize,
890 IN PUCHAR CompressedBuffer,
891 IN ULONG CompressedBufferSize,
892 OUT PULONG FinalUncompressedSize);
893
894 NTSTATUS STDCALL
895 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer,
896 IN ULONG UncompressedBufferSize,
897 IN PUCHAR CompressedBuffer,
898 IN ULONG CompressedBufferSize,
899 IN PUCHAR CompressedTail,
900 IN ULONG CompressedTailSize,
901 IN PCOMPRESSED_DATA_INFO CompressedDataInfo);
902
903 NTSTATUS STDCALL
904 RtlDecompressFragment(IN USHORT CompressionFormat,
905 OUT PUCHAR UncompressedFragment,
906 IN ULONG UncompressedFragmentSize,
907 IN PUCHAR CompressedBuffer,
908 IN ULONG CompressedBufferSize,
909 IN ULONG FragmentOffset,
910 OUT PULONG FinalUncompressedSize,
911 IN PVOID WorkSpace);
912
913 PRTL_SPLAY_LINKS
914 STDCALL
915 RtlDelete (
916 PRTL_SPLAY_LINKS Links
917 );
918
919 NTSTATUS STDCALL
920 RtlDeleteAce (PACL Acl,
921 ULONG AceIndex);
922
923 NTSTATUS STDCALL
924 RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable,
925 IN RTL_ATOM Atom);
926
927 BOOLEAN
928 STDCALL
929 RtlDeleteElementGenericTable (
930 PRTL_GENERIC_TABLE Table,
931 PVOID Buffer
932 );
933
934 BOOLEAN
935 STDCALL
936 RtlDeleteElementGenericTableAvl (
937 PRTL_AVL_TABLE Table,
938 PVOID Buffer
939 );
940
941 VOID
942 STDCALL
943 RtlDeleteNoSplay (
944 PRTL_SPLAY_LINKS Links,
945 PRTL_SPLAY_LINKS *Root
946 );
947
948
949 NTSTATUS STDCALL
950 RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList,
951 IN PVOID Owner);
952
953 NTSTATUS STDCALL
954 RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList,
955 IN ULONGLONG Start,
956 IN ULONGLONG End,
957 IN PVOID Owner);
958
959 NTSTATUS STDCALL
960 RtlDescribeChunk(IN USHORT CompressionFormat,
961 IN OUT PUCHAR *CompressedBuffer,
962 IN PUCHAR EndOfCompressedBufferPlus1,
963 OUT PUCHAR *ChunkBuffer,
964 OUT PULONG ChunkSize);
965
966 NTSTATUS STDCALL
967 RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable);
968
969 HANDLE STDCALL
970 RtlDestroyHeap (HANDLE hheap);
971
972 NTSTATUS
973 STDCALL
974 RtlDispatchException(
975 PEXCEPTION_RECORD pExcptRec,
976 CONTEXT * pContext
977 );
978
979
980 NTSTATUS
981 STDCALL
982 RtlDowncaseUnicodeString (
983 IN OUT PUNICODE_STRING DestinationString,
984 IN PUNICODE_STRING SourceString,
985 IN BOOLEAN AllocateDestinationString
986 );
987
988 NTSTATUS
989 STDCALL
990 RtlEmptyAtomTable (
991 IN PRTL_ATOM_TABLE AtomTable,
992 IN BOOLEAN DeletePinned
993 );
994
995 LARGE_INTEGER
996 STDCALL
997 RtlEnlargedIntegerMultiply (
998 LONG Multiplicand,
999 LONG Multiplier
1000 );
1001
1002 ULONG
1003 STDCALL
1004 RtlEnlargedUnsignedDivide (
1005 ULARGE_INTEGER Dividend,
1006 ULONG Divisor,
1007 PULONG Remainder
1008 );
1009
1010 LARGE_INTEGER
1011 STDCALL
1012 RtlEnlargedUnsignedMultiply (
1013 ULONG Multiplicand,
1014 ULONG Multiplier
1015 );
1016
1017 PVOID
1018 STDCALL
1019 RtlEnumerateGenericTable (
1020 PRTL_GENERIC_TABLE Table,
1021 BOOLEAN Restart
1022 );
1023
1024 PVOID
1025 STDCALL
1026 RtlEnumerateGenericTableAvl (
1027 PRTL_AVL_TABLE Table,
1028 BOOLEAN Restart
1029 );
1030
1031 PVOID
1032 STDCALL
1033 RtlEnumerateGenericTableLikeADirectory (
1034 IN PRTL_AVL_TABLE Table,
1035 IN PRTL_AVL_MATCH_FUNCTION MatchFunction,
1036 IN PVOID MatchData,
1037 IN ULONG NextFlag,
1038 IN OUT PVOID *RestartKey,
1039 IN OUT PULONG DeleteCount,
1040 IN OUT PVOID Buffer
1041 );
1042
1043 PVOID
1044 STDCALL
1045 RtlEnumerateGenericTableWithoutSplaying (
1046 PRTL_GENERIC_TABLE Table,
1047 PVOID *RestartKey
1048 );
1049
1050 PVOID
1051 STDCALL
1052 RtlEnumerateGenericTableWithoutSplayingAvl (
1053 PRTL_AVL_TABLE Table,
1054 PVOID *RestartKey
1055 );
1056
1057 BOOLEAN STDCALL
1058 RtlEqualPrefixSid (PSID Sid1,
1059 PSID Sid2);
1060
1061 BOOLEAN STDCALL
1062 RtlEqualSid (PSID Sid1,
1063 PSID Sid2);
1064
1065 BOOLEAN
1066 STDCALL
1067 RtlEqualString (
1068 PSTRING String1,
1069 PSTRING String2,
1070 BOOLEAN CaseInSensitive
1071 );
1072
1073 LARGE_INTEGER
1074 STDCALL
1075 RtlExtendedIntegerMultiply (
1076 LARGE_INTEGER Multiplicand,
1077 LONG Multiplier
1078 );
1079
1080 LARGE_INTEGER
1081 STDCALL
1082 RtlExtendedLargeIntegerDivide (
1083 LARGE_INTEGER Dividend,
1084 ULONG Divisor,
1085 PULONG Remainder
1086 );
1087
1088 LARGE_INTEGER
1089 STDCALL
1090 RtlExtendedMagicDivide (
1091 LARGE_INTEGER Dividend,
1092 LARGE_INTEGER MagicDivisor,
1093 CCHAR ShiftCount
1094 );
1095
1096 VOID
1097 STDCALL
1098 RtlFillMemoryUlong (
1099 PVOID Destination,
1100 ULONG Length,
1101 ULONG Fill
1102 );
1103
1104 ULONG
1105 STDCALL
1106 RtlFindClearBits (
1107 PRTL_BITMAP BitMapHeader,
1108 ULONG NumberToFind,
1109 ULONG HintIndex
1110 );
1111
1112 ULONG
1113 STDCALL
1114 RtlFindClearBitsAndSet (
1115 PRTL_BITMAP BitMapHeader,
1116 ULONG NumberToFind,
1117 ULONG HintIndex
1118 );
1119
1120 ULONG
1121 STDCALL
1122 RtlFindClearRuns (
1123 PRTL_BITMAP BitMapHeader,
1124 PRTL_BITMAP_RUN RunArray,
1125 ULONG SizeOfRunArray,
1126 BOOLEAN LocateLongestRuns
1127 );
1128
1129 ULONG
1130 STDCALL
1131 RtlFindLastBackwardRunClear (
1132 IN PRTL_BITMAP BitMapHeader,
1133 IN ULONG FromIndex,
1134 IN PULONG StartingRunIndex
1135 );
1136
1137 ULONG
1138 STDCALL
1139 RtlFindNextForwardRunClear (
1140 IN PRTL_BITMAP BitMapHeader,
1141 IN ULONG FromIndex,
1142 IN PULONG StartingRunIndex
1143 );
1144
1145
1146 PUNICODE_PREFIX_TABLE_ENTRY
1147 STDCALL
1148 RtlFindUnicodePrefix (
1149 PUNICODE_PREFIX_TABLE PrefixTable,
1150 PUNICODE_STRING FullName,
1151 ULONG CaseInsensitiveIndex
1152 );
1153
1154 ULONG
1155 STDCALL
1156 RtlFindFirstRunClear (
1157 PRTL_BITMAP BitMapHeader,
1158 PULONG StartingIndex
1159 );
1160
1161 ULONG
1162 STDCALL
1163 RtlFindFirstRunSet (
1164 PRTL_BITMAP BitMapHeader,
1165 PULONG StartingIndex
1166 );
1167
1168 CCHAR STDCALL
1169 RtlFindLeastSignificantBit (IN ULONGLONG Set);
1170
1171 ULONG
1172 STDCALL
1173 RtlFindLongestRunClear (
1174 PRTL_BITMAP BitMapHeader,
1175 PULONG StartingIndex
1176 );
1177
1178 ULONG
1179 STDCALL
1180 RtlFindLongestRunSet (
1181 PRTL_BITMAP BitMapHeader,
1182 PULONG StartingIndex
1183 );
1184
1185 NTSTATUS
1186 STDCALL
1187 RtlFindMessage (
1188 IN PVOID BaseAddress,
1189 IN ULONG Type,
1190 IN ULONG Language,
1191 IN ULONG MessageId,
1192 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1193 );
1194
1195 CCHAR STDCALL
1196 RtlFindMostSignificantBit (IN ULONGLONG Set);
1197
1198 NTSTATUS STDCALL
1199 RtlFindRange (IN PRTL_RANGE_LIST RangeList,
1200 IN ULONGLONG Minimum,
1201 IN ULONGLONG Maximum,
1202 IN ULONG Length,
1203 IN ULONG Alignment,
1204 IN ULONG Flags,
1205 IN UCHAR AttributeAvailableMask,
1206 IN PVOID Context OPTIONAL,
1207 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1208 OUT PULONGLONG Start);
1209
1210 ULONG
1211 STDCALL
1212 RtlFindSetBits (
1213 PRTL_BITMAP BitMapHeader,
1214 ULONG NumberToFind,
1215 ULONG HintIndex
1216 );
1217
1218 ULONG
1219 STDCALL
1220 RtlFindSetBitsAndClear (
1221 PRTL_BITMAP BitMapHeader,
1222 ULONG NumberToFind,
1223 ULONG HintIndex
1224 );
1225
1226 BOOLEAN STDCALL
1227 RtlFirstFreeAce (PACL Acl,
1228 PACE* Ace);
1229
1230 NTSTATUS STDCALL
1231 RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath);
1232
1233 VOID STDCALL
1234 RtlFreeAnsiString (IN PANSI_STRING AnsiString);
1235
1236 BOOLEAN
1237 STDCALL
1238 RtlFreeHeap (
1239 HANDLE Heap,
1240 ULONG Flags,
1241 PVOID Address
1242 );
1243
1244 VOID STDCALL
1245 RtlFreeOemString (IN POEM_STRING OemString);
1246
1247 VOID STDCALL
1248 RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList);
1249
1250 PVOID STDCALL
1251 RtlFreeSid (PSID Sid);
1252
1253 VOID STDCALL
1254 RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString);
1255
1256 VOID STDCALL
1257 RtlGenerate8dot3Name (IN PUNICODE_STRING Name,
1258 IN BOOLEAN AllowExtendedCharacters,
1259 IN OUT PGENERATE_NAME_CONTEXT Context,
1260 OUT PUNICODE_STRING Name8dot3);
1261
1262 NTSTATUS STDCALL
1263 RtlGetAce (PACL Acl,
1264 ULONG AceIndex,
1265 PACE *Ace);
1266
1267 VOID
1268 STDCALL
1269 RtlGetCallersAddress(
1270 OUT PVOID *CallersAddress,
1271 OUT PVOID *CallersCaller
1272 );
1273
1274 NTSTATUS STDCALL
1275 RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine,
1276 OUT PULONG CompressBufferAndWorkSpaceSize,
1277 OUT PULONG CompressFragmentWorkSpaceSize);
1278
1279 NTSTATUS STDCALL
1280 RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1281 PSECURITY_DESCRIPTOR_CONTROL Control,
1282 PULONG Revision);
1283
1284 NTSTATUS STDCALL
1285 RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1286 PBOOLEAN DaclPresent,
1287 PACL* Dacl,
1288 PBOOLEAN DaclDefaulted);
1289
1290 VOID STDCALL
1291 RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage,
1292 OUT PUSHORT OemCodePage);
1293
1294 PVOID
1295 STDCALL
1296 RtlGetElementGenericTable(
1297 PRTL_GENERIC_TABLE Table,
1298 ULONG I
1299 );
1300
1301 PVOID
1302 STDCALL
1303 RtlGetElementGenericTableAvl (
1304 PRTL_AVL_TABLE Table,
1305 ULONG I
1306 );
1307
1308 NTSTATUS STDCALL
1309 RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList,
1310 OUT PRTL_RANGE_LIST_ITERATOR Iterator,
1311 OUT PRTL_RANGE *Range);
1312
1313 NTSTATUS STDCALL
1314 RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1315 PSID* Group,
1316 PBOOLEAN GroupDefaulted);
1317
1318 NTSTATUS STDCALL
1319 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator,
1320 OUT PRTL_RANGE *Range,
1321 IN BOOLEAN MoveForwards);
1322
1323 ULONG
1324 STDCALL
1325 RtlGetNtGlobalFlags (
1326 VOID
1327 );
1328
1329 NTSTATUS STDCALL
1330 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1331 PSID* Owner,
1332 PBOOLEAN OwnerDefaulted);
1333
1334 NTSTATUS STDCALL
1335 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1336 PBOOLEAN SaclPresent,
1337 PACL* Sacl,
1338 PBOOLEAN SaclDefaulted);
1339
1340 NTSTATUS
1341 STDCALL
1342 RtlGetSetBootStatusData(
1343 HANDLE Filehandle,
1344 BOOLEAN WriteMode,
1345 DWORD DataClass,
1346 PVOID Buffer,
1347 ULONG BufferSize,
1348 DWORD DataClass2
1349 );
1350
1351 NTSTATUS STDCALL
1352 RtlGUIDFromString (IN PUNICODE_STRING GuidString,
1353 OUT GUID* Guid);
1354
1355 NTSTATUS
1356 STDCALL
1357 RtlHashUnicodeString(
1358 IN const UNICODE_STRING *String,
1359 IN BOOLEAN CaseInSensitive,
1360 IN ULONG HashAlgorithm,
1361 OUT PULONG HashValue
1362 );
1363
1364 PSID_IDENTIFIER_AUTHORITY STDCALL
1365 RtlIdentifierAuthoritySid (PSID Sid);
1366
1367 PVOID
1368 STDCALL
1369 RtlImageDirectoryEntryToData (
1370 PVOID BaseAddress,
1371 BOOLEAN bFlag,
1372 ULONG Directory,
1373 PULONG Size
1374 );
1375
1376 PIMAGE_NT_HEADERS
1377 STDCALL
1378 RtlImageNtHeader (
1379 IN PVOID BaseAddress
1380 );
1381
1382 PIMAGE_SECTION_HEADER
1383 STDCALL
1384 RtlImageRvaToSection (
1385 PIMAGE_NT_HEADERS NtHeader,
1386 PVOID BaseAddress,
1387 ULONG Rva
1388 );
1389
1390 ULONG
1391 STDCALL
1392 RtlImageRvaToVa (
1393 PIMAGE_NT_HEADERS NtHeader,
1394 PVOID BaseAddress,
1395 ULONG Rva,
1396 PIMAGE_SECTION_HEADER *SectionHeader
1397 );
1398
1399 VOID
1400 STDCALL
1401 RtlInitAnsiString (
1402 PANSI_STRING DestinationString,
1403 PCSZ SourceString
1404 );
1405
1406 VOID
1407 STDCALL
1408 RtlInitCodePageTable (
1409 IN PUSHORT TableBase,
1410 OUT PCPTABLEINFO CodePageTable
1411 );
1412
1413 VOID
1414 STDCALL
1415 RtlInitializeUnicodePrefix (
1416 PUNICODE_PREFIX_TABLE PrefixTable
1417 );
1418
1419 NTSTATUS STDCALL
1420 RtlInitializeSid (PSID Sid,
1421 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
1422 UCHAR SubAuthorityCount);
1423
1424 VOID
1425 STDCALL
1426 RtlInitializeBitMap(
1427 IN PRTL_BITMAP BitMapHeader,
1428 IN PULONG BitMapBuffer,
1429 IN ULONG SizeOfBitMap);
1430
1431 VOID
1432 STDCALL
1433 RtlInitNlsTables (
1434 IN PUSHORT AnsiTableBase,
1435 IN PUSHORT OemTableBase,
1436 IN PUSHORT CaseTableBase,
1437 OUT PNLSTABLEINFO NlsTable
1438 );
1439
1440 VOID
1441 STDCALL
1442 RtlInitString (
1443 PSTRING DestinationString,
1444 PCSZ SourceString
1445 );
1446
1447 VOID
1448 STDCALL
1449 RtlInitUnicodeString (
1450 PUNICODE_STRING DestinationString,
1451 PCWSTR SourceString
1452 );
1453
1454 VOID
1455 STDCALL
1456 RtlInitializeBitMap (
1457 IN OUT PRTL_BITMAP BitMapHeader,
1458 IN PULONG BitMapBuffer,
1459 IN ULONG SizeOfBitMap
1460 );
1461
1462 NTSTATUS
1463 STDCALL
1464 RtlInitializeContext (
1465 IN HANDLE ProcessHandle,
1466 OUT PCONTEXT ThreadContext,
1467 IN PVOID ThreadStartParam OPTIONAL,
1468 IN PTHREAD_START_ROUTINE ThreadStartAddress,
1469 IN PINITIAL_TEB InitialTeb
1470 );
1471
1472 VOID
1473 STDCALL
1474 RtlInitializeGenericTable (
1475 PRTL_GENERIC_TABLE Table,
1476 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
1477 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
1478 PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
1479 PVOID TableContext
1480 );
1481
1482 VOID
1483 STDCALL
1484 RtlInitializeGenericTableAvl (
1485 PRTL_AVL_TABLE Table,
1486 PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
1487 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
1488 PRTL_AVL_FREE_ROUTINE FreeRoutine,
1489 PVOID TableContext
1490 );
1491
1492 VOID STDCALL
1493 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList);
1494
1495 PVOID
1496 STDCALL
1497 RtlInsertElementGenericTable (
1498 PRTL_GENERIC_TABLE Table,
1499 PVOID Buffer,
1500 ULONG BufferSize,
1501 PBOOLEAN NewElement OPTIONAL
1502 );
1503
1504 PVOID
1505 STDCALL
1506 RtlInsertElementGenericTableAvl (
1507 PRTL_AVL_TABLE Table,
1508 PVOID Buffer,
1509 ULONG BufferSize,
1510 PBOOLEAN NewElement OPTIONAL
1511 );
1512
1513 PVOID
1514 STDCALL
1515 RtlInsertElementGenericTableFull (
1516 PRTL_GENERIC_TABLE Table,
1517 PVOID Buffer,
1518 ULONG BufferSize,
1519 PBOOLEAN NewElement OPTIONAL,
1520 PVOID NodeOrParent,
1521 TABLE_SEARCH_RESULT SearchResult
1522 );
1523
1524 PVOID
1525 STDCALL
1526 RtlInsertElementGenericTableFullAvl (
1527 PRTL_AVL_TABLE Table,
1528 PVOID Buffer,
1529 ULONG BufferSize,
1530 PBOOLEAN NewElement OPTIONAL,
1531 PVOID NodeOrParent,
1532 TABLE_SEARCH_RESULT SearchResult
1533 );
1534
1535 BOOLEAN
1536 STDCALL
1537 RtlInsertUnicodePrefix (
1538 PUNICODE_PREFIX_TABLE PrefixTable,
1539 PUNICODE_STRING Prefix,
1540 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1541 );
1542
1543 NTSTATUS
1544 STDCALL
1545 RtlInt64ToUnicodeString (
1546 IN ULONGLONG Value,
1547 IN ULONG Base OPTIONAL,
1548 IN OUT PUNICODE_STRING String
1549 );
1550
1551 NTSTATUS
1552 STDCALL
1553 RtlIntegerToChar (
1554 IN ULONG Value,
1555 IN ULONG Base,
1556 IN ULONG Length,
1557 IN OUT PCHAR String
1558 );
1559
1560 NTSTATUS
1561 STDCALL
1562 RtlIntegerToUnicode(
1563 IN ULONG Value,
1564 IN ULONG Base OPTIONAL,
1565 IN ULONG Length OPTIONAL,
1566 IN OUT LPWSTR String
1567 );
1568
1569 NTSTATUS
1570 STDCALL
1571 RtlIntegerToUnicodeString (
1572 IN ULONG Value,
1573 IN ULONG Base,
1574 IN OUT PUNICODE_STRING String
1575 );
1576
1577 NTSTATUS STDCALL
1578 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList,
1579 IN PRTL_RANGE_LIST RangeList);
1580
1581 LPSTR
1582 STDCALL
1583 RtlIpv4AddressToStringA(
1584 PULONG IP,
1585 LPSTR Buffer
1586 );
1587
1588 NTSTATUS
1589 STDCALL
1590 RtlIpv4AddressToStringExA(
1591 PULONG IP,
1592 PULONG Port,
1593 LPSTR Buffer,
1594 PULONG MaxSize
1595 );
1596
1597 LPWSTR
1598 STDCALL
1599 RtlIpv4AddressToStringW(
1600 PULONG IP,
1601 LPWSTR Buffer
1602 );
1603
1604 NTSTATUS
1605 STDCALL
1606 RtlIpv4AddressToStringExW(
1607 PULONG IP,
1608 PULONG Port,
1609 LPWSTR Buffer,
1610 PULONG MaxSize
1611 );
1612
1613 NTSTATUS
1614 STDCALL
1615 RtlIpv4StringToAddressA(
1616 IN LPSTR IpString,
1617 IN ULONG Base,
1618 OUT PVOID PtrToIpAddr,
1619 OUT ULONG IpAddr
1620 );
1621
1622 NTSTATUS
1623 STDCALL
1624 RtlIpv4StringToAddressExA(
1625 IN LPSTR IpString,
1626 IN ULONG Base,
1627 OUT PULONG IpAddr,
1628 OUT PULONG Port
1629 );
1630
1631 NTSTATUS
1632 STDCALL
1633 RtlIpv4StringToAddressW(
1634 IN LPWSTR IpString,
1635 IN ULONG Base,
1636 OUT PVOID PtrToIpAddr,
1637 OUT ULONG IpAddr
1638 );
1639
1640 NTSTATUS
1641 STDCALL
1642 RtlIpv4StringToAddressExW(
1643 IN LPWSTR IpString,
1644 IN ULONG Base,
1645 OUT PULONG IpAddr,
1646 OUT PULONG Port
1647 );
1648
1649 NTSTATUS
1650 STDCALL
1651 RtlIpv6AddressToStringA(
1652 PULONG IP,
1653 LPSTR Buffer
1654 );
1655
1656 NTSTATUS
1657 STDCALL
1658 RtlIpv6AddressToStringExA(
1659 PULONG IP,
1660 PULONG Port,
1661 LPSTR Buffer,
1662 PULONG MaxSize
1663 );
1664
1665 NTSTATUS
1666 STDCALL
1667 RtlIpv6AddressToStringW(
1668 PULONG IP,
1669 LPWSTR Buffer
1670 );
1671
1672 NTSTATUS
1673 STDCALL
1674 RtlIpv6AddressToStringExW(
1675 PULONG IP,
1676 PULONG Port,
1677 LPWSTR Buffer,
1678 PULONG MaxSize
1679 );
1680
1681 NTSTATUS
1682 STDCALL
1683 RtlIpv6StringToAddressA(
1684 IN LPSTR IpString,
1685 IN ULONG Base,
1686 OUT PVOID PtrToIpAddr,
1687 OUT ULONG IpAddr
1688 );
1689
1690 NTSTATUS
1691 STDCALL
1692 RtlIpv6StringToAddressExA(
1693 IN LPSTR IpString,
1694 IN ULONG Base,
1695 OUT PULONG IpAddr,
1696 OUT PULONG Port
1697 );
1698
1699 NTSTATUS
1700 STDCALL
1701 RtlIpv6StringToAddressW(
1702 IN LPWSTR IpString,
1703 IN ULONG Base,
1704 OUT PVOID PtrToIpAddr,
1705 OUT ULONG IpAddr
1706 );
1707
1708 NTSTATUS
1709 STDCALL
1710 RtlIpv6StringToAddressExW(
1711 IN LPWSTR IpString,
1712 IN ULONG Base,
1713 OUT PULONG IpAddr,
1714 OUT PULONG Port
1715 );
1716
1717 BOOLEAN
1718 STDCALL
1719 RtlIsGenericTableEmpty (
1720 PRTL_GENERIC_TABLE Table
1721 );
1722
1723 BOOLEAN
1724 STDCALL
1725 RtlIsGenericTableEmptyAvl (
1726 PRTL_AVL_TABLE Table
1727 );
1728
1729
1730 BOOLEAN STDCALL
1731 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName,
1732 IN PANSI_STRING AnsiName,
1733 OUT PBOOLEAN SpacesFound);
1734
1735 NTSTATUS STDCALL
1736 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList,
1737 IN ULONGLONG Start,
1738 IN ULONGLONG End,
1739 IN ULONG Flags,
1740 IN UCHAR AttributeAvailableMask,
1741 IN PVOID Context OPTIONAL,
1742 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1743 OUT PBOOLEAN Available);
1744
1745 ULONG
1746 STDCALL
1747 RtlIsTextUnicode (
1748 PVOID Buffer,
1749 ULONG Length,
1750 ULONG *Flags
1751 );
1752
1753 BOOLEAN
1754 STDCALL
1755 RtlIsValidOemCharacter (
1756 IN PWCHAR Char
1757 );
1758
1759 LARGE_INTEGER
1760 STDCALL
1761 RtlLargeIntegerAdd (
1762 LARGE_INTEGER Addend1,
1763 LARGE_INTEGER Addend2
1764 );
1765
1766 /*
1767 * VOID
1768 * RtlLargeIntegerAnd (
1769 * PLARGE_INTEGER Result,
1770 * LARGE_INTEGER Source,
1771 * LARGE_INTEGER Mask
1772 * );
1773 */
1774 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1775 { \
1776 Result.HighPart = Source.HighPart & Mask.HighPart; \
1777 Result.LowPart = Source.LowPart & Mask.LowPart; \
1778 }
1779
1780 LARGE_INTEGER
1781 STDCALL
1782 RtlLargeIntegerArithmeticShift (
1783 LARGE_INTEGER LargeInteger,
1784 CCHAR ShiftCount
1785 );
1786
1787 LARGE_INTEGER
1788 STDCALL
1789 RtlLargeIntegerDivide (
1790 LARGE_INTEGER Dividend,
1791 LARGE_INTEGER Divisor,
1792 PLARGE_INTEGER Remainder
1793 );
1794
1795 /*
1796 * BOOLEAN
1797 * RtlLargeIntegerEqualTo (
1798 * LARGE_INTEGER Operand1,
1799 * LARGE_INTEGER Operand2
1800 * );
1801 */
1802 #define RtlLargeIntegerEqualTo(X,Y) \
1803 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1804
1805 /*
1806 * BOOLEAN
1807 * RtlLargeIntegerEqualToZero (
1808 * LARGE_INTEGER Operand
1809 * );
1810 */
1811 #define RtlLargeIntegerEqualToZero(X) \
1812 (!((X).LowPart | (X).HighPart))
1813
1814 /*
1815 * BOOLEAN
1816 * RtlLargeIntegerGreaterThan (
1817 * LARGE_INTEGER Operand1,
1818 * LARGE_INTEGER Operand2
1819 * );
1820 */
1821 #define RtlLargeIntegerGreaterThan(X,Y) \
1822 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1823 ((X).HighPart > (Y).HighPart))
1824
1825 /*
1826 * BOOLEAN
1827 * RtlLargeIntegerGreaterThanOrEqualTo (
1828 * LARGE_INTEGER Operand1,
1829 * LARGE_INTEGER Operand2
1830 * );
1831 */
1832 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1833 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1834 ((X).HighPart > (Y).HighPart))
1835
1836 /*
1837 * BOOLEAN
1838 * RtlLargeIntegerGreaterThanOrEqualToZero (
1839 * LARGE_INTEGER Operand1
1840 * );
1841 */
1842 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1843 ((X).HighPart >= 0)
1844
1845 /*
1846 * BOOLEAN
1847 * RtlLargeIntegerGreaterThanZero (
1848 * LARGE_INTEGER Operand1
1849 * );
1850 */
1851 #define RtlLargeIntegerGreaterThanZero(X) \
1852 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1853 ((X).HighPart > 0 ))
1854
1855 /*
1856 * BOOLEAN
1857 * RtlLargeIntegerLessThan (
1858 * LARGE_INTEGER Operand1,
1859 * LARGE_INTEGER Operand2
1860 * );
1861 */
1862 #define RtlLargeIntegerLessThan(X,Y) \
1863 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1864 ((X).HighPart < (Y).HighPart))
1865
1866 /*
1867 * BOOLEAN
1868 * RtlLargeIntegerLessThanOrEqualTo (
1869 * LARGE_INTEGER Operand1,
1870 * LARGE_INTEGER Operand2
1871 * );
1872 */
1873 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1874 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1875 ((X).HighPart < (Y).HighPart))
1876
1877 /*
1878 * BOOLEAN
1879 * RtlLargeIntegerLessThanOrEqualToZero (
1880 * LARGE_INTEGER Operand
1881 * );
1882 */
1883 #define RtlLargeIntegerLessOrEqualToZero(X) \
1884 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1885
1886 /*
1887 * BOOLEAN
1888 * RtlLargeIntegerLessThanZero (
1889 * LARGE_INTEGER Operand
1890 * );
1891 */
1892 #define RtlLargeIntegerLessThanZero(X) \
1893 (((X).HighPart < 0))
1894
1895 LARGE_INTEGER
1896 STDCALL
1897 RtlLargeIntegerNegate (
1898 LARGE_INTEGER Subtrahend
1899 );
1900
1901 /*
1902 * BOOLEAN
1903 * RtlLargeIntegerNotEqualTo (
1904 * LARGE_INTEGER Operand1,
1905 * LARGE_INTEGER Operand2
1906 * );
1907 */
1908 #define RtlLargeIntegerNotEqualTo(X,Y) \
1909 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1910
1911 /*
1912 * BOOLEAN
1913 * RtlLargeIntegerNotEqualToZero (
1914 * LARGE_INTEGER Operand
1915 * );
1916 */
1917 #define RtlLargeIntegerNotEqualToZero(X) \
1918 (((X).LowPart | (X).HighPart))
1919
1920 LARGE_INTEGER
1921 STDCALL
1922 RtlLargeIntegerShiftLeft (
1923 LARGE_INTEGER LargeInteger,
1924 CCHAR ShiftCount
1925 );
1926
1927 LARGE_INTEGER
1928 STDCALL
1929 RtlLargeIntegerShiftRight (
1930 LARGE_INTEGER LargeInteger,
1931 CCHAR ShiftCount
1932 );
1933
1934 LARGE_INTEGER
1935 STDCALL
1936 RtlLargeIntegerSubtract (
1937 LARGE_INTEGER Minuend,
1938 LARGE_INTEGER Subtrahend
1939 );
1940
1941 ULONG STDCALL
1942 RtlLengthRequiredSid (UCHAR SubAuthorityCount);
1943
1944 ULONG STDCALL
1945 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
1946
1947 ULONG STDCALL
1948 RtlLengthSid (PSID Sid);
1949
1950 NTSTATUS
1951 STDCALL
1952 RtlLockBootStatusData(
1953 HANDLE Filehandle
1954 );
1955
1956 BOOLEAN STDCALL
1957 RtlLockHeap (IN HANDLE Heap);
1958
1959 NTSTATUS STDCALL
1960 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable,
1961 IN PWSTR AtomName,
1962 OUT PRTL_ATOM Atom);
1963
1964 PVOID
1965 STDCALL
1966 RtlLookupElementGenericTable (
1967 PRTL_GENERIC_TABLE Table,
1968 PVOID Buffer
1969 );
1970
1971 PVOID
1972 STDCALL
1973 RtlLookupElementGenericTableAvl (
1974 PRTL_AVL_TABLE Table,
1975 PVOID Buffer
1976 );
1977
1978 PVOID
1979 STDCALL
1980 RtlLookupElementGenericTableFull (
1981 PRTL_GENERIC_TABLE Table,
1982 PVOID Buffer,
1983 OUT PVOID *NodeOrParent,
1984 OUT TABLE_SEARCH_RESULT *SearchResult
1985 );
1986
1987 PVOID
1988 STDCALL
1989 RtlLookupElementGenericTableFullAvl (
1990 PRTL_AVL_TABLE Table,
1991 PVOID Buffer,
1992 OUT PVOID *NodeOrParent,
1993 OUT TABLE_SEARCH_RESULT *SearchResult
1994 );
1995
1996 NTSTATUS STDCALL
1997 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
1998 PSECURITY_DESCRIPTOR RelSD,
1999 PULONG BufferLength);
2000
2001 VOID STDCALL
2002 RtlMapGenericMask (PACCESS_MASK AccessMask,
2003 PGENERIC_MAPPING GenericMapping);
2004
2005 NTSTATUS
2006 STDCALL
2007 RtlMapSecurityErrorToNtStatus(
2008 IN ULONG SecurityError
2009 );
2010
2011 NTSTATUS STDCALL
2012 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList,
2013 IN PRTL_RANGE_LIST RangeList1,
2014 IN PRTL_RANGE_LIST RangeList2,
2015 IN ULONG Flags);
2016
2017 NTSTATUS
2018 STDCALL
2019 RtlMultiByteToUnicodeN (
2020 PWCHAR UnicodeString,
2021 ULONG UnicodeSize,
2022 PULONG ResultSize,
2023 const PCHAR MbString,
2024 ULONG MbSize
2025 );
2026
2027 NTSTATUS
2028 STDCALL
2029 RtlMultiByteToUnicodeSize (
2030 PULONG UnicodeSize,
2031 PCHAR MbString,
2032 ULONG MbSize
2033 );
2034
2035 PUNICODE_PREFIX_TABLE_ENTRY
2036 STDCALL
2037 RtlNextUnicodePrefix (
2038 PUNICODE_PREFIX_TABLE PrefixTable,
2039 BOOLEAN Restart
2040 );
2041
2042 DWORD
2043 STDCALL
2044 RtlNtStatusToDosError (
2045 NTSTATUS StatusCode
2046 );
2047
2048 DWORD
2049 STDCALL
2050 RtlNtStatusToDosErrorNoTeb (
2051 NTSTATUS StatusCode
2052 );
2053
2054 int
2055 STDCALL
2056 RtlNtStatusToPsxErrno (
2057 NTSTATUS StatusCode
2058 );
2059
2060 ULONG
2061 STDCALL
2062 RtlNumberGenericTableElements(
2063 PRTL_GENERIC_TABLE Table
2064 );
2065
2066 ULONG
2067 STDCALL
2068 RtlNumberGenericTableElementsAvl (
2069 PRTL_AVL_TABLE Table
2070 );
2071
2072
2073 ULONG
2074 STDCALL
2075 RtlNumberOfClearBits (
2076 PRTL_BITMAP BitMapHeader
2077 );
2078
2079 ULONG
2080 STDCALL
2081 RtlNumberOfSetBits (
2082 PRTL_BITMAP BitMapHeader
2083 );
2084
2085 ULONG
2086 STDCALL
2087 RtlOemStringToUnicodeSize (
2088 POEM_STRING AnsiString
2089 );
2090
2091 NTSTATUS
2092 STDCALL
2093 RtlOemStringToUnicodeString (
2094 PUNICODE_STRING DestinationString,
2095 POEM_STRING SourceString,
2096 BOOLEAN AllocateDestinationString
2097 );
2098
2099 NTSTATUS
2100 STDCALL
2101 RtlOemToUnicodeN(
2102 PWSTR UnicodeString,
2103 ULONG MaxBytesInUnicodeString,
2104 PULONG BytesInUnicodeString,
2105 IN PCHAR OemString,
2106 ULONG BytesInOemString
2107 );
2108
2109 NTSTATUS STDCALL
2110 RtlPinAtomInAtomTable (
2111 IN PRTL_ATOM_TABLE AtomTable,
2112 IN RTL_ATOM Atom
2113 );
2114
2115 VOID
2116 FASTCALL
2117 RtlPrefetchMemoryNonTemporal(
2118 IN PVOID Source,
2119 IN SIZE_T Length
2120 );
2121
2122 BOOLEAN
2123 STDCALL
2124 RtlPrefixString (
2125 PANSI_STRING String1,
2126 PANSI_STRING String2,
2127 BOOLEAN CaseInsensitive
2128 );
2129
2130 BOOLEAN
2131 STDCALL
2132 RtlPrefixUnicodeString (
2133 PUNICODE_STRING String1,
2134 PUNICODE_STRING String2,
2135 BOOLEAN CaseInsensitive
2136 );
2137
2138 NTSTATUS
2139 STDCALL
2140 RtlQueryAtomInAtomTable (
2141 IN PRTL_ATOM_TABLE AtomTable,
2142 IN RTL_ATOM Atom,
2143 IN OUT PULONG RefCount OPTIONAL,
2144 IN OUT PULONG PinCount OPTIONAL,
2145 IN OUT PWSTR AtomName OPTIONAL,
2146 IN OUT PULONG NameLength OPTIONAL
2147 );
2148
2149 NTSTATUS STDCALL
2150 RtlQueryInformationAcl (PACL Acl,
2151 PVOID Information,
2152 ULONG InformationLength,
2153 ACL_INFORMATION_CLASS InformationClass);
2154
2155 NTSTATUS STDCALL
2156 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2157
2158 VOID STDCALL
2159 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord);
2160
2161 VOID STDCALL
2162 RtlRaiseStatus(NTSTATUS Status);
2163
2164 ULONG STDCALL
2165 RtlRandom (PULONG Seed);
2166
2167 ULONG
2168 STDCALL
2169 RtlRandomEx(
2170 PULONG Seed
2171 );
2172
2173 PRTL_SPLAY_LINKS
2174 STDCALL
2175 RtlRealPredecessor (
2176 PRTL_SPLAY_LINKS Links
2177 );
2178
2179 PRTL_SPLAY_LINKS
2180 STDCALL
2181 RtlRealSuccessor (
2182 PRTL_SPLAY_LINKS Links
2183 );
2184
2185 PVOID STDCALL
2186 RtlReAllocateHeap (
2187 HANDLE Heap,
2188 ULONG Flags,
2189 PVOID Ptr,
2190 ULONG Size
2191 );
2192
2193 VOID
2194 STDCALL
2195 RtlRemoveUnicodePrefix (
2196 PUNICODE_PREFIX_TABLE PrefixTable,
2197 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2198 );
2199
2200 NTSTATUS
2201 STDCALL
2202 RtlReserveChunk (
2203 IN USHORT CompressionFormat,
2204 IN OUT PUCHAR *CompressedBuffer,
2205 IN PUCHAR EndOfCompressedBufferPlus1,
2206 OUT PUCHAR *ChunkBuffer,
2207 IN ULONG ChunkSize
2208 );
2209
2210 VOID STDCALL
2211 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable);
2212
2213 /*
2214 * VOID
2215 * RtlRetrieveUlong (
2216 * PULONG DestinationAddress,
2217 * PULONG SourceAddress
2218 * );
2219 */
2220 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2221 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2222 { \
2223 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2224 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2225 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2226 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2227 } \
2228 else \
2229 { \
2230 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2231 }
2232
2233 /*
2234 * VOID
2235 * RtlRetrieveUshort (
2236 * PUSHORT DestinationAddress,
2237 * PUSHORT SourceAddress
2238 * );
2239 */
2240 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2241 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2242 { \
2243 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2244 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2245 } \
2246 else \
2247 { \
2248 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2249 }
2250
2251 VOID STDCALL
2252 RtlSecondsSince1970ToTime (ULONG SecondsSince1970,
2253 PLARGE_INTEGER Time);
2254
2255 VOID STDCALL
2256 RtlSecondsSince1980ToTime (ULONG SecondsSince1980,
2257 PLARGE_INTEGER Time);
2258
2259 NTSTATUS STDCALL
2260 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD,
2261 PSECURITY_DESCRIPTOR AbsSD,
2262 PULONG AbsSDSize,
2263 PACL Dacl,
2264 PULONG DaclSize,
2265 PACL Sacl,
2266 PULONG SaclSize,
2267 PSID Owner,
2268 PULONG OwnerSize,
2269 PSID Group,
2270 PULONG GroupSize);
2271
2272 NTSTATUS
2273 STDCALL
2274 RtlSelfRelativeToAbsoluteSD2(
2275 PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
2276 PULONG BufferSize
2277 );
2278
2279 VOID STDCALL
2280 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader);
2281
2282 VOID
2283 STDCALL
2284 RtlSetBit (
2285 PRTL_BITMAP BitMapHeader,
2286 ULONG BitNumber
2287 );
2288
2289 VOID
2290 STDCALL
2291 RtlSetBits (
2292 PRTL_BITMAP BitMapHeader,
2293 ULONG StartingIndex,
2294 ULONG NumberToSet
2295 );
2296
2297 NTSTATUS STDCALL
2298 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2299 BOOLEAN DaclPresent,
2300 PACL Dacl,
2301 BOOLEAN DaclDefaulted);
2302
2303 NTSTATUS STDCALL
2304 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2305 PSID Group,
2306 BOOLEAN GroupDefaulted);
2307
2308 NTSTATUS STDCALL
2309 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2310 PSID Owner,
2311 BOOLEAN OwnerDefaulted);
2312
2313 NTSTATUS STDCALL
2314 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2315 BOOLEAN SaclPresent,
2316 PACL Sacl,
2317 BOOLEAN SaclDefaulted);
2318
2319 NTSTATUS STDCALL
2320 RtlSetInformationAcl (PACL Acl,
2321 PVOID Information,
2322 ULONG InformationLength,
2323 ACL_INFORMATION_CLASS InformationClass);
2324
2325 NTSTATUS STDCALL
2326 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2327
2328 ULONG STDCALL
2329 RtlSizeHeap(
2330 IN PVOID HeapHandle,
2331 IN ULONG Flags,
2332 IN PVOID MemoryPointer
2333 );
2334
2335 PRTL_SPLAY_LINKS
2336 STDCALL
2337 RtlSplay (
2338 PRTL_SPLAY_LINKS Links
2339 );
2340
2341 /*
2342 * VOID
2343 * RtlStoreUlong (
2344 * PULONG Address,
2345 * ULONG Value
2346 * );
2347 */
2348 #define RtlStoreUlong(Address,Value) \
2349 if ((ULONG_PTR)(Address) & LONG_MASK) \
2350 { \
2351 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2352 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2353 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2354 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2355 } \
2356 else \
2357 { \
2358 *((PULONG)(Address))=(ULONG)(Value); \
2359 }
2360
2361 /*
2362 * VOID
2363 * RtlStoreUshort (
2364 * PUSHORT Address,
2365 * USHORT Value
2366 * );
2367 */
2368 #define RtlStoreUshort(Address,Value) \
2369 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2370 { \
2371 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2372 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2373 } \
2374 else \
2375 { \
2376 *((PUSHORT)(Address))=(USHORT)(Value); \
2377 }
2378
2379 NTSTATUS STDCALL
2380 RtlStringFromGUID (IN REFGUID Guid,
2381 OUT PUNICODE_STRING GuidString);
2382
2383 PULONG STDCALL
2384 RtlSubAuthoritySid (PSID Sid,
2385 ULONG SubAuthority);
2386
2387 PULONG STDCALL
2388 RtlSubAuthoritySid (PSID Sid,
2389 ULONG SubAuthority);
2390
2391 PUCHAR STDCALL
2392 RtlSubAuthorityCountSid (PSID Sid);
2393
2394 PRTL_SPLAY_LINKS
2395 STDCALL
2396 RtlSubtreePredecessor (
2397 PRTL_SPLAY_LINKS Links
2398 );
2399
2400 PRTL_SPLAY_LINKS
2401 STDCALL
2402 RtlSubtreeSuccessor (
2403 PRTL_SPLAY_LINKS Links
2404 );
2405
2406 BOOLEAN
2407 STDCALL
2408 RtlTestBit (
2409 PRTL_BITMAP BitMapHeader,
2410 ULONG BitNumber
2411 );
2412
2413
2414 BOOLEAN STDCALL
2415 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields,
2416 PLARGE_INTEGER Time);
2417
2418 BOOLEAN
2419 STDCALL
2420 RtlTimeToSecondsSince1970 (
2421 PLARGE_INTEGER Time,
2422 PULONG SecondsSince1970
2423 );
2424
2425 BOOLEAN
2426 STDCALL
2427 RtlTimeToSecondsSince1980 (
2428 PLARGE_INTEGER Time,
2429 PULONG SecondsSince1980
2430 );
2431
2432 VOID
2433 STDCALL
2434 RtlTimeToElapsedTimeFields(
2435 PLARGE_INTEGER Time,
2436 PTIME_FIELDS TimeFields
2437 );
2438
2439 VOID
2440 STDCALL
2441 RtlTimeToTimeFields (
2442 PLARGE_INTEGER Time,
2443 PTIME_FIELDS TimeFields
2444 );
2445
2446
2447 ULONG FASTCALL
2448 RtlUlongByteSwap (IN ULONG Source);
2449
2450 ULONGLONG FASTCALL
2451 RtlUlonglongByteSwap (IN ULONGLONG Source);
2452
2453 ULONG
2454 STDCALL
2455 RtlUnicodeStringToAnsiSize (
2456 IN PUNICODE_STRING UnicodeString
2457 );
2458
2459 NTSTATUS
2460 STDCALL
2461 RtlUnicodeStringToAnsiString (
2462 IN OUT PANSI_STRING DestinationString,
2463 IN PUNICODE_STRING SourceString,
2464 IN BOOLEAN AllocateDestinationString
2465 );
2466
2467 NTSTATUS
2468 STDCALL
2469 RtlUnicodeStringToInteger (
2470 IN PUNICODE_STRING String,
2471 IN ULONG Base,
2472 OUT PULONG Value
2473 );
2474
2475 ULONG
2476 STDCALL
2477 RtlUnicodeStringToOemSize (
2478 IN PUNICODE_STRING UnicodeString
2479 );
2480
2481 NTSTATUS
2482 STDCALL
2483 RtlUnicodeStringToCountedOemString (
2484 IN OUT POEM_STRING DestinationString,
2485 IN PUNICODE_STRING SourceString,
2486 IN BOOLEAN AllocateDestinationString
2487 );
2488
2489 NTSTATUS
2490 STDCALL
2491 RtlUnicodeStringToOemString (
2492 IN OUT POEM_STRING DestinationString,
2493 IN PUNICODE_STRING SourceString,
2494 IN BOOLEAN AllocateDestinationString
2495 );
2496
2497 NTSTATUS
2498 STDCALL
2499 RtlUnicodeToCustomCPN (
2500 IN PCPTABLEINFO CustomCP,
2501 PCHAR MbString,
2502 ULONG MbSize,
2503 PULONG ResultSize,
2504 PWCHAR UnicodeString,
2505 ULONG UnicodeSize
2506 );
2507
2508 NTSTATUS
2509 STDCALL
2510 RtlUnicodeToMultiByteN (
2511 PCHAR MbString,
2512 ULONG MbSize,
2513 PULONG ResultSize,
2514 PWCHAR UnicodeString,
2515 ULONG UnicodeSize
2516 );
2517
2518 NTSTATUS
2519 STDCALL
2520 RtlUnicodeToMultiByteSize (
2521 PULONG MbSize,
2522 PWCHAR UnicodeString,
2523 ULONG UnicodeSize
2524 );
2525
2526 NTSTATUS
2527 STDCALL
2528 RtlUnicodeToOemN (
2529 PCHAR OemString,
2530 ULONG OemSize,
2531 PULONG ResultSize,
2532 PWCHAR UnicodeString,
2533 ULONG UnicodeSize
2534 );
2535
2536 ULONG STDCALL
2537 RtlUniform (PULONG Seed);
2538
2539 BOOLEAN STDCALL
2540 RtlUnlockHeap (IN HANDLE Heap);
2541
2542 NTSTATUS
2543 STDCALL
2544 RtlUnlockBootStatusData(
2545 HANDLE Filehandle
2546 );
2547
2548 VOID
2549 STDCALL
2550 RtlUnwind (
2551 PEXCEPTION_REGISTRATION RegistrationFrame,
2552 PVOID ReturnAddress,
2553 PEXCEPTION_RECORD ExceptionRecord,
2554 DWORD EaxValue
2555 );
2556
2557 WCHAR
2558 STDCALL
2559 RtlUpcaseUnicodeChar (
2560 WCHAR Source
2561 );
2562
2563 NTSTATUS
2564 STDCALL
2565 RtlUpcaseUnicodeString (
2566 IN OUT PUNICODE_STRING DestinationString,
2567 IN PCUNICODE_STRING SourceString,
2568 IN BOOLEAN AllocateDestinationString
2569 );
2570
2571 NTSTATUS
2572 STDCALL
2573 RtlUpcaseUnicodeStringToAnsiString (
2574 IN OUT PANSI_STRING DestinationString,
2575 IN PUNICODE_STRING SourceString,
2576 IN BOOLEAN AllocateDestinationString
2577 );
2578
2579 NTSTATUS
2580 STDCALL
2581 RtlUpcaseUnicodeStringToCountedOemString (
2582 IN OUT POEM_STRING DestinationString,
2583 IN PUNICODE_STRING SourceString,
2584 IN BOOLEAN AllocateDestinationString
2585 );
2586
2587 NTSTATUS
2588 STDCALL
2589 RtlUpcaseUnicodeStringToOemString (
2590 IN OUT POEM_STRING DestinationString,
2591 IN PUNICODE_STRING SourceString,
2592 IN BOOLEAN AllocateDestinationString
2593 );
2594
2595 NTSTATUS
2596 STDCALL
2597 RtlUpcaseUnicodeToCustomCPN (
2598 IN PCPTABLEINFO CustomCP,
2599 PCHAR MbString,
2600 ULONG MbSize,
2601 PULONG ResultSize,
2602 PWCHAR UnicodeString,
2603 ULONG UnicodeSize
2604 );
2605
2606 NTSTATUS
2607 STDCALL
2608 RtlUpcaseUnicodeToMultiByteN (
2609 PCHAR MbString,
2610 ULONG MbSize,
2611 PULONG ResultSize,
2612 PWCHAR UnicodeString,
2613 ULONG UnicodeSize
2614 );
2615
2616 NTSTATUS
2617 STDCALL
2618 RtlUpcaseUnicodeToOemN (
2619 PCHAR OemString,
2620 ULONG OemSize,
2621 PULONG ResultSize,
2622 PWCHAR UnicodeString,
2623 ULONG UnicodeSize
2624 );
2625
2626 CHAR STDCALL
2627 RtlUpperChar (CHAR Source);
2628
2629 VOID STDCALL
2630 RtlUpperString (PSTRING DestinationString,
2631 PSTRING SourceString);
2632
2633 USHORT FASTCALL
2634 RtlUshortByteSwap (IN USHORT Source);
2635
2636 BOOLEAN STDCALL
2637 RtlValidAcl (PACL Acl);
2638
2639 BOOLEAN STDCALL
2640 RtlValidateHeap (
2641 HANDLE Heap,
2642 ULONG Flags,
2643 PVOID pmem
2644 );
2645
2646 BOOLEAN
2647 STDCALL
2648 RtlValidRelativeSecurityDescriptor (
2649 IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
2650 IN ULONG SecurityDescriptorLength,
2651 IN SECURITY_INFORMATION RequiredInformation
2652 );
2653
2654 BOOLEAN STDCALL
2655 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor);
2656
2657 BOOLEAN STDCALL
2658 RtlValidSid (IN PSID Sid);
2659
2660 /*
2661 NTSTATUS
2662 STDCALL
2663 RtlVerifyVersionInfo(
2664 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2665 IN ULONG TypeMask,
2666 IN ULONGLONG ConditionMask
2667 );
2668 */
2669
2670 NTSTATUS
2671 STDCALL
2672 RtlVolumeDeviceToDosName(
2673 IN PVOID VolumeDeviceObject,
2674 OUT PUNICODE_STRING DosName
2675 );
2676
2677 ULONG
2678 STDCALL
2679 RtlWalkFrameChain (
2680 OUT PVOID *Callers,
2681 IN ULONG Count,
2682 IN ULONG Flags
2683 );
2684
2685 BOOLEAN STDCALL
2686 RtlZeroHeap(
2687 IN PVOID HeapHandle,
2688 IN ULONG Flags
2689 );
2690
2691 ULONG
2692 STDCALL
2693 RtlxAnsiStringToUnicodeSize (
2694 IN PANSI_STRING AnsiString
2695 );
2696
2697 ULONG
2698 STDCALL
2699 RtlxOemStringToUnicodeSize (
2700 IN POEM_STRING OemString
2701 );
2702
2703 ULONG
2704 STDCALL
2705 RtlxUnicodeStringToAnsiSize (
2706 IN PUNICODE_STRING UnicodeString
2707 );
2708
2709 ULONG
2710 STDCALL
2711 RtlxUnicodeStringToOemSize (
2712 IN PUNICODE_STRING UnicodeString
2713 );
2714
2715 NTSTATUS
2716 FASTCALL
2717 RtlpOemStringToCountedUnicodeString(
2718 IN OUT PUNICODE_STRING UniDest,
2719 IN POEM_STRING OemSource,
2720 IN BOOLEAN AllocateDestinationString,
2721 IN POOL_TYPE PoolType);
2722
2723 NTSTATUS
2724 FASTCALL
2725 RtlpUpcaseUnicodeString(
2726 IN OUT PUNICODE_STRING UniDest,
2727 IN PCUNICODE_STRING UniSource,
2728 IN BOOLEAN AllocateDestinationString,
2729 IN POOL_TYPE PoolType);
2730
2731 NTSTATUS
2732 FASTCALL
2733 RtlpUpcaseUnicodeStringToAnsiString(
2734 IN OUT PANSI_STRING AnsiDest,
2735 IN PUNICODE_STRING UniSource,
2736 IN BOOLEAN AllocateDestinationString,
2737 IN POOL_TYPE PoolType);
2738
2739 NTSTATUS
2740 FASTCALL
2741 RtlpUpcaseUnicodeStringToCountedOemString(
2742 IN OUT POEM_STRING OemDest,
2743 IN PUNICODE_STRING UniSource,
2744 IN BOOLEAN AllocateDestinationString,
2745 IN POOL_TYPE PoolType);
2746
2747 NTSTATUS
2748 FASTCALL
2749 RtlpUpcaseUnicodeStringToOemString (
2750 IN OUT POEM_STRING OemDest,
2751 IN PUNICODE_STRING UniSource,
2752 IN BOOLEAN AllocateDestinationString,
2753 IN POOL_TYPE PoolType);
2754
2755 NTSTATUS
2756 FASTCALL
2757 RtlpDowncaseUnicodeString(
2758 IN OUT PUNICODE_STRING UniDest,
2759 IN PUNICODE_STRING UniSource,
2760 IN BOOLEAN AllocateDestinationString,
2761 IN POOL_TYPE PoolType);
2762
2763 NTSTATUS
2764 FASTCALL
2765 RtlpAnsiStringToUnicodeString(
2766 IN OUT PUNICODE_STRING DestinationString,
2767 IN PANSI_STRING SourceString,
2768 IN BOOLEAN AllocateDestinationString,
2769 IN POOL_TYPE PoolType);
2770
2771 NTSTATUS
2772 FASTCALL
2773 RtlpUnicodeStringToAnsiString(
2774 IN OUT PANSI_STRING AnsiDest,
2775 IN PUNICODE_STRING UniSource,
2776 IN BOOLEAN AllocateDestinationString,
2777 IN POOL_TYPE PoolType);
2778
2779 NTSTATUS
2780 FASTCALL
2781 RtlpOemStringToUnicodeString(
2782 IN OUT PUNICODE_STRING UniDest,
2783 IN POEM_STRING OemSource,
2784 IN BOOLEAN AllocateDestinationString,
2785 IN POOL_TYPE PoolType);
2786
2787 NTSTATUS
2788 FASTCALL
2789 RtlpUnicodeStringToOemString(
2790 IN OUT POEM_STRING OemDest,
2791 IN PUNICODE_STRING UniSource,
2792 IN BOOLEAN AllocateDestinationString,
2793 IN POOL_TYPE PoolType);
2794
2795 BOOLEAN
2796 FASTCALL
2797 RtlpCreateUnicodeString(
2798 IN OUT PUNICODE_STRING UniDest,
2799 IN PCWSTR Source,
2800 IN POOL_TYPE PoolType);
2801
2802 NTSTATUS
2803 FASTCALL
2804 RtlpUnicodeStringToCountedOemString(
2805 IN OUT POEM_STRING OemDest,
2806 IN PUNICODE_STRING UniSource,
2807 IN BOOLEAN AllocateDestinationString,
2808 IN POOL_TYPE PoolType);
2809
2810 NTSTATUS STDCALL
2811 RtlpDuplicateUnicodeString(
2812 INT AddNull,
2813 IN PUNICODE_STRING SourceString,
2814 PUNICODE_STRING DestinationString,
2815 POOL_TYPE PoolType);
2816
2817 /* Register io functions */
2818
2819 UCHAR
2820 STDCALL
2821 READ_REGISTER_UCHAR (
2822 PUCHAR Register
2823 );
2824
2825 USHORT
2826 STDCALL
2827 READ_REGISTER_USHORT (
2828 PUSHORT Register
2829 );
2830
2831 ULONG
2832 STDCALL
2833 READ_REGISTER_ULONG (
2834 PULONG Register
2835 );
2836
2837 VOID
2838 STDCALL
2839 READ_REGISTER_BUFFER_UCHAR (
2840 PUCHAR Register,
2841 PUCHAR Buffer,
2842 ULONG Count
2843 );
2844
2845 VOID
2846 STDCALL
2847 READ_REGISTER_BUFFER_USHORT (
2848 PUSHORT Register,
2849 PUSHORT Buffer,
2850 ULONG Count
2851 );
2852
2853 VOID
2854 STDCALL
2855 READ_REGISTER_BUFFER_ULONG (
2856 PULONG Register,
2857 PULONG Buffer,
2858 ULONG Count
2859 );
2860
2861 VOID
2862 STDCALL
2863 WRITE_REGISTER_UCHAR (
2864 PUCHAR Register,
2865 UCHAR Value
2866 );
2867
2868 VOID
2869 STDCALL
2870 WRITE_REGISTER_USHORT (
2871 PUSHORT Register,
2872 USHORT Value
2873 );
2874
2875 VOID
2876 STDCALL
2877 WRITE_REGISTER_ULONG (
2878 PULONG Register,
2879 ULONG Value
2880 );
2881
2882 VOID
2883 STDCALL
2884 WRITE_REGISTER_BUFFER_UCHAR (
2885 PUCHAR Register,
2886 PUCHAR Buffer,
2887 ULONG Count
2888 );
2889
2890 VOID
2891 STDCALL
2892 WRITE_REGISTER_BUFFER_USHORT (
2893 PUSHORT Register,
2894 PUSHORT Buffer,
2895 ULONG Count
2896 );
2897
2898 VOID
2899 STDCALL
2900 WRITE_REGISTER_BUFFER_ULONG (
2901 PULONG Register,
2902 PULONG Buffer,
2903 ULONG Count
2904 );
2905
2906
2907 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2908
2909 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2910
2911 char *_itoa (int value, char *string, int radix);
2912 wchar_t *_itow (int value, wchar_t *string, int radix);
2913 int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
2914 int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
2915 int _stricmp(const char *s1, const char *s2);
2916 char * _strlwr(char *x);
2917 int _strnicmp(const char *s1, const char *s2, size_t n);
2918 char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
2919 char * _strrev(char *s);
2920 char * _strset(char* szToFill, int szFill);
2921 char * _strupr(char *x);
2922 int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
2923 int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
2924 wchar_t * _wcslwr (wchar_t *x);
2925 int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
2926 wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
2927 wchar_t * _wcsrev(wchar_t *s);
2928 wchar_t *_wcsupr(wchar_t *x);
2929
2930 int atoi(const char *str);
2931 long atol(const char *str);
2932 int isdigit(int c);
2933 int islower(int c);
2934 int isprint(int c);
2935 int isspace(int c);
2936 int isupper(int c);
2937 int isxdigit(int c);
2938 size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
2939 int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
2940 void * memchr(const void *s, int c, size_t n);
2941 void * memcpy(void *to, const void *from, size_t count);
2942 void * memmove(void *dest,const void *src, size_t count);
2943 void * memset(void *src, int val, size_t count);
2944
2945 #if 0
2946 qsort
2947 #endif
2948
2949 int rand(void);
2950 int sprintf(char * buf, const char *fmt, ...);
2951 void srand(unsigned seed);
2952 char * strcat(char *s, const char *append);
2953 char * strchr(const char *s, int c);
2954 int strcmp(const char *s1, const char *s2);
2955 char * strcpy(char *to, const char *from);
2956 size_t strlen(const char *str);
2957 char * strncat(char *dst, const char *src, size_t n);
2958 int strncmp(const char *s1, const char *s2, size_t n);
2959 char *strncpy(char *dst, const char *src, size_t n);
2960 char *strrchr(const char *s, int c);
2961 size_t strspn(const char *s1, const char *s2);
2962 char *strstr(const char *s, const char *find);
2963 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
2964 int tolower(int c);
2965 int toupper(int c);
2966 wchar_t towlower(wchar_t c);
2967 wchar_t towupper(wchar_t c);
2968 int vsprintf(char *buf, const char *fmt, va_list args);
2969 wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
2970 wchar_t * wcschr(const wchar_t *str, wchar_t ch);
2971 int wcscmp(const wchar_t *cs, const wchar_t *ct);
2972 wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
2973 size_t wcscspn(const wchar_t *str,const wchar_t *reject);
2974 size_t wcslen(const wchar_t *s);
2975 wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
2976 int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
2977 wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
2978 wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
2979 size_t wcsspn(const wchar_t *str,const wchar_t *accept);
2980 wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
2981 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
2982 int wctomb (char *mbchar, wchar_t wchar);
2983
2984 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2985
2986 #endif /* __DDK_RTL_H */
2987
2988