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