Partial patch of larger rosrtl removal patch. This one merely is a structure fix...
[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 NTSTATUS
568 STDCALL
569 RtlDeleteSecurityObject(
570 IN PSECURITY_DESCRIPTOR *ObjectDescriptor
571 );
572
573 NTSTATUS
574 STDCALL
575 RtlNewSecurityObject(
576 IN PSECURITY_DESCRIPTOR ParentDescriptor,
577 IN PSECURITY_DESCRIPTOR CreatorDescriptor,
578 OUT PSECURITY_DESCRIPTOR *NewDescriptor,
579 IN BOOLEAN IsDirectoryObject,
580 IN HANDLE Token,
581 IN PGENERIC_MAPPING GenericMapping
582 );
583
584 NTSTATUS
585 STDCALL
586 RtlQuerySecurityObject(
587 IN PSECURITY_DESCRIPTOR ObjectDescriptor,
588 IN SECURITY_INFORMATION SecurityInformation,
589 OUT PSECURITY_DESCRIPTOR ResultantDescriptor,
590 IN ULONG DescriptorLength,
591 OUT PULONG ReturnLength
592 );
593
594 NTSTATUS
595 STDCALL
596 RtlSetSecurityObject(
597 IN SECURITY_INFORMATION SecurityInformation,
598 IN PSECURITY_DESCRIPTOR ModificationDescriptor,
599 OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
600 IN PGENERIC_MAPPING GenericMapping,
601 IN HANDLE Token
602 );
603
604 /*
605 * Single-Character Functions
606 */
607 NTSTATUS
608 STDCALL
609 RtlLargeIntegerToChar(
610 IN PLARGE_INTEGER Value,
611 IN ULONG Base,
612 IN ULONG Length,
613 IN OUT PCHAR String
614 );
615
616 CHAR
617 STDCALL
618 RtlUpperChar(CHAR Source);
619
620 WCHAR
621 STDCALL
622 RtlUpcaseUnicodeChar(WCHAR Source);
623
624 WCHAR
625 STDCALL
626 RtlDowncaseUnicodeChar(IN WCHAR Source);
627
628 NTSTATUS
629 STDCALL
630 RtlIntegerToChar(
631 IN ULONG Value,
632 IN ULONG Base,
633 IN ULONG Length,
634 IN OUT PCHAR String
635 );
636
637 NTSTATUS
638 STDCALL
639 RtlIntegerToUnicode(
640 IN ULONG Value,
641 IN ULONG Base OPTIONAL,
642 IN ULONG Length OPTIONAL,
643 IN OUT LPWSTR String
644 );
645
646 NTSTATUS
647 STDCALL
648 RtlIntegerToUnicodeString(
649 IN ULONG Value,
650 IN ULONG Base,
651 IN OUT PUNICODE_STRING String
652 );
653
654 NTSTATUS
655 STDCALL
656 RtlCharToInteger(
657 PCSZ String,
658 ULONG Base,
659 PULONG Value
660 );
661
662 USHORT
663 FASTCALL
664 RtlUshortByteSwap(IN USHORT Source);
665
666 /*
667 * Unicode->Ansi String Functions
668 */
669 ULONG
670 STDCALL
671 RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString);
672
673 NTSTATUS
674 STDCALL
675 RtlUnicodeStringToAnsiString(
676 PANSI_STRING DestinationString,
677 PUNICODE_STRING SourceString,
678 BOOLEAN AllocateDestinationString
679 );
680
681 /*
682 * Unicode->OEM String Functions
683 */
684 NTSTATUS
685 STDCALL
686 RtlUpcaseUnicodeStringToOemString(
687 POEM_STRING DestinationString,
688 PUNICODE_STRING SourceString,
689 BOOLEAN AllocateDestinationString
690 );
691
692 NTSTATUS
693 STDCALL
694 RtlUpcaseUnicodeStringToCountedOemString(
695 IN OUT POEM_STRING DestinationString,
696 IN PUNICODE_STRING SourceString,
697 IN BOOLEAN AllocateDestinationString
698 );
699
700 NTSTATUS
701 STDCALL
702 RtlUpcaseUnicodeString(
703 PUNICODE_STRING DestinationString,
704 PCUNICODE_STRING SourceString,
705 BOOLEAN AllocateDestinationString
706 );
707
708 NTSTATUS
709 STDCALL
710 RtlUnicodeStringToOemString(
711 POEM_STRING DestinationString,
712 PUNICODE_STRING SourceString,
713 BOOLEAN AllocateDestinationString
714 );
715
716 NTSTATUS
717 STDCALL
718 RtlUpcaseUnicodeToOemN(
719 PCHAR OemString,
720 ULONG OemSize,
721 PULONG ResultSize,
722 PWCHAR UnicodeString,
723 ULONG UnicodeSize
724 );
725
726 ULONG
727 STDCALL
728 RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString);
729
730 NTSTATUS
731 STDCALL
732 RtlUnicodeToOemN(
733 PCHAR OemString,
734 ULONG OemSize,
735 PULONG ResultSize,
736 PWCHAR UnicodeString,
737 ULONG UnicodeSize
738 );
739
740 /*
741 * Unicode->MultiByte String Functions
742 */
743 NTSTATUS
744 STDCALL
745 RtlUnicodeToMultiByteN(
746 PCHAR MbString,
747 ULONG MbSize,
748 PULONG ResultSize,
749 PWCHAR UnicodeString,
750 ULONG UnicodeSize
751 );
752
753 NTSTATUS
754 STDCALL
755 RtlUpcaseUnicodeToMultiByteN(
756 PCHAR MbString,
757 ULONG MbSize,
758 PULONG ResultSize,
759 PWCHAR UnicodeString,
760 ULONG UnicodeSize
761 );
762
763 NTSTATUS
764 STDCALL
765 RtlUnicodeToMultiByteSize(
766 PULONG MbSize,
767 PWCHAR UnicodeString,
768 ULONG UnicodeSize
769 );
770
771 /*
772 * OEM to Unicode Functions
773 */
774 ULONG
775 STDCALL
776 RtlOemStringToUnicodeSize(POEM_STRING AnsiString);
777
778 NTSTATUS
779 STDCALL
780 RtlOemStringToUnicodeString(
781 PUNICODE_STRING DestinationString,
782 POEM_STRING SourceString,
783 BOOLEAN AllocateDestinationString
784 );
785
786 NTSTATUS
787 STDCALL
788 RtlOemToUnicodeN(
789 PWSTR UnicodeString,
790 ULONG MaxBytesInUnicodeString,
791 PULONG BytesInUnicodeString,
792 IN PCHAR OemString,
793 ULONG BytesInOemString
794 );
795
796 /*
797 * Ansi->Unicode String Functions
798 */
799 NTSTATUS
800 STDCALL
801 RtlAnsiStringToUnicodeString(
802 PUNICODE_STRING DestinationString,
803 PANSI_STRING SourceString,
804 BOOLEAN AllocateDestinationString
805 );
806
807 ULONG
808 STDCALL
809 RtlAnsiStringToUnicodeSize(
810 PANSI_STRING AnsiString
811 );
812
813 BOOLEAN
814 STDCALL
815 RtlCreateUnicodeStringFromAsciiz(
816 OUT PUNICODE_STRING Destination,
817 IN PCSZ Source
818 );
819
820 /*
821 * Unicode String Functions
822 */
823 NTSTATUS
824 STDCALL
825 RtlAppendUnicodeToString(
826 PUNICODE_STRING Destination,
827 PCWSTR Source
828 );
829
830 NTSTATUS
831 STDCALL
832 RtlAppendUnicodeStringToString(
833 PUNICODE_STRING Destination,
834 PUNICODE_STRING Source
835 );
836
837 LONG
838 STDCALL
839 RtlCompareUnicodeString(
840 PUNICODE_STRING String1,
841 PUNICODE_STRING String2,
842 BOOLEAN CaseInsensitive
843 );
844
845 VOID
846 STDCALL
847 RtlCopyUnicodeString(
848 PUNICODE_STRING DestinationString,
849 PUNICODE_STRING SourceString
850 );
851
852 BOOLEAN
853 STDCALL
854 RtlCreateUnicodeString(
855 PUNICODE_STRING DestinationString,
856 PCWSTR SourceString
857 );
858
859 BOOLEAN
860 STDCALL
861 RtlEqualUnicodeString(
862 PCUNICODE_STRING String1,
863 PCUNICODE_STRING String2,
864 BOOLEAN CaseInsensitive
865 );
866
867 VOID
868 STDCALL
869 RtlFreeUnicodeString(IN PUNICODE_STRING UnicodeString);
870
871 VOID
872 STDCALL
873 RtlInitUnicodeString(
874 IN OUT PUNICODE_STRING DestinationString,
875 IN PCWSTR SourceString);
876
877 ULONG
878 STDCALL
879 RtlIsTextUnicode(
880 PVOID Buffer,
881 ULONG Length,
882 ULONG *Flags
883 );
884
885 BOOLEAN
886 STDCALL
887 RtlPrefixUnicodeString(
888 PUNICODE_STRING String1,
889 PUNICODE_STRING String2,
890 BOOLEAN CaseInsensitive
891 );
892
893 NTSTATUS
894 STDCALL
895 RtlUnicodeStringToInteger(
896 PUNICODE_STRING String,
897 ULONG Base,
898 PULONG Value
899 );
900
901 NTSTATUS
902 STDCALL
903 RtlHashUnicodeString(
904 IN CONST UNICODE_STRING *String,
905 IN BOOLEAN CaseInSensitive,
906 IN ULONG HashAlgorithm,
907 OUT PULONG HashValue);
908
909 /*
910 * Ansi String Functions
911 */
912 VOID
913 STDCALL
914 RtlFreeAnsiString(IN PANSI_STRING AnsiString);
915
916 VOID
917 STDCALL
918 RtlInitAnsiString(
919 PANSI_STRING DestinationString,
920 PCSZ SourceString
921 );
922
923 /*
924 * OEM String Functions
925 */
926 VOID
927 STDCALL
928 RtlFreeOemString(IN POEM_STRING OemString);
929
930 /*
931 * MultiByte->Unicode String Functions
932 */
933 NTSTATUS
934 STDCALL
935 RtlMultiByteToUnicodeN(
936 PWCHAR UnicodeString,
937 ULONG UnicodeSize,
938 PULONG ResultSize,
939 const PCHAR MbString,
940 ULONG MbSize
941 );
942
943 NTSTATUS
944 STDCALL
945 RtlMultiByteToUnicodeSize(
946 PULONG UnicodeSize,
947 PCHAR MbString,
948 ULONG MbSize
949 );
950
951 /*
952 * Atom Functions
953 */
954 NTSTATUS
955 STDCALL
956 RtlAddAtomToAtomTable(
957 IN PRTL_ATOM_TABLE AtomTable,
958 IN PWSTR AtomName,
959 OUT PRTL_ATOM Atom
960 );
961
962 NTSTATUS
963 STDCALL
964 RtlCreateAtomTable(
965 IN ULONG TableSize,
966 IN OUT PRTL_ATOM_TABLE *AtomTable
967 );
968
969 NTSTATUS
970 STDCALL
971 RtlDeleteAtomFromAtomTable(
972 IN PRTL_ATOM_TABLE AtomTable,
973 IN RTL_ATOM Atom
974 );
975
976 NTSTATUS
977 STDCALL
978 RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
979
980 NTSTATUS
981 STDCALL
982 RtlQueryAtomInAtomTable(
983 IN PRTL_ATOM_TABLE AtomTable,
984 IN RTL_ATOM Atom,
985 IN OUT PULONG RefCount OPTIONAL,
986 IN OUT PULONG PinCount OPTIONAL,
987 IN OUT PWSTR AtomName OPTIONAL,
988 IN OUT PULONG NameLength OPTIONAL
989 );
990
991 NTSTATUS
992 STDCALL
993 RtlLookupAtomInAtomTable(
994 IN PRTL_ATOM_TABLE AtomTable,
995 IN PWSTR AtomName,
996 OUT PRTL_ATOM Atom
997 );
998
999 /*
1000 * Memory Functions
1001 */
1002 SIZE_T
1003 STDCALL
1004 RtlCompareMemory(
1005 IN const VOID *Source1,
1006 IN const VOID *Source2,
1007 IN SIZE_T Length
1008 );
1009
1010 VOID
1011 STDCALL
1012 RtlFillMemoryUlong(
1013 IN PVOID Destination,
1014 IN ULONG Length,
1015 IN ULONG Fill
1016 );
1017
1018 /*
1019 * Process Management Functions
1020 */
1021 VOID
1022 STDCALL
1023 RtlAcquirePebLock(VOID);
1024
1025 NTSTATUS
1026 STDCALL
1027 RtlCreateProcessParameters (
1028 OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
1029 IN PUNICODE_STRING ImagePathName OPTIONAL,
1030 IN PUNICODE_STRING DllPath OPTIONAL,
1031 IN PUNICODE_STRING CurrentDirectory OPTIONAL,
1032 IN PUNICODE_STRING CommandLine OPTIONAL,
1033 IN PWSTR Environment OPTIONAL,
1034 IN PUNICODE_STRING WindowTitle OPTIONAL,
1035 IN PUNICODE_STRING DesktopInfo OPTIONAL,
1036 IN PUNICODE_STRING ShellInfo OPTIONAL,
1037 IN PUNICODE_STRING RuntimeInfo OPTIONAL
1038 );
1039
1040 NTSTATUS
1041 STDCALL
1042 RtlCreateUserProcess(
1043 IN PUNICODE_STRING ImageFileName,
1044 IN ULONG Attributes,
1045 IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
1046 IN PSECURITY_DESCRIPTOR ProcessSecutityDescriptor OPTIONAL,
1047 IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,
1048 IN HANDLE ParentProcess OPTIONAL,
1049 IN BOOLEAN CurrentDirectory,
1050 IN HANDLE DebugPort OPTIONAL,
1051 IN HANDLE ExceptionPort OPTIONAL,
1052 OUT PRTL_USER_PROCESS_INFORMATION ProcessInfo
1053 );
1054
1055 NTSTATUS
1056 STDCALL
1057 RtlCreateUserThread(
1058 IN HANDLE ProcessHandle,
1059 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
1060 IN BOOLEAN CreateSuspended,
1061 IN LONG StackZeroBits,
1062 IN ULONG StackReserve,
1063 IN ULONG StackCommit,
1064 IN PTHREAD_START_ROUTINE StartAddress,
1065 IN PVOID Parameter,
1066 IN OUT PHANDLE ThreadHandle,
1067 IN OUT PCLIENT_ID ClientId
1068 );
1069
1070 PRTL_USER_PROCESS_PARAMETERS
1071 STDCALL
1072 RtlDeNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1073
1074 NTSTATUS
1075 STDCALL
1076 RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1077
1078 VOID
1079 STDCALL
1080 RtlExitUserThread(NTSTATUS Status);
1081
1082 VOID
1083 STDCALL
1084 RtlInitializeContext(
1085 IN HANDLE ProcessHandle,
1086 OUT PCONTEXT ThreadContext,
1087 IN PVOID ThreadStartParam OPTIONAL,
1088 IN PTHREAD_START_ROUTINE ThreadStartAddress,
1089 IN PINITIAL_TEB InitialTeb
1090 );
1091
1092 PRTL_USER_PROCESS_PARAMETERS
1093 STDCALL
1094 RtlNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1095
1096 VOID
1097 STDCALL
1098 RtlReleasePebLock(VOID);
1099
1100 /*
1101 * Environment/Path Functions
1102 */
1103 NTSTATUS
1104 STDCALL
1105 RtlCreateEnvironment(
1106 BOOLEAN Inherit,
1107 PWSTR *Environment
1108 );
1109
1110 VOID
1111 STDCALL
1112 RtlDestroyEnvironment(PWSTR Environment);
1113
1114 BOOLEAN
1115 STDCALL
1116 RtlDoesFileExists_U(PWSTR FileName);
1117
1118 ULONG
1119 STDCALL
1120 RtlDetermineDosPathNameType_U(PCWSTR Path);
1121
1122 ULONG
1123 STDCALL
1124 RtlDosSearchPath_U(
1125 WCHAR *sp,
1126 WCHAR *name,
1127 WCHAR *ext,
1128 ULONG buf_sz,
1129 WCHAR *buffer,
1130 WCHAR **shortname
1131 );
1132
1133 BOOLEAN
1134 STDCALL
1135 RtlDosPathNameToNtPathName_U(
1136 PWSTR DosName,
1137 PUNICODE_STRING NtName,
1138 PWSTR *ShortName,
1139 PCURDIR CurrentDirectory
1140 );
1141
1142 NTSTATUS
1143 STDCALL
1144 RtlExpandEnvironmentStrings_U(
1145 PWSTR Environment,
1146 PUNICODE_STRING Source,
1147 PUNICODE_STRING Destination,
1148 PULONG Length
1149 );
1150
1151 ULONG
1152 STDCALL
1153 RtlGetCurrentDirectory_U(
1154 ULONG MaximumLength,
1155 PWSTR Buffer
1156 );
1157
1158 ULONG
1159 STDCALL
1160 RtlGetFullPathName_U(
1161 const WCHAR *dosname,
1162 ULONG size,
1163 WCHAR *buf,
1164 WCHAR **shortname
1165 );
1166
1167 BOOLEAN
1168 STDCALL
1169 RtlIsNameLegalDOS8Dot3(
1170 IN PUNICODE_STRING UnicodeName,
1171 IN PANSI_STRING AnsiName,
1172 PBOOLEAN Unknown
1173 );
1174
1175 NTSTATUS
1176 STDCALL
1177 RtlQueryEnvironmentVariable_U(
1178 PWSTR Environment,
1179 PUNICODE_STRING Name,
1180 PUNICODE_STRING Value
1181 );
1182
1183 NTSTATUS
1184 STDCALL
1185 RtlSetCurrentDirectory_U(PUNICODE_STRING name);
1186
1187 NTSTATUS
1188 STDCALL
1189 RtlSetEnvironmentVariable(
1190 PWSTR *Environment,
1191 PUNICODE_STRING Name,
1192 PUNICODE_STRING Value
1193 );
1194
1195 /*
1196 * Critical Section/Resource Functions
1197 */
1198 NTSTATUS
1199 STDCALL
1200 RtlDeleteCriticalSection (
1201 IN PRTL_CRITICAL_SECTION CriticalSection
1202 );
1203
1204 NTSTATUS
1205 STDCALL
1206 RtlEnterCriticalSection(
1207 IN PRTL_CRITICAL_SECTION CriticalSection
1208 );
1209
1210 NTSTATUS
1211 STDCALL
1212 RtlInitializeCriticalSection(
1213 IN PRTL_CRITICAL_SECTION CriticalSection
1214 );
1215
1216 NTSTATUS
1217 STDCALL
1218 RtlInitializeCriticalSectionAndSpinCount(
1219 IN PRTL_CRITICAL_SECTION CriticalSection,
1220 IN ULONG SpinCount
1221 );
1222
1223 NTSTATUS
1224 STDCALL
1225 RtlLeaveCriticalSection(
1226 IN PRTL_CRITICAL_SECTION CriticalSection
1227 );
1228
1229 VOID
1230 STDCALL
1231 RtlpUnWaitCriticalSection(
1232 IN PRTL_CRITICAL_SECTION CriticalSection
1233 );
1234
1235 NTSTATUS
1236 STDCALL
1237 RtlpWaitForCriticalSection(
1238 IN PRTL_CRITICAL_SECTION CriticalSection
1239 );
1240
1241 BOOLEAN
1242 STDCALL
1243 RtlAcquireResourceExclusive(
1244 IN PRTL_RESOURCE Resource,
1245 IN BOOLEAN Wait
1246 );
1247
1248 BOOLEAN
1249 STDCALL
1250 RtlAcquireResourceShared(
1251 IN PRTL_RESOURCE Resource,
1252 IN BOOLEAN Wait
1253 );
1254
1255 VOID
1256 STDCALL
1257 RtlConvertExclusiveToShared(
1258 IN PRTL_RESOURCE Resource
1259 );
1260
1261 VOID
1262 STDCALL
1263 RtlConvertSharedToExclusive(
1264 IN PRTL_RESOURCE Resource
1265 );
1266
1267 VOID
1268 STDCALL
1269 RtlDeleteResource(
1270 IN PRTL_RESOURCE Resource
1271 );
1272
1273 VOID
1274 STDCALL
1275 RtlDumpResource(
1276 IN PRTL_RESOURCE Resource
1277 );
1278
1279 VOID
1280 STDCALL
1281 RtlInitializeResource(
1282 IN PRTL_RESOURCE Resource
1283 );
1284
1285 VOID
1286 STDCALL
1287 RtlReleaseResource(
1288 IN PRTL_RESOURCE Resource
1289 );
1290
1291 /*
1292 * Compression Functions
1293 */
1294 NTSTATUS
1295 STDCALL
1296 RtlCompressBuffer(
1297 IN USHORT CompressionFormatAndEngine,
1298 IN PUCHAR UncompressedBuffer,
1299 IN ULONG UncompressedBufferSize,
1300 OUT PUCHAR CompressedBuffer,
1301 IN ULONG CompressedBufferSize,
1302 IN ULONG UncompressedChunkSize,
1303 OUT PULONG FinalCompressedSize,
1304 IN PVOID WorkSpace
1305 );
1306
1307 NTSTATUS
1308 STDCALL
1309 RtlDecompressBuffer(
1310 IN USHORT CompressionFormat,
1311 OUT PUCHAR UncompressedBuffer,
1312 IN ULONG UncompressedBufferSize,
1313 IN PUCHAR CompressedBuffer,
1314 IN ULONG CompressedBufferSize,
1315 OUT PULONG FinalUncompressedSize
1316 );
1317
1318 NTSTATUS
1319 STDCALL
1320 RtlGetCompressionWorkSpaceSize(
1321 IN USHORT CompressionFormatAndEngine,
1322 OUT PULONG CompressBufferWorkSpaceSize,
1323 OUT PULONG CompressFragmentWorkSpaceSize
1324 );
1325
1326 /*
1327 * Debug Info Functions
1328 */
1329 PDEBUG_BUFFER
1330 STDCALL
1331 RtlCreateQueryDebugBuffer(
1332 IN ULONG Size,
1333 IN BOOLEAN EventPair
1334 );
1335
1336 NTSTATUS
1337 STDCALL
1338 RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
1339
1340 NTSTATUS
1341 STDCALL
1342 RtlQueryProcessDebugInformation(
1343 IN ULONG ProcessId,
1344 IN ULONG DebugInfoClassMask,
1345 IN OUT PDEBUG_BUFFER DebugBuffer
1346 );
1347
1348 /*
1349 * Bitmap Functions
1350 */
1351 BOOLEAN
1352 STDCALL
1353 RtlAreBitsClear(
1354 IN PRTL_BITMAP BitMapHeader,
1355 IN ULONG StartingIndex,
1356 IN ULONG Length
1357 );
1358
1359 BOOLEAN
1360 STDCALL
1361 RtlAreBitsSet(
1362 IN PRTL_BITMAP BitMapHeader,
1363 IN ULONG StartingIndex,
1364 IN ULONG Length
1365 );
1366
1367 VOID
1368 STDCALL
1369 RtlClearBits(
1370 IN PRTL_BITMAP BitMapHeader,
1371 IN ULONG StartingIndex,
1372 IN ULONG NumberToClear
1373 );
1374
1375 ULONG
1376 STDCALL
1377 RtlFindClearBits(
1378 IN PRTL_BITMAP BitMapHeader,
1379 IN ULONG NumberToFind,
1380 IN ULONG HintIndex
1381 );
1382
1383 ULONG
1384 STDCALL
1385 RtlFindClearBitsAndSet(
1386 IN PRTL_BITMAP BitMapHeader,
1387 IN ULONG NumberToFind,
1388 IN ULONG HintIndex
1389 );
1390
1391 VOID
1392 STDCALL
1393 RtlInitializeBitMap(
1394 IN PRTL_BITMAP BitMapHeader,
1395 IN PULONG BitMapBuffer,
1396 IN ULONG SizeOfBitMap
1397 );
1398
1399 VOID
1400 STDCALL
1401 RtlSetBits (
1402 IN PRTL_BITMAP BitMapHeader,
1403 IN ULONG StartingIndex,
1404 IN ULONG NumberToSet
1405 );
1406
1407 /*
1408 * Timer Functions
1409 */
1410 NTSTATUS
1411 STDCALL
1412 RtlCreateTimer(
1413 HANDLE TimerQueue,
1414 PHANDLE phNewTimer,
1415 WAITORTIMERCALLBACKFUNC Callback,
1416 PVOID Parameter,
1417 DWORD DueTime,
1418 DWORD Period,
1419 ULONG Flags
1420 );
1421
1422 NTSTATUS
1423 STDCALL
1424 RtlCreateTimerQueue(PHANDLE TimerQueue);
1425
1426 NTSTATUS
1427 STDCALL
1428 RtlDeleteTimer(
1429 HANDLE TimerQueue,
1430 HANDLE Timer,
1431 HANDLE CompletionEvent
1432 );
1433
1434 NTSTATUS
1435 STDCALL
1436 RtlUpdateTimer(
1437 HANDLE TimerQueue,
1438 HANDLE Timer,
1439 ULONG DueTime,
1440 ULONG Period
1441 );
1442
1443 NTSTATUS
1444 STDCALL
1445 RtlDeleteTimerQueueEx(
1446 HANDLE TimerQueue,
1447 HANDLE CompletionEvent
1448 );
1449
1450 NTSTATUS
1451 STDCALL
1452 RtlDeleteTimerQueue(HANDLE TimerQueue);
1453
1454 /*
1455 * Debug Functions
1456 */
1457 ULONG
1458 CDECL
1459 DbgPrint(
1460 IN PCH Format,
1461 IN ...
1462 );
1463
1464 VOID
1465 STDCALL
1466 DbgBreakPoint(VOID);
1467
1468 /*
1469 * Handle Table Functions
1470 */
1471 PRTL_HANDLE_TABLE_ENTRY
1472 STDCALL
1473 RtlAllocateHandle(
1474 IN PRTL_HANDLE_TABLE HandleTable,
1475 IN OUT PULONG Index
1476 );
1477
1478 VOID
1479 STDCALL
1480 RtlDestroyHandleTable(IN PRTL_HANDLE_TABLE HandleTable);
1481
1482 BOOLEAN
1483 STDCALL
1484 RtlFreeHandle(
1485 IN PRTL_HANDLE_TABLE HandleTable,
1486 IN PRTL_HANDLE_TABLE_ENTRY Handle
1487 );
1488
1489 VOID
1490 STDCALL
1491 RtlInitializeHandleTable(
1492 IN ULONG TableSize,
1493 IN ULONG HandleSize,
1494 IN PRTL_HANDLE_TABLE HandleTable
1495 );
1496
1497 BOOLEAN
1498 STDCALL
1499 RtlIsValidHandle(
1500 IN PRTL_HANDLE_TABLE HandleTable,
1501 IN PRTL_HANDLE_TABLE_ENTRY Handle
1502 );
1503
1504 BOOLEAN
1505 STDCALL
1506 RtlIsValidIndexHandle(
1507 IN PRTL_HANDLE_TABLE HandleTable,
1508 IN OUT PRTL_HANDLE_TABLE_ENTRY *Handle,
1509 IN ULONG Index
1510 );
1511
1512 /*
1513 * PE Functions
1514 */
1515 NTSTATUS
1516 STDCALL
1517 RtlFindMessage(
1518 IN PVOID BaseAddress,
1519 IN ULONG Type,
1520 IN ULONG Language,
1521 IN ULONG MessageId,
1522 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1523 );
1524
1525 ULONG
1526 STDCALL
1527 RtlGetNtGlobalFlags(VOID);
1528
1529 PVOID
1530 STDCALL
1531 RtlImageDirectoryEntryToData(
1532 PVOID BaseAddress,
1533 BOOLEAN bFlag,
1534 ULONG Directory,
1535 PULONG Size
1536 );
1537
1538 ULONG
1539 STDCALL
1540 RtlImageRvaToVa(
1541 PIMAGE_NT_HEADERS NtHeader,
1542 PVOID BaseAddress,
1543 ULONG Rva,
1544 PIMAGE_SECTION_HEADER *SectionHeader
1545 );
1546
1547 PIMAGE_NT_HEADERS
1548 STDCALL
1549 RtlImageNtHeader(IN PVOID BaseAddress);
1550
1551 PIMAGE_SECTION_HEADER
1552 STDCALL
1553 RtlImageRvaToSection(
1554 PIMAGE_NT_HEADERS NtHeader,
1555 PVOID BaseAddress,
1556 ULONG Rva
1557 );
1558
1559 /*
1560 * Registry Functions
1561 */
1562 NTSTATUS
1563 STDCALL
1564 RtlCheckRegistryKey(
1565 ULONG RelativeTo,
1566 PWSTR Path
1567 );
1568
1569 NTSTATUS
1570 STDCALL
1571 RtlFormatCurrentUserKeyPath(IN OUT PUNICODE_STRING KeyPath);
1572
1573 NTSTATUS
1574 STDCALL
1575 RtlpNtOpenKey(
1576 OUT HANDLE KeyHandle,
1577 IN ACCESS_MASK DesiredAccess,
1578 IN POBJECT_ATTRIBUTES ObjectAttributes,
1579 IN ULONG Unused
1580 );
1581
1582 NTSTATUS
1583 STDCALL
1584 RtlOpenCurrentUser(
1585 IN ACCESS_MASK DesiredAccess,
1586 OUT PHANDLE KeyHandle
1587 );
1588
1589 NTSTATUS
1590 STDCALL
1591 RtlQueryRegistryValues(
1592 IN ULONG RelativeTo,
1593 IN PCWSTR Path,
1594 IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
1595 IN PVOID Context,
1596 IN PVOID Environment
1597 );
1598
1599 NTSTATUS
1600 STDCALL
1601 RtlWriteRegistryValue(
1602 ULONG RelativeTo,
1603 PCWSTR Path,
1604 PCWSTR ValueName,
1605 ULONG ValueType,
1606 PVOID ValueData,
1607 ULONG ValueLength
1608 );
1609
1610 /*
1611 * NLS Functions
1612 */
1613 VOID
1614 STDCALL
1615 RtlInitNlsTables(
1616 IN PUSHORT AnsiTableBase,
1617 IN PUSHORT OemTableBase,
1618 IN PUSHORT CaseTableBase,
1619 OUT PNLSTABLEINFO NlsTable
1620 );
1621
1622 VOID
1623 STDCALL
1624 RtlInitCodePageTable(
1625 IN PUSHORT TableBase,
1626 OUT PCPTABLEINFO CodePageTable
1627 );
1628
1629 VOID
1630 STDCALL
1631 RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable);
1632
1633 /*
1634 * Misc conversion functions
1635 */
1636 LARGE_INTEGER
1637 STDCALL
1638 RtlConvertLongToLargeInteger(IN LONG SignedInteger);
1639
1640 LARGE_INTEGER
1641 STDCALL
1642 RtlEnlargedIntegerMultiply(
1643 LONG Multiplicand,
1644 LONG Multiplier
1645 );
1646
1647 ULONG
1648 STDCALL
1649 RtlEnlargedUnsignedDivide(
1650 ULARGE_INTEGER Dividend,
1651 ULONG Divisor,
1652 PULONG Remainder
1653 );
1654
1655 LARGE_INTEGER
1656 STDCALL
1657 RtlEnlargedUnsignedMultiply(
1658 ULONG Multiplicand,
1659 ULONG Multiplier
1660 );
1661
1662 ULONG
1663 STDCALL
1664 RtlUniform(PULONG Seed);
1665
1666 /*
1667 * Time Functions
1668 */
1669 NTSTATUS
1670 STDCALL
1671 RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
1672
1673 VOID
1674 STDCALL
1675 RtlSecondsSince1970ToTime(
1676 IN ULONG SecondsSince1970,
1677 OUT PLARGE_INTEGER Time
1678 );
1679
1680 NTSTATUS
1681 STDCALL
1682 RtlSetTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
1683
1684 BOOLEAN
1685 STDCALL
1686 RtlTimeFieldsToTime(
1687 PTIME_FIELDS TimeFields,
1688 PLARGE_INTEGER Time
1689 );
1690
1691 VOID
1692 STDCALL
1693 RtlTimeToTimeFields(
1694 PLARGE_INTEGER Time,
1695 PTIME_FIELDS TimeFields
1696 );
1697
1698 /*
1699 * Version Functions
1700 */
1701 NTSTATUS
1702 STDCALL
1703 RtlVerifyVersionInfo(
1704 IN PRTL_OSVERSIONINFOEXW VersionInfo,
1705 IN ULONG TypeMask,
1706 IN ULONGLONG ConditionMask
1707 );
1708
1709 NTSTATUS
1710 STDCALL
1711 RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
1712
1713 /*
1714 * C Runtime Library Functions
1715 */
1716 char *_itoa (int value, char *string, int radix);
1717 wchar_t *_itow (int value, wchar_t *string, int radix);
1718 int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
1719 int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
1720 int _stricmp(const char *s1, const char *s2);
1721 char * _strlwr(char *x);
1722 int _strnicmp(const char *s1, const char *s2, size_t n);
1723 char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
1724 char * _strrev(char *s);
1725 char * _strset(char* szToFill, int szFill);
1726 char * _strupr(char *x);
1727 int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
1728 int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
1729 wchar_t * _wcslwr (wchar_t *x);
1730 int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
1731 wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
1732 wchar_t * _wcsrev(wchar_t *s);
1733 wchar_t *_wcsupr(wchar_t *x);
1734 int atoi(const char *str);
1735 long atol(const char *str);
1736 int isdigit(int c);
1737 int isalpha(int c);
1738 int islower(int c);
1739 int isprint(int c);
1740 int isspace(int c);
1741 int isupper(int c);
1742 int isxdigit(int c);
1743 size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
1744 int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
1745 void * memchr(const void *s, int c, size_t n);
1746 void * memcpy(void *to, const void *from, size_t count);
1747 void * memmove(void *dest,const void *src, size_t count);
1748 void * memset(void *src, int val, size_t count);
1749 int rand(void);
1750 int sprintf(char * buf, const char *fmt, ...);
1751 void srand(unsigned seed);
1752 char * strcat(char *s, const char *append);
1753 char * strchr(const char *s, int c);
1754 int strcmp(const char *s1, const char *s2);
1755 char * strcpy(char *to, const char *from);
1756 size_t strlen(const char *str);
1757 char * strncat(char *dst, const char *src, size_t n);
1758 int strncmp(const char *s1, const char *s2, size_t n);
1759 char *strncpy(char *dst, const char *src, size_t n);
1760 char *strrchr(const char *s, int c);
1761 size_t strspn(const char *s1, const char *s2);
1762 char *strstr(const char *s, const char *find);
1763 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
1764 int tolower(int c);
1765 int toupper(int c);
1766 wchar_t towlower(wchar_t c);
1767 wchar_t towupper(wchar_t c);
1768 int vsprintf(char *buf, const char *fmt, va_list args);
1769 wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
1770 wchar_t * wcschr(const wchar_t *str, wchar_t ch);
1771 int wcscmp(const wchar_t *cs, const wchar_t *ct);
1772 wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
1773 size_t wcscspn(const wchar_t *str,const wchar_t *reject);
1774 size_t wcslen(const wchar_t *s);
1775 wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
1776 int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
1777 wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
1778 wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
1779 size_t wcsspn(const wchar_t *str,const wchar_t *accept);
1780 wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
1781 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
1782 int wctomb (char *mbchar, wchar_t wchar);
1783
1784 #endif