Fix prototype of RtlCreateHeap and respect the CommitRoutine if passed. Also 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 <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 SIZE_T SizeToReserve OPTIONAL,
85 IN SIZE_T SizeToCommit OPTIONAL,
86 IN PVOID Lock OPTIONAL,
87 IN PRTL_HEAP_PARAMETERS Parameters 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 PISECURITY_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 PISECURITY_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 PISECURITY_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 PISECURITY_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 RtlUnicodeStringToOemString(
703 POEM_STRING DestinationString,
704 PUNICODE_STRING SourceString,
705 BOOLEAN AllocateDestinationString
706 );
707
708 NTSTATUS
709 STDCALL
710 RtlUpcaseUnicodeToOemN(
711 PCHAR OemString,
712 ULONG OemSize,
713 PULONG ResultSize,
714 PWCHAR UnicodeString,
715 ULONG UnicodeSize
716 );
717
718 ULONG
719 STDCALL
720 RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString);
721
722 NTSTATUS
723 STDCALL
724 RtlUnicodeToOemN(
725 PCHAR OemString,
726 ULONG OemSize,
727 PULONG ResultSize,
728 PWCHAR UnicodeString,
729 ULONG UnicodeSize
730 );
731
732 /*
733 * Unicode->MultiByte String Functions
734 */
735 NTSTATUS
736 STDCALL
737 RtlUnicodeToMultiByteN(
738 PCHAR MbString,
739 ULONG MbSize,
740 PULONG ResultSize,
741 PWCHAR UnicodeString,
742 ULONG UnicodeSize
743 );
744
745 NTSTATUS
746 STDCALL
747 RtlUpcaseUnicodeToMultiByteN(
748 PCHAR MbString,
749 ULONG MbSize,
750 PULONG ResultSize,
751 PWCHAR UnicodeString,
752 ULONG UnicodeSize
753 );
754
755 NTSTATUS
756 STDCALL
757 RtlUnicodeToMultiByteSize(
758 PULONG MbSize,
759 PWCHAR UnicodeString,
760 ULONG UnicodeSize
761 );
762
763 /*
764 * OEM to Unicode Functions
765 */
766 ULONG
767 STDCALL
768 RtlOemStringToUnicodeSize(POEM_STRING AnsiString);
769
770 NTSTATUS
771 STDCALL
772 RtlOemStringToUnicodeString(
773 PUNICODE_STRING DestinationString,
774 POEM_STRING SourceString,
775 BOOLEAN AllocateDestinationString
776 );
777
778 NTSTATUS
779 STDCALL
780 RtlOemToUnicodeN(
781 PWSTR UnicodeString,
782 ULONG MaxBytesInUnicodeString,
783 PULONG BytesInUnicodeString,
784 IN PCHAR OemString,
785 ULONG BytesInOemString
786 );
787
788 /*
789 * Ansi->Unicode String Functions
790 */
791 NTSTATUS
792 STDCALL
793 RtlAnsiStringToUnicodeString(
794 PUNICODE_STRING DestinationString,
795 PANSI_STRING SourceString,
796 BOOLEAN AllocateDestinationString
797 );
798
799 ULONG
800 STDCALL
801 RtlAnsiStringToUnicodeSize(
802 PANSI_STRING AnsiString
803 );
804
805 BOOLEAN
806 STDCALL
807 RtlCreateUnicodeStringFromAsciiz(
808 OUT PUNICODE_STRING Destination,
809 IN PCSZ Source
810 );
811
812 /*
813 * Unicode String Functions
814 */
815 NTSTATUS
816 STDCALL
817 RtlAppendUnicodeToString(
818 PUNICODE_STRING Destination,
819 PCWSTR Source
820 );
821
822 NTSTATUS
823 STDCALL
824 RtlAppendUnicodeStringToString(
825 PUNICODE_STRING Destination,
826 PUNICODE_STRING Source
827 );
828
829 LONG
830 STDCALL
831 RtlCompareUnicodeString(
832 PUNICODE_STRING String1,
833 PUNICODE_STRING String2,
834 BOOLEAN CaseInsensitive
835 );
836
837 VOID
838 STDCALL
839 RtlCopyUnicodeString(
840 PUNICODE_STRING DestinationString,
841 PUNICODE_STRING SourceString
842 );
843
844 BOOLEAN
845 STDCALL
846 RtlCreateUnicodeString(
847 PUNICODE_STRING DestinationString,
848 PCWSTR SourceString
849 );
850
851 NTSTATUS
852 STDCALL
853 RtlDowncaseUnicodeString(
854 IN OUT PUNICODE_STRING UniDest,
855 IN PUNICODE_STRING UniSource,
856 IN BOOLEAN AllocateDestinationString
857 );
858
859 NTSTATUS
860 STDCALL
861 RtlDuplicateUnicodeString(
862 IN INT AddNull,
863 IN PUNICODE_STRING SourceString,
864 OUT PUNICODE_STRING DestinationString
865 );
866
867 BOOLEAN
868 STDCALL
869 RtlEqualUnicodeString(
870 PCUNICODE_STRING String1,
871 PCUNICODE_STRING String2,
872 BOOLEAN CaseInsensitive
873 );
874
875 VOID
876 STDCALL
877 RtlFreeUnicodeString(IN PUNICODE_STRING UnicodeString);
878
879 NTSTATUS
880 STDCALL
881 RtlHashUnicodeString(
882 IN CONST UNICODE_STRING *String,
883 IN BOOLEAN CaseInSensitive,
884 IN ULONG HashAlgorithm,
885 OUT PULONG HashValue
886 );
887
888 VOID
889 STDCALL
890 RtlInitUnicodeString(
891 IN OUT PUNICODE_STRING DestinationString,
892 IN PCWSTR SourceString);
893
894 ULONG
895 STDCALL
896 RtlIsTextUnicode(
897 PVOID Buffer,
898 ULONG Length,
899 ULONG *Flags
900 );
901
902 BOOLEAN
903 STDCALL
904 RtlPrefixUnicodeString(
905 PUNICODE_STRING String1,
906 PUNICODE_STRING String2,
907 BOOLEAN CaseInsensitive
908 );
909
910 NTSTATUS
911 STDCALL
912 RtlUpcaseUnicodeString(
913 PUNICODE_STRING DestinationString,
914 PCUNICODE_STRING SourceString,
915 BOOLEAN AllocateDestinationString
916 );
917
918 NTSTATUS
919 STDCALL
920 RtlUnicodeStringToInteger(
921 PUNICODE_STRING String,
922 ULONG Base,
923 PULONG Value
924 );
925
926 /*
927 * Ansi String Functions
928 */
929 VOID
930 STDCALL
931 RtlFreeAnsiString(IN PANSI_STRING AnsiString);
932
933 VOID
934 STDCALL
935 RtlInitAnsiString(
936 PANSI_STRING DestinationString,
937 PCSZ SourceString
938 );
939
940 /*
941 * OEM String Functions
942 */
943 VOID
944 STDCALL
945 RtlFreeOemString(IN POEM_STRING OemString);
946
947 /*
948 * MultiByte->Unicode String Functions
949 */
950 NTSTATUS
951 STDCALL
952 RtlMultiByteToUnicodeN(
953 PWCHAR UnicodeString,
954 ULONG UnicodeSize,
955 PULONG ResultSize,
956 const PCHAR MbString,
957 ULONG MbSize
958 );
959
960 NTSTATUS
961 STDCALL
962 RtlMultiByteToUnicodeSize(
963 PULONG UnicodeSize,
964 PCHAR MbString,
965 ULONG MbSize
966 );
967
968 /*
969 * Atom Functions
970 */
971 NTSTATUS
972 STDCALL
973 RtlAddAtomToAtomTable(
974 IN PRTL_ATOM_TABLE AtomTable,
975 IN PWSTR AtomName,
976 OUT PRTL_ATOM Atom
977 );
978
979 NTSTATUS
980 STDCALL
981 RtlCreateAtomTable(
982 IN ULONG TableSize,
983 IN OUT PRTL_ATOM_TABLE *AtomTable
984 );
985
986 NTSTATUS
987 STDCALL
988 RtlDeleteAtomFromAtomTable(
989 IN PRTL_ATOM_TABLE AtomTable,
990 IN RTL_ATOM Atom
991 );
992
993 NTSTATUS
994 STDCALL
995 RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
996
997 NTSTATUS
998 STDCALL
999 RtlQueryAtomInAtomTable(
1000 IN PRTL_ATOM_TABLE AtomTable,
1001 IN RTL_ATOM Atom,
1002 IN OUT PULONG RefCount OPTIONAL,
1003 IN OUT PULONG PinCount OPTIONAL,
1004 IN OUT PWSTR AtomName OPTIONAL,
1005 IN OUT PULONG NameLength OPTIONAL
1006 );
1007
1008 NTSTATUS
1009 STDCALL
1010 RtlLookupAtomInAtomTable(
1011 IN PRTL_ATOM_TABLE AtomTable,
1012 IN PWSTR AtomName,
1013 OUT PRTL_ATOM Atom
1014 );
1015
1016 /*
1017 * Memory Functions
1018 */
1019 VOID
1020 STDCALL
1021 RtlFillMemoryUlong(
1022 IN PVOID Destination,
1023 IN ULONG Length,
1024 IN ULONG Fill
1025 );
1026
1027 /*
1028 * Process Management Functions
1029 */
1030 VOID
1031 STDCALL
1032 RtlAcquirePebLock(VOID);
1033
1034 NTSTATUS
1035 STDCALL
1036 RtlCreateProcessParameters (
1037 OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
1038 IN PUNICODE_STRING ImagePathName OPTIONAL,
1039 IN PUNICODE_STRING DllPath OPTIONAL,
1040 IN PUNICODE_STRING CurrentDirectory OPTIONAL,
1041 IN PUNICODE_STRING CommandLine OPTIONAL,
1042 IN PWSTR Environment OPTIONAL,
1043 IN PUNICODE_STRING WindowTitle OPTIONAL,
1044 IN PUNICODE_STRING DesktopInfo OPTIONAL,
1045 IN PUNICODE_STRING ShellInfo OPTIONAL,
1046 IN PUNICODE_STRING RuntimeInfo OPTIONAL
1047 );
1048
1049 NTSTATUS
1050 STDCALL
1051 RtlCreateUserProcess(
1052 IN PUNICODE_STRING ImageFileName,
1053 IN ULONG Attributes,
1054 IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
1055 IN PSECURITY_DESCRIPTOR ProcessSecutityDescriptor OPTIONAL,
1056 IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,
1057 IN HANDLE ParentProcess OPTIONAL,
1058 IN BOOLEAN CurrentDirectory,
1059 IN HANDLE DebugPort OPTIONAL,
1060 IN HANDLE ExceptionPort OPTIONAL,
1061 OUT PRTL_USER_PROCESS_INFORMATION ProcessInfo
1062 );
1063
1064 NTSTATUS
1065 STDCALL
1066 RtlCreateUserThread(
1067 IN HANDLE ProcessHandle,
1068 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
1069 IN BOOLEAN CreateSuspended,
1070 IN LONG StackZeroBits,
1071 IN ULONG StackReserve,
1072 IN ULONG StackCommit,
1073 IN PTHREAD_START_ROUTINE StartAddress,
1074 IN PVOID Parameter,
1075 IN OUT PHANDLE ThreadHandle,
1076 IN OUT PCLIENT_ID ClientId
1077 );
1078
1079 PRTL_USER_PROCESS_PARAMETERS
1080 STDCALL
1081 RtlDeNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1082
1083 NTSTATUS
1084 STDCALL
1085 RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1086
1087 VOID
1088 STDCALL
1089 RtlExitUserThread(NTSTATUS Status);
1090
1091 VOID
1092 STDCALL
1093 RtlInitializeContext(
1094 IN HANDLE ProcessHandle,
1095 OUT PCONTEXT ThreadContext,
1096 IN PVOID ThreadStartParam OPTIONAL,
1097 IN PTHREAD_START_ROUTINE ThreadStartAddress,
1098 IN PINITIAL_TEB InitialTeb
1099 );
1100
1101 PRTL_USER_PROCESS_PARAMETERS
1102 STDCALL
1103 RtlNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
1104
1105 VOID
1106 STDCALL
1107 RtlReleasePebLock(VOID);
1108
1109 /*
1110 * Environment/Path Functions
1111 */
1112 NTSTATUS
1113 STDCALL
1114 RtlCreateEnvironment(
1115 BOOLEAN Inherit,
1116 PWSTR *Environment
1117 );
1118
1119 VOID
1120 STDCALL
1121 RtlDestroyEnvironment(PWSTR Environment);
1122
1123 BOOLEAN
1124 STDCALL
1125 RtlDoesFileExists_U(PWSTR FileName);
1126
1127 ULONG
1128 STDCALL
1129 RtlDetermineDosPathNameType_U(PCWSTR Path);
1130
1131 ULONG
1132 STDCALL
1133 RtlDosSearchPath_U(
1134 WCHAR *sp,
1135 WCHAR *name,
1136 WCHAR *ext,
1137 ULONG buf_sz,
1138 WCHAR *buffer,
1139 WCHAR **shortname
1140 );
1141
1142 BOOLEAN
1143 STDCALL
1144 RtlDosPathNameToNtPathName_U(
1145 PWSTR DosName,
1146 PUNICODE_STRING NtName,
1147 PWSTR *ShortName,
1148 PCURDIR CurrentDirectory
1149 );
1150
1151 NTSTATUS
1152 STDCALL
1153 RtlExpandEnvironmentStrings_U(
1154 PWSTR Environment,
1155 PUNICODE_STRING Source,
1156 PUNICODE_STRING Destination,
1157 PULONG Length
1158 );
1159
1160 ULONG
1161 STDCALL
1162 RtlGetCurrentDirectory_U(
1163 ULONG MaximumLength,
1164 PWSTR Buffer
1165 );
1166
1167 ULONG
1168 STDCALL
1169 RtlGetFullPathName_U(
1170 const WCHAR *dosname,
1171 ULONG size,
1172 WCHAR *buf,
1173 WCHAR **shortname
1174 );
1175
1176 BOOLEAN
1177 STDCALL
1178 RtlIsNameLegalDOS8Dot3(
1179 IN PUNICODE_STRING UnicodeName,
1180 IN PANSI_STRING AnsiName,
1181 PBOOLEAN Unknown
1182 );
1183
1184 NTSTATUS
1185 STDCALL
1186 RtlQueryEnvironmentVariable_U(
1187 PWSTR Environment,
1188 PUNICODE_STRING Name,
1189 PUNICODE_STRING Value
1190 );
1191
1192 NTSTATUS
1193 STDCALL
1194 RtlSetCurrentDirectory_U(PUNICODE_STRING name);
1195
1196 NTSTATUS
1197 STDCALL
1198 RtlSetEnvironmentVariable(
1199 PWSTR *Environment,
1200 PUNICODE_STRING Name,
1201 PUNICODE_STRING Value
1202 );
1203
1204 /*
1205 * Critical Section/Resource Functions
1206 */
1207 NTSTATUS
1208 STDCALL
1209 RtlDeleteCriticalSection (
1210 IN PRTL_CRITICAL_SECTION CriticalSection
1211 );
1212
1213 NTSTATUS
1214 STDCALL
1215 RtlEnterCriticalSection(
1216 IN PRTL_CRITICAL_SECTION CriticalSection
1217 );
1218
1219 NTSTATUS
1220 STDCALL
1221 RtlInitializeCriticalSection(
1222 IN PRTL_CRITICAL_SECTION CriticalSection
1223 );
1224
1225 NTSTATUS
1226 STDCALL
1227 RtlInitializeCriticalSectionAndSpinCount(
1228 IN PRTL_CRITICAL_SECTION CriticalSection,
1229 IN ULONG SpinCount
1230 );
1231
1232 NTSTATUS
1233 STDCALL
1234 RtlLeaveCriticalSection(
1235 IN PRTL_CRITICAL_SECTION CriticalSection
1236 );
1237
1238 VOID
1239 STDCALL
1240 RtlpUnWaitCriticalSection(
1241 IN PRTL_CRITICAL_SECTION CriticalSection
1242 );
1243
1244 NTSTATUS
1245 STDCALL
1246 RtlpWaitForCriticalSection(
1247 IN PRTL_CRITICAL_SECTION CriticalSection
1248 );
1249
1250 BOOLEAN
1251 STDCALL
1252 RtlAcquireResourceExclusive(
1253 IN PRTL_RESOURCE Resource,
1254 IN BOOLEAN Wait
1255 );
1256
1257 BOOLEAN
1258 STDCALL
1259 RtlAcquireResourceShared(
1260 IN PRTL_RESOURCE Resource,
1261 IN BOOLEAN Wait
1262 );
1263
1264 VOID
1265 STDCALL
1266 RtlConvertExclusiveToShared(
1267 IN PRTL_RESOURCE Resource
1268 );
1269
1270 VOID
1271 STDCALL
1272 RtlConvertSharedToExclusive(
1273 IN PRTL_RESOURCE Resource
1274 );
1275
1276 VOID
1277 STDCALL
1278 RtlDeleteResource(
1279 IN PRTL_RESOURCE Resource
1280 );
1281
1282 VOID
1283 STDCALL
1284 RtlDumpResource(
1285 IN PRTL_RESOURCE Resource
1286 );
1287
1288 VOID
1289 STDCALL
1290 RtlInitializeResource(
1291 IN PRTL_RESOURCE Resource
1292 );
1293
1294 VOID
1295 STDCALL
1296 RtlReleaseResource(
1297 IN PRTL_RESOURCE Resource
1298 );
1299
1300 /*
1301 * Compression Functions
1302 */
1303 NTSTATUS
1304 STDCALL
1305 RtlCompressBuffer(
1306 IN USHORT CompressionFormatAndEngine,
1307 IN PUCHAR UncompressedBuffer,
1308 IN ULONG UncompressedBufferSize,
1309 OUT PUCHAR CompressedBuffer,
1310 IN ULONG CompressedBufferSize,
1311 IN ULONG UncompressedChunkSize,
1312 OUT PULONG FinalCompressedSize,
1313 IN PVOID WorkSpace
1314 );
1315
1316 NTSTATUS
1317 STDCALL
1318 RtlDecompressBuffer(
1319 IN USHORT CompressionFormat,
1320 OUT PUCHAR UncompressedBuffer,
1321 IN ULONG UncompressedBufferSize,
1322 IN PUCHAR CompressedBuffer,
1323 IN ULONG CompressedBufferSize,
1324 OUT PULONG FinalUncompressedSize
1325 );
1326
1327 NTSTATUS
1328 STDCALL
1329 RtlGetCompressionWorkSpaceSize(
1330 IN USHORT CompressionFormatAndEngine,
1331 OUT PULONG CompressBufferWorkSpaceSize,
1332 OUT PULONG CompressFragmentWorkSpaceSize
1333 );
1334
1335 /*
1336 * Debug Info Functions
1337 */
1338 PDEBUG_BUFFER
1339 STDCALL
1340 RtlCreateQueryDebugBuffer(
1341 IN ULONG Size,
1342 IN BOOLEAN EventPair
1343 );
1344
1345 NTSTATUS
1346 STDCALL
1347 RtlDestroyQueryDebugBuffer(IN PDEBUG_BUFFER DebugBuffer);
1348
1349 NTSTATUS
1350 STDCALL
1351 RtlQueryProcessDebugInformation(
1352 IN ULONG ProcessId,
1353 IN ULONG DebugInfoClassMask,
1354 IN OUT PDEBUG_BUFFER DebugBuffer
1355 );
1356
1357 /*
1358 * Bitmap Functions
1359 */
1360 BOOLEAN
1361 STDCALL
1362 RtlAreBitsClear(
1363 IN PRTL_BITMAP BitMapHeader,
1364 IN ULONG StartingIndex,
1365 IN ULONG Length
1366 );
1367
1368 BOOLEAN
1369 STDCALL
1370 RtlAreBitsSet(
1371 IN PRTL_BITMAP BitMapHeader,
1372 IN ULONG StartingIndex,
1373 IN ULONG Length
1374 );
1375
1376 VOID
1377 STDCALL
1378 RtlClearBits(
1379 IN PRTL_BITMAP BitMapHeader,
1380 IN ULONG StartingIndex,
1381 IN ULONG NumberToClear
1382 );
1383
1384 ULONG
1385 STDCALL
1386 RtlFindClearBits(
1387 IN PRTL_BITMAP BitMapHeader,
1388 IN ULONG NumberToFind,
1389 IN ULONG HintIndex
1390 );
1391
1392 ULONG
1393 STDCALL
1394 RtlFindClearBitsAndSet(
1395 IN PRTL_BITMAP BitMapHeader,
1396 IN ULONG NumberToFind,
1397 IN ULONG HintIndex
1398 );
1399
1400 VOID
1401 STDCALL
1402 RtlInitializeBitMap(
1403 IN PRTL_BITMAP BitMapHeader,
1404 IN PULONG BitMapBuffer,
1405 IN ULONG SizeOfBitMap
1406 );
1407
1408 VOID
1409 STDCALL
1410 RtlSetBits (
1411 IN PRTL_BITMAP BitMapHeader,
1412 IN ULONG StartingIndex,
1413 IN ULONG NumberToSet
1414 );
1415
1416 /*
1417 * Timer Functions
1418 */
1419 NTSTATUS
1420 STDCALL
1421 RtlCreateTimer(
1422 HANDLE TimerQueue,
1423 PHANDLE phNewTimer,
1424 WAITORTIMERCALLBACKFUNC Callback,
1425 PVOID Parameter,
1426 DWORD DueTime,
1427 DWORD Period,
1428 ULONG Flags
1429 );
1430
1431 NTSTATUS
1432 STDCALL
1433 RtlCreateTimerQueue(PHANDLE TimerQueue);
1434
1435 NTSTATUS
1436 STDCALL
1437 RtlDeleteTimer(
1438 HANDLE TimerQueue,
1439 HANDLE Timer,
1440 HANDLE CompletionEvent
1441 );
1442
1443 NTSTATUS
1444 STDCALL
1445 RtlUpdateTimer(
1446 HANDLE TimerQueue,
1447 HANDLE Timer,
1448 ULONG DueTime,
1449 ULONG Period
1450 );
1451
1452 NTSTATUS
1453 STDCALL
1454 RtlDeleteTimerQueueEx(
1455 HANDLE TimerQueue,
1456 HANDLE CompletionEvent
1457 );
1458
1459 NTSTATUS
1460 STDCALL
1461 RtlDeleteTimerQueue(HANDLE TimerQueue);
1462
1463 /*
1464 * Debug Functions
1465 */
1466 ULONG
1467 CDECL
1468 DbgPrint(
1469 IN PCH Format,
1470 IN ...
1471 );
1472
1473 VOID
1474 STDCALL
1475 DbgBreakPoint(VOID);
1476
1477 /*
1478 * Handle Table Functions
1479 */
1480 PRTL_HANDLE_TABLE_ENTRY
1481 STDCALL
1482 RtlAllocateHandle(
1483 IN PRTL_HANDLE_TABLE HandleTable,
1484 IN OUT PULONG Index
1485 );
1486
1487 VOID
1488 STDCALL
1489 RtlDestroyHandleTable(IN PRTL_HANDLE_TABLE HandleTable);
1490
1491 BOOLEAN
1492 STDCALL
1493 RtlFreeHandle(
1494 IN PRTL_HANDLE_TABLE HandleTable,
1495 IN PRTL_HANDLE_TABLE_ENTRY Handle
1496 );
1497
1498 VOID
1499 STDCALL
1500 RtlInitializeHandleTable(
1501 IN ULONG TableSize,
1502 IN ULONG HandleSize,
1503 IN PRTL_HANDLE_TABLE HandleTable
1504 );
1505
1506 BOOLEAN
1507 STDCALL
1508 RtlIsValidHandle(
1509 IN PRTL_HANDLE_TABLE HandleTable,
1510 IN PRTL_HANDLE_TABLE_ENTRY Handle
1511 );
1512
1513 BOOLEAN
1514 STDCALL
1515 RtlIsValidIndexHandle(
1516 IN PRTL_HANDLE_TABLE HandleTable,
1517 IN OUT PRTL_HANDLE_TABLE_ENTRY *Handle,
1518 IN ULONG Index
1519 );
1520
1521 /*
1522 * PE Functions
1523 */
1524 NTSTATUS
1525 STDCALL
1526 RtlFindMessage(
1527 IN PVOID BaseAddress,
1528 IN ULONG Type,
1529 IN ULONG Language,
1530 IN ULONG MessageId,
1531 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1532 );
1533
1534 ULONG
1535 STDCALL
1536 RtlGetNtGlobalFlags(VOID);
1537
1538 PVOID
1539 STDCALL
1540 RtlImageDirectoryEntryToData(
1541 PVOID BaseAddress,
1542 BOOLEAN bFlag,
1543 ULONG Directory,
1544 PULONG Size
1545 );
1546
1547 ULONG
1548 STDCALL
1549 RtlImageRvaToVa(
1550 PIMAGE_NT_HEADERS NtHeader,
1551 PVOID BaseAddress,
1552 ULONG Rva,
1553 PIMAGE_SECTION_HEADER *SectionHeader
1554 );
1555
1556 PIMAGE_NT_HEADERS
1557 STDCALL
1558 RtlImageNtHeader(IN PVOID BaseAddress);
1559
1560 PIMAGE_SECTION_HEADER
1561 STDCALL
1562 RtlImageRvaToSection(
1563 PIMAGE_NT_HEADERS NtHeader,
1564 PVOID BaseAddress,
1565 ULONG Rva
1566 );
1567
1568 /*
1569 * Registry Functions
1570 */
1571 NTSTATUS
1572 STDCALL
1573 RtlCheckRegistryKey(
1574 ULONG RelativeTo,
1575 PWSTR Path
1576 );
1577
1578 NTSTATUS
1579 STDCALL
1580 RtlFormatCurrentUserKeyPath(IN OUT PUNICODE_STRING KeyPath);
1581
1582 NTSTATUS
1583 STDCALL
1584 RtlpNtOpenKey(
1585 OUT HANDLE KeyHandle,
1586 IN ACCESS_MASK DesiredAccess,
1587 IN POBJECT_ATTRIBUTES ObjectAttributes,
1588 IN ULONG Unused
1589 );
1590
1591 NTSTATUS
1592 STDCALL
1593 RtlOpenCurrentUser(
1594 IN ACCESS_MASK DesiredAccess,
1595 OUT PHANDLE KeyHandle
1596 );
1597
1598 NTSTATUS
1599 STDCALL
1600 RtlQueryRegistryValues(
1601 IN ULONG RelativeTo,
1602 IN PCWSTR Path,
1603 IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
1604 IN PVOID Context,
1605 IN PVOID Environment
1606 );
1607
1608 NTSTATUS
1609 STDCALL
1610 RtlWriteRegistryValue(
1611 ULONG RelativeTo,
1612 PCWSTR Path,
1613 PCWSTR ValueName,
1614 ULONG ValueType,
1615 PVOID ValueData,
1616 ULONG ValueLength
1617 );
1618
1619 /*
1620 * NLS Functions
1621 */
1622 VOID
1623 STDCALL
1624 RtlInitNlsTables(
1625 IN PUSHORT AnsiTableBase,
1626 IN PUSHORT OemTableBase,
1627 IN PUSHORT CaseTableBase,
1628 OUT PNLSTABLEINFO NlsTable
1629 );
1630
1631 VOID
1632 STDCALL
1633 RtlInitCodePageTable(
1634 IN PUSHORT TableBase,
1635 OUT PCPTABLEINFO CodePageTable
1636 );
1637
1638 VOID
1639 STDCALL
1640 RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable);
1641
1642 /*
1643 * Misc conversion functions
1644 */
1645 LARGE_INTEGER
1646 STDCALL
1647 RtlConvertLongToLargeInteger(IN LONG SignedInteger);
1648
1649 LARGE_INTEGER
1650 STDCALL
1651 RtlEnlargedIntegerMultiply(
1652 LONG Multiplicand,
1653 LONG Multiplier
1654 );
1655
1656 ULONG
1657 STDCALL
1658 RtlEnlargedUnsignedDivide(
1659 ULARGE_INTEGER Dividend,
1660 ULONG Divisor,
1661 PULONG Remainder
1662 );
1663
1664 LARGE_INTEGER
1665 STDCALL
1666 RtlEnlargedUnsignedMultiply(
1667 ULONG Multiplicand,
1668 ULONG Multiplier
1669 );
1670
1671 ULONG
1672 STDCALL
1673 RtlUniform(PULONG Seed);
1674
1675 /*
1676 * Time Functions
1677 */
1678 NTSTATUS
1679 STDCALL
1680 RtlQueryTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
1681
1682 VOID
1683 STDCALL
1684 RtlSecondsSince1970ToTime(
1685 IN ULONG SecondsSince1970,
1686 OUT PLARGE_INTEGER Time
1687 );
1688
1689 NTSTATUS
1690 STDCALL
1691 RtlSetTimeZoneInformation(LPTIME_ZONE_INFORMATION TimeZoneInformation);
1692
1693 BOOLEAN
1694 STDCALL
1695 RtlTimeFieldsToTime(
1696 PTIME_FIELDS TimeFields,
1697 PLARGE_INTEGER Time
1698 );
1699
1700 VOID
1701 STDCALL
1702 RtlTimeToTimeFields(
1703 PLARGE_INTEGER Time,
1704 PTIME_FIELDS TimeFields
1705 );
1706
1707 /*
1708 * Version Functions
1709 */
1710 NTSTATUS
1711 STDCALL
1712 RtlVerifyVersionInfo(
1713 IN PRTL_OSVERSIONINFOEXW VersionInfo,
1714 IN ULONG TypeMask,
1715 IN ULONGLONG ConditionMask
1716 );
1717
1718 NTSTATUS
1719 STDCALL
1720 RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
1721
1722 #endif