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