Finalize organization of rtlfuncs.h and update FIXME status.
[reactos.git] / reactos / include / ndk / rtlfuncs.h
1 /*
2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/rtlfuncs.h
4 * PURPOSE: Prototypes for Runtime Library Functions not defined in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
6 * UPDATE HISTORY:
7 * Created 06/10/04
8 */
9 #ifndef _RTLFUNCS_H
10 #define _RTLFUNCS_H
11
12 /* DEPENDENCIES **************************************************************/
13 #include "rtltypes.h"
14 #include "pstypes.h"
15 #include <ddk/ntnls.h>
16
17 /* PROTOTYPES ****************************************************************/
18
19 /*
20 * Error and Exception Functions
21 */
22 PVOID
23 STDCALL
24 RtlAddVectoredExceptionHandler(
25 IN ULONG FirstHandler,
26 IN PVECTORED_EXCEPTION_HANDLER VectoredHandler
27 );
28
29 VOID
30 STDCALL
31 RtlAssert(
32 PVOID FailedAssertion,
33 PVOID FileName,
34 ULONG LineNumber,
35 PCHAR Message
36 );
37
38 PVOID
39 STDCALL
40 RtlEncodePointer(IN PVOID Pointer);
41
42 PVOID
43 STDCALL
44 RtlDecodePointer(IN PVOID Pointer);
45
46 ULONG
47 STDCALL
48 RtlNtStatusToDosError(IN NTSTATUS Status);
49
50 VOID
51 STDCALL
52 RtlRaiseException(IN PEXCEPTION_RECORD ExceptionRecord);
53
54 VOID
55 STDCALL
56 RtlRaiseStatus(NTSTATUS Status);
57
58 VOID
59 STDCALL
60 RtlUnwind(
61 PEXCEPTION_REGISTRATION RegistrationFrame,
62 PVOID ReturnAddress,
63 PEXCEPTION_RECORD ExceptionRecord,
64 DWORD EaxValue
65 );
66
67 /*
68 * Heap Functions
69 */
70
71 PVOID
72 STDCALL
73 RtlAllocateHeap(
74 IN HANDLE HeapHandle,
75 IN ULONG Flags,
76 IN ULONG Size
77 );
78
79 PVOID
80 STDCALL
81 RtlCreateHeap(
82 IN ULONG Flags,
83 IN PVOID BaseAddress OPTIONAL,
84 IN ULONG SizeToReserve OPTIONAL,
85 IN ULONG SizeToCommit OPTIONAL,
86 IN PVOID Lock OPTIONAL,
87 IN PRTL_HEAP_DEFINITION Definition OPTIONAL
88 );
89
90 DWORD
91 STDCALL
92 RtlCompactHeap(
93 HANDLE heap,
94 DWORD flags
95 );
96
97 HANDLE
98 STDCALL
99 RtlDestroyHeap(HANDLE hheap);
100
101 BOOLEAN
102 STDCALL
103 RtlFreeHeap(
104 IN HANDLE HeapHandle,
105 IN ULONG Flags,
106 IN PVOID P
107 );
108
109 ULONG
110 STDCALL
111 RtlGetProcessHeaps(
112 ULONG HeapCount,
113 HANDLE *HeapArray
114 );
115
116 PVOID
117 STDCALL
118 RtlReAllocateHeap(
119 HANDLE Heap,
120 ULONG Flags,
121 PVOID Ptr,
122 ULONG Size
123 );
124
125 BOOLEAN
126 STDCALL
127 RtlLockHeap(IN HANDLE Heap);
128
129 BOOLEAN
130 STDCALL
131 RtlUnlockHeap(IN HANDLE Heap);
132
133 ULONG
134 STDCALL
135 RtlSizeHeap(
136 IN PVOID HeapHandle,
137 IN ULONG Flags,
138 IN PVOID MemoryPointer
139 );
140
141 BOOLEAN
142 STDCALL
143 RtlValidateHeap(
144 HANDLE Heap,
145 ULONG Flags,
146 PVOID pmem
147 );
148
149 #define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
150
151
152 /*
153 * Security Functions
154 */
155 NTSTATUS
156 STDCALL
157 RtlAbsoluteToSelfRelativeSD(
158 IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
159 IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
160 IN PULONG BufferLength
161 );
162
163 NTSTATUS
164 STDCALL
165 RtlAddAccessAllowedAce(
166 PACL Acl,
167 ULONG Revision,
168 ACCESS_MASK AccessMask,
169 PSID Sid
170 );
171
172 NTSTATUS
173 STDCALL
174 RtlAddAccessAllowedAceEx(
175 IN OUT PACL pAcl,
176 IN DWORD dwAceRevision,
177 IN DWORD AceFlags,
178 IN DWORD AccessMask,
179 IN PSID pSid
180 );
181
182 NTSTATUS
183 STDCALL
184 RtlAddAccessDeniedAce(
185 PACL Acl,
186 ULONG Revision,
187 ACCESS_MASK AccessMask,
188 PSID Sid
189 );
190
191 NTSTATUS
192 STDCALL
193 RtlAddAccessDeniedAceEx(
194 IN OUT PACL Acl,
195 IN ULONG Revision,
196 IN ULONG Flags,
197 IN ACCESS_MASK AccessMask,
198 IN PSID Sid
199 );
200
201 NTSTATUS
202 STDCALL
203 RtlAddAuditAccessAceEx(
204 IN OUT PACL Acl,
205 IN ULONG Revision,
206 IN ULONG Flags,
207 IN ACCESS_MASK AccessMask,
208 IN PSID Sid,
209 IN BOOLEAN Success,
210 IN BOOLEAN Failure
211 );
212
213 NTSTATUS
214 STDCALL
215 RtlAddAce(
216 PACL Acl,
217 ULONG Revision,
218 ULONG StartingIndex,
219 PACE AceList,
220 ULONG AceListLength
221 );
222
223 NTSTATUS
224 STDCALL
225 RtlAddAuditAccessAce(
226 PACL Acl,
227 ULONG Revision,
228 ACCESS_MASK AccessMask,
229 PSID Sid,
230 BOOLEAN Success,
231 BOOLEAN Failure
232 );
233
234 NTSTATUS
235 STDCALL
236 RtlAllocateAndInitializeSid(
237 IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
238 IN UCHAR SubAuthorityCount,
239 IN ULONG SubAuthority0,
240 IN ULONG SubAuthority1,
241 IN ULONG SubAuthority2,
242 IN ULONG SubAuthority3,
243 IN ULONG SubAuthority4,
244 IN ULONG SubAuthority5,
245 IN ULONG SubAuthority6,
246 IN ULONG SubAuthority7,
247 OUT PSID *Sid
248 );
249
250 BOOLEAN
251 STDCALL
252 RtlAreAllAccessesGranted(
253 ACCESS_MASK GrantedAccess,
254 ACCESS_MASK DesiredAccess
255 );
256
257 BOOLEAN
258 STDCALL
259 RtlAreAnyAccessesGranted(
260 ACCESS_MASK GrantedAccess,
261 ACCESS_MASK DesiredAccess
262 );
263
264 VOID
265 STDCALL
266 RtlCopyLuid(
267 IN PLUID LuidDest,
268 IN PLUID LuidSrc
269 );
270
271 VOID
272 STDCALL
273 RtlCopyLuidAndAttributesArray(
274 ULONG Count,
275 PLUID_AND_ATTRIBUTES Src,
276 PLUID_AND_ATTRIBUTES Dest
277 );
278
279 NTSTATUS
280 STDCALL
281 RtlCopySidAndAttributesArray(
282 ULONG Count,
283 PSID_AND_ATTRIBUTES Src,
284 ULONG SidAreaSize,
285 PSID_AND_ATTRIBUTES Dest,
286 PVOID SidArea,
287 PVOID* RemainingSidArea,
288 PULONG RemainingSidAreaSize
289 );
290
291 NTSTATUS
292 STDCALL
293 RtlConvertSidToUnicodeString(
294 OUT PUNICODE_STRING DestinationString,
295 IN PSID Sid,
296 IN BOOLEAN AllocateDestinationString
297 );
298
299 NTSTATUS
300 STDCALL
301 RtlCopySid(
302 IN ULONG Length,
303 IN PSID Destination,
304 IN PSID Source
305 );
306
307 NTSTATUS
308 STDCALL
309 RtlCreateAcl(
310 PACL Acl,
311 ULONG AclSize,
312 ULONG AclRevision
313 );
314
315 NTSTATUS
316 STDCALL
317 RtlCreateSecurityDescriptor(
318 PSECURITY_DESCRIPTOR SecurityDescriptor,
319 ULONG Revision
320 );
321
322 NTSTATUS
323 STDCALL
324 RtlCreateSecurityDescriptorRelative(
325 PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
326 ULONG Revision
327 );
328
329 NTSTATUS
330 STDCALL
331 RtlDeleteAce(
332 PACL Acl,
333 ULONG AceIndex
334 );
335
336 BOOLEAN
337 STDCALL
338 RtlEqualPrefixSid(
339 PSID Sid1,
340 PSID Sid2
341 );
342
343 BOOLEAN
344 STDCALL
345 RtlEqualSid (
346 IN PSID Sid1,
347 IN PSID Sid2
348 );
349
350 BOOLEAN
351 STDCALL
352 RtlFirstFreeAce(
353 PACL Acl,
354 PACE* Ace
355 );
356
357 PVOID
358 STDCALL
359 RtlFreeSid (
360 IN PSID Sid
361 );
362
363 NTSTATUS
364 STDCALL
365 RtlGetAce(
366 PACL Acl,
367 ULONG AceIndex,
368 PACE *Ace
369 );
370
371 NTSTATUS
372 STDCALL
373 RtlGetControlSecurityDescriptor(
374 PSECURITY_DESCRIPTOR SecurityDescriptor,
375 PSECURITY_DESCRIPTOR_CONTROL Control,
376 PULONG Revision
377 );
378
379 NTSTATUS
380 STDCALL
381 RtlGetDaclSecurityDescriptor(
382 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
383 OUT PBOOLEAN DaclPresent,
384 OUT PACL *Dacl,
385 OUT PBOOLEAN DaclDefaulted
386 );
387
388 NTSTATUS
389 STDCALL
390 RtlGetSaclSecurityDescriptor(
391 PSECURITY_DESCRIPTOR SecurityDescriptor,
392 PBOOLEAN SaclPresent,
393 PACL* Sacl,
394 PBOOLEAN SaclDefaulted
395 );
396
397 NTSTATUS
398 STDCALL
399 RtlGetGroupSecurityDescriptor(
400 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
401 OUT PSID *Group,
402 OUT PBOOLEAN GroupDefaulted
403 );
404
405 NTSTATUS
406 STDCALL
407 RtlGetOwnerSecurityDescriptor(
408 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
409 OUT PSID *Owner,
410 OUT PBOOLEAN OwnerDefaulted
411 );
412
413 BOOLEAN
414 STDCALL
415 RtlGetSecurityDescriptorRMControl(
416 PSECURITY_DESCRIPTOR SecurityDescriptor,
417 PUCHAR RMControl
418 );
419
420 PSID_IDENTIFIER_AUTHORITY
421 STDCALL
422 RtlIdentifierAuthoritySid(PSID Sid);
423
424 NTSTATUS
425 STDCALL
426 RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
427
428 NTSTATUS
429 STDCALL
430 RtlInitializeSid(
431 IN OUT PSID Sid,
432 IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
433 IN UCHAR SubAuthorityCount
434 );
435
436 ULONG
437 STDCALL
438 RtlLengthRequiredSid(IN UCHAR SubAuthorityCount);
439
440 ULONG
441 STDCALL
442 RtlLengthSid(IN PSID Sid);
443
444 VOID
445 STDCALL
446 RtlMapGenericMask(
447 PACCESS_MASK AccessMask,
448 PGENERIC_MAPPING GenericMapping
449 );
450
451 NTSTATUS
452 STDCALL
453 RtlQueryInformationAcl(
454 PACL Acl,
455 PVOID Information,
456 ULONG InformationLength,
457 ACL_INFORMATION_CLASS InformationClass
458 );
459
460 NTSTATUS
461 STDCALL
462 RtlSelfRelativeToAbsoluteSD(
463 IN PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSD,
464 OUT PSECURITY_DESCRIPTOR AbsoluteSD,
465 IN PULONG AbsoluteSDSize,
466 IN PACL Dacl,
467 IN PULONG DaclSize,
468 IN PACL Sacl,
469 IN PULONG SaclSize,
470 IN PSID Owner,
471 IN PULONG OwnerSize,
472 IN PSID PrimaryGroup,
473 IN PULONG PrimaryGroupSize
474 );
475
476 NTSTATUS
477 STDCALL
478 RtlSetControlSecurityDescriptor(
479 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
480 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
481 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
482 );
483
484 NTSTATUS
485 STDCALL
486 RtlSetDaclSecurityDescriptor (
487 PSECURITY_DESCRIPTOR SecurityDescriptor,
488 BOOLEAN DaclPresent,
489 PACL Dacl,
490 BOOLEAN DaclDefaulted
491 );
492
493 NTSTATUS
494 STDCALL
495 RtlSetGroupSecurityDescriptor(
496 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
497 IN PSID Group,
498 IN BOOLEAN GroupDefaulted
499 );
500
501 NTSTATUS
502 STDCALL
503 RtlSetInformationAcl(
504 PACL Acl,
505 PVOID Information,
506 ULONG InformationLength,
507 ACL_INFORMATION_CLASS InformationClass
508 );
509
510 NTSTATUS
511 STDCALL
512 RtlSetOwnerSecurityDescriptor(
513 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
514 IN PSID Owner,
515 IN BOOLEAN OwnerDefaulted
516 );
517
518 NTSTATUS
519 STDCALL
520 RtlSetSaclSecurityDescriptor(
521 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
522 IN BOOLEAN SaclPresent,
523 IN PACL Sacl,
524 IN BOOLEAN SaclDefaulted
525 );
526
527 VOID
528 STDCALL
529 RtlSetSecurityDescriptorRMControl(
530 PSECURITY_DESCRIPTOR SecurityDescriptor,
531 PUCHAR RMControl
532 );
533
534 PUCHAR
535 STDCALL
536 RtlSubAuthorityCountSid(
537 IN PSID Sid
538 );
539
540 PULONG
541 STDCALL
542 RtlSubAuthoritySid(
543 IN PSID Sid,
544 IN ULONG SubAuthority
545 );
546
547 BOOLEAN
548 STDCALL
549 RtlValidRelativeSecurityDescriptor(
550 IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
551 IN ULONG SecurityDescriptorLength,
552 IN SECURITY_INFORMATION RequiredInformation
553 );
554
555 BOOLEAN
556 STDCALL
557 RtlValidSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor);
558
559 BOOLEAN
560 STDCALL
561 RtlValidSid(IN PSID Sid);
562
563 BOOLEAN
564 STDCALL
565 RtlValidAcl(PACL Acl);
566
567 /*
568 * Single-Character Functions
569 */
570 NTSTATUS
571 STDCALL
572 RtlLargeIntegerToChar(
573 IN PLARGE_INTEGER Value,
574 IN ULONG Base,
575 IN ULONG Length,
576 IN OUT PCHAR String
577 );
578
579 CHAR
580 STDCALL
581 RtlUpperChar(CHAR Source);
582
583 WCHAR
584 STDCALL
585 RtlUpcaseUnicodeChar(WCHAR Source);
586
587 WCHAR
588 STDCALL
589 RtlDowncaseUnicodeChar(IN WCHAR Source);
590
591 NTSTATUS
592 STDCALL
593 RtlIntegerToChar(
594 IN ULONG Value,
595 IN ULONG Base,
596 IN ULONG Length,
597 IN OUT PCHAR String
598 );
599
600 NTSTATUS
601 STDCALL
602 RtlIntegerToUnicode(
603 IN ULONG Value,
604 IN ULONG Base OPTIONAL,
605 IN ULONG Length OPTIONAL,
606 IN OUT LPWSTR String
607 );
608
609 NTSTATUS
610 STDCALL
611 RtlIntegerToUnicodeString(
612 IN ULONG Value,
613 IN ULONG Base,
614 IN OUT PUNICODE_STRING String
615 );
616
617 NTSTATUS
618 STDCALL
619 RtlCharToInteger(
620 PCSZ String,
621 ULONG Base,
622 PULONG Value
623 );
624
625 USHORT
626 FASTCALL
627 RtlUshortByteSwap(IN USHORT Source);
628
629 /*
630 * Unicode->Ansi String Functions
631 */
632 ULONG
633 STDCALL
634 RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString);
635
636 NTSTATUS
637 STDCALL
638 RtlUnicodeStringToAnsiString(
639 PANSI_STRING DestinationString,
640 PUNICODE_STRING SourceString,
641 BOOLEAN AllocateDestinationString
642 );
643
644 /*
645 * Unicode->OEM String Functions
646 */
647 NTSTATUS
648 STDCALL
649 RtlUpcaseUnicodeStringToOemString(
650 POEM_STRING DestinationString,
651 PUNICODE_STRING SourceString,
652 BOOLEAN AllocateDestinationString
653 );
654
655 NTSTATUS
656 STDCALL
657 RtlUpcaseUnicodeStringToCountedOemString(
658 IN OUT POEM_STRING DestinationString,
659 IN PUNICODE_STRING SourceString,
660 IN BOOLEAN AllocateDestinationString
661 );
662
663 NTSTATUS
664 STDCALL
665 RtlUpcaseUnicodeString(
666 PUNICODE_STRING DestinationString,
667 PCUNICODE_STRING SourceString,
668 BOOLEAN AllocateDestinationString
669 );
670
671 NTSTATUS
672 STDCALL
673 RtlUnicodeStringToOemString(
674 POEM_STRING DestinationString,
675 PUNICODE_STRING SourceString,
676 BOOLEAN AllocateDestinationString
677 );
678
679 NTSTATUS
680 STDCALL
681 RtlUpcaseUnicodeToOemN(
682 PCHAR OemString,
683 ULONG OemSize,
684 PULONG ResultSize,
685 PWCHAR UnicodeString,
686 ULONG UnicodeSize
687 );
688
689 ULONG
690 STDCALL
691 RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString);
692
693 NTSTATUS
694 STDCALL
695 RtlUnicodeToOemN(
696 PCHAR OemString,
697 ULONG OemSize,
698 PULONG ResultSize,
699 PWCHAR UnicodeString,
700 ULONG UnicodeSize
701 );
702
703 /*
704 * Unicode->MultiByte String Functions
705 */
706 NTSTATUS
707 STDCALL
708 RtlUnicodeToMultiByteN(
709 PCHAR MbString,
710 ULONG MbSize,
711 PULONG ResultSize,
712 PWCHAR UnicodeString,
713 ULONG UnicodeSize
714 );
715
716 NTSTATUS
717 STDCALL
718 RtlUpcaseUnicodeToMultiByteN(
719 PCHAR MbString,
720 ULONG MbSize,
721 PULONG ResultSize,
722 PWCHAR UnicodeString,
723 ULONG UnicodeSize
724 );
725
726 NTSTATUS
727 STDCALL
728 RtlUnicodeToMultiByteSize(
729 PULONG MbSize,
730 PWCHAR UnicodeString,
731 ULONG UnicodeSize
732 );
733
734 /*
735 * OEM to Unicode Functions
736 */
737 ULONG
738 STDCALL
739 RtlOemStringToUnicodeSize(POEM_STRING AnsiString);
740
741 NTSTATUS
742 STDCALL
743 RtlOemStringToUnicodeString(
744 PUNICODE_STRING DestinationString,
745 POEM_STRING SourceString,
746 BOOLEAN AllocateDestinationString
747 );
748
749 NTSTATUS
750 STDCALL
751 RtlOemToUnicodeN(
752 PWSTR UnicodeString,
753 ULONG MaxBytesInUnicodeString,
754 PULONG BytesInUnicodeString,
755 IN PCHAR OemString,
756 ULONG BytesInOemString
757 );
758
759 /*
760 * Ansi->Unicode String Functions
761 */
762 NTSTATUS
763 STDCALL
764 RtlAnsiStringToUnicodeString(
765 PUNICODE_STRING DestinationString,
766 PANSI_STRING SourceString,
767 BOOLEAN AllocateDestinationString
768 );
769
770 ULONG
771 STDCALL
772 RtlAnsiStringToUnicodeSize(
773 PANSI_STRING AnsiString
774 );
775
776 BOOLEAN
777 STDCALL
778 RtlCreateUnicodeStringFromAsciiz(
779 OUT PUNICODE_STRING Destination,
780 IN PCSZ Source
781 );
782
783 /*
784 * Unicode String Functions
785 */
786 NTSTATUS
787 STDCALL
788 RtlAppendUnicodeToString(
789 PUNICODE_STRING Destination,
790 PCWSTR Source
791 );
792
793 NTSTATUS
794 STDCALL
795 RtlAppendUnicodeStringToString(
796 PUNICODE_STRING Destination,
797 PUNICODE_STRING Source
798 );
799
800 LONG
801 STDCALL
802 RtlCompareUnicodeString(
803 PUNICODE_STRING String1,
804 PUNICODE_STRING String2,
805 BOOLEAN CaseInsensitive
806 );
807
808 VOID
809 STDCALL
810 RtlCopyUnicodeString(
811 PUNICODE_STRING DestinationString,
812 PUNICODE_STRING SourceString
813 );
814
815 BOOLEAN
816 STDCALL
817 RtlCreateUnicodeString(
818 PUNICODE_STRING DestinationString,
819 PCWSTR SourceString
820 );
821
822 BOOLEAN
823 STDCALL
824 RtlEqualUnicodeString(
825 PCUNICODE_STRING String1,
826 PCUNICODE_STRING String2,
827 BOOLEAN CaseInsensitive
828 );
829
830 VOID
831 STDCALL
832 RtlFreeUnicodeString(IN PUNICODE_STRING UnicodeString);
833
834 VOID
835 STDCALL
836 RtlInitUnicodeString(
837 IN OUT PUNICODE_STRING DestinationString,
838 IN PCWSTR SourceString);
839
840 ULONG
841 STDCALL
842 RtlIsTextUnicode(
843 PVOID Buffer,
844 ULONG Length,
845 ULONG *Flags
846 );
847
848 BOOLEAN
849 STDCALL
850 RtlPrefixUnicodeString(
851 PUNICODE_STRING String1,
852 PUNICODE_STRING String2,
853 BOOLEAN CaseInsensitive
854 );
855
856 NTSTATUS
857 STDCALL
858 RtlUnicodeStringToInteger(
859 PUNICODE_STRING String,
860 ULONG Base,
861 PULONG Value
862 );
863
864 NTSTATUS
865 STDCALL
866 RtlHashUnicodeString(
867 IN CONST UNICODE_STRING *String,
868 IN BOOLEAN CaseInSensitive,
869 IN ULONG HashAlgorithm,
870 OUT PULONG HashValue);
871
872 /*
873 * Ansi String Functions
874 */
875 VOID
876 STDCALL
877 RtlFreeAnsiString(IN PANSI_STRING AnsiString);
878
879 VOID
880 STDCALL
881 RtlInitAnsiString(
882 PANSI_STRING DestinationString,
883 PCSZ SourceString
884 );
885
886 /*
887 * OEM String Functions
888 */
889 VOID
890 STDCALL
891 RtlFreeOemString(IN POEM_STRING OemString);
892
893 /*
894 * MultiByte->Unicode String Functions
895 */
896 NTSTATUS
897 STDCALL
898 RtlMultiByteToUnicodeN(
899 PWCHAR UnicodeString,
900 ULONG UnicodeSize,
901 PULONG ResultSize,
902 const PCHAR MbString,
903 ULONG MbSize
904 );
905
906 NTSTATUS
907 STDCALL
908 RtlMultiByteToUnicodeSize(
909 PULONG UnicodeSize,
910 PCHAR MbString,
911 ULONG MbSize
912 );
913
914 /*
915 * Atom Functions
916 */
917 NTSTATUS
918 STDCALL
919 RtlAddAtomToAtomTable(
920 IN PRTL_ATOM_TABLE AtomTable,
921 IN PWSTR AtomName,
922 OUT PRTL_ATOM Atom
923 );
924
925 NTSTATUS
926 STDCALL
927 RtlCreateAtomTable(
928 IN ULONG TableSize,
929 IN OUT PRTL_ATOM_TABLE *AtomTable
930 );
931
932 NTSTATUS
933 STDCALL
934 RtlDeleteAtomFromAtomTable(
935 IN PRTL_ATOM_TABLE AtomTable,
936 IN RTL_ATOM Atom
937 );
938
939 NTSTATUS
940 STDCALL
941 RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
942
943 NTSTATUS
944 STDCALL
945 RtlQueryAtomInAtomTable(
946 IN PRTL_ATOM_TABLE AtomTable,
947 IN RTL_ATOM Atom,
948 IN OUT PULONG RefCount OPTIONAL,
949 IN OUT PULONG PinCount OPTIONAL,
950 IN OUT PWSTR AtomName OPTIONAL,
951 IN OUT PULONG NameLength OPTIONAL
952 );
953
954 NTSTATUS
955 STDCALL
956 RtlLookupAtomInAtomTable(
957 IN PRTL_ATOM_TABLE AtomTable,
958 IN PWSTR AtomName,
959 OUT PRTL_ATOM Atom
960 );
961
962 /*
963 * Memory Functions
964 */
965 SIZE_T
966 STDCALL
967 RtlCompareMemory(
968 IN const VOID *Source1,
969 IN const VOID *Source2,
970 IN SIZE_T Length
971 );
972
973 VOID
974 STDCALL
975 RtlFillMemoryUlong(
976 IN PVOID Destination,
977 IN ULONG Length,
978 IN ULONG Fill
979 );
980
981 /*
982 * Process Management Functions
983 */
984 VOID
985 STDCALL
986 RtlAcquirePebLock(VOID);
987
988 NTSTATUS
989 STDCALL
990 RtlCreateProcessParameters (
991 OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
992 IN PUNICODE_STRING ImagePathName OPTIONAL,
993 IN PUNICODE_STRING DllPath OPTIONAL,
994 IN PUNICODE_STRING CurrentDirectory OPTIONAL,
995 IN PUNICODE_STRING CommandLine OPTIONAL,
996 IN PWSTR Environment OPTIONAL,
997 IN PUNICODE_STRING WindowTitle OPTIONAL,
998 IN PUNICODE_STRING DesktopInfo OPTIONAL,
999 IN PUNICODE_STRING ShellInfo OPTIONAL,
1000 IN PUNICODE_STRING RuntimeInfo OPTIONAL
1001 );
1002
1003 NTSTATUS
1004 STDCALL
1005 RtlCreateUserProcess(
1006 IN PUNICODE_STRING ImageFileName,
1007 IN ULONG Attributes,
1008 IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
1009 IN PSECURITY_DESCRIPTOR ProcessSecutityDescriptor OPTIONAL,
1010 IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,
1011 IN HANDLE ParentProcess OPTIONAL,
1012 IN BOOLEAN CurrentDirectory,
1013 IN HANDLE DebugPort OPTIONAL,
1014 IN HANDLE ExceptionPort OPTIONAL,
1015 OUT PRTL_PROCESS_INFO ProcessInfo
1016 );
1017
1018 NTSTATUS
1019 STDCALL
1020 RtlCreateUserThread(
1021 IN HANDLE ProcessHandle,
1022 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
1023 IN BOOLEAN CreateSuspended,
1024 IN LONG StackZeroBits,
1025 IN OUT PULONG StackReserve,
1026 IN OUT PULONG StackCommit,
1027 IN PTHREAD_START_ROUTINE StartAddress,
1028 IN PVOID Parameter,
1029 IN OUT PHANDLE ThreadHandle,
1030 IN OUT PCLIENT_ID ClientId
1031 );
1032
1033 PRTL_USER_PROCESS_PARAMETERS
1034 STDCALL
1035 RtlDeNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1036
1037 NTSTATUS
1038 STDCALL
1039 RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1040
1041 PRTL_USER_PROCESS_PARAMETERS
1042 STDCALL
1043 RtlNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1044
1045 VOID
1046 STDCALL
1047 RtlReleasePebLock(VOID);
1048
1049 /*
1050 * Environment/Path Functions
1051 */
1052 NTSTATUS
1053 STDCALL
1054 RtlCreateEnvironment(
1055 BOOLEAN Inherit,
1056 PWSTR *Environment
1057 );
1058
1059 VOID
1060 STDCALL
1061 RtlDestroyEnvironment(PWSTR Environment);
1062
1063 BOOLEAN
1064 STDCALL
1065 RtlDoesFileExists_U(PWSTR FileName);
1066
1067 ULONG
1068 STDCALL
1069 RtlDetermineDosPathNameType_U(PCWSTR Path);
1070
1071 ULONG
1072 STDCALL
1073 RtlDosSearchPath_U(
1074 WCHAR *sp,
1075 WCHAR *name,
1076 WCHAR *ext,
1077 ULONG buf_sz,
1078 WCHAR *buffer,
1079 WCHAR **shortname
1080 );
1081
1082 BOOLEAN
1083 STDCALL
1084 RtlDosPathNameToNtPathName_U(
1085 PWSTR DosName,
1086 PUNICODE_STRING NtName,
1087 PWSTR *ShortName,
1088 PCURDIR CurrentDirectory
1089 );
1090
1091 NTSTATUS
1092 STDCALL
1093 RtlExpandEnvironmentStrings_U(
1094 PWSTR Environment,
1095 PUNICODE_STRING Source,
1096 PUNICODE_STRING Destination,
1097 PULONG Length
1098 );
1099
1100 ULONG
1101 STDCALL
1102 RtlGetCurrentDirectory_U(
1103 ULONG MaximumLength,
1104 PWSTR Buffer
1105 );
1106
1107 ULONG
1108 STDCALL
1109 RtlGetFullPathName_U(
1110 const WCHAR *dosname,
1111 ULONG size,
1112 WCHAR *buf,
1113 WCHAR **shortname
1114 );
1115
1116 BOOLEAN
1117 STDCALL
1118 RtlIsNameLegalDOS8Dot3(
1119 IN PUNICODE_STRING UnicodeName,
1120 IN PANSI_STRING AnsiName,
1121 PBOOLEAN Unknown
1122 );
1123
1124 NTSTATUS
1125 STDCALL
1126 RtlQueryEnvironmentVariable_U(
1127 PWSTR Environment,
1128 PUNICODE_STRING Name,
1129 PUNICODE_STRING Value
1130 );
1131
1132 NTSTATUS
1133 STDCALL
1134 RtlSetCurrentDirectory_U(PUNICODE_STRING name);
1135
1136 NTSTATUS
1137 STDCALL
1138 RtlSetEnvironmentVariable(
1139 PWSTR *Environment,
1140 PUNICODE_STRING Name,
1141 PUNICODE_STRING Value
1142 );
1143
1144 /*
1145 * Critical Section/Resource Functions
1146 */
1147 NTSTATUS
1148 STDCALL
1149 RtlDeleteCriticalSection (
1150 PRTL_CRITICAL_SECTION CriticalSection
1151 );
1152
1153 NTSTATUS
1154 STDCALL
1155 RtlEnterCriticalSection(
1156 PRTL_CRITICAL_SECTION CriticalSection
1157 );
1158
1159 NTSTATUS
1160 STDCALL
1161 RtlInitializeCriticalSection(
1162 PRTL_CRITICAL_SECTION CriticalSection
1163 );
1164
1165 NTSTATUS
1166 STDCALL
1167 RtlInitializeCriticalSectionAndSpinCount(
1168 PRTL_CRITICAL_SECTION CriticalSection,
1169 ULONG SpinCount
1170 );
1171
1172 NTSTATUS
1173 STDCALL
1174 RtlLeaveCriticalSection(
1175 PRTL_CRITICAL_SECTION CriticalSection
1176 );
1177
1178 BOOLEAN
1179 STDCALL
1180 RtlAcquireResourceExclusive(
1181 IN PRTL_RESOURCE Resource,
1182 IN BOOLEAN Wait
1183 );
1184
1185 BOOLEAN
1186 STDCALL
1187 RtlAcquireResourceShared(
1188 IN PRTL_RESOURCE Resource,
1189 IN BOOLEAN Wait
1190 );
1191
1192 VOID
1193 STDCALL
1194 RtlConvertExclusiveToShared(
1195 IN PRTL_RESOURCE Resource
1196 );
1197
1198 VOID
1199 STDCALL
1200 RtlConvertSharedToExclusive(
1201 IN PRTL_RESOURCE Resource
1202 );
1203
1204 VOID
1205 STDCALL
1206 RtlDeleteResource(
1207 IN PRTL_RESOURCE Resource
1208 );
1209
1210 VOID
1211 STDCALL
1212 RtlDumpResource(
1213 IN PRTL_RESOURCE Resource
1214 );
1215
1216 VOID
1217 STDCALL
1218 RtlInitializeResource(
1219 IN PRTL_RESOURCE Resource
1220 );
1221
1222 VOID
1223 STDCALL
1224 RtlReleaseResource(
1225 IN PRTL_RESOURCE Resource
1226 );
1227
1228 /*
1229 * Compression Functions
1230 */
1231 NTSTATUS
1232 STDCALL
1233 RtlCompressBuffer(
1234 IN USHORT CompressionFormatAndEngine,
1235 IN PUCHAR UncompressedBuffer,
1236 IN ULONG UncompressedBufferSize,
1237 OUT PUCHAR CompressedBuffer,
1238 IN ULONG CompressedBufferSize,
1239 IN ULONG UncompressedChunkSize,
1240 OUT PULONG FinalCompressedSize,
1241 IN PVOID WorkSpace
1242 );
1243
1244 NTSTATUS
1245 STDCALL
1246 RtlDecompressBuffer(
1247 IN USHORT CompressionFormat,
1248 OUT PUCHAR UncompressedBuffer,
1249 IN ULONG UncompressedBufferSize,
1250 IN PUCHAR CompressedBuffer,
1251 IN ULONG CompressedBufferSize,
1252 OUT PULONG FinalUncompressedSize
1253 );
1254
1255 NTSTATUS
1256 STDCALL
1257 RtlGetCompressionWorkSpaceSize(
1258 IN USHORT CompressionFormatAndEngine,
1259 OUT PULONG CompressBufferWorkSpaceSize,
1260 OUT PULONG CompressFragmentWorkSpaceSize
1261 );
1262
1263 /*
1264 * Debug Info Functions
1265 */
1266 PDEBUG_BUFFER
1267 STDCALL
1268 RtlCreateQueryDebugBuffer(
1269 IN ULONG Size,
1270 IN BOOLEAN EventPair
1271 );
1272
1273 NTSTATUS
1274 STDCALL
1275 RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
1276
1277 NTSTATUS
1278 STDCALL
1279 RtlQueryProcessDebugInformation(
1280 IN ULONG ProcessId,
1281 IN ULONG DebugInfoClassMask,
1282 IN OUT PDEBUG_BUFFER DebugBuffer
1283 );
1284
1285 /*
1286 * Bitmap Functions
1287 */
1288 BOOLEAN
1289 STDCALL
1290 RtlAreBitsClear(
1291 IN PRTL_BITMAP BitMapHeader,
1292 IN ULONG StartingIndex,
1293 IN ULONG Length
1294 );
1295
1296 BOOLEAN
1297 STDCALL
1298 RtlAreBitsSet(
1299 IN PRTL_BITMAP BitMapHeader,
1300 IN ULONG StartingIndex,
1301 IN ULONG Length
1302 );
1303
1304 VOID
1305 STDCALL
1306 RtlClearBits(
1307 IN PRTL_BITMAP BitMapHeader,
1308 IN ULONG StartingIndex,
1309 IN ULONG NumberToClear
1310 );
1311
1312 ULONG
1313 STDCALL
1314 RtlFindClearBits(
1315 IN PRTL_BITMAP BitMapHeader,
1316 IN ULONG NumberToFind,
1317 IN ULONG HintIndex
1318 );
1319
1320 ULONG
1321 STDCALL
1322 RtlFindClearBitsAndSet(
1323 IN PRTL_BITMAP BitMapHeader,
1324 IN ULONG NumberToFind,
1325 IN ULONG HintIndex
1326 );
1327
1328 VOID
1329 STDCALL
1330 RtlInitializeBitMap(
1331 IN PRTL_BITMAP BitMapHeader,
1332 IN PULONG BitMapBuffer,
1333 IN ULONG SizeOfBitMap
1334 );
1335
1336 VOID
1337 STDCALL
1338 RtlSetBits (
1339 IN PRTL_BITMAP BitMapHeader,
1340 IN ULONG StartingIndex,
1341 IN ULONG NumberToSet
1342 );
1343
1344 /*
1345 * Timer Functions
1346 */
1347 NTSTATUS
1348 STDCALL
1349 RtlCreateTimer(
1350 HANDLE TimerQueue,
1351 PHANDLE phNewTimer,
1352 WAITORTIMERCALLBACKFUNC Callback,
1353 PVOID Parameter,
1354 DWORD DueTime,
1355 DWORD Period,
1356 ULONG Flags
1357 );
1358
1359 NTSTATUS
1360 STDCALL
1361 RtlCreateTimerQueue(PHANDLE TimerQueue);
1362
1363 NTSTATUS
1364 STDCALL
1365 RtlDeleteTimer(
1366 HANDLE TimerQueue,
1367 HANDLE Timer,
1368 HANDLE CompletionEvent
1369 );
1370
1371 NTSTATUS
1372 STDCALL
1373 RtlUpdateTimer(
1374 HANDLE TimerQueue,
1375 HANDLE Timer,
1376 ULONG DueTime,
1377 ULONG Period
1378 );
1379
1380 NTSTATUS
1381 STDCALL
1382 RtlDeleteTimerQueueEx(
1383 HANDLE TimerQueue,
1384 HANDLE CompletionEvent
1385 );
1386
1387 NTSTATUS
1388 STDCALL
1389 RtlDeleteTimerQueue(HANDLE TimerQueue);
1390
1391 /*
1392 * Debug Functions
1393 */
1394 ULONG
1395 CDECL
1396 DbgPrint(
1397 IN PCH Format,
1398 IN ...
1399 );
1400
1401 VOID
1402 STDCALL
1403 DbgBreakPoint(VOID);
1404
1405 /*
1406 * Handle Table Functions
1407 */
1408 PRTL_HANDLE_TABLE_ENTRY
1409 STDCALL
1410 RtlAllocateHandle(
1411 IN PRTL_HANDLE_TABLE HandleTable,
1412 IN OUT PULONG Index
1413 );
1414
1415 VOID
1416 STDCALL
1417 RtlDestroyHandleTable(IN PRTL_HANDLE_TABLE HandleTable);
1418
1419 BOOLEAN
1420 STDCALL
1421 RtlFreeHandle(
1422 IN PRTL_HANDLE_TABLE HandleTable,
1423 IN PRTL_HANDLE_TABLE_ENTRY Handle
1424 );
1425
1426 VOID
1427 STDCALL
1428 RtlInitializeHandleTable(
1429 IN ULONG TableSize,
1430 IN ULONG HandleSize,
1431 IN PRTL_HANDLE_TABLE HandleTable
1432 );
1433
1434 BOOLEAN
1435 STDCALL
1436 RtlIsValidHandle(
1437 IN PRTL_HANDLE_TABLE HandleTable,
1438 IN PRTL_HANDLE_TABLE_ENTRY Handle
1439 );
1440
1441 BOOLEAN
1442 STDCALL
1443 RtlIsValidIndexHandle(
1444 IN PRTL_HANDLE_TABLE HandleTable,
1445 IN OUT PRTL_HANDLE_TABLE_ENTRY *Handle,
1446 IN ULONG Index
1447 );
1448
1449 /*
1450 * PE Functions
1451 */
1452 NTSTATUS
1453 STDCALL
1454 RtlFindMessage(
1455 IN PVOID BaseAddress,
1456 IN ULONG Type,
1457 IN ULONG Language,
1458 IN ULONG MessageId,
1459 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1460 );
1461
1462 ULONG
1463 STDCALL
1464 RtlGetNtGlobalFlags(VOID);
1465
1466 PVOID
1467 STDCALL
1468 RtlImageDirectoryEntryToData(
1469 PVOID BaseAddress,
1470 BOOLEAN bFlag,
1471 ULONG Directory,
1472 PULONG Size
1473 );
1474
1475 ULONG
1476 STDCALL
1477 RtlImageRvaToVa(
1478 PIMAGE_NT_HEADERS NtHeader,
1479 PVOID BaseAddress,
1480 ULONG Rva,
1481 PIMAGE_SECTION_HEADER *SectionHeader
1482 );
1483
1484 PIMAGE_NT_HEADERS
1485 STDCALL
1486 RtlImageNtHeader(IN PVOID BaseAddress);
1487
1488 PIMAGE_SECTION_HEADER
1489 STDCALL
1490 RtlImageRvaToSection(
1491 PIMAGE_NT_HEADERS NtHeader,
1492 PVOID BaseAddress,
1493 ULONG Rva
1494 );
1495
1496 /*
1497 * Registry Functions
1498 */
1499 NTSTATUS
1500 STDCALL
1501 RtlCheckRegistryKey(
1502 ULONG RelativeTo,
1503 PWSTR Path
1504 );
1505
1506 NTSTATUS
1507 STDCALL
1508 RtlFormatCurrentUserKeyPath(IN OUT PUNICODE_STRING KeyPath);
1509
1510 NTSTATUS
1511 STDCALL
1512 RtlpNtOpenKey(
1513 OUT HANDLE KeyHandle,
1514 IN ACCESS_MASK DesiredAccess,
1515 IN POBJECT_ATTRIBUTES ObjectAttributes,
1516 IN ULONG Unused
1517 );
1518
1519 NTSTATUS
1520 STDCALL
1521 RtlOpenCurrentUser(
1522 IN ACCESS_MASK DesiredAccess,
1523 OUT PHANDLE KeyHandle
1524 );
1525
1526 NTSTATUS
1527 STDCALL
1528 RtlQueryRegistryValues(
1529 IN ULONG RelativeTo,
1530 IN PCWSTR Path,
1531 IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
1532 IN PVOID Context,
1533 IN PVOID Environment
1534 );
1535
1536 NTSTATUS
1537 STDCALL
1538 RtlWriteRegistryValue(
1539 ULONG RelativeTo,
1540 PCWSTR Path,
1541 PCWSTR ValueName,
1542 ULONG ValueType,
1543 PVOID ValueData,
1544 ULONG ValueLength
1545 );
1546
1547 /*
1548 * NLS Functions
1549 */
1550 VOID
1551 STDCALL
1552 RtlInitNlsTables(
1553 IN PUSHORT AnsiTableBase,
1554 IN PUSHORT OemTableBase,
1555 IN PUSHORT CaseTableBase,
1556 OUT PNLSTABLEINFO NlsTable
1557 );
1558
1559 VOID
1560 STDCALL
1561 RtlInitCodePageTable(
1562 IN PUSHORT TableBase,
1563 OUT PCPTABLEINFO CodePageTable
1564 );
1565
1566 VOID
1567 STDCALL
1568 RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable);
1569
1570 /*
1571 * Misc conversion functions
1572 */
1573 LARGE_INTEGER
1574 STDCALL
1575 RtlConvertLongToLargeInteger(IN LONG SignedInteger);
1576
1577 LARGE_INTEGER
1578 STDCALL
1579 RtlEnlargedIntegerMultiply(
1580 LONG Multiplicand,
1581 LONG Multiplier
1582 );
1583
1584 ULONG
1585 STDCALL
1586 RtlEnlargedUnsignedDivide(
1587 ULARGE_INTEGER Dividend,
1588 ULONG Divisor,
1589 PULONG Remainder
1590 );
1591
1592 LARGE_INTEGER
1593 STDCALL
1594 RtlEnlargedUnsignedMultiply(
1595 ULONG Multiplicand,
1596 ULONG Multiplier
1597 );
1598
1599 ULONG
1600 STDCALL
1601 RtlUniform(PULONG Seed);
1602
1603 /*
1604 * Time Functions
1605 */
1606 NTSTATUS
1607 STDCALL
1608 RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
1609
1610 VOID
1611 STDCALL
1612 RtlSecondsSince1970ToTime(
1613 IN ULONG SecondsSince1970,
1614 OUT PLARGE_INTEGER Time
1615 );
1616
1617 NTSTATUS
1618 STDCALL
1619 RtlSetTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
1620
1621 BOOLEAN
1622 STDCALL
1623 RtlTimeFieldsToTime(
1624 PTIME_FIELDS TimeFields,
1625 PLARGE_INTEGER Time
1626 );
1627
1628 VOID
1629 STDCALL
1630 RtlTimeToTimeFields(
1631 PLARGE_INTEGER Time,
1632 PTIME_FIELDS TimeFields
1633 );
1634
1635 /*
1636 * Version Functions
1637 */
1638 NTSTATUS
1639 STDCALL
1640 RtlVerifyVersionInfo(
1641 IN PRTL_OSVERSIONINFOEXW VersionInfo,
1642 IN ULONG TypeMask,
1643 IN ULONGLONG ConditionMask
1644 );
1645
1646 NTSTATUS
1647 STDCALL
1648 RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
1649
1650 /*
1651 * C Runtime Library Functions
1652 */
1653 char *_itoa (int value, char *string, int radix);
1654 wchar_t *_itow (int value, wchar_t *string, int radix);
1655 int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
1656 int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
1657 int _stricmp(const char *s1, const char *s2);
1658 char * _strlwr(char *x);
1659 int _strnicmp(const char *s1, const char *s2, size_t n);
1660 char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
1661 char * _strrev(char *s);
1662 char * _strset(char* szToFill, int szFill);
1663 char * _strupr(char *x);
1664 int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
1665 int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
1666 wchar_t * _wcslwr (wchar_t *x);
1667 int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
1668 wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
1669 wchar_t * _wcsrev(wchar_t *s);
1670 wchar_t *_wcsupr(wchar_t *x);
1671 int atoi(const char *str);
1672 long atol(const char *str);
1673 int isdigit(int c);
1674 int isalpha(int c);
1675 int islower(int c);
1676 int isprint(int c);
1677 int isspace(int c);
1678 int isupper(int c);
1679 int isxdigit(int c);
1680 size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
1681 int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
1682 void * memchr(const void *s, int c, size_t n);
1683 void * memcpy(void *to, const void *from, size_t count);
1684 void * memmove(void *dest,const void *src, size_t count);
1685 void * memset(void *src, int val, size_t count);
1686 int rand(void);
1687 int sprintf(char * buf, const char *fmt, ...);
1688 void srand(unsigned seed);
1689 char * strcat(char *s, const char *append);
1690 char * strchr(const char *s, int c);
1691 int strcmp(const char *s1, const char *s2);
1692 char * strcpy(char *to, const char *from);
1693 size_t strlen(const char *str);
1694 char * strncat(char *dst, const char *src, size_t n);
1695 int strncmp(const char *s1, const char *s2, size_t n);
1696 char *strncpy(char *dst, const char *src, size_t n);
1697 char *strrchr(const char *s, int c);
1698 size_t strspn(const char *s1, const char *s2);
1699 char *strstr(const char *s, const char *find);
1700 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
1701 int tolower(int c);
1702 int toupper(int c);
1703 wchar_t towlower(wchar_t c);
1704 wchar_t towupper(wchar_t c);
1705 int vsprintf(char *buf, const char *fmt, va_list args);
1706 wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
1707 wchar_t * wcschr(const wchar_t *str, wchar_t ch);
1708 int wcscmp(const wchar_t *cs, const wchar_t *ct);
1709 wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
1710 size_t wcscspn(const wchar_t *str,const wchar_t *reject);
1711 size_t wcslen(const wchar_t *s);
1712 wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
1713 int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
1714 wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
1715 wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
1716 size_t wcsspn(const wchar_t *str,const wchar_t *accept);
1717 wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
1718 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
1719 int wctomb (char *mbchar, wchar_t wchar);
1720
1721 #endif