Implement RtlGetSecurityDescriptorRMControl, RtlSetSecurityDescriptorRMControl, SetSe...
[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 BOOLEAN STDCALL
1341 RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
1342 PUCHAR RMControl);
1343
1344 NTSTATUS
1345 STDCALL
1346 RtlGetSetBootStatusData(
1347 HANDLE Filehandle,
1348 BOOLEAN WriteMode,
1349 DWORD DataClass,
1350 PVOID Buffer,
1351 ULONG BufferSize,
1352 DWORD DataClass2
1353 );
1354
1355 NTSTATUS STDCALL
1356 RtlGUIDFromString (IN PUNICODE_STRING GuidString,
1357 OUT GUID* Guid);
1358
1359 NTSTATUS
1360 STDCALL
1361 RtlHashUnicodeString(
1362 IN const UNICODE_STRING *String,
1363 IN BOOLEAN CaseInSensitive,
1364 IN ULONG HashAlgorithm,
1365 OUT PULONG HashValue
1366 );
1367
1368 PSID_IDENTIFIER_AUTHORITY STDCALL
1369 RtlIdentifierAuthoritySid (PSID Sid);
1370
1371 PVOID
1372 STDCALL
1373 RtlImageDirectoryEntryToData (
1374 PVOID BaseAddress,
1375 BOOLEAN bFlag,
1376 ULONG Directory,
1377 PULONG Size
1378 );
1379
1380 PIMAGE_NT_HEADERS
1381 STDCALL
1382 RtlImageNtHeader (
1383 IN PVOID BaseAddress
1384 );
1385
1386 PIMAGE_SECTION_HEADER
1387 STDCALL
1388 RtlImageRvaToSection (
1389 PIMAGE_NT_HEADERS NtHeader,
1390 PVOID BaseAddress,
1391 ULONG Rva
1392 );
1393
1394 ULONG
1395 STDCALL
1396 RtlImageRvaToVa (
1397 PIMAGE_NT_HEADERS NtHeader,
1398 PVOID BaseAddress,
1399 ULONG Rva,
1400 PIMAGE_SECTION_HEADER *SectionHeader
1401 );
1402
1403 VOID
1404 STDCALL
1405 RtlInitAnsiString (
1406 PANSI_STRING DestinationString,
1407 PCSZ SourceString
1408 );
1409
1410 VOID
1411 STDCALL
1412 RtlInitCodePageTable (
1413 IN PUSHORT TableBase,
1414 OUT PCPTABLEINFO CodePageTable
1415 );
1416
1417 VOID
1418 STDCALL
1419 RtlInitializeUnicodePrefix (
1420 PUNICODE_PREFIX_TABLE PrefixTable
1421 );
1422
1423 NTSTATUS STDCALL
1424 RtlInitializeSid (PSID Sid,
1425 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
1426 UCHAR SubAuthorityCount);
1427
1428 VOID
1429 STDCALL
1430 RtlInitializeBitMap(
1431 IN PRTL_BITMAP BitMapHeader,
1432 IN PULONG BitMapBuffer,
1433 IN ULONG SizeOfBitMap);
1434
1435 VOID
1436 STDCALL
1437 RtlInitNlsTables (
1438 IN PUSHORT AnsiTableBase,
1439 IN PUSHORT OemTableBase,
1440 IN PUSHORT CaseTableBase,
1441 OUT PNLSTABLEINFO NlsTable
1442 );
1443
1444 VOID
1445 STDCALL
1446 RtlInitString (
1447 PSTRING DestinationString,
1448 PCSZ SourceString
1449 );
1450
1451 VOID
1452 STDCALL
1453 RtlInitUnicodeString (
1454 PUNICODE_STRING DestinationString,
1455 PCWSTR SourceString
1456 );
1457
1458 VOID
1459 STDCALL
1460 RtlInitializeBitMap (
1461 IN OUT PRTL_BITMAP BitMapHeader,
1462 IN PULONG BitMapBuffer,
1463 IN ULONG SizeOfBitMap
1464 );
1465
1466 NTSTATUS
1467 STDCALL
1468 RtlInitializeContext (
1469 IN HANDLE ProcessHandle,
1470 OUT PCONTEXT ThreadContext,
1471 IN PVOID ThreadStartParam OPTIONAL,
1472 IN PTHREAD_START_ROUTINE ThreadStartAddress,
1473 IN PINITIAL_TEB InitialTeb
1474 );
1475
1476 VOID
1477 STDCALL
1478 RtlInitializeGenericTable (
1479 PRTL_GENERIC_TABLE Table,
1480 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
1481 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
1482 PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
1483 PVOID TableContext
1484 );
1485
1486 VOID
1487 STDCALL
1488 RtlInitializeGenericTableAvl (
1489 PRTL_AVL_TABLE Table,
1490 PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
1491 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
1492 PRTL_AVL_FREE_ROUTINE FreeRoutine,
1493 PVOID TableContext
1494 );
1495
1496 VOID STDCALL
1497 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList);
1498
1499 PVOID
1500 STDCALL
1501 RtlInsertElementGenericTable (
1502 PRTL_GENERIC_TABLE Table,
1503 PVOID Buffer,
1504 ULONG BufferSize,
1505 PBOOLEAN NewElement OPTIONAL
1506 );
1507
1508 PVOID
1509 STDCALL
1510 RtlInsertElementGenericTableAvl (
1511 PRTL_AVL_TABLE Table,
1512 PVOID Buffer,
1513 ULONG BufferSize,
1514 PBOOLEAN NewElement OPTIONAL
1515 );
1516
1517 PVOID
1518 STDCALL
1519 RtlInsertElementGenericTableFull (
1520 PRTL_GENERIC_TABLE Table,
1521 PVOID Buffer,
1522 ULONG BufferSize,
1523 PBOOLEAN NewElement OPTIONAL,
1524 PVOID NodeOrParent,
1525 TABLE_SEARCH_RESULT SearchResult
1526 );
1527
1528 PVOID
1529 STDCALL
1530 RtlInsertElementGenericTableFullAvl (
1531 PRTL_AVL_TABLE Table,
1532 PVOID Buffer,
1533 ULONG BufferSize,
1534 PBOOLEAN NewElement OPTIONAL,
1535 PVOID NodeOrParent,
1536 TABLE_SEARCH_RESULT SearchResult
1537 );
1538
1539 BOOLEAN
1540 STDCALL
1541 RtlInsertUnicodePrefix (
1542 PUNICODE_PREFIX_TABLE PrefixTable,
1543 PUNICODE_STRING Prefix,
1544 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1545 );
1546
1547 NTSTATUS
1548 STDCALL
1549 RtlInt64ToUnicodeString (
1550 IN ULONGLONG Value,
1551 IN ULONG Base OPTIONAL,
1552 IN OUT PUNICODE_STRING String
1553 );
1554
1555 NTSTATUS
1556 STDCALL
1557 RtlIntegerToChar (
1558 IN ULONG Value,
1559 IN ULONG Base,
1560 IN ULONG Length,
1561 IN OUT PCHAR String
1562 );
1563
1564 NTSTATUS
1565 STDCALL
1566 RtlIntegerToUnicode(
1567 IN ULONG Value,
1568 IN ULONG Base OPTIONAL,
1569 IN ULONG Length OPTIONAL,
1570 IN OUT LPWSTR String
1571 );
1572
1573 NTSTATUS
1574 STDCALL
1575 RtlIntegerToUnicodeString (
1576 IN ULONG Value,
1577 IN ULONG Base,
1578 IN OUT PUNICODE_STRING String
1579 );
1580
1581 NTSTATUS STDCALL
1582 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList,
1583 IN PRTL_RANGE_LIST RangeList);
1584
1585 LPSTR
1586 STDCALL
1587 RtlIpv4AddressToStringA(
1588 PULONG IP,
1589 LPSTR Buffer
1590 );
1591
1592 NTSTATUS
1593 STDCALL
1594 RtlIpv4AddressToStringExA(
1595 PULONG IP,
1596 PULONG Port,
1597 LPSTR Buffer,
1598 PULONG MaxSize
1599 );
1600
1601 LPWSTR
1602 STDCALL
1603 RtlIpv4AddressToStringW(
1604 PULONG IP,
1605 LPWSTR Buffer
1606 );
1607
1608 NTSTATUS
1609 STDCALL
1610 RtlIpv4AddressToStringExW(
1611 PULONG IP,
1612 PULONG Port,
1613 LPWSTR Buffer,
1614 PULONG MaxSize
1615 );
1616
1617 NTSTATUS
1618 STDCALL
1619 RtlIpv4StringToAddressA(
1620 IN LPSTR IpString,
1621 IN ULONG Base,
1622 OUT PVOID PtrToIpAddr,
1623 OUT ULONG IpAddr
1624 );
1625
1626 NTSTATUS
1627 STDCALL
1628 RtlIpv4StringToAddressExA(
1629 IN LPSTR IpString,
1630 IN ULONG Base,
1631 OUT PULONG IpAddr,
1632 OUT PULONG Port
1633 );
1634
1635 NTSTATUS
1636 STDCALL
1637 RtlIpv4StringToAddressW(
1638 IN LPWSTR IpString,
1639 IN ULONG Base,
1640 OUT PVOID PtrToIpAddr,
1641 OUT ULONG IpAddr
1642 );
1643
1644 NTSTATUS
1645 STDCALL
1646 RtlIpv4StringToAddressExW(
1647 IN LPWSTR IpString,
1648 IN ULONG Base,
1649 OUT PULONG IpAddr,
1650 OUT PULONG Port
1651 );
1652
1653 NTSTATUS
1654 STDCALL
1655 RtlIpv6AddressToStringA(
1656 PULONG IP,
1657 LPSTR Buffer
1658 );
1659
1660 NTSTATUS
1661 STDCALL
1662 RtlIpv6AddressToStringExA(
1663 PULONG IP,
1664 PULONG Port,
1665 LPSTR Buffer,
1666 PULONG MaxSize
1667 );
1668
1669 NTSTATUS
1670 STDCALL
1671 RtlIpv6AddressToStringW(
1672 PULONG IP,
1673 LPWSTR Buffer
1674 );
1675
1676 NTSTATUS
1677 STDCALL
1678 RtlIpv6AddressToStringExW(
1679 PULONG IP,
1680 PULONG Port,
1681 LPWSTR Buffer,
1682 PULONG MaxSize
1683 );
1684
1685 NTSTATUS
1686 STDCALL
1687 RtlIpv6StringToAddressA(
1688 IN LPSTR IpString,
1689 IN ULONG Base,
1690 OUT PVOID PtrToIpAddr,
1691 OUT ULONG IpAddr
1692 );
1693
1694 NTSTATUS
1695 STDCALL
1696 RtlIpv6StringToAddressExA(
1697 IN LPSTR IpString,
1698 IN ULONG Base,
1699 OUT PULONG IpAddr,
1700 OUT PULONG Port
1701 );
1702
1703 NTSTATUS
1704 STDCALL
1705 RtlIpv6StringToAddressW(
1706 IN LPWSTR IpString,
1707 IN ULONG Base,
1708 OUT PVOID PtrToIpAddr,
1709 OUT ULONG IpAddr
1710 );
1711
1712 NTSTATUS
1713 STDCALL
1714 RtlIpv6StringToAddressExW(
1715 IN LPWSTR IpString,
1716 IN ULONG Base,
1717 OUT PULONG IpAddr,
1718 OUT PULONG Port
1719 );
1720
1721 BOOLEAN
1722 STDCALL
1723 RtlIsGenericTableEmpty (
1724 PRTL_GENERIC_TABLE Table
1725 );
1726
1727 BOOLEAN
1728 STDCALL
1729 RtlIsGenericTableEmptyAvl (
1730 PRTL_AVL_TABLE Table
1731 );
1732
1733
1734 BOOLEAN STDCALL
1735 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName,
1736 IN PANSI_STRING AnsiName,
1737 OUT PBOOLEAN SpacesFound);
1738
1739 NTSTATUS STDCALL
1740 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList,
1741 IN ULONGLONG Start,
1742 IN ULONGLONG End,
1743 IN ULONG Flags,
1744 IN UCHAR AttributeAvailableMask,
1745 IN PVOID Context OPTIONAL,
1746 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1747 OUT PBOOLEAN Available);
1748
1749 ULONG
1750 STDCALL
1751 RtlIsTextUnicode (
1752 PVOID Buffer,
1753 ULONG Length,
1754 ULONG *Flags
1755 );
1756
1757 BOOLEAN
1758 STDCALL
1759 RtlIsValidOemCharacter (
1760 IN PWCHAR Char
1761 );
1762
1763 LARGE_INTEGER
1764 STDCALL
1765 RtlLargeIntegerAdd (
1766 LARGE_INTEGER Addend1,
1767 LARGE_INTEGER Addend2
1768 );
1769
1770 /*
1771 * VOID
1772 * RtlLargeIntegerAnd (
1773 * PLARGE_INTEGER Result,
1774 * LARGE_INTEGER Source,
1775 * LARGE_INTEGER Mask
1776 * );
1777 */
1778 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1779 { \
1780 Result.HighPart = Source.HighPart & Mask.HighPart; \
1781 Result.LowPart = Source.LowPart & Mask.LowPart; \
1782 }
1783
1784 LARGE_INTEGER
1785 STDCALL
1786 RtlLargeIntegerArithmeticShift (
1787 LARGE_INTEGER LargeInteger,
1788 CCHAR ShiftCount
1789 );
1790
1791 LARGE_INTEGER
1792 STDCALL
1793 RtlLargeIntegerDivide (
1794 LARGE_INTEGER Dividend,
1795 LARGE_INTEGER Divisor,
1796 PLARGE_INTEGER Remainder
1797 );
1798
1799 /*
1800 * BOOLEAN
1801 * RtlLargeIntegerEqualTo (
1802 * LARGE_INTEGER Operand1,
1803 * LARGE_INTEGER Operand2
1804 * );
1805 */
1806 #define RtlLargeIntegerEqualTo(X,Y) \
1807 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1808
1809 /*
1810 * BOOLEAN
1811 * RtlLargeIntegerEqualToZero (
1812 * LARGE_INTEGER Operand
1813 * );
1814 */
1815 #define RtlLargeIntegerEqualToZero(X) \
1816 (!((X).LowPart | (X).HighPart))
1817
1818 /*
1819 * BOOLEAN
1820 * RtlLargeIntegerGreaterThan (
1821 * LARGE_INTEGER Operand1,
1822 * LARGE_INTEGER Operand2
1823 * );
1824 */
1825 #define RtlLargeIntegerGreaterThan(X,Y) \
1826 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1827 ((X).HighPart > (Y).HighPart))
1828
1829 /*
1830 * BOOLEAN
1831 * RtlLargeIntegerGreaterThanOrEqualTo (
1832 * LARGE_INTEGER Operand1,
1833 * LARGE_INTEGER Operand2
1834 * );
1835 */
1836 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1837 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1838 ((X).HighPart > (Y).HighPart))
1839
1840 /*
1841 * BOOLEAN
1842 * RtlLargeIntegerGreaterThanOrEqualToZero (
1843 * LARGE_INTEGER Operand1
1844 * );
1845 */
1846 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1847 ((X).HighPart >= 0)
1848
1849 /*
1850 * BOOLEAN
1851 * RtlLargeIntegerGreaterThanZero (
1852 * LARGE_INTEGER Operand1
1853 * );
1854 */
1855 #define RtlLargeIntegerGreaterThanZero(X) \
1856 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1857 ((X).HighPart > 0 ))
1858
1859 /*
1860 * BOOLEAN
1861 * RtlLargeIntegerLessThan (
1862 * LARGE_INTEGER Operand1,
1863 * LARGE_INTEGER Operand2
1864 * );
1865 */
1866 #define RtlLargeIntegerLessThan(X,Y) \
1867 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1868 ((X).HighPart < (Y).HighPart))
1869
1870 /*
1871 * BOOLEAN
1872 * RtlLargeIntegerLessThanOrEqualTo (
1873 * LARGE_INTEGER Operand1,
1874 * LARGE_INTEGER Operand2
1875 * );
1876 */
1877 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1878 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1879 ((X).HighPart < (Y).HighPart))
1880
1881 /*
1882 * BOOLEAN
1883 * RtlLargeIntegerLessThanOrEqualToZero (
1884 * LARGE_INTEGER Operand
1885 * );
1886 */
1887 #define RtlLargeIntegerLessOrEqualToZero(X) \
1888 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1889
1890 /*
1891 * BOOLEAN
1892 * RtlLargeIntegerLessThanZero (
1893 * LARGE_INTEGER Operand
1894 * );
1895 */
1896 #define RtlLargeIntegerLessThanZero(X) \
1897 (((X).HighPart < 0))
1898
1899 LARGE_INTEGER
1900 STDCALL
1901 RtlLargeIntegerNegate (
1902 LARGE_INTEGER Subtrahend
1903 );
1904
1905 /*
1906 * BOOLEAN
1907 * RtlLargeIntegerNotEqualTo (
1908 * LARGE_INTEGER Operand1,
1909 * LARGE_INTEGER Operand2
1910 * );
1911 */
1912 #define RtlLargeIntegerNotEqualTo(X,Y) \
1913 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1914
1915 /*
1916 * BOOLEAN
1917 * RtlLargeIntegerNotEqualToZero (
1918 * LARGE_INTEGER Operand
1919 * );
1920 */
1921 #define RtlLargeIntegerNotEqualToZero(X) \
1922 (((X).LowPart | (X).HighPart))
1923
1924 LARGE_INTEGER
1925 STDCALL
1926 RtlLargeIntegerShiftLeft (
1927 LARGE_INTEGER LargeInteger,
1928 CCHAR ShiftCount
1929 );
1930
1931 LARGE_INTEGER
1932 STDCALL
1933 RtlLargeIntegerShiftRight (
1934 LARGE_INTEGER LargeInteger,
1935 CCHAR ShiftCount
1936 );
1937
1938 LARGE_INTEGER
1939 STDCALL
1940 RtlLargeIntegerSubtract (
1941 LARGE_INTEGER Minuend,
1942 LARGE_INTEGER Subtrahend
1943 );
1944
1945 ULONG STDCALL
1946 RtlLengthRequiredSid (UCHAR SubAuthorityCount);
1947
1948 ULONG STDCALL
1949 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
1950
1951 ULONG STDCALL
1952 RtlLengthSid (PSID Sid);
1953
1954 NTSTATUS
1955 STDCALL
1956 RtlLockBootStatusData(
1957 HANDLE Filehandle
1958 );
1959
1960 BOOLEAN STDCALL
1961 RtlLockHeap (IN HANDLE Heap);
1962
1963 NTSTATUS STDCALL
1964 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable,
1965 IN PWSTR AtomName,
1966 OUT PRTL_ATOM Atom);
1967
1968 PVOID
1969 STDCALL
1970 RtlLookupElementGenericTable (
1971 PRTL_GENERIC_TABLE Table,
1972 PVOID Buffer
1973 );
1974
1975 PVOID
1976 STDCALL
1977 RtlLookupElementGenericTableAvl (
1978 PRTL_AVL_TABLE Table,
1979 PVOID Buffer
1980 );
1981
1982 PVOID
1983 STDCALL
1984 RtlLookupElementGenericTableFull (
1985 PRTL_GENERIC_TABLE Table,
1986 PVOID Buffer,
1987 OUT PVOID *NodeOrParent,
1988 OUT TABLE_SEARCH_RESULT *SearchResult
1989 );
1990
1991 PVOID
1992 STDCALL
1993 RtlLookupElementGenericTableFullAvl (
1994 PRTL_AVL_TABLE Table,
1995 PVOID Buffer,
1996 OUT PVOID *NodeOrParent,
1997 OUT TABLE_SEARCH_RESULT *SearchResult
1998 );
1999
2000 NTSTATUS STDCALL
2001 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
2002 PSECURITY_DESCRIPTOR RelSD,
2003 PULONG BufferLength);
2004
2005 VOID STDCALL
2006 RtlMapGenericMask (PACCESS_MASK AccessMask,
2007 PGENERIC_MAPPING GenericMapping);
2008
2009 NTSTATUS
2010 STDCALL
2011 RtlMapSecurityErrorToNtStatus(
2012 IN ULONG SecurityError
2013 );
2014
2015 NTSTATUS STDCALL
2016 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList,
2017 IN PRTL_RANGE_LIST RangeList1,
2018 IN PRTL_RANGE_LIST RangeList2,
2019 IN ULONG Flags);
2020
2021 NTSTATUS
2022 STDCALL
2023 RtlMultiByteToUnicodeN (
2024 PWCHAR UnicodeString,
2025 ULONG UnicodeSize,
2026 PULONG ResultSize,
2027 const PCHAR MbString,
2028 ULONG MbSize
2029 );
2030
2031 NTSTATUS
2032 STDCALL
2033 RtlMultiByteToUnicodeSize (
2034 PULONG UnicodeSize,
2035 PCHAR MbString,
2036 ULONG MbSize
2037 );
2038
2039 PUNICODE_PREFIX_TABLE_ENTRY
2040 STDCALL
2041 RtlNextUnicodePrefix (
2042 PUNICODE_PREFIX_TABLE PrefixTable,
2043 BOOLEAN Restart
2044 );
2045
2046 DWORD
2047 STDCALL
2048 RtlNtStatusToDosError (
2049 NTSTATUS StatusCode
2050 );
2051
2052 DWORD
2053 STDCALL
2054 RtlNtStatusToDosErrorNoTeb (
2055 NTSTATUS StatusCode
2056 );
2057
2058 int
2059 STDCALL
2060 RtlNtStatusToPsxErrno (
2061 NTSTATUS StatusCode
2062 );
2063
2064 ULONG
2065 STDCALL
2066 RtlNumberGenericTableElements(
2067 PRTL_GENERIC_TABLE Table
2068 );
2069
2070 ULONG
2071 STDCALL
2072 RtlNumberGenericTableElementsAvl (
2073 PRTL_AVL_TABLE Table
2074 );
2075
2076
2077 ULONG
2078 STDCALL
2079 RtlNumberOfClearBits (
2080 PRTL_BITMAP BitMapHeader
2081 );
2082
2083 ULONG
2084 STDCALL
2085 RtlNumberOfSetBits (
2086 PRTL_BITMAP BitMapHeader
2087 );
2088
2089 ULONG
2090 STDCALL
2091 RtlOemStringToUnicodeSize (
2092 POEM_STRING AnsiString
2093 );
2094
2095 NTSTATUS
2096 STDCALL
2097 RtlOemStringToUnicodeString (
2098 PUNICODE_STRING DestinationString,
2099 POEM_STRING SourceString,
2100 BOOLEAN AllocateDestinationString
2101 );
2102
2103 NTSTATUS
2104 STDCALL
2105 RtlOemToUnicodeN(
2106 PWSTR UnicodeString,
2107 ULONG MaxBytesInUnicodeString,
2108 PULONG BytesInUnicodeString,
2109 IN PCHAR OemString,
2110 ULONG BytesInOemString
2111 );
2112
2113 NTSTATUS STDCALL
2114 RtlPinAtomInAtomTable (
2115 IN PRTL_ATOM_TABLE AtomTable,
2116 IN RTL_ATOM Atom
2117 );
2118
2119 VOID
2120 FASTCALL
2121 RtlPrefetchMemoryNonTemporal(
2122 IN PVOID Source,
2123 IN SIZE_T Length
2124 );
2125
2126 BOOLEAN
2127 STDCALL
2128 RtlPrefixString (
2129 PANSI_STRING String1,
2130 PANSI_STRING String2,
2131 BOOLEAN CaseInsensitive
2132 );
2133
2134 BOOLEAN
2135 STDCALL
2136 RtlPrefixUnicodeString (
2137 PUNICODE_STRING String1,
2138 PUNICODE_STRING String2,
2139 BOOLEAN CaseInsensitive
2140 );
2141
2142 NTSTATUS
2143 STDCALL
2144 RtlQueryAtomInAtomTable (
2145 IN PRTL_ATOM_TABLE AtomTable,
2146 IN RTL_ATOM Atom,
2147 IN OUT PULONG RefCount OPTIONAL,
2148 IN OUT PULONG PinCount OPTIONAL,
2149 IN OUT PWSTR AtomName OPTIONAL,
2150 IN OUT PULONG NameLength OPTIONAL
2151 );
2152
2153 NTSTATUS STDCALL
2154 RtlQueryInformationAcl (PACL Acl,
2155 PVOID Information,
2156 ULONG InformationLength,
2157 ACL_INFORMATION_CLASS InformationClass);
2158
2159 NTSTATUS STDCALL
2160 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2161
2162 VOID STDCALL
2163 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord);
2164
2165 VOID STDCALL
2166 RtlRaiseStatus(NTSTATUS Status);
2167
2168 ULONG STDCALL
2169 RtlRandom (PULONG Seed);
2170
2171 ULONG
2172 STDCALL
2173 RtlRandomEx(
2174 PULONG Seed
2175 );
2176
2177 PRTL_SPLAY_LINKS
2178 STDCALL
2179 RtlRealPredecessor (
2180 PRTL_SPLAY_LINKS Links
2181 );
2182
2183 PRTL_SPLAY_LINKS
2184 STDCALL
2185 RtlRealSuccessor (
2186 PRTL_SPLAY_LINKS Links
2187 );
2188
2189 PVOID STDCALL
2190 RtlReAllocateHeap (
2191 HANDLE Heap,
2192 ULONG Flags,
2193 PVOID Ptr,
2194 ULONG Size
2195 );
2196
2197 VOID
2198 STDCALL
2199 RtlRemoveUnicodePrefix (
2200 PUNICODE_PREFIX_TABLE PrefixTable,
2201 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2202 );
2203
2204 NTSTATUS
2205 STDCALL
2206 RtlReserveChunk (
2207 IN USHORT CompressionFormat,
2208 IN OUT PUCHAR *CompressedBuffer,
2209 IN PUCHAR EndOfCompressedBufferPlus1,
2210 OUT PUCHAR *ChunkBuffer,
2211 IN ULONG ChunkSize
2212 );
2213
2214 VOID STDCALL
2215 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable);
2216
2217 /*
2218 * VOID
2219 * RtlRetrieveUlong (
2220 * PULONG DestinationAddress,
2221 * PULONG SourceAddress
2222 * );
2223 */
2224 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2225 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2226 { \
2227 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2228 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2229 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2230 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2231 } \
2232 else \
2233 { \
2234 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2235 }
2236
2237 /*
2238 * VOID
2239 * RtlRetrieveUshort (
2240 * PUSHORT DestinationAddress,
2241 * PUSHORT SourceAddress
2242 * );
2243 */
2244 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2245 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2246 { \
2247 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2248 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2249 } \
2250 else \
2251 { \
2252 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2253 }
2254
2255 VOID STDCALL
2256 RtlSecondsSince1970ToTime (ULONG SecondsSince1970,
2257 PLARGE_INTEGER Time);
2258
2259 VOID STDCALL
2260 RtlSecondsSince1980ToTime (ULONG SecondsSince1980,
2261 PLARGE_INTEGER Time);
2262
2263 NTSTATUS STDCALL
2264 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR RelSD,
2265 PSECURITY_DESCRIPTOR AbsSD,
2266 PULONG AbsSDSize,
2267 PACL Dacl,
2268 PULONG DaclSize,
2269 PACL Sacl,
2270 PULONG SaclSize,
2271 PSID Owner,
2272 PULONG OwnerSize,
2273 PSID Group,
2274 PULONG GroupSize);
2275
2276 NTSTATUS
2277 STDCALL
2278 RtlSelfRelativeToAbsoluteSD2(
2279 PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
2280 PULONG BufferSize
2281 );
2282
2283 VOID STDCALL
2284 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader);
2285
2286 VOID
2287 STDCALL
2288 RtlSetBit (
2289 PRTL_BITMAP BitMapHeader,
2290 ULONG BitNumber
2291 );
2292
2293 VOID
2294 STDCALL
2295 RtlSetBits (
2296 PRTL_BITMAP BitMapHeader,
2297 ULONG StartingIndex,
2298 ULONG NumberToSet
2299 );
2300
2301 NTSTATUS STDCALL
2302 RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
2303 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
2304 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
2305
2306 NTSTATUS STDCALL
2307 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2308 BOOLEAN DaclPresent,
2309 PACL Dacl,
2310 BOOLEAN DaclDefaulted);
2311
2312 NTSTATUS STDCALL
2313 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2314 PSID Group,
2315 BOOLEAN GroupDefaulted);
2316
2317 NTSTATUS STDCALL
2318 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2319 PSID Owner,
2320 BOOLEAN OwnerDefaulted);
2321
2322 NTSTATUS STDCALL
2323 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2324 BOOLEAN SaclPresent,
2325 PACL Sacl,
2326 BOOLEAN SaclDefaulted);
2327
2328 VOID STDCALL
2329 RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
2330 PUCHAR RMControl);
2331
2332 NTSTATUS STDCALL
2333 RtlSetInformationAcl (PACL Acl,
2334 PVOID Information,
2335 ULONG InformationLength,
2336 ACL_INFORMATION_CLASS InformationClass);
2337
2338 NTSTATUS STDCALL
2339 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2340
2341 ULONG STDCALL
2342 RtlSizeHeap(
2343 IN PVOID HeapHandle,
2344 IN ULONG Flags,
2345 IN PVOID MemoryPointer
2346 );
2347
2348 PRTL_SPLAY_LINKS
2349 STDCALL
2350 RtlSplay (
2351 PRTL_SPLAY_LINKS Links
2352 );
2353
2354 /*
2355 * VOID
2356 * RtlStoreUlong (
2357 * PULONG Address,
2358 * ULONG Value
2359 * );
2360 */
2361 #define RtlStoreUlong(Address,Value) \
2362 if ((ULONG_PTR)(Address) & LONG_MASK) \
2363 { \
2364 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2365 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2366 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2367 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2368 } \
2369 else \
2370 { \
2371 *((PULONG)(Address))=(ULONG)(Value); \
2372 }
2373
2374 /*
2375 * VOID
2376 * RtlStoreUshort (
2377 * PUSHORT Address,
2378 * USHORT Value
2379 * );
2380 */
2381 #define RtlStoreUshort(Address,Value) \
2382 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2383 { \
2384 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2385 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2386 } \
2387 else \
2388 { \
2389 *((PUSHORT)(Address))=(USHORT)(Value); \
2390 }
2391
2392 NTSTATUS STDCALL
2393 RtlStringFromGUID (IN REFGUID Guid,
2394 OUT PUNICODE_STRING GuidString);
2395
2396 PULONG STDCALL
2397 RtlSubAuthoritySid (PSID Sid,
2398 ULONG SubAuthority);
2399
2400 PULONG STDCALL
2401 RtlSubAuthoritySid (PSID Sid,
2402 ULONG SubAuthority);
2403
2404 PUCHAR STDCALL
2405 RtlSubAuthorityCountSid (PSID Sid);
2406
2407 PRTL_SPLAY_LINKS
2408 STDCALL
2409 RtlSubtreePredecessor (
2410 PRTL_SPLAY_LINKS Links
2411 );
2412
2413 PRTL_SPLAY_LINKS
2414 STDCALL
2415 RtlSubtreeSuccessor (
2416 PRTL_SPLAY_LINKS Links
2417 );
2418
2419 BOOLEAN
2420 STDCALL
2421 RtlTestBit (
2422 PRTL_BITMAP BitMapHeader,
2423 ULONG BitNumber
2424 );
2425
2426
2427 BOOLEAN STDCALL
2428 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields,
2429 PLARGE_INTEGER Time);
2430
2431 BOOLEAN
2432 STDCALL
2433 RtlTimeToSecondsSince1970 (
2434 PLARGE_INTEGER Time,
2435 PULONG SecondsSince1970
2436 );
2437
2438 BOOLEAN
2439 STDCALL
2440 RtlTimeToSecondsSince1980 (
2441 PLARGE_INTEGER Time,
2442 PULONG SecondsSince1980
2443 );
2444
2445 VOID
2446 STDCALL
2447 RtlTimeToElapsedTimeFields(
2448 PLARGE_INTEGER Time,
2449 PTIME_FIELDS TimeFields
2450 );
2451
2452 VOID
2453 STDCALL
2454 RtlTimeToTimeFields (
2455 PLARGE_INTEGER Time,
2456 PTIME_FIELDS TimeFields
2457 );
2458
2459
2460 ULONG FASTCALL
2461 RtlUlongByteSwap (IN ULONG Source);
2462
2463 ULONGLONG FASTCALL
2464 RtlUlonglongByteSwap (IN ULONGLONG Source);
2465
2466 ULONG
2467 STDCALL
2468 RtlUnicodeStringToAnsiSize (
2469 IN PUNICODE_STRING UnicodeString
2470 );
2471
2472 NTSTATUS
2473 STDCALL
2474 RtlUnicodeStringToAnsiString (
2475 IN OUT PANSI_STRING DestinationString,
2476 IN PUNICODE_STRING SourceString,
2477 IN BOOLEAN AllocateDestinationString
2478 );
2479
2480 NTSTATUS
2481 STDCALL
2482 RtlUnicodeStringToInteger (
2483 IN PUNICODE_STRING String,
2484 IN ULONG Base,
2485 OUT PULONG Value
2486 );
2487
2488 ULONG
2489 STDCALL
2490 RtlUnicodeStringToOemSize (
2491 IN PUNICODE_STRING UnicodeString
2492 );
2493
2494 NTSTATUS
2495 STDCALL
2496 RtlUnicodeStringToCountedOemString (
2497 IN OUT POEM_STRING DestinationString,
2498 IN PUNICODE_STRING SourceString,
2499 IN BOOLEAN AllocateDestinationString
2500 );
2501
2502 NTSTATUS
2503 STDCALL
2504 RtlUnicodeStringToOemString (
2505 IN OUT POEM_STRING DestinationString,
2506 IN PUNICODE_STRING SourceString,
2507 IN BOOLEAN AllocateDestinationString
2508 );
2509
2510 NTSTATUS
2511 STDCALL
2512 RtlUnicodeToCustomCPN (
2513 IN PCPTABLEINFO CustomCP,
2514 PCHAR MbString,
2515 ULONG MbSize,
2516 PULONG ResultSize,
2517 PWCHAR UnicodeString,
2518 ULONG UnicodeSize
2519 );
2520
2521 NTSTATUS
2522 STDCALL
2523 RtlUnicodeToMultiByteN (
2524 PCHAR MbString,
2525 ULONG MbSize,
2526 PULONG ResultSize,
2527 PWCHAR UnicodeString,
2528 ULONG UnicodeSize
2529 );
2530
2531 NTSTATUS
2532 STDCALL
2533 RtlUnicodeToMultiByteSize (
2534 PULONG MbSize,
2535 PWCHAR UnicodeString,
2536 ULONG UnicodeSize
2537 );
2538
2539 NTSTATUS
2540 STDCALL
2541 RtlUnicodeToOemN (
2542 PCHAR OemString,
2543 ULONG OemSize,
2544 PULONG ResultSize,
2545 PWCHAR UnicodeString,
2546 ULONG UnicodeSize
2547 );
2548
2549 ULONG STDCALL
2550 RtlUniform (PULONG Seed);
2551
2552 BOOLEAN STDCALL
2553 RtlUnlockHeap (IN HANDLE Heap);
2554
2555 NTSTATUS
2556 STDCALL
2557 RtlUnlockBootStatusData(
2558 HANDLE Filehandle
2559 );
2560
2561 VOID
2562 STDCALL
2563 RtlUnwind (
2564 PEXCEPTION_REGISTRATION RegistrationFrame,
2565 PVOID ReturnAddress,
2566 PEXCEPTION_RECORD ExceptionRecord,
2567 DWORD EaxValue
2568 );
2569
2570 WCHAR
2571 STDCALL
2572 RtlUpcaseUnicodeChar (
2573 WCHAR Source
2574 );
2575
2576 NTSTATUS
2577 STDCALL
2578 RtlUpcaseUnicodeString (
2579 IN OUT PUNICODE_STRING DestinationString,
2580 IN PCUNICODE_STRING SourceString,
2581 IN BOOLEAN AllocateDestinationString
2582 );
2583
2584 NTSTATUS
2585 STDCALL
2586 RtlUpcaseUnicodeStringToAnsiString (
2587 IN OUT PANSI_STRING DestinationString,
2588 IN PUNICODE_STRING SourceString,
2589 IN BOOLEAN AllocateDestinationString
2590 );
2591
2592 NTSTATUS
2593 STDCALL
2594 RtlUpcaseUnicodeStringToCountedOemString (
2595 IN OUT POEM_STRING DestinationString,
2596 IN PUNICODE_STRING SourceString,
2597 IN BOOLEAN AllocateDestinationString
2598 );
2599
2600 NTSTATUS
2601 STDCALL
2602 RtlUpcaseUnicodeStringToOemString (
2603 IN OUT POEM_STRING DestinationString,
2604 IN PUNICODE_STRING SourceString,
2605 IN BOOLEAN AllocateDestinationString
2606 );
2607
2608 NTSTATUS
2609 STDCALL
2610 RtlUpcaseUnicodeToCustomCPN (
2611 IN PCPTABLEINFO CustomCP,
2612 PCHAR MbString,
2613 ULONG MbSize,
2614 PULONG ResultSize,
2615 PWCHAR UnicodeString,
2616 ULONG UnicodeSize
2617 );
2618
2619 NTSTATUS
2620 STDCALL
2621 RtlUpcaseUnicodeToMultiByteN (
2622 PCHAR MbString,
2623 ULONG MbSize,
2624 PULONG ResultSize,
2625 PWCHAR UnicodeString,
2626 ULONG UnicodeSize
2627 );
2628
2629 NTSTATUS
2630 STDCALL
2631 RtlUpcaseUnicodeToOemN (
2632 PCHAR OemString,
2633 ULONG OemSize,
2634 PULONG ResultSize,
2635 PWCHAR UnicodeString,
2636 ULONG UnicodeSize
2637 );
2638
2639 CHAR STDCALL
2640 RtlUpperChar (CHAR Source);
2641
2642 VOID STDCALL
2643 RtlUpperString (PSTRING DestinationString,
2644 PSTRING SourceString);
2645
2646 USHORT FASTCALL
2647 RtlUshortByteSwap (IN USHORT Source);
2648
2649 BOOLEAN STDCALL
2650 RtlValidAcl (PACL Acl);
2651
2652 BOOLEAN STDCALL
2653 RtlValidateHeap (
2654 HANDLE Heap,
2655 ULONG Flags,
2656 PVOID pmem
2657 );
2658
2659 BOOLEAN
2660 STDCALL
2661 RtlValidRelativeSecurityDescriptor (
2662 IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
2663 IN ULONG SecurityDescriptorLength,
2664 IN SECURITY_INFORMATION RequiredInformation
2665 );
2666
2667 BOOLEAN STDCALL
2668 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor);
2669
2670 BOOLEAN STDCALL
2671 RtlValidSid (IN PSID Sid);
2672
2673 /*
2674 NTSTATUS
2675 STDCALL
2676 RtlVerifyVersionInfo(
2677 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2678 IN ULONG TypeMask,
2679 IN ULONGLONG ConditionMask
2680 );
2681 */
2682
2683 NTSTATUS
2684 STDCALL
2685 RtlVolumeDeviceToDosName(
2686 IN PVOID VolumeDeviceObject,
2687 OUT PUNICODE_STRING DosName
2688 );
2689
2690 ULONG
2691 STDCALL
2692 RtlWalkFrameChain (
2693 OUT PVOID *Callers,
2694 IN ULONG Count,
2695 IN ULONG Flags
2696 );
2697
2698 BOOLEAN STDCALL
2699 RtlZeroHeap(
2700 IN PVOID HeapHandle,
2701 IN ULONG Flags
2702 );
2703
2704 ULONG
2705 STDCALL
2706 RtlxAnsiStringToUnicodeSize (
2707 IN PANSI_STRING AnsiString
2708 );
2709
2710 ULONG
2711 STDCALL
2712 RtlxOemStringToUnicodeSize (
2713 IN POEM_STRING OemString
2714 );
2715
2716 ULONG
2717 STDCALL
2718 RtlxUnicodeStringToAnsiSize (
2719 IN PUNICODE_STRING UnicodeString
2720 );
2721
2722 ULONG
2723 STDCALL
2724 RtlxUnicodeStringToOemSize (
2725 IN PUNICODE_STRING UnicodeString
2726 );
2727
2728 NTSTATUS
2729 FASTCALL
2730 RtlpOemStringToCountedUnicodeString(
2731 IN OUT PUNICODE_STRING UniDest,
2732 IN POEM_STRING OemSource,
2733 IN BOOLEAN AllocateDestinationString,
2734 IN POOL_TYPE PoolType);
2735
2736 NTSTATUS
2737 FASTCALL
2738 RtlpUpcaseUnicodeString(
2739 IN OUT PUNICODE_STRING UniDest,
2740 IN PCUNICODE_STRING UniSource,
2741 IN BOOLEAN AllocateDestinationString,
2742 IN POOL_TYPE PoolType);
2743
2744 NTSTATUS
2745 FASTCALL
2746 RtlpUpcaseUnicodeStringToAnsiString(
2747 IN OUT PANSI_STRING AnsiDest,
2748 IN PUNICODE_STRING UniSource,
2749 IN BOOLEAN AllocateDestinationString,
2750 IN POOL_TYPE PoolType);
2751
2752 NTSTATUS
2753 FASTCALL
2754 RtlpUpcaseUnicodeStringToCountedOemString(
2755 IN OUT POEM_STRING OemDest,
2756 IN PUNICODE_STRING UniSource,
2757 IN BOOLEAN AllocateDestinationString,
2758 IN POOL_TYPE PoolType);
2759
2760 NTSTATUS
2761 FASTCALL
2762 RtlpUpcaseUnicodeStringToOemString (
2763 IN OUT POEM_STRING OemDest,
2764 IN PUNICODE_STRING UniSource,
2765 IN BOOLEAN AllocateDestinationString,
2766 IN POOL_TYPE PoolType);
2767
2768 NTSTATUS
2769 FASTCALL
2770 RtlpDowncaseUnicodeString(
2771 IN OUT PUNICODE_STRING UniDest,
2772 IN PUNICODE_STRING UniSource,
2773 IN BOOLEAN AllocateDestinationString,
2774 IN POOL_TYPE PoolType);
2775
2776 NTSTATUS
2777 FASTCALL
2778 RtlpAnsiStringToUnicodeString(
2779 IN OUT PUNICODE_STRING DestinationString,
2780 IN PANSI_STRING SourceString,
2781 IN BOOLEAN AllocateDestinationString,
2782 IN POOL_TYPE PoolType);
2783
2784 NTSTATUS
2785 FASTCALL
2786 RtlpUnicodeStringToAnsiString(
2787 IN OUT PANSI_STRING AnsiDest,
2788 IN PUNICODE_STRING UniSource,
2789 IN BOOLEAN AllocateDestinationString,
2790 IN POOL_TYPE PoolType);
2791
2792 NTSTATUS
2793 FASTCALL
2794 RtlpOemStringToUnicodeString(
2795 IN OUT PUNICODE_STRING UniDest,
2796 IN POEM_STRING OemSource,
2797 IN BOOLEAN AllocateDestinationString,
2798 IN POOL_TYPE PoolType);
2799
2800 NTSTATUS
2801 FASTCALL
2802 RtlpUnicodeStringToOemString(
2803 IN OUT POEM_STRING OemDest,
2804 IN PUNICODE_STRING UniSource,
2805 IN BOOLEAN AllocateDestinationString,
2806 IN POOL_TYPE PoolType);
2807
2808 BOOLEAN
2809 FASTCALL
2810 RtlpCreateUnicodeString(
2811 IN OUT PUNICODE_STRING UniDest,
2812 IN PCWSTR Source,
2813 IN POOL_TYPE PoolType);
2814
2815 NTSTATUS
2816 FASTCALL
2817 RtlpUnicodeStringToCountedOemString(
2818 IN OUT POEM_STRING OemDest,
2819 IN PUNICODE_STRING UniSource,
2820 IN BOOLEAN AllocateDestinationString,
2821 IN POOL_TYPE PoolType);
2822
2823 NTSTATUS STDCALL
2824 RtlpDuplicateUnicodeString(
2825 INT AddNull,
2826 IN PUNICODE_STRING SourceString,
2827 PUNICODE_STRING DestinationString,
2828 POOL_TYPE PoolType);
2829
2830 /* Register io functions */
2831
2832 UCHAR
2833 STDCALL
2834 READ_REGISTER_UCHAR (
2835 PUCHAR Register
2836 );
2837
2838 USHORT
2839 STDCALL
2840 READ_REGISTER_USHORT (
2841 PUSHORT Register
2842 );
2843
2844 ULONG
2845 STDCALL
2846 READ_REGISTER_ULONG (
2847 PULONG Register
2848 );
2849
2850 VOID
2851 STDCALL
2852 READ_REGISTER_BUFFER_UCHAR (
2853 PUCHAR Register,
2854 PUCHAR Buffer,
2855 ULONG Count
2856 );
2857
2858 VOID
2859 STDCALL
2860 READ_REGISTER_BUFFER_USHORT (
2861 PUSHORT Register,
2862 PUSHORT Buffer,
2863 ULONG Count
2864 );
2865
2866 VOID
2867 STDCALL
2868 READ_REGISTER_BUFFER_ULONG (
2869 PULONG Register,
2870 PULONG Buffer,
2871 ULONG Count
2872 );
2873
2874 VOID
2875 STDCALL
2876 WRITE_REGISTER_UCHAR (
2877 PUCHAR Register,
2878 UCHAR Value
2879 );
2880
2881 VOID
2882 STDCALL
2883 WRITE_REGISTER_USHORT (
2884 PUSHORT Register,
2885 USHORT Value
2886 );
2887
2888 VOID
2889 STDCALL
2890 WRITE_REGISTER_ULONG (
2891 PULONG Register,
2892 ULONG Value
2893 );
2894
2895 VOID
2896 STDCALL
2897 WRITE_REGISTER_BUFFER_UCHAR (
2898 PUCHAR Register,
2899 PUCHAR Buffer,
2900 ULONG Count
2901 );
2902
2903 VOID
2904 STDCALL
2905 WRITE_REGISTER_BUFFER_USHORT (
2906 PUSHORT Register,
2907 PUSHORT Buffer,
2908 ULONG Count
2909 );
2910
2911 VOID
2912 STDCALL
2913 WRITE_REGISTER_BUFFER_ULONG (
2914 PULONG Register,
2915 PULONG Buffer,
2916 ULONG Count
2917 );
2918
2919
2920 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2921
2922 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2923
2924 char *_itoa (int value, char *string, int radix);
2925 wchar_t *_itow (int value, wchar_t *string, int radix);
2926 int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
2927 int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
2928 int _stricmp(const char *s1, const char *s2);
2929 char * _strlwr(char *x);
2930 int _strnicmp(const char *s1, const char *s2, size_t n);
2931 char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
2932 char * _strrev(char *s);
2933 char * _strset(char* szToFill, int szFill);
2934 char * _strupr(char *x);
2935 int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
2936 int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
2937 wchar_t * _wcslwr (wchar_t *x);
2938 int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
2939 wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
2940 wchar_t * _wcsrev(wchar_t *s);
2941 wchar_t *_wcsupr(wchar_t *x);
2942
2943 int atoi(const char *str);
2944 long atol(const char *str);
2945 int isdigit(int c);
2946 int islower(int c);
2947 int isprint(int c);
2948 int isspace(int c);
2949 int isupper(int c);
2950 int isxdigit(int c);
2951 size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
2952 int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
2953 void * memchr(const void *s, int c, size_t n);
2954 void * memcpy(void *to, const void *from, size_t count);
2955 void * memmove(void *dest,const void *src, size_t count);
2956 void * memset(void *src, int val, size_t count);
2957
2958 #if 0
2959 qsort
2960 #endif
2961
2962 int rand(void);
2963 int sprintf(char * buf, const char *fmt, ...);
2964 void srand(unsigned seed);
2965 char * strcat(char *s, const char *append);
2966 char * strchr(const char *s, int c);
2967 int strcmp(const char *s1, const char *s2);
2968 char * strcpy(char *to, const char *from);
2969 size_t strlen(const char *str);
2970 char * strncat(char *dst, const char *src, size_t n);
2971 int strncmp(const char *s1, const char *s2, size_t n);
2972 char *strncpy(char *dst, const char *src, size_t n);
2973 char *strrchr(const char *s, int c);
2974 size_t strspn(const char *s1, const char *s2);
2975 char *strstr(const char *s, const char *find);
2976 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
2977 int tolower(int c);
2978 int toupper(int c);
2979 wchar_t towlower(wchar_t c);
2980 wchar_t towupper(wchar_t c);
2981 int vsprintf(char *buf, const char *fmt, va_list args);
2982 wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
2983 wchar_t * wcschr(const wchar_t *str, wchar_t ch);
2984 int wcscmp(const wchar_t *cs, const wchar_t *ct);
2985 wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
2986 size_t wcscspn(const wchar_t *str,const wchar_t *reject);
2987 size_t wcslen(const wchar_t *s);
2988 wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
2989 int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
2990 wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
2991 wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
2992 size_t wcsspn(const wchar_t *str,const wchar_t *accept);
2993 wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
2994 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
2995 int wctomb (char *mbchar, wchar_t wchar);
2996
2997 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2998
2999 #endif /* __DDK_RTL_H */
3000
3001