make usb miniports not to use old header
[reactos.git] / reactos / include / ntos / rtl.h
1 /* $Id$
2 *
3 */
4 #ifndef __DDK_RTL_H
5 #define __DDK_RTL_H
6
7 /* RTLP Functions */
8 #include <rosrtl/string.h>
9
10 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined (__NTAPP__)
11
12 #include <stddef.h>
13 #include <stdarg.h>
14
15 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
16
17 #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
18 #define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
19
20 #ifndef __USE_W32API
21
22 /*
23 * PURPOSE: Flags for RtlQueryRegistryValues
24 */
25 #define RTL_QUERY_REGISTRY_SUBKEY (0x00000001)
26 #define RTL_QUERY_REGISTRY_TOPKEY (0x00000002)
27 #define RTL_QUERY_REGISTRY_REQUIRED (0x00000004)
28 #define RTL_QUERY_REGISTRY_NOVALUE (0x00000008)
29 #define RTL_QUERY_REGISTRY_NOEXPAND (0x00000010)
30 #define RTL_QUERY_REGISTRY_DIRECT (0x00000020)
31 #define RTL_QUERY_REGISTRY_DELETE (0x00000040)
32
33
34 /*
35 * PURPOSE: Flags used by RtlIsTextUnicode and IsTextUnicode
36 */
37 #define IS_TEXT_UNICODE_ASCII16 (0x00000001)
38 #define IS_TEXT_UNICODE_REVERSE_ASCII16 (0x00000010)
39 #define IS_TEXT_UNICODE_STATISTICS (0x00000002)
40 #define IS_TEXT_UNICODE_REVERSE_STATISTICS (0x00000020)
41 #define IS_TEXT_UNICODE_CONTROLS (0x00000004)
42 #define IS_TEXT_UNICODE_REVERSE_CONTROLS (0x00000040)
43 #define IS_TEXT_UNICODE_SIGNATURE (0x00000008)
44 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE (0x00000080)
45 #define IS_TEXT_UNICODE_ILLEGAL_CHARS (0x00000100)
46 #define IS_TEXT_UNICODE_ODD_LENGTH (0x00000200)
47 #define IS_TEXT_UNICODE_NULL_BYTES (0x00001000)
48 #define IS_TEXT_UNICODE_UNICODE_MASK (0x0000000F)
49 #define IS_TEXT_UNICODE_REVERSE_MASK (0x000000F0)
50 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK (0x00000F00)
51 #define IS_TEXT_UNICODE_NOT_ASCII_MASK (0x0000F000)
52
53 /*
54 * VOID
55 * InitializeObjectAttributes (
56 * POBJECT_ATTRIBUTES InitializedAttributes,
57 * PUNICODE_STRING ObjectName,
58 * ULONG Attributes,
59 * HANDLE RootDirectory,
60 * PSECURITY_DESCRIPTOR SecurityDescriptor
61 * );
62 *
63 * FUNCTION: Sets up a parameter of type OBJECT_ATTRIBUTES for a
64 * subsequent call to ZwCreateXXX or ZwOpenXXX
65 * ARGUMENTS:
66 * InitializedAttributes (OUT) = Caller supplied storage for the
67 * object attributes
68 * ObjectName = Full path name for object
69 * Attributes = Attributes for the object
70 * RootDirectory = Where the object should be placed or NULL
71 * SecurityDescriptor = Ignored
72 */
73 #define InitializeObjectAttributes(p,n,a,r,s) \
74 { \
75 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
76 (p)->ObjectName = n; \
77 (p)->Attributes = a; \
78 (p)->RootDirectory = r; \
79 (p)->SecurityDescriptor = s; \
80 (p)->SecurityQualityOfService = NULL; \
81 }
82
83
84 /*
85 * VOID
86 * InitializeListHead (
87 * PLIST_ENTRY ListHead
88 * );
89 *
90 * FUNCTION: Initializes a double linked list
91 * ARGUMENTS:
92 * ListHead = Caller supplied storage for the head of the list
93 */
94 static __inline VOID
95 InitializeListHead(
96 IN PLIST_ENTRY ListHead)
97 {
98 ListHead->Flink = ListHead->Blink = ListHead;
99 }
100
101
102 /*
103 * VOID
104 * InsertHeadList (
105 * PLIST_ENTRY ListHead,
106 * PLIST_ENTRY Entry
107 * );
108 *
109 * FUNCTION: Inserts an entry in a double linked list
110 * ARGUMENTS:
111 * ListHead = Head of the list
112 * Entry = Entry to insert
113 */
114 static __inline VOID
115 InsertHeadList(
116 IN PLIST_ENTRY ListHead,
117 IN PLIST_ENTRY Entry)
118 {
119 PLIST_ENTRY OldFlink;
120 OldFlink = ListHead->Flink;
121 Entry->Flink = OldFlink;
122 Entry->Blink = ListHead;
123 OldFlink->Blink = Entry;
124 ListHead->Flink = Entry;
125 }
126
127
128 /*
129 * VOID
130 * InsertTailList (
131 * PLIST_ENTRY ListHead,
132 * PLIST_ENTRY Entry
133 * );
134 *
135 * FUNCTION:
136 * Inserts an entry in a double linked list
137 *
138 * ARGUMENTS:
139 * ListHead = Head of the list
140 * Entry = Entry to insert
141 */
142 static __inline VOID
143 InsertTailList(
144 IN PLIST_ENTRY ListHead,
145 IN PLIST_ENTRY Entry)
146 {
147 PLIST_ENTRY OldBlink;
148 OldBlink = ListHead->Blink;
149 Entry->Flink = ListHead;
150 Entry->Blink = OldBlink;
151 OldBlink->Flink = Entry;
152 ListHead->Blink = Entry;
153 }
154
155 /*
156 * BOOLEAN
157 * IsListEmpty (
158 * PLIST_ENTRY ListHead
159 * );
160 *
161 * FUNCTION:
162 * Checks if a double linked list is empty
163 *
164 * ARGUMENTS:
165 * ListHead = Head of the list
166 */
167 #define IsListEmpty(ListHead) \
168 ((ListHead)->Flink == (ListHead))
169
170
171 /*
172 * PSINGLE_LIST_ENTRY
173 * PopEntryList (
174 * PSINGLE_LIST_ENTRY ListHead
175 * );
176 *
177 * FUNCTION:
178 * Removes an entry from the head of a single linked list
179 *
180 * ARGUMENTS:
181 * ListHead = Head of the list
182 *
183 * RETURNS:
184 * The removed entry
185 */
186 #define PopEntryList(ListHead) \
187 (ListHead)->Next; \
188 { \
189 PSINGLE_LIST_ENTRY _FirstEntry; \
190 _FirstEntry = (ListHead)->Next; \
191 if (_FirstEntry != NULL) \
192 (ListHead)->Next = _FirstEntry->Next; \
193 }
194
195 #define RtlCopyMemory(Destination,Source,Length) \
196 memcpy((Destination),(Source),(Length))
197
198 #define PushEntryList(_ListHead, _Entry) \
199 (_Entry)->Next = (_ListHead)->Next; \
200 (_ListHead)->Next = (_Entry); \
201
202 /*
203 *BOOLEAN
204 *RemoveEntryList (
205 * PLIST_ENTRY Entry
206 * );
207 *
208 * FUNCTION:
209 * Removes an entry from a double linked list
210 *
211 * ARGUMENTS:
212 * ListEntry = Entry to remove
213 */
214 static __inline BOOLEAN
215 RemoveEntryList(
216 IN PLIST_ENTRY Entry)
217 {
218 PLIST_ENTRY OldFlink;
219 PLIST_ENTRY OldBlink;
220
221 OldFlink = Entry->Flink;
222 OldBlink = Entry->Blink;
223 OldFlink->Blink = OldBlink;
224 OldBlink->Flink = OldFlink;
225 return (OldFlink == OldBlink);
226 }
227
228
229 /*
230 * PLIST_ENTRY
231 * RemoveHeadList (
232 * PLIST_ENTRY ListHead
233 * );
234 *
235 * FUNCTION:
236 * Removes the head entry from a double linked list
237 *
238 * ARGUMENTS:
239 * ListHead = Head of the list
240 *
241 * RETURNS:
242 * The removed entry
243 */
244 static __inline PLIST_ENTRY
245 RemoveHeadList(
246 IN PLIST_ENTRY ListHead)
247 {
248 PLIST_ENTRY Flink;
249 PLIST_ENTRY Entry;
250
251 Entry = ListHead->Flink;
252 Flink = Entry->Flink;
253 ListHead->Flink = Flink;
254 Flink->Blink = ListHead;
255 return Entry;
256 }
257
258
259 /*
260 * PLIST_ENTRY
261 * RemoveTailList (
262 * PLIST_ENTRY ListHead
263 * );
264 *
265 * FUNCTION:
266 * Removes the tail entry from a double linked list
267 *
268 * ARGUMENTS:
269 * ListHead = Head of the list
270 *
271 * RETURNS:
272 * The removed entry
273 */
274 static __inline PLIST_ENTRY
275 RemoveTailList(
276 IN PLIST_ENTRY ListHead)
277 {
278 PLIST_ENTRY Blink;
279 PLIST_ENTRY Entry;
280
281 Entry = ListHead->Blink;
282 Blink = Entry->Blink;
283 ListHead->Blink = Blink;
284 Blink->Flink = ListHead;
285 return Entry;
286 }
287
288 /*
289 * BOOLEAN
290 * IsXstEntry (
291 * PLIST_ENTRY ListHead,
292 * PLIST_ENTRY Entry
293 * );
294 */
295 #define IsFirstEntry(ListHead, Entry) ((ListHead)->Flink == Entry)
296
297 #define IsLastEntry(ListHead, Entry) ((ListHead)->Blink == Entry)
298
299 #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination), (Source), (Length)))
300
301 NTSTATUS
302 STDCALL
303 RtlCreateUserThread (
304 IN HANDLE ProcessHandle,
305 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
306 IN BOOLEAN CreateSuspended,
307 IN LONG StackZeroBits,
308 IN OUT PULONG StackReserve,
309 IN OUT PULONG StackCommit,
310 IN PTHREAD_START_ROUTINE StartAddress,
311 IN PVOID Parameter,
312 IN OUT PHANDLE ThreadHandle,
313 IN OUT PCLIENT_ID ClientId
314 );
315
316 NTSTATUS
317 STDCALL
318 RtlAppendUnicodeToString (
319 PUNICODE_STRING Destination,
320 PCWSTR Source
321 );
322
323 SIZE_T STDCALL
324 RtlCompareMemory(IN const VOID *Source1,
325 IN const VOID *Source2,
326 IN SIZE_T Length);
327
328 BOOLEAN
329 STDCALL
330 RtlEqualUnicodeString (
331 PUNICODE_STRING String1,
332 PUNICODE_STRING String2,
333 BOOLEAN CaseInSensitive
334 );
335
336 NTSTATUS
337 STDCALL
338 RtlQueryRegistryValues (
339 IN ULONG RelativeTo,
340 IN PCWSTR Path,
341 IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
342 IN PVOID Context,
343 IN PVOID Environment
344 );
345
346 NTSTATUS
347 STDCALL
348 RtlWriteRegistryValue (
349 ULONG RelativeTo,
350 PCWSTR Path,
351 PCWSTR ValueName,
352 ULONG ValueType,
353 PVOID ValueData,
354 ULONG ValueLength
355 );
356
357 NTSTATUS STDCALL
358 RtlDeleteRegistryValue(IN ULONG RelativeTo,
359 IN PCWSTR Path,
360 IN PCWSTR ValueName);
361
362 VOID STDCALL
363 RtlMoveMemory (PVOID Destination, CONST VOID* Source, ULONG Length);
364
365 BOOLEAN STDCALL
366 RtlEqualLuid(IN PLUID Luid1,
367 IN PLUID Luid2);
368
369 VOID
370 STDCALL
371 RtlFillMemory (
372 PVOID Destination,
373 ULONG Length,
374 UCHAR Fill
375 );
376
377 VOID STDCALL
378 RtlZeroMemory (PVOID Destination, ULONG Length);
379
380 #else /* __USE_W32API */
381
382 #include <ddk/ntifs.h>
383
384 #endif /* __USE_W32API */
385
386 /*
387 * FIFO versions are slower but ensures that entries with equal SortField value
388 * are placed in FIFO order (assuming that entries are removed from Head).
389 */
390
391 #define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
392 {\
393 PLIST_ENTRY current;\
394 \
395 current = (ListHead)->Flink;\
396 while (current != (ListHead))\
397 {\
398 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
399 (NewEntry)->SortField)\
400 {\
401 break;\
402 }\
403 current = current->Flink;\
404 }\
405 \
406 InsertTailList(current, &((NewEntry)->ListEntryField));\
407 }
408
409
410 #define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
411 {\
412 PLIST_ENTRY current;\
413 \
414 current = (ListHead)->Flink;\
415 while (current != (ListHead))\
416 {\
417 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
418 (NewEntry)->SortField)\
419 {\
420 break;\
421 }\
422 current = current->Flink;\
423 }\
424 \
425 InsertTailList(current, &((NewEntry)->ListEntryField));\
426 }
427
428
429 #define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
430 {\
431 PLIST_ENTRY current;\
432 \
433 current = (ListHead)->Flink;\
434 while (current != (ListHead))\
435 {\
436 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
437 (NewEntry)->SortField)\
438 {\
439 break;\
440 }\
441 current = current->Flink;\
442 }\
443 \
444 InsertTailList(current, &((NewEntry)->ListEntryField));\
445 }
446
447
448 #define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
449 {\
450 PLIST_ENTRY current;\
451 \
452 current = (ListHead)->Flink;\
453 while (current != (ListHead))\
454 {\
455 if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
456 (NewEntry)->SortField)\
457 {\
458 break;\
459 }\
460 current = current->Flink;\
461 }\
462 \
463 InsertTailList(current, &((NewEntry)->ListEntryField));\
464 }
465
466 /*
467 * PURPOSE: Used with RtlCheckRegistryKey, RtlCreateRegistryKey,
468 * RtlDeleteRegistryKey
469 */
470 #define RTL_REGISTRY_ABSOLUTE 0
471 #define RTL_REGISTRY_SERVICES 1
472 #define RTL_REGISTRY_CONTROL 2
473 #define RTL_REGISTRY_WINDOWS_NT 3
474 #define RTL_REGISTRY_DEVICEMAP 4
475 #define RTL_REGISTRY_USER 5
476 #define RTL_REGISTRY_MAXIMUM 6
477
478 #define RTL_REGISTRY_HANDLE 0x40000000
479 #define RTL_REGISTRY_OPTIONAL 0x80000000
480
481
482 #define SHORT_SIZE (sizeof(USHORT))
483 #define SHORT_MASK (SHORT_SIZE-1)
484 #define LOWBYTE_MASK 0x00FF
485
486 #define FIRSTBYTE(Value) ((Value) & LOWBYTE_MASK)
487 #define SECONDBYTE(Value) (((Value) >> 8) & LOWBYTE_MASK)
488 #define THIRDBYTE(Value) (((Value) >> 16) & LOWBYTE_MASK)
489 #define FOURTHBYTE(Value) (((Value) >> 24) & LOWBYTE_MASK)
490
491 /* FIXME: reverse byte-order on big-endian machines (e.g. MIPS) */
492 #define SHORT_LEAST_SIGNIFICANT_BIT 0
493 #define SHORT_MOST_SIGNIFICANT_BIT 1
494
495 #define LONG_LEAST_SIGNIFICANT_BIT 0
496 #define LONG_3RD_MOST_SIGNIFICANT_BIT 1
497 #define LONG_2RD_MOST_SIGNIFICANT_BIT 2
498 #define LONG_MOST_SIGNIFICANT_BIT 3
499
500
501 #define NLS_ANSI_CODE_PAGE NlsAnsiCodePage
502 #define NLS_LEAD_BYTE_INFO NlsLeadByteInfo
503 #define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
504 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
505
506 #if defined(__NTOSKRNL__) || defined(__NTDLL__)
507 extern USHORT EXPORTED NlsAnsiCodePage;
508 extern PUSHORT EXPORTED NlsLeadByteInfo;
509 extern BOOLEAN EXPORTED NlsMbCodePageTag;
510 extern BOOLEAN EXPORTED NlsMbOemCodePageTag;
511 extern PUSHORT EXPORTED NlsOemLeadByteInfo;
512 #else
513 extern USHORT IMPORTED NlsAnsiCodePage;
514 extern PUSHORT IMPORTED NlsLeadByteInfo;
515 extern BOOLEAN IMPORTED NlsMbCodePageTag;
516 extern BOOLEAN IMPORTED NlsMbOemCodePageTag;
517 extern PUSHORT IMPORTED NlsOemLeadByteInfo;
518 #endif /* __NTOSKRNL__ || __NTDLL__ */
519
520 /*
521 VOID
522 PushEntryList (
523 PSINGLE_LIST_ENTRY ListHead,
524 PSINGLE_LIST_ENTRY Entry
525 );
526 */
527 /*
528 #define PushEntryList(ListHead,Entry) \
529 (Entry)->Next = (ListHead)->Next; \
530 (ListHead)->Next = (Entry)
531 */
532
533
534 NTSTATUS STDCALL
535 RtlAbsoluteToSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
536 PSECURITY_DESCRIPTOR_RELATIVE RelSD,
537 PULONG BufferLength);
538
539 NTSTATUS STDCALL
540 RtlAddAccessAllowedAce (PACL Acl,
541 ULONG Revision,
542 ACCESS_MASK AccessMask,
543 PSID Sid);
544
545 NTSTATUS
546 STDCALL
547 RtlAddAccessAllowedAceEx(
548 IN OUT PACL pAcl,
549 IN DWORD dwAceRevision,
550 IN DWORD AceFlags,
551 IN DWORD AccessMask,
552 IN PSID pSid);
553
554
555 NTSTATUS STDCALL
556 RtlAddAccessDeniedAce (PACL Acl,
557 ULONG Revision,
558 ACCESS_MASK AccessMask,
559 PSID Sid);
560
561 NTSTATUS STDCALL
562 RtlAddAce (PACL Acl,
563 ULONG Revision,
564 ULONG StartingIndex,
565 PACE AceList,
566 ULONG AceListLength);
567
568 NTSTATUS STDCALL
569 RtlAddAtomToAtomTable (IN PRTL_ATOM_TABLE AtomTable,
570 IN PWSTR AtomName,
571 OUT PRTL_ATOM Atom);
572
573 NTSTATUS STDCALL
574 RtlAddAuditAccessAce (PACL Acl,
575 ULONG Revision,
576 ACCESS_MASK AccessMask,
577 PSID Sid,
578 BOOLEAN Success,
579 BOOLEAN Failure);
580
581 NTSTATUS STDCALL
582 RtlAddRange (IN OUT PRTL_RANGE_LIST RangeList,
583 IN ULONGLONG Start,
584 IN ULONGLONG End,
585 IN UCHAR Attributes,
586 IN ULONG Flags, /* RTL_RANGE_LIST_ADD_... flags */
587 IN PVOID UserData OPTIONAL,
588 IN PVOID Owner OPTIONAL);
589
590 NTSTATUS STDCALL
591 RtlAllocateAndInitializeSid (IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
592 IN UCHAR SubAuthorityCount,
593 IN ULONG SubAuthority0,
594 IN ULONG SubAuthority1,
595 IN ULONG SubAuthority2,
596 IN ULONG SubAuthority3,
597 IN ULONG SubAuthority4,
598 IN ULONG SubAuthority5,
599 IN ULONG SubAuthority6,
600 IN ULONG SubAuthority7,
601 OUT PSID *Sid);
602
603 PVOID STDCALL
604 RtlAllocateHeap (
605 HANDLE Heap,
606 ULONG Flags,
607 ULONG Size
608 );
609
610 WCHAR STDCALL
611 RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar);
612
613 ULONG
614 STDCALL
615 RtlAnsiStringToUnicodeSize (
616 PANSI_STRING AnsiString
617 );
618
619 NTSTATUS
620 STDCALL
621 RtlAnsiStringToUnicodeString (
622 PUNICODE_STRING DestinationString,
623 PANSI_STRING SourceString,
624 BOOLEAN AllocateDestinationString
625 );
626
627 NTSTATUS
628 STDCALL
629 RtlAppendAsciizToString(
630 PSTRING Destination,
631 PCSZ Source
632 );
633
634 NTSTATUS
635 STDCALL
636 RtlAppendStringToString (
637 PSTRING Destination,
638 PSTRING Source
639 );
640
641 NTSTATUS
642 STDCALL
643 RtlAppendUnicodeStringToString (
644 PUNICODE_STRING Destination,
645 PUNICODE_STRING Source
646 );
647
648 BOOLEAN STDCALL
649 RtlAreAllAccessesGranted (ACCESS_MASK GrantedAccess,
650 ACCESS_MASK DesiredAccess);
651
652 BOOLEAN STDCALL
653 RtlAreAnyAccessesGranted (ACCESS_MASK GrantedAccess,
654 ACCESS_MASK DesiredAccess);
655
656 BOOLEAN
657 STDCALL
658 RtlAreBitsClear (
659 PRTL_BITMAP BitMapHeader,
660 ULONG StartingIndex,
661 ULONG Length
662 );
663
664 BOOLEAN
665 STDCALL
666 RtlAreBitsSet (
667 PRTL_BITMAP BitMapHeader,
668 ULONG StartingIndex,
669 ULONG Length
670 );
671
672 VOID
673 STDCALL
674 RtlAssert (
675 PVOID FailedAssertion,
676 PVOID FileName,
677 ULONG LineNumber,
678 PCHAR Message
679 );
680
681 VOID
682 STDCALL
683 RtlCaptureContext (
684 OUT PCONTEXT ContextRecord
685 );
686
687 USHORT
688 STDCALL
689 RtlCaptureStackBackTrace (
690 IN ULONG FramesToSkip,
691 IN ULONG FramesToCapture,
692 OUT PVOID *BackTrace,
693 OUT PULONG BackTraceHash OPTIONAL
694 );
695
696
697
698 NTSTATUS
699 STDCALL
700 RtlCharToInteger (
701 PCSZ String,
702 ULONG Base,
703 PULONG Value
704 );
705
706 NTSTATUS
707 STDCALL
708 RtlCheckRegistryKey (
709 ULONG RelativeTo,
710 PWSTR Path
711 );
712
713 VOID
714 STDCALL
715 RtlClearAllBits (
716 IN PRTL_BITMAP BitMapHeader
717 );
718
719 VOID
720 STDCALL
721 RtlClearBit (
722 PRTL_BITMAP BitMapHeader,
723 ULONG BitNumber
724 );
725
726 VOID
727 STDCALL
728 RtlClearBits (
729 IN PRTL_BITMAP BitMapHeader,
730 IN ULONG StartingIndex,
731 IN ULONG NumberToClear
732 );
733
734 ULONG STDCALL
735 RtlCompactHeap (
736 HANDLE Heap,
737 ULONG Flags
738 );
739
740 LONG
741 STDCALL
742 RtlCompareString (
743 PSTRING String1,
744 PSTRING String2,
745 BOOLEAN CaseInsensitive
746 );
747
748 LONG
749 STDCALL
750 RtlCompareUnicodeString (
751 PUNICODE_STRING String1,
752 PUNICODE_STRING String2,
753 BOOLEAN CaseInsensitive
754 );
755
756 NTSTATUS STDCALL
757 RtlCompressBuffer(IN USHORT CompressionFormatAndEngine,
758 IN PUCHAR UncompressedBuffer,
759 IN ULONG UncompressedBufferSize,
760 OUT PUCHAR CompressedBuffer,
761 IN ULONG CompressedBufferSize,
762 IN ULONG UncompressedChunkSize,
763 OUT PULONG FinalCompressedSize,
764 IN PVOID WorkSpace);
765
766 NTSTATUS STDCALL
767 RtlCompressChunks(IN PUCHAR UncompressedBuffer,
768 IN ULONG UncompressedBufferSize,
769 OUT PUCHAR CompressedBuffer,
770 IN ULONG CompressedBufferSize,
771 IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo,
772 IN ULONG CompressedDataInfoLength,
773 IN PVOID WorkSpace);
774
775 LARGE_INTEGER STDCALL
776 RtlConvertLongToLargeInteger (IN LONG SignedInteger);
777
778 NTSTATUS STDCALL
779 RtlConvertSidToUnicodeString (IN OUT PUNICODE_STRING String,
780 IN PSID Sid,
781 IN BOOLEAN AllocateString);
782
783 LARGE_INTEGER STDCALL
784 RtlConvertUlongToLargeInteger (IN ULONG UnsignedInteger);
785
786 #if 0
787 VOID
788 RtlCopyBytes (
789 PVOID Destination,
790 CONST VOID * Source,
791 ULONG Length
792 );
793
794 VOID
795 RtlCopyMemory (
796 VOID * Destination,
797 CONST VOID * Source,
798 ULONG Length
799 );
800 #endif
801
802 #define RtlCopyBytes RtlCopyMemory
803
804 VOID STDCALL
805 RtlCopyLuid(IN PLUID LuidDest,
806 IN PLUID LuidSrc);
807
808 VOID STDCALL
809 RtlCopyLuidAndAttributesArray(ULONG Count,
810 PLUID_AND_ATTRIBUTES Src,
811 PLUID_AND_ATTRIBUTES Dest);
812
813 NTSTATUS STDCALL
814 RtlCopyRangeList (OUT PRTL_RANGE_LIST CopyRangeList,
815 IN PRTL_RANGE_LIST RangeList);
816
817 NTSTATUS STDCALL
818 RtlCopySid(ULONG BufferLength,
819 PSID Dest,
820 PSID Src);
821
822 NTSTATUS STDCALL
823 RtlCopySidAndAttributesArray(ULONG Count,
824 PSID_AND_ATTRIBUTES Src,
825 ULONG SidAreaSize,
826 PSID_AND_ATTRIBUTES Dest,
827 PVOID SidArea,
828 PVOID* RemainingSidArea,
829 PULONG RemainingSidAreaSize);
830
831 VOID STDCALL
832 RtlCopyString(PSTRING DestinationString,
833 PSTRING SourceString);
834
835 VOID STDCALL
836 RtlCopyUnicodeString(PUNICODE_STRING DestinationString,
837 PUNICODE_STRING SourceString);
838
839 NTSTATUS STDCALL
840 RtlCreateAcl (PACL Acl,
841 ULONG AclSize,
842 ULONG AclRevision);
843
844 NTSTATUS STDCALL
845 RtlCreateAtomTable(IN ULONG TableSize,
846 IN OUT PRTL_ATOM_TABLE *AtomTable);
847
848 HANDLE
849 STDCALL
850 RtlCreateHeap (
851 ULONG Flags,
852 PVOID BaseAddress,
853 ULONG SizeToReserve, /* dwMaximumSize */
854 ULONG SizeToCommit, /* dwInitialSize */
855 PVOID Unknown,
856 PRTL_HEAP_DEFINITION Definition
857 );
858
859 NTSTATUS STDCALL
860 RtlCreateRegistryKey (ULONG RelativeTo,
861 PWSTR Path);
862
863 NTSTATUS STDCALL
864 RtlCreateSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
865 ULONG Revision);
866
867 NTSTATUS STDCALL
868 RtlCreateSecurityDescriptorRelative (PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
869 ULONG Revision);
870
871 NTSTATUS
872 STDCALL
873 RtlCreateSystemVolumeInformationFolder(
874 IN PUNICODE_STRING VolumeRootPath
875 );
876
877 BOOLEAN STDCALL
878 RtlCreateUnicodeString (OUT PUNICODE_STRING Destination,
879 IN PCWSTR Source);
880
881 BOOLEAN STDCALL
882 RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
883 IN PCSZ Source);
884
885 NTSTATUS
886 STDCALL
887 RtlCustomCPToUnicodeN (
888 IN PCPTABLEINFO CustomCP,
889 PWCHAR UnicodeString,
890 ULONG UnicodeSize,
891 PULONG ResultSize,
892 PCHAR CustomString,
893 ULONG CustomSize
894 );
895
896 BOOLEAN STDCALL
897 RtlCutoverTimeToSystemTime(IN PTIME_FIELDS CutoverTimeFields,
898 OUT PLARGE_INTEGER SystemTime,
899 IN PLARGE_INTEGER CurrentTime,
900 IN BOOLEAN ThisYearsCutoverOnly);
901
902 NTSTATUS STDCALL
903 RtlDecompressBuffer(IN USHORT CompressionFormat,
904 OUT PUCHAR UncompressedBuffer,
905 IN ULONG UncompressedBufferSize,
906 IN PUCHAR CompressedBuffer,
907 IN ULONG CompressedBufferSize,
908 OUT PULONG FinalUncompressedSize);
909
910 NTSTATUS STDCALL
911 RtlDecompressChunks(OUT PUCHAR UncompressedBuffer,
912 IN ULONG UncompressedBufferSize,
913 IN PUCHAR CompressedBuffer,
914 IN ULONG CompressedBufferSize,
915 IN PUCHAR CompressedTail,
916 IN ULONG CompressedTailSize,
917 IN PCOMPRESSED_DATA_INFO CompressedDataInfo);
918
919 NTSTATUS STDCALL
920 RtlDecompressFragment(IN USHORT CompressionFormat,
921 OUT PUCHAR UncompressedFragment,
922 IN ULONG UncompressedFragmentSize,
923 IN PUCHAR CompressedBuffer,
924 IN ULONG CompressedBufferSize,
925 IN ULONG FragmentOffset,
926 OUT PULONG FinalUncompressedSize,
927 IN PVOID WorkSpace);
928
929 PRTL_SPLAY_LINKS
930 STDCALL
931 RtlDelete (
932 PRTL_SPLAY_LINKS Links
933 );
934
935 NTSTATUS STDCALL
936 RtlDeleteAce (PACL Acl,
937 ULONG AceIndex);
938
939 NTSTATUS STDCALL
940 RtlDeleteAtomFromAtomTable (IN PRTL_ATOM_TABLE AtomTable,
941 IN RTL_ATOM Atom);
942
943 BOOLEAN
944 STDCALL
945 RtlDeleteElementGenericTable (
946 PRTL_GENERIC_TABLE Table,
947 PVOID Buffer
948 );
949
950 BOOLEAN
951 STDCALL
952 RtlDeleteElementGenericTableAvl (
953 PRTL_AVL_TABLE Table,
954 PVOID Buffer
955 );
956
957 VOID
958 STDCALL
959 RtlDeleteNoSplay (
960 PRTL_SPLAY_LINKS Links,
961 PRTL_SPLAY_LINKS *Root
962 );
963
964
965 NTSTATUS STDCALL
966 RtlDeleteOwnersRanges (IN OUT PRTL_RANGE_LIST RangeList,
967 IN PVOID Owner);
968
969 NTSTATUS STDCALL
970 RtlDeleteRange (IN OUT PRTL_RANGE_LIST RangeList,
971 IN ULONGLONG Start,
972 IN ULONGLONG End,
973 IN PVOID Owner);
974
975 NTSTATUS STDCALL
976 RtlDescribeChunk(IN USHORT CompressionFormat,
977 IN OUT PUCHAR *CompressedBuffer,
978 IN PUCHAR EndOfCompressedBufferPlus1,
979 OUT PUCHAR *ChunkBuffer,
980 OUT PULONG ChunkSize);
981
982 NTSTATUS STDCALL
983 RtlDestroyAtomTable (IN PRTL_ATOM_TABLE AtomTable);
984
985 HANDLE STDCALL
986 RtlDestroyHeap (HANDLE hheap);
987
988 NTSTATUS
989 STDCALL
990 RtlDispatchException(
991 PEXCEPTION_RECORD pExcptRec,
992 CONTEXT * pContext
993 );
994
995
996 NTSTATUS
997 STDCALL
998 RtlDowncaseUnicodeString (
999 IN OUT PUNICODE_STRING DestinationString,
1000 IN PUNICODE_STRING SourceString,
1001 IN BOOLEAN AllocateDestinationString
1002 );
1003
1004 NTSTATUS
1005 STDCALL
1006 RtlEmptyAtomTable (
1007 IN PRTL_ATOM_TABLE AtomTable,
1008 IN BOOLEAN DeletePinned
1009 );
1010
1011 LARGE_INTEGER
1012 STDCALL
1013 RtlEnlargedIntegerMultiply (
1014 LONG Multiplicand,
1015 LONG Multiplier
1016 );
1017
1018 ULONG
1019 STDCALL
1020 RtlEnlargedUnsignedDivide (
1021 ULARGE_INTEGER Dividend,
1022 ULONG Divisor,
1023 PULONG Remainder
1024 );
1025
1026 LARGE_INTEGER
1027 STDCALL
1028 RtlEnlargedUnsignedMultiply (
1029 ULONG Multiplicand,
1030 ULONG Multiplier
1031 );
1032
1033 PVOID
1034 STDCALL
1035 RtlEnumerateGenericTable (
1036 PRTL_GENERIC_TABLE Table,
1037 BOOLEAN Restart
1038 );
1039
1040 PVOID
1041 STDCALL
1042 RtlEnumerateGenericTableAvl (
1043 PRTL_AVL_TABLE Table,
1044 BOOLEAN Restart
1045 );
1046
1047 PVOID
1048 STDCALL
1049 RtlEnumerateGenericTableLikeADirectory (
1050 IN PRTL_AVL_TABLE Table,
1051 IN PRTL_AVL_MATCH_FUNCTION MatchFunction,
1052 IN PVOID MatchData,
1053 IN ULONG NextFlag,
1054 IN OUT PVOID *RestartKey,
1055 IN OUT PULONG DeleteCount,
1056 IN OUT PVOID Buffer
1057 );
1058
1059 PVOID
1060 STDCALL
1061 RtlEnumerateGenericTableWithoutSplaying (
1062 PRTL_GENERIC_TABLE Table,
1063 PVOID *RestartKey
1064 );
1065
1066 PVOID
1067 STDCALL
1068 RtlEnumerateGenericTableWithoutSplayingAvl (
1069 PRTL_AVL_TABLE Table,
1070 PVOID *RestartKey
1071 );
1072
1073 BOOLEAN STDCALL
1074 RtlEqualPrefixSid (PSID Sid1,
1075 PSID Sid2);
1076
1077 BOOLEAN STDCALL
1078 RtlEqualSid (PSID Sid1,
1079 PSID Sid2);
1080
1081 BOOLEAN
1082 STDCALL
1083 RtlEqualString (
1084 PSTRING String1,
1085 PSTRING String2,
1086 BOOLEAN CaseInSensitive
1087 );
1088
1089 LARGE_INTEGER
1090 STDCALL
1091 RtlExtendedIntegerMultiply (
1092 LARGE_INTEGER Multiplicand,
1093 LONG Multiplier
1094 );
1095
1096 LARGE_INTEGER
1097 STDCALL
1098 RtlExtendedLargeIntegerDivide (
1099 LARGE_INTEGER Dividend,
1100 ULONG Divisor,
1101 PULONG Remainder
1102 );
1103
1104 LARGE_INTEGER
1105 STDCALL
1106 RtlExtendedMagicDivide (
1107 LARGE_INTEGER Dividend,
1108 LARGE_INTEGER MagicDivisor,
1109 CCHAR ShiftCount
1110 );
1111
1112 VOID
1113 STDCALL
1114 RtlFillMemoryUlong (
1115 PVOID Destination,
1116 ULONG Length,
1117 ULONG Fill
1118 );
1119
1120 ULONG
1121 STDCALL
1122 RtlFindClearBits (
1123 PRTL_BITMAP BitMapHeader,
1124 ULONG NumberToFind,
1125 ULONG HintIndex
1126 );
1127
1128 ULONG
1129 STDCALL
1130 RtlFindClearBitsAndSet (
1131 PRTL_BITMAP BitMapHeader,
1132 ULONG NumberToFind,
1133 ULONG HintIndex
1134 );
1135
1136 ULONG
1137 STDCALL
1138 RtlFindClearRuns (
1139 PRTL_BITMAP BitMapHeader,
1140 PRTL_BITMAP_RUN RunArray,
1141 ULONG SizeOfRunArray,
1142 BOOLEAN LocateLongestRuns
1143 );
1144
1145 ULONG
1146 STDCALL
1147 RtlFindLastBackwardRunClear (
1148 IN PRTL_BITMAP BitMapHeader,
1149 IN ULONG FromIndex,
1150 IN PULONG StartingRunIndex
1151 );
1152
1153 ULONG
1154 STDCALL
1155 RtlFindNextForwardRunClear (
1156 IN PRTL_BITMAP BitMapHeader,
1157 IN ULONG FromIndex,
1158 IN PULONG StartingRunIndex
1159 );
1160
1161
1162 PUNICODE_PREFIX_TABLE_ENTRY
1163 STDCALL
1164 RtlFindUnicodePrefix (
1165 PUNICODE_PREFIX_TABLE PrefixTable,
1166 PUNICODE_STRING FullName,
1167 ULONG CaseInsensitiveIndex
1168 );
1169
1170 ULONG
1171 STDCALL
1172 RtlFindFirstRunClear (
1173 PRTL_BITMAP BitMapHeader,
1174 PULONG StartingIndex
1175 );
1176
1177 ULONG
1178 STDCALL
1179 RtlFindFirstRunSet (
1180 PRTL_BITMAP BitMapHeader,
1181 PULONG StartingIndex
1182 );
1183
1184 CCHAR STDCALL
1185 RtlFindLeastSignificantBit (IN ULONGLONG Set);
1186
1187 ULONG
1188 STDCALL
1189 RtlFindLongestRunClear (
1190 PRTL_BITMAP BitMapHeader,
1191 PULONG StartingIndex
1192 );
1193
1194 ULONG
1195 STDCALL
1196 RtlFindLongestRunSet (
1197 PRTL_BITMAP BitMapHeader,
1198 PULONG StartingIndex
1199 );
1200
1201 NTSTATUS
1202 STDCALL
1203 RtlFindMessage (
1204 IN PVOID BaseAddress,
1205 IN ULONG Type,
1206 IN ULONG Language,
1207 IN ULONG MessageId,
1208 OUT PRTL_MESSAGE_RESOURCE_ENTRY *MessageResourceEntry
1209 );
1210
1211 CCHAR STDCALL
1212 RtlFindMostSignificantBit (IN ULONGLONG Set);
1213
1214 NTSTATUS STDCALL
1215 RtlFindRange (IN PRTL_RANGE_LIST RangeList,
1216 IN ULONGLONG Minimum,
1217 IN ULONGLONG Maximum,
1218 IN ULONG Length,
1219 IN ULONG Alignment,
1220 IN ULONG Flags,
1221 IN UCHAR AttributeAvailableMask,
1222 IN PVOID Context OPTIONAL,
1223 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1224 OUT PULONGLONG Start);
1225
1226 ULONG
1227 STDCALL
1228 RtlFindSetBits (
1229 PRTL_BITMAP BitMapHeader,
1230 ULONG NumberToFind,
1231 ULONG HintIndex
1232 );
1233
1234 ULONG
1235 STDCALL
1236 RtlFindSetBitsAndClear (
1237 PRTL_BITMAP BitMapHeader,
1238 ULONG NumberToFind,
1239 ULONG HintIndex
1240 );
1241
1242 BOOLEAN STDCALL
1243 RtlFirstFreeAce (PACL Acl,
1244 PACE* Ace);
1245
1246 NTSTATUS STDCALL
1247 RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath);
1248
1249 VOID STDCALL
1250 RtlFreeAnsiString (IN PANSI_STRING AnsiString);
1251
1252 BOOLEAN
1253 STDCALL
1254 RtlFreeHeap (
1255 HANDLE Heap,
1256 ULONG Flags,
1257 PVOID Address
1258 );
1259
1260 VOID STDCALL
1261 RtlFreeOemString (IN POEM_STRING OemString);
1262
1263 VOID STDCALL
1264 RtlFreeRangeList (IN PRTL_RANGE_LIST RangeList);
1265
1266 PVOID STDCALL
1267 RtlFreeSid (PSID Sid);
1268
1269 VOID STDCALL
1270 RtlFreeUnicodeString (IN PUNICODE_STRING UnicodeString);
1271
1272 VOID STDCALL
1273 RtlGenerate8dot3Name (IN PUNICODE_STRING Name,
1274 IN BOOLEAN AllowExtendedCharacters,
1275 IN OUT PGENERATE_NAME_CONTEXT Context,
1276 OUT PUNICODE_STRING Name8dot3);
1277
1278 NTSTATUS STDCALL
1279 RtlGetAce (PACL Acl,
1280 ULONG AceIndex,
1281 PACE *Ace);
1282
1283 VOID
1284 STDCALL
1285 RtlGetCallersAddress(
1286 OUT PVOID *CallersAddress,
1287 OUT PVOID *CallersCaller
1288 );
1289
1290 NTSTATUS STDCALL
1291 RtlGetCompressionWorkSpaceSize (IN USHORT CompressionFormatAndEngine,
1292 OUT PULONG CompressBufferAndWorkSpaceSize,
1293 OUT PULONG CompressFragmentWorkSpaceSize);
1294
1295 NTSTATUS STDCALL
1296 RtlGetControlSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1297 PSECURITY_DESCRIPTOR_CONTROL Control,
1298 PULONG Revision);
1299
1300 NTSTATUS STDCALL
1301 RtlGetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1302 PBOOLEAN DaclPresent,
1303 PACL* Dacl,
1304 PBOOLEAN DaclDefaulted);
1305
1306 VOID STDCALL
1307 RtlGetDefaultCodePage (OUT PUSHORT AnsiCodePage,
1308 OUT PUSHORT OemCodePage);
1309
1310 PVOID
1311 STDCALL
1312 RtlGetElementGenericTable(
1313 PRTL_GENERIC_TABLE Table,
1314 ULONG I
1315 );
1316
1317 PVOID
1318 STDCALL
1319 RtlGetElementGenericTableAvl (
1320 PRTL_AVL_TABLE Table,
1321 ULONG I
1322 );
1323
1324 NTSTATUS STDCALL
1325 RtlGetFirstRange (IN PRTL_RANGE_LIST RangeList,
1326 OUT PRTL_RANGE_LIST_ITERATOR Iterator,
1327 OUT PRTL_RANGE *Range);
1328
1329 NTSTATUS STDCALL
1330 RtlGetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1331 PSID* Group,
1332 PBOOLEAN GroupDefaulted);
1333
1334 NTSTATUS STDCALL
1335 RtlGetLastNtStatus(VOID);
1336
1337 ULONG STDCALL
1338 RtlGetLastWin32Error(VOID);
1339
1340 NTSTATUS STDCALL
1341 RtlGetNextRange (IN OUT PRTL_RANGE_LIST_ITERATOR Iterator,
1342 OUT PRTL_RANGE *Range,
1343 IN BOOLEAN MoveForwards);
1344
1345 ULONG
1346 STDCALL
1347 RtlGetNtGlobalFlags (
1348 VOID
1349 );
1350
1351 NTSTATUS STDCALL
1352 RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1353 PSID* Owner,
1354 PBOOLEAN OwnerDefaulted);
1355
1356 NTSTATUS STDCALL
1357 RtlGetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
1358 PBOOLEAN SaclPresent,
1359 PACL* Sacl,
1360 PBOOLEAN SaclDefaulted);
1361
1362 BOOLEAN STDCALL
1363 RtlGetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
1364 PUCHAR RMControl);
1365
1366 NTSTATUS
1367 STDCALL
1368 RtlGetSetBootStatusData(
1369 HANDLE Filehandle,
1370 BOOLEAN WriteMode,
1371 DWORD DataClass,
1372 PVOID Buffer,
1373 ULONG BufferSize,
1374 DWORD DataClass2
1375 );
1376
1377 NTSTATUS STDCALL
1378 RtlGUIDFromString (IN PUNICODE_STRING GuidString,
1379 OUT GUID* Guid);
1380
1381 NTSTATUS
1382 STDCALL
1383 RtlHashUnicodeString(
1384 IN const UNICODE_STRING *String,
1385 IN BOOLEAN CaseInSensitive,
1386 IN ULONG HashAlgorithm,
1387 OUT PULONG HashValue
1388 );
1389
1390 PSID_IDENTIFIER_AUTHORITY STDCALL
1391 RtlIdentifierAuthoritySid (PSID Sid);
1392
1393 PVOID
1394 STDCALL
1395 RtlImageDirectoryEntryToData (
1396 PVOID BaseAddress,
1397 BOOLEAN bFlag,
1398 ULONG Directory,
1399 PULONG Size
1400 );
1401
1402 PIMAGE_NT_HEADERS
1403 STDCALL
1404 RtlImageNtHeader (
1405 IN PVOID BaseAddress
1406 );
1407
1408 PIMAGE_SECTION_HEADER
1409 STDCALL
1410 RtlImageRvaToSection (
1411 PIMAGE_NT_HEADERS NtHeader,
1412 PVOID BaseAddress,
1413 ULONG Rva
1414 );
1415
1416 ULONG
1417 STDCALL
1418 RtlImageRvaToVa (
1419 PIMAGE_NT_HEADERS NtHeader,
1420 PVOID BaseAddress,
1421 ULONG Rva,
1422 PIMAGE_SECTION_HEADER *SectionHeader
1423 );
1424
1425 VOID
1426 STDCALL
1427 RtlInitAnsiString (
1428 PANSI_STRING DestinationString,
1429 PCSZ SourceString
1430 );
1431
1432 VOID
1433 STDCALL
1434 RtlInitCodePageTable (
1435 IN PUSHORT TableBase,
1436 OUT PCPTABLEINFO CodePageTable
1437 );
1438
1439 VOID
1440 STDCALL
1441 RtlInitializeUnicodePrefix (
1442 PUNICODE_PREFIX_TABLE PrefixTable
1443 );
1444
1445 NTSTATUS STDCALL
1446 RtlInitializeSid (PSID Sid,
1447 PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
1448 UCHAR SubAuthorityCount);
1449
1450 VOID
1451 STDCALL
1452 RtlInitializeBitMap(
1453 IN PRTL_BITMAP BitMapHeader,
1454 IN PULONG BitMapBuffer,
1455 IN ULONG SizeOfBitMap);
1456
1457 VOID
1458 STDCALL
1459 RtlInitNlsTables (
1460 IN PUSHORT AnsiTableBase,
1461 IN PUSHORT OemTableBase,
1462 IN PUSHORT CaseTableBase,
1463 OUT PNLSTABLEINFO NlsTable
1464 );
1465
1466 VOID
1467 STDCALL
1468 RtlInitString (
1469 PSTRING DestinationString,
1470 PCSZ SourceString
1471 );
1472
1473 VOID
1474 STDCALL
1475 RtlInitUnicodeString (
1476 PUNICODE_STRING DestinationString,
1477 PCWSTR SourceString
1478 );
1479
1480 VOID
1481 STDCALL
1482 RtlInitializeBitMap (
1483 IN OUT PRTL_BITMAP BitMapHeader,
1484 IN PULONG BitMapBuffer,
1485 IN ULONG SizeOfBitMap
1486 );
1487
1488 NTSTATUS
1489 STDCALL
1490 RtlInitializeContext (
1491 IN HANDLE ProcessHandle,
1492 OUT PCONTEXT ThreadContext,
1493 IN PVOID ThreadStartParam OPTIONAL,
1494 IN PTHREAD_START_ROUTINE ThreadStartAddress,
1495 IN PINITIAL_TEB InitialTeb
1496 );
1497
1498 VOID
1499 STDCALL
1500 RtlInitializeGenericTable (
1501 PRTL_GENERIC_TABLE Table,
1502 PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
1503 PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
1504 PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
1505 PVOID TableContext
1506 );
1507
1508 VOID
1509 STDCALL
1510 RtlInitializeGenericTableAvl (
1511 PRTL_AVL_TABLE Table,
1512 PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
1513 PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
1514 PRTL_AVL_FREE_ROUTINE FreeRoutine,
1515 PVOID TableContext
1516 );
1517
1518 VOID STDCALL
1519 RtlInitializeRangeList (IN OUT PRTL_RANGE_LIST RangeList);
1520
1521 PVOID
1522 STDCALL
1523 RtlInsertElementGenericTable (
1524 PRTL_GENERIC_TABLE Table,
1525 PVOID Buffer,
1526 ULONG BufferSize,
1527 PBOOLEAN NewElement OPTIONAL
1528 );
1529
1530 PVOID
1531 STDCALL
1532 RtlInsertElementGenericTableAvl (
1533 PRTL_AVL_TABLE Table,
1534 PVOID Buffer,
1535 ULONG BufferSize,
1536 PBOOLEAN NewElement OPTIONAL
1537 );
1538
1539 PVOID
1540 STDCALL
1541 RtlInsertElementGenericTableFull (
1542 PRTL_GENERIC_TABLE Table,
1543 PVOID Buffer,
1544 ULONG BufferSize,
1545 PBOOLEAN NewElement OPTIONAL,
1546 PVOID NodeOrParent,
1547 TABLE_SEARCH_RESULT SearchResult
1548 );
1549
1550 PVOID
1551 STDCALL
1552 RtlInsertElementGenericTableFullAvl (
1553 PRTL_AVL_TABLE Table,
1554 PVOID Buffer,
1555 ULONG BufferSize,
1556 PBOOLEAN NewElement OPTIONAL,
1557 PVOID NodeOrParent,
1558 TABLE_SEARCH_RESULT SearchResult
1559 );
1560
1561 BOOLEAN
1562 STDCALL
1563 RtlInsertUnicodePrefix (
1564 PUNICODE_PREFIX_TABLE PrefixTable,
1565 PUNICODE_STRING Prefix,
1566 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
1567 );
1568
1569 NTSTATUS
1570 STDCALL
1571 RtlInt64ToUnicodeString (
1572 IN ULONGLONG Value,
1573 IN ULONG Base OPTIONAL,
1574 IN OUT PUNICODE_STRING String
1575 );
1576
1577 NTSTATUS
1578 STDCALL
1579 RtlIntegerToChar (
1580 IN ULONG Value,
1581 IN ULONG Base,
1582 IN ULONG Length,
1583 IN OUT PCHAR String
1584 );
1585
1586 NTSTATUS
1587 STDCALL
1588 RtlIntegerToUnicode(
1589 IN ULONG Value,
1590 IN ULONG Base OPTIONAL,
1591 IN ULONG Length OPTIONAL,
1592 IN OUT LPWSTR String
1593 );
1594
1595 NTSTATUS
1596 STDCALL
1597 RtlIntegerToUnicodeString (
1598 IN ULONG Value,
1599 IN ULONG Base,
1600 IN OUT PUNICODE_STRING String
1601 );
1602
1603 NTSTATUS STDCALL
1604 RtlInvertRangeList (OUT PRTL_RANGE_LIST InvertedRangeList,
1605 IN PRTL_RANGE_LIST RangeList);
1606
1607 LPSTR
1608 STDCALL
1609 RtlIpv4AddressToStringA(
1610 PULONG IP,
1611 LPSTR Buffer
1612 );
1613
1614 NTSTATUS
1615 STDCALL
1616 RtlIpv4AddressToStringExA(
1617 PULONG IP,
1618 PULONG Port,
1619 LPSTR Buffer,
1620 PULONG MaxSize
1621 );
1622
1623 LPWSTR
1624 STDCALL
1625 RtlIpv4AddressToStringW(
1626 PULONG IP,
1627 LPWSTR Buffer
1628 );
1629
1630 NTSTATUS
1631 STDCALL
1632 RtlIpv4AddressToStringExW(
1633 PULONG IP,
1634 PULONG Port,
1635 LPWSTR Buffer,
1636 PULONG MaxSize
1637 );
1638
1639 NTSTATUS
1640 STDCALL
1641 RtlIpv4StringToAddressA(
1642 IN LPSTR IpString,
1643 IN ULONG Base,
1644 OUT PVOID PtrToIpAddr,
1645 OUT ULONG IpAddr
1646 );
1647
1648 NTSTATUS
1649 STDCALL
1650 RtlIpv4StringToAddressExA(
1651 IN LPSTR IpString,
1652 IN ULONG Base,
1653 OUT PULONG IpAddr,
1654 OUT PULONG Port
1655 );
1656
1657 NTSTATUS
1658 STDCALL
1659 RtlIpv4StringToAddressW(
1660 IN LPWSTR IpString,
1661 IN ULONG Base,
1662 OUT PVOID PtrToIpAddr,
1663 OUT ULONG IpAddr
1664 );
1665
1666 NTSTATUS
1667 STDCALL
1668 RtlIpv4StringToAddressExW(
1669 IN LPWSTR IpString,
1670 IN ULONG Base,
1671 OUT PULONG IpAddr,
1672 OUT PULONG Port
1673 );
1674
1675 NTSTATUS
1676 STDCALL
1677 RtlIpv6AddressToStringA(
1678 PULONG IP,
1679 LPSTR Buffer
1680 );
1681
1682 NTSTATUS
1683 STDCALL
1684 RtlIpv6AddressToStringExA(
1685 PULONG IP,
1686 PULONG Port,
1687 LPSTR Buffer,
1688 PULONG MaxSize
1689 );
1690
1691 NTSTATUS
1692 STDCALL
1693 RtlIpv6AddressToStringW(
1694 PULONG IP,
1695 LPWSTR Buffer
1696 );
1697
1698 NTSTATUS
1699 STDCALL
1700 RtlIpv6AddressToStringExW(
1701 PULONG IP,
1702 PULONG Port,
1703 LPWSTR Buffer,
1704 PULONG MaxSize
1705 );
1706
1707 NTSTATUS
1708 STDCALL
1709 RtlIpv6StringToAddressA(
1710 IN LPSTR IpString,
1711 IN ULONG Base,
1712 OUT PVOID PtrToIpAddr,
1713 OUT ULONG IpAddr
1714 );
1715
1716 NTSTATUS
1717 STDCALL
1718 RtlIpv6StringToAddressExA(
1719 IN LPSTR IpString,
1720 IN ULONG Base,
1721 OUT PULONG IpAddr,
1722 OUT PULONG Port
1723 );
1724
1725 NTSTATUS
1726 STDCALL
1727 RtlIpv6StringToAddressW(
1728 IN LPWSTR IpString,
1729 IN ULONG Base,
1730 OUT PVOID PtrToIpAddr,
1731 OUT ULONG IpAddr
1732 );
1733
1734 NTSTATUS
1735 STDCALL
1736 RtlIpv6StringToAddressExW(
1737 IN LPWSTR IpString,
1738 IN ULONG Base,
1739 OUT PULONG IpAddr,
1740 OUT PULONG Port
1741 );
1742
1743 BOOLEAN
1744 STDCALL
1745 RtlIsGenericTableEmpty (
1746 PRTL_GENERIC_TABLE Table
1747 );
1748
1749 BOOLEAN
1750 STDCALL
1751 RtlIsGenericTableEmptyAvl (
1752 PRTL_AVL_TABLE Table
1753 );
1754
1755
1756 BOOLEAN STDCALL
1757 RtlIsNameLegalDOS8Dot3 (IN PUNICODE_STRING UnicodeName,
1758 IN PANSI_STRING AnsiName,
1759 OUT PBOOLEAN SpacesFound);
1760
1761 NTSTATUS STDCALL
1762 RtlIsRangeAvailable (IN PRTL_RANGE_LIST RangeList,
1763 IN ULONGLONG Start,
1764 IN ULONGLONG End,
1765 IN ULONG Flags,
1766 IN UCHAR AttributeAvailableMask,
1767 IN PVOID Context OPTIONAL,
1768 IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL,
1769 OUT PBOOLEAN Available);
1770
1771 ULONG
1772 STDCALL
1773 RtlIsTextUnicode (
1774 PVOID Buffer,
1775 ULONG Length,
1776 ULONG *Flags
1777 );
1778
1779 BOOLEAN
1780 STDCALL
1781 RtlIsValidOemCharacter (
1782 IN PWCHAR Char
1783 );
1784
1785 LARGE_INTEGER
1786 STDCALL
1787 RtlLargeIntegerAdd (
1788 LARGE_INTEGER Addend1,
1789 LARGE_INTEGER Addend2
1790 );
1791
1792 /*
1793 * VOID
1794 * RtlLargeIntegerAnd (
1795 * PLARGE_INTEGER Result,
1796 * LARGE_INTEGER Source,
1797 * LARGE_INTEGER Mask
1798 * );
1799 */
1800 #define RtlLargeIntegerAnd(Result, Source, Mask) \
1801 { \
1802 Result.HighPart = Source.HighPart & Mask.HighPart; \
1803 Result.LowPart = Source.LowPart & Mask.LowPart; \
1804 }
1805
1806 LARGE_INTEGER
1807 STDCALL
1808 RtlLargeIntegerArithmeticShift (
1809 LARGE_INTEGER LargeInteger,
1810 CCHAR ShiftCount
1811 );
1812
1813 LARGE_INTEGER
1814 STDCALL
1815 RtlLargeIntegerDivide (
1816 LARGE_INTEGER Dividend,
1817 LARGE_INTEGER Divisor,
1818 PLARGE_INTEGER Remainder
1819 );
1820
1821 /*
1822 * BOOLEAN
1823 * RtlLargeIntegerEqualTo (
1824 * LARGE_INTEGER Operand1,
1825 * LARGE_INTEGER Operand2
1826 * );
1827 */
1828 #define RtlLargeIntegerEqualTo(X,Y) \
1829 (!(((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1830
1831 /*
1832 * BOOLEAN
1833 * RtlLargeIntegerEqualToZero (
1834 * LARGE_INTEGER Operand
1835 * );
1836 */
1837 #define RtlLargeIntegerEqualToZero(X) \
1838 (!((X).LowPart | (X).HighPart))
1839
1840 /*
1841 * BOOLEAN
1842 * RtlLargeIntegerGreaterThan (
1843 * LARGE_INTEGER Operand1,
1844 * LARGE_INTEGER Operand2
1845 * );
1846 */
1847 #define RtlLargeIntegerGreaterThan(X,Y) \
1848 ((((X).HighPart == (Y).HighPart) && ((X).LowPart > (Y).LowPart)) || \
1849 ((X).HighPart > (Y).HighPart))
1850
1851 /*
1852 * BOOLEAN
1853 * RtlLargeIntegerGreaterThanOrEqualTo (
1854 * LARGE_INTEGER Operand1,
1855 * LARGE_INTEGER Operand2
1856 * );
1857 */
1858 #define RtlLargeIntegerGreaterThanOrEqualTo(X,Y) \
1859 ((((X).HighPart == (Y).HighPart) && ((X).LowPart >= (Y).LowPart)) || \
1860 ((X).HighPart > (Y).HighPart))
1861
1862 /*
1863 * BOOLEAN
1864 * RtlLargeIntegerGreaterThanOrEqualToZero (
1865 * LARGE_INTEGER Operand1
1866 * );
1867 */
1868 #define RtlLargeIntegerGreaterOrEqualToZero(X) \
1869 ((X).HighPart >= 0)
1870
1871 /*
1872 * BOOLEAN
1873 * RtlLargeIntegerGreaterThanZero (
1874 * LARGE_INTEGER Operand1
1875 * );
1876 */
1877 #define RtlLargeIntegerGreaterThanZero(X) \
1878 ((((X).HighPart == 0) && ((X).LowPart > 0)) || \
1879 ((X).HighPart > 0 ))
1880
1881 /*
1882 * BOOLEAN
1883 * RtlLargeIntegerLessThan (
1884 * LARGE_INTEGER Operand1,
1885 * LARGE_INTEGER Operand2
1886 * );
1887 */
1888 #define RtlLargeIntegerLessThan(X,Y) \
1889 ((((X).HighPart == (Y).HighPart) && ((X).LowPart < (Y).LowPart)) || \
1890 ((X).HighPart < (Y).HighPart))
1891
1892 /*
1893 * BOOLEAN
1894 * RtlLargeIntegerLessThanOrEqualTo (
1895 * LARGE_INTEGER Operand1,
1896 * LARGE_INTEGER Operand2
1897 * );
1898 */
1899 #define RtlLargeIntegerLessThanOrEqualTo(X,Y) \
1900 ((((X).HighPart == (Y).HighPart) && ((X).LowPart <= (Y).LowPart)) || \
1901 ((X).HighPart < (Y).HighPart))
1902
1903 /*
1904 * BOOLEAN
1905 * RtlLargeIntegerLessThanOrEqualToZero (
1906 * LARGE_INTEGER Operand
1907 * );
1908 */
1909 #define RtlLargeIntegerLessOrEqualToZero(X) \
1910 (((X).HighPart < 0) || !((X).LowPart | (X).HighPart))
1911
1912 /*
1913 * BOOLEAN
1914 * RtlLargeIntegerLessThanZero (
1915 * LARGE_INTEGER Operand
1916 * );
1917 */
1918 #define RtlLargeIntegerLessThanZero(X) \
1919 (((X).HighPart < 0))
1920
1921 LARGE_INTEGER
1922 STDCALL
1923 RtlLargeIntegerNegate (
1924 LARGE_INTEGER Subtrahend
1925 );
1926
1927 /*
1928 * BOOLEAN
1929 * RtlLargeIntegerNotEqualTo (
1930 * LARGE_INTEGER Operand1,
1931 * LARGE_INTEGER Operand2
1932 * );
1933 */
1934 #define RtlLargeIntegerNotEqualTo(X,Y) \
1935 ((((X).LowPart ^ (Y).LowPart) | ((X).HighPart ^ (Y).HighPart)))
1936
1937 /*
1938 * BOOLEAN
1939 * RtlLargeIntegerNotEqualToZero (
1940 * LARGE_INTEGER Operand
1941 * );
1942 */
1943 #define RtlLargeIntegerNotEqualToZero(X) \
1944 (((X).LowPart | (X).HighPart))
1945
1946 LARGE_INTEGER
1947 STDCALL
1948 RtlLargeIntegerShiftLeft (
1949 LARGE_INTEGER LargeInteger,
1950 CCHAR ShiftCount
1951 );
1952
1953 LARGE_INTEGER
1954 STDCALL
1955 RtlLargeIntegerShiftRight (
1956 LARGE_INTEGER LargeInteger,
1957 CCHAR ShiftCount
1958 );
1959
1960 LARGE_INTEGER
1961 STDCALL
1962 RtlLargeIntegerSubtract (
1963 LARGE_INTEGER Minuend,
1964 LARGE_INTEGER Subtrahend
1965 );
1966
1967 ULONG STDCALL
1968 RtlLengthRequiredSid (UCHAR SubAuthorityCount);
1969
1970 ULONG STDCALL
1971 RtlLengthSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor);
1972
1973 ULONG STDCALL
1974 RtlLengthSid (PSID Sid);
1975
1976 NTSTATUS
1977 STDCALL
1978 RtlLockBootStatusData(
1979 HANDLE Filehandle
1980 );
1981
1982 BOOLEAN STDCALL
1983 RtlLockHeap (IN HANDLE Heap);
1984
1985 NTSTATUS STDCALL
1986 RtlLookupAtomInAtomTable (IN PRTL_ATOM_TABLE AtomTable,
1987 IN PWSTR AtomName,
1988 OUT PRTL_ATOM Atom);
1989
1990 PVOID
1991 STDCALL
1992 RtlLookupElementGenericTable (
1993 PRTL_GENERIC_TABLE Table,
1994 PVOID Buffer
1995 );
1996
1997 PVOID
1998 STDCALL
1999 RtlLookupElementGenericTableAvl (
2000 PRTL_AVL_TABLE Table,
2001 PVOID Buffer
2002 );
2003
2004 PVOID
2005 STDCALL
2006 RtlLookupElementGenericTableFull (
2007 PRTL_GENERIC_TABLE Table,
2008 PVOID Buffer,
2009 OUT PVOID *NodeOrParent,
2010 OUT TABLE_SEARCH_RESULT *SearchResult
2011 );
2012
2013 PVOID
2014 STDCALL
2015 RtlLookupElementGenericTableFullAvl (
2016 PRTL_AVL_TABLE Table,
2017 PVOID Buffer,
2018 OUT PVOID *NodeOrParent,
2019 OUT TABLE_SEARCH_RESULT *SearchResult
2020 );
2021
2022 NTSTATUS STDCALL
2023 RtlMakeSelfRelativeSD (PSECURITY_DESCRIPTOR AbsSD,
2024 PSECURITY_DESCRIPTOR_RELATIVE RelSD,
2025 PULONG BufferLength);
2026
2027 VOID STDCALL
2028 RtlMapGenericMask (PACCESS_MASK AccessMask,
2029 PGENERIC_MAPPING GenericMapping);
2030
2031 NTSTATUS
2032 STDCALL
2033 RtlMapSecurityErrorToNtStatus(
2034 IN ULONG SecurityError
2035 );
2036
2037 NTSTATUS STDCALL
2038 RtlMergeRangeLists (OUT PRTL_RANGE_LIST MergedRangeList,
2039 IN PRTL_RANGE_LIST RangeList1,
2040 IN PRTL_RANGE_LIST RangeList2,
2041 IN ULONG Flags);
2042
2043 NTSTATUS
2044 STDCALL
2045 RtlMultiByteToUnicodeN (
2046 PWCHAR UnicodeString,
2047 ULONG UnicodeSize,
2048 PULONG ResultSize,
2049 const PCHAR MbString,
2050 ULONG MbSize
2051 );
2052
2053 NTSTATUS
2054 STDCALL
2055 RtlMultiByteToUnicodeSize (
2056 PULONG UnicodeSize,
2057 PCHAR MbString,
2058 ULONG MbSize
2059 );
2060
2061 PUNICODE_PREFIX_TABLE_ENTRY
2062 STDCALL
2063 RtlNextUnicodePrefix (
2064 PUNICODE_PREFIX_TABLE PrefixTable,
2065 BOOLEAN Restart
2066 );
2067
2068 DWORD
2069 STDCALL
2070 RtlNtStatusToDosError (
2071 NTSTATUS StatusCode
2072 );
2073
2074 DWORD
2075 STDCALL
2076 RtlNtStatusToDosErrorNoTeb (
2077 NTSTATUS StatusCode
2078 );
2079
2080 int
2081 STDCALL
2082 RtlNtStatusToPsxErrno (
2083 NTSTATUS StatusCode
2084 );
2085
2086 ULONG
2087 STDCALL
2088 RtlNumberGenericTableElements(
2089 PRTL_GENERIC_TABLE Table
2090 );
2091
2092 ULONG
2093 STDCALL
2094 RtlNumberGenericTableElementsAvl (
2095 PRTL_AVL_TABLE Table
2096 );
2097
2098
2099 ULONG
2100 STDCALL
2101 RtlNumberOfClearBits (
2102 PRTL_BITMAP BitMapHeader
2103 );
2104
2105 ULONG
2106 STDCALL
2107 RtlNumberOfSetBits (
2108 PRTL_BITMAP BitMapHeader
2109 );
2110
2111 ULONG
2112 STDCALL
2113 RtlOemStringToUnicodeSize (
2114 POEM_STRING AnsiString
2115 );
2116
2117 NTSTATUS
2118 STDCALL
2119 RtlOemStringToUnicodeString (
2120 PUNICODE_STRING DestinationString,
2121 POEM_STRING SourceString,
2122 BOOLEAN AllocateDestinationString
2123 );
2124
2125 NTSTATUS
2126 STDCALL
2127 RtlOemToUnicodeN(
2128 PWSTR UnicodeString,
2129 ULONG MaxBytesInUnicodeString,
2130 PULONG BytesInUnicodeString,
2131 IN PCHAR OemString,
2132 ULONG BytesInOemString
2133 );
2134
2135 NTSTATUS STDCALL
2136 RtlPinAtomInAtomTable (
2137 IN PRTL_ATOM_TABLE AtomTable,
2138 IN RTL_ATOM Atom
2139 );
2140
2141 VOID
2142 FASTCALL
2143 RtlPrefetchMemoryNonTemporal(
2144 IN PVOID Source,
2145 IN SIZE_T Length
2146 );
2147
2148 BOOLEAN
2149 STDCALL
2150 RtlPrefixString (
2151 PANSI_STRING String1,
2152 PANSI_STRING String2,
2153 BOOLEAN CaseInsensitive
2154 );
2155
2156 BOOLEAN
2157 STDCALL
2158 RtlPrefixUnicodeString (
2159 PUNICODE_STRING String1,
2160 PUNICODE_STRING String2,
2161 BOOLEAN CaseInsensitive
2162 );
2163
2164 NTSTATUS
2165 STDCALL
2166 RtlQueryAtomInAtomTable (
2167 IN PRTL_ATOM_TABLE AtomTable,
2168 IN RTL_ATOM Atom,
2169 IN OUT PULONG RefCount OPTIONAL,
2170 IN OUT PULONG PinCount OPTIONAL,
2171 IN OUT PWSTR AtomName OPTIONAL,
2172 IN OUT PULONG NameLength OPTIONAL
2173 );
2174
2175 NTSTATUS STDCALL
2176 RtlQueryInformationAcl (PACL Acl,
2177 PVOID Information,
2178 ULONG InformationLength,
2179 ACL_INFORMATION_CLASS InformationClass);
2180
2181 NTSTATUS STDCALL
2182 RtlQueryTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2183
2184 VOID STDCALL
2185 RtlRaiseException (IN PEXCEPTION_RECORD ExceptionRecord);
2186
2187 VOID STDCALL
2188 RtlRaiseStatus(NTSTATUS Status);
2189
2190 ULONG STDCALL
2191 RtlRandom (PULONG Seed);
2192
2193 ULONG
2194 STDCALL
2195 RtlRandomEx(
2196 PULONG Seed
2197 );
2198
2199 PRTL_SPLAY_LINKS
2200 STDCALL
2201 RtlRealPredecessor (
2202 PRTL_SPLAY_LINKS Links
2203 );
2204
2205 PRTL_SPLAY_LINKS
2206 STDCALL
2207 RtlRealSuccessor (
2208 PRTL_SPLAY_LINKS Links
2209 );
2210
2211 PVOID STDCALL
2212 RtlReAllocateHeap (
2213 HANDLE Heap,
2214 ULONG Flags,
2215 PVOID Ptr,
2216 ULONG Size
2217 );
2218
2219 VOID
2220 STDCALL
2221 RtlRemoveUnicodePrefix (
2222 PUNICODE_PREFIX_TABLE PrefixTable,
2223 PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry
2224 );
2225
2226 NTSTATUS
2227 STDCALL
2228 RtlReserveChunk (
2229 IN USHORT CompressionFormat,
2230 IN OUT PUCHAR *CompressedBuffer,
2231 IN PUCHAR EndOfCompressedBufferPlus1,
2232 OUT PUCHAR *ChunkBuffer,
2233 IN ULONG ChunkSize
2234 );
2235
2236 VOID STDCALL
2237 RtlResetRtlTranslations (IN PNLSTABLEINFO NlsTable);
2238
2239 VOID STDCALL
2240 RtlRestoreLastWin32Error(IN ULONG Error);
2241
2242 /*
2243 * VOID
2244 * RtlRetrieveUlong (
2245 * PULONG DestinationAddress,
2246 * PULONG SourceAddress
2247 * );
2248 */
2249 #define RtlRetrieveUlong(DestAddress,SrcAddress) \
2250 if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
2251 { \
2252 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2253 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2254 ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
2255 ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
2256 } \
2257 else \
2258 { \
2259 *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
2260 }
2261
2262 /*
2263 * VOID
2264 * RtlRetrieveUshort (
2265 * PUSHORT DestinationAddress,
2266 * PUSHORT SourceAddress
2267 * );
2268 */
2269 #define RtlRetrieveUshort(DestAddress,SrcAddress) \
2270 if ((ULONG_PTR)(SrcAddress) & SHORT_MASK) \
2271 { \
2272 ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
2273 ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
2274 } \
2275 else \
2276 { \
2277 *((PUSHORT)(DestAddress))=*((PUSHORT)(SrcAddress)); \
2278 }
2279
2280 VOID STDCALL
2281 RtlSecondsSince1970ToTime (ULONG SecondsSince1970,
2282 PLARGE_INTEGER Time);
2283
2284 VOID STDCALL
2285 RtlSecondsSince1980ToTime (ULONG SecondsSince1980,
2286 PLARGE_INTEGER Time);
2287
2288 NTSTATUS STDCALL
2289 RtlSelfRelativeToAbsoluteSD (PSECURITY_DESCRIPTOR_RELATIVE RelSD,
2290 PSECURITY_DESCRIPTOR AbsSD,
2291 PULONG AbsSDSize,
2292 PACL Dacl,
2293 PULONG DaclSize,
2294 PACL Sacl,
2295 PULONG SaclSize,
2296 PSID Owner,
2297 PULONG OwnerSize,
2298 PSID Group,
2299 PULONG GroupSize);
2300
2301 NTSTATUS
2302 STDCALL
2303 RtlSelfRelativeToAbsoluteSD2(
2304 PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
2305 PULONG BufferSize
2306 );
2307
2308 VOID STDCALL
2309 RtlSetAllBits (IN PRTL_BITMAP BitMapHeader);
2310
2311 NTSTATUS STDCALL
2312 RtlSetAttributesSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
2313 IN SECURITY_DESCRIPTOR_CONTROL Control,
2314 OUT PULONG Revision);
2315
2316 VOID
2317 STDCALL
2318 RtlSetBit (
2319 PRTL_BITMAP BitMapHeader,
2320 ULONG BitNumber
2321 );
2322
2323 VOID
2324 STDCALL
2325 RtlSetBits (
2326 PRTL_BITMAP BitMapHeader,
2327 ULONG StartingIndex,
2328 ULONG NumberToSet
2329 );
2330
2331 NTSTATUS STDCALL
2332 RtlSetControlSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
2333 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
2334 IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
2335
2336 NTSTATUS STDCALL
2337 RtlSetDaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2338 BOOLEAN DaclPresent,
2339 PACL Dacl,
2340 BOOLEAN DaclDefaulted);
2341
2342 NTSTATUS STDCALL
2343 RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2344 PSID Group,
2345 BOOLEAN GroupDefaulted);
2346
2347 NTSTATUS STDCALL
2348 RtlSetInformationAcl (PACL Acl,
2349 PVOID Information,
2350 ULONG InformationLength,
2351 ACL_INFORMATION_CLASS InformationClass);
2352
2353 VOID STDCALL
2354 RtlSetLastWin32Error(IN ULONG Error);
2355
2356 VOID STDCALL
2357 RtlSetLastWin32ErrorAndNtStatusFromNtStatus(IN NTSTATUS Status);
2358
2359 NTSTATUS STDCALL
2360 RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2361 PSID Owner,
2362 BOOLEAN OwnerDefaulted);
2363
2364 NTSTATUS STDCALL
2365 RtlSetSaclSecurityDescriptor (PSECURITY_DESCRIPTOR SecurityDescriptor,
2366 BOOLEAN SaclPresent,
2367 PACL Sacl,
2368 BOOLEAN SaclDefaulted);
2369
2370 VOID STDCALL
2371 RtlSetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,
2372 PUCHAR RMControl);
2373
2374 NTSTATUS STDCALL
2375 RtlSetTimeZoneInformation (IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation);
2376
2377 ULONG STDCALL
2378 RtlSizeHeap(
2379 IN PVOID HeapHandle,
2380 IN ULONG Flags,
2381 IN PVOID MemoryPointer
2382 );
2383
2384 PRTL_SPLAY_LINKS
2385 STDCALL
2386 RtlSplay (
2387 PRTL_SPLAY_LINKS Links
2388 );
2389
2390 /*
2391 * VOID
2392 * RtlStoreUlong (
2393 * PULONG Address,
2394 * ULONG Value
2395 * );
2396 */
2397 #define RtlStoreUlong(Address,Value) \
2398 if ((ULONG_PTR)(Address) & LONG_MASK) \
2399 { \
2400 ((PUCHAR)(Address))[LONG_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2401 ((PUCHAR)(Address))[LONG_3RD_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2402 ((PUCHAR)(Address))[LONG_2ND_MOST_SIGNIFICANT_BIT]=(UCHAR)(THIRDBYTE(Value)); \
2403 ((PUCHAR)(Address))[LONG_MOST_SIGNIFICANT_BIT]=(UCHAR)(FOURTHBYTE(Value)); \
2404 } \
2405 else \
2406 { \
2407 *((PULONG)(Address))=(ULONG)(Value); \
2408 }
2409
2410 /*
2411 * VOID
2412 * RtlStoreUshort (
2413 * PUSHORT Address,
2414 * USHORT Value
2415 * );
2416 */
2417 #define RtlStoreUshort(Address,Value) \
2418 if ((ULONG_PTR)(Address) & SHORT_MASK) \
2419 { \
2420 ((PUCHAR)(Address))[SHORT_LEAST_SIGNIFICANT_BIT]=(UCHAR)(FIRSTBYTE(Value)); \
2421 ((PUCHAR)(Address))[SHORT_MOST_SIGNIFICANT_BIT]=(UCHAR)(SECONDBYTE(Value)); \
2422 } \
2423 else \
2424 { \
2425 *((PUSHORT)(Address))=(USHORT)(Value); \
2426 }
2427
2428 NTSTATUS STDCALL
2429 RtlStringFromGUID (IN REFGUID Guid,
2430 OUT PUNICODE_STRING GuidString);
2431
2432 PULONG STDCALL
2433 RtlSubAuthoritySid (PSID Sid,
2434 ULONG SubAuthority);
2435
2436 PULONG STDCALL
2437 RtlSubAuthoritySid (PSID Sid,
2438 ULONG SubAuthority);
2439
2440 PUCHAR STDCALL
2441 RtlSubAuthorityCountSid (PSID Sid);
2442
2443 PRTL_SPLAY_LINKS
2444 STDCALL
2445 RtlSubtreePredecessor (
2446 PRTL_SPLAY_LINKS Links
2447 );
2448
2449 PRTL_SPLAY_LINKS
2450 STDCALL
2451 RtlSubtreeSuccessor (
2452 PRTL_SPLAY_LINKS Links
2453 );
2454
2455 BOOLEAN
2456 STDCALL
2457 RtlTestBit (
2458 PRTL_BITMAP BitMapHeader,
2459 ULONG BitNumber
2460 );
2461
2462
2463 BOOLEAN STDCALL
2464 RtlTimeFieldsToTime (PTIME_FIELDS TimeFields,
2465 PLARGE_INTEGER Time);
2466
2467 BOOLEAN
2468 STDCALL
2469 RtlTimeToSecondsSince1970 (
2470 PLARGE_INTEGER Time,
2471 PULONG SecondsSince1970
2472 );
2473
2474 BOOLEAN
2475 STDCALL
2476 RtlTimeToSecondsSince1980 (
2477 PLARGE_INTEGER Time,
2478 PULONG SecondsSince1980
2479 );
2480
2481 VOID
2482 STDCALL
2483 RtlTimeToElapsedTimeFields(
2484 PLARGE_INTEGER Time,
2485 PTIME_FIELDS TimeFields
2486 );
2487
2488 VOID
2489 STDCALL
2490 RtlTimeToTimeFields (
2491 PLARGE_INTEGER Time,
2492 PTIME_FIELDS TimeFields
2493 );
2494
2495
2496 ULONG FASTCALL
2497 RtlUlongByteSwap (IN ULONG Source);
2498
2499 ULONGLONG FASTCALL
2500 RtlUlonglongByteSwap (IN ULONGLONG Source);
2501
2502 ULONG
2503 STDCALL
2504 RtlUnicodeStringToAnsiSize (
2505 IN PUNICODE_STRING UnicodeString
2506 );
2507
2508 NTSTATUS
2509 STDCALL
2510 RtlUnicodeStringToAnsiString (
2511 IN OUT PANSI_STRING DestinationString,
2512 IN PUNICODE_STRING SourceString,
2513 IN BOOLEAN AllocateDestinationString
2514 );
2515
2516 NTSTATUS
2517 STDCALL
2518 RtlUnicodeStringToInteger (
2519 IN PUNICODE_STRING String,
2520 IN ULONG Base,
2521 OUT PULONG Value
2522 );
2523
2524 ULONG
2525 STDCALL
2526 RtlUnicodeStringToOemSize (
2527 IN PUNICODE_STRING UnicodeString
2528 );
2529
2530 NTSTATUS
2531 STDCALL
2532 RtlUnicodeStringToCountedOemString (
2533 IN OUT POEM_STRING DestinationString,
2534 IN PUNICODE_STRING SourceString,
2535 IN BOOLEAN AllocateDestinationString
2536 );
2537
2538 NTSTATUS
2539 STDCALL
2540 RtlUnicodeStringToOemString (
2541 IN OUT POEM_STRING DestinationString,
2542 IN PUNICODE_STRING SourceString,
2543 IN BOOLEAN AllocateDestinationString
2544 );
2545
2546 NTSTATUS
2547 STDCALL
2548 RtlUnicodeToCustomCPN (
2549 IN PCPTABLEINFO CustomCP,
2550 PCHAR MbString,
2551 ULONG MbSize,
2552 PULONG ResultSize,
2553 PWCHAR UnicodeString,
2554 ULONG UnicodeSize
2555 );
2556
2557 NTSTATUS
2558 STDCALL
2559 RtlUnicodeToMultiByteN (
2560 PCHAR MbString,
2561 ULONG MbSize,
2562 PULONG ResultSize,
2563 PWCHAR UnicodeString,
2564 ULONG UnicodeSize
2565 );
2566
2567 NTSTATUS
2568 STDCALL
2569 RtlUnicodeToMultiByteSize (
2570 PULONG MbSize,
2571 PWCHAR UnicodeString,
2572 ULONG UnicodeSize
2573 );
2574
2575 NTSTATUS
2576 STDCALL
2577 RtlUnicodeToOemN (
2578 PCHAR OemString,
2579 ULONG OemSize,
2580 PULONG ResultSize,
2581 PWCHAR UnicodeString,
2582 ULONG UnicodeSize
2583 );
2584
2585 ULONG STDCALL
2586 RtlUniform (PULONG Seed);
2587
2588 BOOLEAN STDCALL
2589 RtlUnlockHeap (IN HANDLE Heap);
2590
2591 NTSTATUS
2592 STDCALL
2593 RtlUnlockBootStatusData(
2594 HANDLE Filehandle
2595 );
2596
2597 VOID
2598 STDCALL
2599 RtlUnwind (
2600 PEXCEPTION_REGISTRATION RegistrationFrame,
2601 PVOID ReturnAddress,
2602 PEXCEPTION_RECORD ExceptionRecord,
2603 DWORD EaxValue
2604 );
2605
2606 WCHAR
2607 STDCALL
2608 RtlUpcaseUnicodeChar (
2609 WCHAR Source
2610 );
2611
2612 NTSTATUS
2613 STDCALL
2614 RtlUpcaseUnicodeString (
2615 IN OUT PUNICODE_STRING DestinationString,
2616 IN PCUNICODE_STRING SourceString,
2617 IN BOOLEAN AllocateDestinationString
2618 );
2619
2620 NTSTATUS
2621 STDCALL
2622 RtlUpcaseUnicodeStringToAnsiString (
2623 IN OUT PANSI_STRING DestinationString,
2624 IN PUNICODE_STRING SourceString,
2625 IN BOOLEAN AllocateDestinationString
2626 );
2627
2628 NTSTATUS
2629 STDCALL
2630 RtlUpcaseUnicodeStringToCountedOemString (
2631 IN OUT POEM_STRING DestinationString,
2632 IN PUNICODE_STRING SourceString,
2633 IN BOOLEAN AllocateDestinationString
2634 );
2635
2636 NTSTATUS
2637 STDCALL
2638 RtlUpcaseUnicodeStringToOemString (
2639 IN OUT POEM_STRING DestinationString,
2640 IN PUNICODE_STRING SourceString,
2641 IN BOOLEAN AllocateDestinationString
2642 );
2643
2644 NTSTATUS
2645 STDCALL
2646 RtlUpcaseUnicodeToCustomCPN (
2647 IN PCPTABLEINFO CustomCP,
2648 PCHAR MbString,
2649 ULONG MbSize,
2650 PULONG ResultSize,
2651 PWCHAR UnicodeString,
2652 ULONG UnicodeSize
2653 );
2654
2655 NTSTATUS
2656 STDCALL
2657 RtlUpcaseUnicodeToMultiByteN (
2658 PCHAR MbString,
2659 ULONG MbSize,
2660 PULONG ResultSize,
2661 PWCHAR UnicodeString,
2662 ULONG UnicodeSize
2663 );
2664
2665 NTSTATUS
2666 STDCALL
2667 RtlUpcaseUnicodeToOemN (
2668 PCHAR OemString,
2669 ULONG OemSize,
2670 PULONG ResultSize,
2671 PWCHAR UnicodeString,
2672 ULONG UnicodeSize
2673 );
2674
2675 CHAR STDCALL
2676 RtlUpperChar (CHAR Source);
2677
2678 VOID STDCALL
2679 RtlUpperString (PSTRING DestinationString,
2680 PSTRING SourceString);
2681
2682 USHORT FASTCALL
2683 RtlUshortByteSwap (IN USHORT Source);
2684
2685 BOOLEAN STDCALL
2686 RtlValidAcl (PACL Acl);
2687
2688 BOOLEAN STDCALL
2689 RtlValidateHeap (
2690 HANDLE Heap,
2691 ULONG Flags,
2692 PVOID pmem
2693 );
2694
2695 BOOLEAN
2696 STDCALL
2697 RtlValidRelativeSecurityDescriptor (
2698 IN PSECURITY_DESCRIPTOR_RELATIVE SecurityDescriptorInput,
2699 IN ULONG SecurityDescriptorLength,
2700 IN SECURITY_INFORMATION RequiredInformation
2701 );
2702
2703 BOOLEAN STDCALL
2704 RtlValidSecurityDescriptor (IN PSECURITY_DESCRIPTOR SecurityDescriptor);
2705
2706 BOOLEAN STDCALL
2707 RtlValidSid (IN PSID Sid);
2708
2709 /*
2710 NTSTATUS
2711 STDCALL
2712 RtlVerifyVersionInfo(
2713 IN PRTL_OSVERSIONINFOEXW VersionInfo,
2714 IN ULONG TypeMask,
2715 IN ULONGLONG ConditionMask
2716 );
2717 */
2718
2719 NTSTATUS
2720 STDCALL
2721 RtlVolumeDeviceToDosName(
2722 IN PVOID VolumeDeviceObject,
2723 OUT PUNICODE_STRING DosName
2724 );
2725
2726 ULONG
2727 STDCALL
2728 RtlWalkFrameChain (
2729 OUT PVOID *Callers,
2730 IN ULONG Count,
2731 IN ULONG Flags
2732 );
2733
2734 BOOLEAN STDCALL
2735 RtlZeroHeap(
2736 IN PVOID HeapHandle,
2737 IN ULONG Flags
2738 );
2739
2740 ULONG
2741 STDCALL
2742 RtlxAnsiStringToUnicodeSize (
2743 IN PANSI_STRING AnsiString
2744 );
2745
2746 ULONG
2747 STDCALL
2748 RtlxOemStringToUnicodeSize (
2749 IN POEM_STRING OemString
2750 );
2751
2752 ULONG
2753 STDCALL
2754 RtlxUnicodeStringToAnsiSize (
2755 IN PUNICODE_STRING UnicodeString
2756 );
2757
2758 ULONG
2759 STDCALL
2760 RtlxUnicodeStringToOemSize (
2761 IN PUNICODE_STRING UnicodeString
2762 );
2763
2764 /* Register io functions */
2765
2766 UCHAR
2767 STDCALL
2768 READ_REGISTER_UCHAR (
2769 PUCHAR Register
2770 );
2771
2772 USHORT
2773 STDCALL
2774 READ_REGISTER_USHORT (
2775 PUSHORT Register
2776 );
2777
2778 ULONG
2779 STDCALL
2780 READ_REGISTER_ULONG (
2781 PULONG Register
2782 );
2783
2784 VOID
2785 STDCALL
2786 READ_REGISTER_BUFFER_UCHAR (
2787 PUCHAR Register,
2788 PUCHAR Buffer,
2789 ULONG Count
2790 );
2791
2792 VOID
2793 STDCALL
2794 READ_REGISTER_BUFFER_USHORT (
2795 PUSHORT Register,
2796 PUSHORT Buffer,
2797 ULONG Count
2798 );
2799
2800 VOID
2801 STDCALL
2802 READ_REGISTER_BUFFER_ULONG (
2803 PULONG Register,
2804 PULONG Buffer,
2805 ULONG Count
2806 );
2807
2808 VOID
2809 STDCALL
2810 WRITE_REGISTER_UCHAR (
2811 PUCHAR Register,
2812 UCHAR Value
2813 );
2814
2815 VOID
2816 STDCALL
2817 WRITE_REGISTER_USHORT (
2818 PUSHORT Register,
2819 USHORT Value
2820 );
2821
2822 VOID
2823 STDCALL
2824 WRITE_REGISTER_ULONG (
2825 PULONG Register,
2826 ULONG Value
2827 );
2828
2829 VOID
2830 STDCALL
2831 WRITE_REGISTER_BUFFER_UCHAR (
2832 PUCHAR Register,
2833 PUCHAR Buffer,
2834 ULONG Count
2835 );
2836
2837 VOID
2838 STDCALL
2839 WRITE_REGISTER_BUFFER_USHORT (
2840 PUSHORT Register,
2841 PUSHORT Buffer,
2842 ULONG Count
2843 );
2844
2845 VOID
2846 STDCALL
2847 WRITE_REGISTER_BUFFER_ULONG (
2848 PULONG Register,
2849 PULONG Buffer,
2850 ULONG Count
2851 );
2852
2853
2854 /* functions exported from NTOSKRNL.EXE which are considered RTL */
2855
2856 #if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__) || defined(__NTDLL__) || defined(__NTAPP__)
2857
2858 char *_itoa (int value, char *string, int radix);
2859 wchar_t *_itow (int value, wchar_t *string, int radix);
2860 int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
2861 int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
2862 int _stricmp(const char *s1, const char *s2);
2863 char * _strlwr(char *x);
2864 int _strnicmp(const char *s1, const char *s2, size_t n);
2865 char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
2866 char * _strrev(char *s);
2867 char * _strset(char* szToFill, int szFill);
2868 char * _strupr(char *x);
2869 int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
2870 int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
2871 wchar_t * _wcslwr (wchar_t *x);
2872 int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
2873 wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
2874 wchar_t * _wcsrev(wchar_t *s);
2875 wchar_t *_wcsupr(wchar_t *x);
2876
2877 int atoi(const char *str);
2878 long atol(const char *str);
2879 int isdigit(int c);
2880 int islower(int c);
2881 int isprint(int c);
2882 int isspace(int c);
2883 int isupper(int c);
2884 int isxdigit(int c);
2885 size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
2886 int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
2887 void * memchr(const void *s, int c, size_t n);
2888 void * memcpy(void *to, const void *from, size_t count);
2889 void * memmove(void *dest,const void *src, size_t count);
2890 void * memset(void *src, int val, size_t count);
2891
2892 #if 0
2893 qsort
2894 #endif
2895
2896 int rand(void);
2897 int sprintf(char * buf, const char *fmt, ...);
2898 void srand(unsigned seed);
2899 char * strcat(char *s, const char *append);
2900 char * strchr(const char *s, int c);
2901 int strcmp(const char *s1, const char *s2);
2902 char * strcpy(char *to, const char *from);
2903 size_t strlen(const char *str);
2904 char * strncat(char *dst, const char *src, size_t n);
2905 int strncmp(const char *s1, const char *s2, size_t n);
2906 char *strncpy(char *dst, const char *src, size_t n);
2907 char *strrchr(const char *s, int c);
2908 size_t strspn(const char *s1, const char *s2);
2909 char *strstr(const char *s, const char *find);
2910 int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
2911 int tolower(int c);
2912 int toupper(int c);
2913 wchar_t towlower(wchar_t c);
2914 wchar_t towupper(wchar_t c);
2915 int vsprintf(char *buf, const char *fmt, va_list args);
2916 wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
2917 wchar_t * wcschr(const wchar_t *str, wchar_t ch);
2918 int wcscmp(const wchar_t *cs, const wchar_t *ct);
2919 wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
2920 size_t wcscspn(const wchar_t *str,const wchar_t *reject);
2921 size_t wcslen(const wchar_t *s);
2922 wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
2923 int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
2924 wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
2925 wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
2926 size_t wcsspn(const wchar_t *str,const wchar_t *accept);
2927 wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
2928 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
2929 int wctomb (char *mbchar, wchar_t wchar);
2930
2931 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
2932
2933 #endif /* __DDK_RTL_H */
2934
2935