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