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