Reactos
1/*
2 * winternl.h
3 *
4 * Windows NT internal data structures and functions
5 *
6 * Note: This header exists only for compatibility with the native SDK.
7 * It's definitions are incomplete and potentially unsuitable.
8 * ReactOS modules should not make use of it!
9 *
10 * USE NDK INSTEAD!
11 *
12 * This file is part of the ReactOS PSDK package.
13 *
14 * Contributors:
15 * Timo Kreuzer (timo.kreuzer@reactos.org)
16 *
17 * THIS SOFTWARE IS NOT COPYRIGHTED
18 *
19 * This source code is offered for use in the public domain. You may
20 * use, modify or distribute it freely.
21 *
22 * This code is distributed in the hope that it will be useful but
23 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
24 * DISCLAIMED. This includes but is not limited to warranties of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26 *
27 */
28#pragma once
29
30#ifdef __REACTOS__
31#error "Do not use this header, use NDK!"
32#endif
33
34#ifndef _WINTERNL_
35#define _WINTERNL_
36
37//#include <winapifamily.h>
38#include <windef.h>
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
45
46#ifndef NT_SUCCESS
47#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
48#endif
49
50#ifndef NT_INFORMATION
51#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1)
52#endif
53
54#ifndef NT_WARNING
55#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2)
56#endif
57
58#ifndef NT_ERROR
59#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3)
60#endif
61
62typedef CONST char *PCSZ;
63
64typedef struct _STRING
65{
66 USHORT Length;
67 USHORT MaximumLength;
68 PCHAR Buffer;
69} STRING, *PSTRING;
70typedef STRING ANSI_STRING;
71typedef PSTRING PANSI_STRING;
72typedef PSTRING PCANSI_STRING; // yes, thats the definition from MS!
73typedef STRING OEM_STRING;
74typedef PSTRING POEM_STRING;
75typedef const STRING *PCOEM_STRING;
76
77typedef struct _UNICODE_STRING
78{
79 USHORT Length;
80 USHORT MaximumLength;
81 PWSTR Buffer;
82} UNICODE_STRING, *PUNICODE_STRING;
83typedef const UNICODE_STRING *PCUNICODE_STRING;
84
85typedef struct _RTL_USER_PROCESS_PARAMETERS
86{
87 BYTE Reserved1[16];
88 PVOID Reserved2[10];
89 UNICODE_STRING ImagePathName;
90 UNICODE_STRING CommandLine;
91} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
92
93typedef struct _PEB_LDR_DATA
94{
95 BYTE Reserved1[8];
96 PVOID Reserved2[3];
97 LIST_ENTRY InMemoryOrderModuleList;
98} PEB_LDR_DATA, *PPEB_LDR_DATA;
99
100typedef struct _LDR_DATA_TABLE_ENTRY
101{
102 PVOID Reserved1[2];
103 LIST_ENTRY InMemoryOrderLinks;
104 PVOID Reserved2[2];
105 PVOID DllBase;
106 PVOID Reserved3[2];
107 UNICODE_STRING FullDllName;
108 BYTE Reserved4[8];
109 PVOID Reserved5[3];
110 union {
111 ULONG CheckSum;
112 PVOID Reserved6;
113 } DUMMYUNIONNAME;
114 ULONG TimeDateStamp;
115} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
116
117typedef
118VOID
119(NTAPI *PPS_POST_PROCESS_INIT_ROUTINE)(
120 VOID);
121
122typedef struct _PEB
123{
124 BYTE Reserved1[2];
125 BYTE BeingDebugged;
126 BYTE Reserved2[1];
127 PVOID Reserved3[2];
128 PPEB_LDR_DATA Ldr;
129 PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
130 PVOID Reserved4[3];
131 PVOID AtlThunkSListPtr;
132 PVOID Reserved5;
133 ULONG Reserved6;
134 PVOID Reserved7;
135 ULONG Reserved8;
136 ULONG AtlThunkSListPtr32;
137 PVOID Reserved9[45];
138 BYTE Reserved10[96];
139 PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;
140 BYTE Reserved11[128];
141 PVOID Reserved12[1];
142 ULONG SessionId;
143} PEB, *PPEB;
144
145typedef struct _TEB
146{
147 PVOID Reserved1[12];
148 PPEB ProcessEnvironmentBlock;
149 PVOID Reserved2[399];
150 BYTE Reserved3[1952];
151 PVOID TlsSlots[64];
152 BYTE Reserved4[8];
153 PVOID Reserved5[26];
154 PVOID ReservedForOle;
155 PVOID Reserved6[4];
156 PVOID TlsExpansionSlots;
157} TEB, *PTEB;
158
159typedef enum _FILE_INFORMATION_CLASS
160{
161 FileDirectoryInformation = 1
162} FILE_INFORMATION_CLASS;
163
164#define INTERNAL_TS_ACTIVE_CONSOLE_ID (*((volatile ULONG*)0x7ffe02d8))
165#define LOGONID_CURRENT ((ULONG)-1)
166#define SERVERNAME_CURRENT ((HANDLE)NULL)
167
168/* Flags for NtCreateFile and NtOpenFile */
169#define FILE_DIRECTORY_FILE 0x00000001
170#define FILE_WRITE_THROUGH 0x00000002
171#define FILE_SEQUENTIAL_ONLY 0x00000004
172#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
173#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
174#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
175#define FILE_NON_DIRECTORY_FILE 0x00000040
176#define FILE_CREATE_TREE_CONNECTION 0x00000080
177#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
178#define FILE_NO_EA_KNOWLEDGE 0x00000200
179#define FILE_OPEN_REMOTE_INSTANCE 0x00000400
180#define FILE_RANDOM_ACCESS 0x00000800
181#define FILE_DELETE_ON_CLOSE 0x00001000
182#define FILE_OPEN_BY_FILE_ID 0x00002000
183#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
184#define FILE_NO_COMPRESSION 0x00008000
185#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
186#define FILE_OPEN_REQUIRING_OPLOCK 0x00010000
187#endif
188#define FILE_RESERVE_OPFILTER 0x00100000
189#define FILE_OPEN_REPARSE_POINT 0x00200000
190#define FILE_OPEN_NO_RECALL 0x00400000
191#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
192
193/* Status for NtCreateFile or NtOpenFile */
194#define FILE_SUPERSEDED 0x00000000
195#define FILE_OPENED 0x00000001
196#define FILE_CREATED 0x00000002
197#define FILE_OVERWRITTEN 0x00000003
198#define FILE_EXISTS 0x00000004
199#define FILE_DOES_NOT_EXIST 0x00000005
200
201#define FILE_VALID_OPTION_FLAGS 0x00ffffff
202#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
203#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
204#define FILE_VALID_SET_FLAGS 0x00000036
205
206/* Disposition for NtCreateFile */
207#define FILE_SUPERSEDE 0x00000000
208#define FILE_OPEN 0x00000001
209#define FILE_CREATE 0x00000002
210#define FILE_OPEN_IF 0x00000003
211#define FILE_OVERWRITE 0x00000004
212#define FILE_OVERWRITE_IF 0x00000005
213#define FILE_MAXIMUM_DISPOSITION 0x00000005
214
215typedef struct _OBJECT_ATTRIBUTES
216{
217 ULONG Length;
218 HANDLE RootDirectory;
219 PUNICODE_STRING ObjectName;
220 ULONG Attributes;
221 PVOID SecurityDescriptor;
222 PVOID SecurityQualityOfService;
223} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
224
225#define OBJ_INHERIT 0x00000002L
226#define OBJ_PERMANENT 0x00000010L
227#define OBJ_EXCLUSIVE 0x00000020L
228#define OBJ_CASE_INSENSITIVE 0x00000040L
229#define OBJ_OPENIF 0x00000080L
230#define OBJ_OPENLINK 0x00000100L
231#define OBJ_KERNEL_HANDLE 0x00000200L
232#define OBJ_FORCE_ACCESS_CHECK 0x00000400L
233#define OBJ_VALID_ATTRIBUTES 0x000007F2L
234
235#ifndef InitializeObjectAttributes
236#define InitializeObjectAttributes(p, n, a, r, s) \
237{ \
238 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
239 (p)->RootDirectory = r; \
240 (p)->Attributes = a; \
241 (p)->ObjectName = n; \
242 (p)->SecurityDescriptor = s; \
243 (p)->SecurityQualityOfService = NULL; \
244}
245#endif
246
247typedef struct _IO_STATUS_BLOCK {
248 union {
249 NTSTATUS Status;
250 PVOID Pointer;
251 } DUMMYUNIONNAME;
252
253 ULONG_PTR Information;
254} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
255
256__kernel_entry
257NTSYSCALLAPI
258NTSTATUS
259NTAPI
260NtCreateFile(
261 _Out_ PHANDLE FileHandle,
262 _In_ ACCESS_MASK DesiredAccess,
263 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
264 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
265 _In_opt_ PLARGE_INTEGER AllocationSize,
266 _In_ ULONG FileAttributes,
267 _In_ ULONG ShareAccess,
268 _In_ ULONG CreateDisposition,
269 _In_ ULONG CreateOptions,
270 _In_reads_bytes_opt_(EaLength) PVOID EaBuffer,
271 _In_ ULONG EaLength);
272
273__kernel_entry
274NTSYSCALLAPI
275NTSTATUS
276NTAPI
277NtOpenFile(
278 _Out_ PHANDLE FileHandle,
279 _In_ ACCESS_MASK DesiredAccess,
280 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
281 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
282 _In_ ULONG ShareAccess,
283 _In_ ULONG OpenOptions);
284
285__kernel_entry
286NTSYSCALLAPI
287NTSTATUS
288NTAPI
289NtClose(
290 _In_ HANDLE Handle);
291
292typedef
293VOID
294(NTAPI *PIO_APC_ROUTINE)(
295 _In_ PVOID ApcContext,
296 _In_ PIO_STATUS_BLOCK IoStatusBlock,
297 _In_ ULONG Reserved);
298
299#define PIO_APC_ROUTINE_DEFINED
300
301__kernel_entry
302NTSYSCALLAPI
303NTSTATUS
304NTAPI
305NtDeviceIoControlFile(
306 _In_ HANDLE FileHandle,
307 _In_opt_ HANDLE Event,
308 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
309 _In_opt_ PVOID ApcContext,
310 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
311 _In_ ULONG IoControlCode,
312 _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
313 _In_ ULONG InputBufferLength,
314 _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
315 _In_ ULONG OutputBufferLength);
316
317__kernel_entry
318NTSYSCALLAPI
319NTSTATUS
320NTAPI
321NtWaitForSingleObject(
322 _In_ HANDLE Object,
323 _In_ BOOLEAN Alertable,
324 _In_opt_ PLARGE_INTEGER Timeout);
325
326__kernel_entry
327NTSYSCALLAPI
328NTSTATUS
329NTAPI
330NtRenameKey(
331 _In_ HANDLE KeyHandle,
332 _In_ PUNICODE_STRING NewName);
333
334__kernel_entry
335NTSYSCALLAPI
336NTSTATUS
337NTAPI
338NtNotifyChangeMultipleKeys(
339 _In_ HANDLE MasterKeyHandle,
340 _In_opt_ ULONG Count,
341 _In_reads_opt_(Count) OBJECT_ATTRIBUTES SubordinateObjects[],
342 _In_opt_ HANDLE Event,
343 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
344 _In_opt_ PVOID ApcContext,
345 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
346 _In_ ULONG CompletionFilter,
347 _In_ BOOLEAN WatchTree,
348 _Out_writes_bytes_opt_(BufferSize) PVOID Buffer,
349 _In_ ULONG BufferSize,
350 _In_ BOOLEAN Asynchronous);
351
352typedef struct _KEY_VALUE_ENTRY
353{
354 PUNICODE_STRING ValueName;
355 ULONG DataLength;
356 ULONG DataOffset;
357 ULONG Type;
358} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
359
360__kernel_entry
361NTSYSCALLAPI
362NTSTATUS
363NTAPI
364NtQueryMultipleValueKey(
365 _In_ HANDLE KeyHandle,
366 _Inout_updates_(EntryCount) PKEY_VALUE_ENTRY ValueEntries,
367 _In_ ULONG EntryCount,
368 _Out_writes_bytes_(*BufferLength) PVOID ValueBuffer,
369 _Inout_ PULONG BufferLength,
370 _Out_opt_ PULONG RequiredBufferLength);
371
372typedef enum _KEY_SET_INFORMATION_CLASS
373{
374 KeyWriteTimeInformation,
375 KeyWow64FlagsInformation,
376 KeyControlFlagsInformation,
377 KeySetVirtualizationInformation,
378 KeySetDebugInformation,
379 KeySetHandleTagsInformation,
380 MaxKeySetInfoClass
381} KEY_SET_INFORMATION_CLASS;
382
383__kernel_entry
384NTSYSCALLAPI
385NTSTATUS
386NTAPI
387NtSetInformationKey(
388 _In_ HANDLE KeyHandle,
389 _In_ _Strict_type_match_
390 KEY_SET_INFORMATION_CLASS KeySetInformationClass,
391 _In_reads_bytes_(KeySetInformationLength) PVOID KeySetInformation,
392 _In_ ULONG KeySetInformationLength);
393
394typedef enum _PROCESSINFOCLASS
395{
396 ProcessBasicInformation = 0,
397 ProcessDebugPort = 7,
398 ProcessWow64Information = 26,
399 ProcessImageFileName = 27,
400 ProcessBreakOnTermination = 29
401} PROCESSINFOCLASS;
402
403typedef struct _PROCESS_BASIC_INFORMATION
404{
405 PVOID Reserved1;
406 PPEB PebBaseAddress;
407 PVOID Reserved2[2];
408 ULONG_PTR UniqueProcessId;
409 PVOID Reserved3;
410} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
411
412__kernel_entry
413NTSYSCALLAPI
414NTSTATUS
415NTAPI
416NtQueryInformationProcess(
417 _In_ HANDLE ProcessHandle,
418 _In_ PROCESSINFOCLASS ProcessInformationClass,
419 _Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength)
420 PVOID ProcessInformation,
421 _In_ ULONG ProcessInformationLength,
422 _Out_opt_ PULONG ReturnLength);
423
424typedef enum _THREADINFOCLASS
425{
426 ThreadIsIoPending = 16
427} THREADINFOCLASS;
428
429__kernel_entry
430NTSYSCALLAPI
431NTSTATUS
432NTAPI
433NtQueryInformationThread(
434 _In_ HANDLE ThreadHandle,
435 _In_ THREADINFOCLASS ThreadInformationClass,
436 _Out_writes_bytes_to_opt_(ThreadInformationLength, *ReturnLength)
437 PVOID ThreadInformation,
438 _In_ ULONG ThreadInformationLength,
439 _Out_opt_ PULONG ReturnLength);
440
441typedef enum _OBJECT_INFORMATION_CLASS
442{
443 ObjectBasicInformation = 0,
444 ObjectTypeInformation = 2
445} OBJECT_INFORMATION_CLASS;
446
447typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION
448{
449 ULONG Attributes;
450 ACCESS_MASK GrantedAccess;
451 ULONG HandleCount;
452 ULONG PointerCount;
453 ULONG Reserved[10];
454} PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;
455
456typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION
457{
458 UNICODE_STRING TypeName;
459 ULONG Reserved [22];
460} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;
461
462_IRQL_requires_max_(PASSIVE_LEVEL)
463__kernel_entry
464NTSYSCALLAPI
465NTSTATUS
466NTAPI
467NtQueryObject(
468 _In_opt_ HANDLE Handle,
469 _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass,
470 _Out_writes_bytes_opt_(ObjectInformationLength) PVOID ObjectInformation,
471 _In_ ULONG ObjectInformationLength,
472 _Out_opt_ PULONG ReturnLength);
473
474typedef enum _SYSTEM_INFORMATION_CLASS
475{
476 SystemBasicInformation = 0,
477 SystemPerformanceInformation = 2,
478 SystemTimeOfDayInformation = 3,
479 SystemProcessInformation = 5,
480 SystemProcessorPerformanceInformation = 8,
481 SystemInterruptInformation = 23,
482 SystemExceptionInformation = 33,
483 SystemRegistryQuotaInformation = 37,
484 SystemLookasideInformation = 45,
485 SystemPolicyInformation = 134,
486} SYSTEM_INFORMATION_CLASS;
487
488typedef struct _SYSTEM_BASIC_INFORMATION
489{
490 BYTE Reserved1[24];
491 PVOID Reserved2[4];
492 CCHAR NumberOfProcessors;
493} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
494
495typedef struct _SYSTEM_PERFORMANCE_INFORMATION
496{
497#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
498 BYTE Reserved1[344];
499#elif (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
500 BYTE Reserved1[328];
501#else
502 BYTE Reserved1[312];
503#endif
504} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
505
506typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
507{
508 BYTE Reserved1[48];
509} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
510
511typedef struct _SYSTEM_PROCESS_INFORMATION
512{
513 ULONG NextEntryOffset;
514 BYTE Reserved1[52];
515 PVOID Reserved2[3];
516 HANDLE UniqueProcessId;
517 PVOID Reserved3;
518 ULONG HandleCount;
519 BYTE Reserved4[4];
520 PVOID Reserved5[11];
521 SIZE_T PeakPagefileUsage;
522 SIZE_T PrivatePageCount;
523 LARGE_INTEGER Reserved6[6];
524} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
525
526typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
527{
528 LARGE_INTEGER IdleTime;
529 LARGE_INTEGER KernelTime;
530 LARGE_INTEGER UserTime;
531 LARGE_INTEGER Reserved1[2];
532 ULONG Reserved2;
533} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
534
535typedef struct _SYSTEM_INTERRUPT_INFORMATION
536{
537 BYTE Reserved1[24];
538} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
539
540typedef struct _SYSTEM_EXCEPTION_INFORMATION
541{
542 BYTE Reserved1[16];
543} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
544
545typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION
546{
547 ULONG RegistryQuotaAllowed;
548 ULONG RegistryQuotaUsed;
549 PVOID Reserved1;
550} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
551
552typedef struct _SYSTEM_LOOKASIDE_INFORMATION
553{
554 BYTE Reserved1[32];
555} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
556
557typedef struct _SYSTEM_POLICY_INFORMATION
558{
559 PVOID Reserved1[2];
560 ULONG Reserved2[3];
561} SYSTEM_POLICY_INFORMATION, *PSYSTEM_POLICY_INFORMATION;
562
563__kernel_entry
564NTSYSCALLAPI
565NTSTATUS
566NTAPI
567NtQuerySystemInformation(
568 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass,
569 _Out_ PVOID SystemInformation,
570 _In_ ULONG InformationLength,
571 _Out_opt_ PULONG ResultLength);
572
573typedef enum _WINSTATIONINFOCLASS
574{
575 WinStationInformation = 8
576} WINSTATIONINFOCLASS;
577
578typedef struct _WINSTATIONINFORMATIONW
579{
580 BYTE Reserved2[70];
581 ULONG LogonId;
582 BYTE Reserved3[1140];
583} WINSTATIONINFORMATIONW, * PWINSTATIONINFORMATIONW;
584
585typedef
586BOOLEAN
587(WINAPI * PWINSTATIONQUERYINFORMATIONW)(
588 HANDLE,
589 ULONG,
590 WINSTATIONINFOCLASS,
591 PVOID,
592 ULONG,
593 PULONG);
594
595__kernel_entry
596NTSYSCALLAPI
597NTSTATUS
598NTAPI
599NtQuerySystemTime(
600 _Out_ PLARGE_INTEGER SystemTime);
601
602#define RtlMoveMemory(Dest,Source,Length) memmove((Dest),(Source),(Length))
603#define RtlFillMemory(Dest,Length,Fill) memset((Dest),(Fill),(Length))
604#define RtlZeroMemory(Dest,Length) RtlFillMemory((Dest),(Length),0)
605
606VOID
607NTAPI
608RtlInitString(
609 PSTRING DestinationString,
610 PCSZ SourceString);
611
612VOID
613NTAPI
614RtlInitAnsiString(
615 PANSI_STRING DestinationString,
616 PCSZ SourceString);
617
618VOID
619NTAPI
620RtlInitUnicodeString(
621 PUNICODE_STRING DestinationString,
622 PCWSTR SourceString);
623
624VOID
625NTAPI
626RtlFreeAnsiString(
627 PANSI_STRING AnsiString);
628
629VOID
630NTAPI
631RtlFreeOemString(
632 POEM_STRING OemString);
633
634VOID
635NTAPI
636RtlFreeUnicodeString(
637 PUNICODE_STRING UnicodeString);
638
639NTSTATUS
640NTAPI
641RtlAnsiStringToUnicodeString(
642 PUNICODE_STRING DestinationString,
643 PCANSI_STRING SourceString,
644 BOOLEAN AllocateDestinationString);
645
646NTSTATUS
647NTAPI
648RtlUnicodeStringToAnsiString(
649 PANSI_STRING DestinationString,
650 PCUNICODE_STRING SourceString,
651 BOOLEAN AllocateDestinationString);
652
653NTSTATUS
654NTAPI
655RtlUnicodeStringToOemString(
656 POEM_STRING DestinationString,
657 PCUNICODE_STRING SourceString,
658 BOOLEAN AllocateDestinationString);
659
660NTSTATUS
661NTAPI
662RtlUnicodeToMultiByteSize(
663 _Out_ PULONG BytesInMultiByteString,
664 _In_reads_bytes_(BytesInUnicodeString) PWCH UnicodeString,
665 _In_ ULONG BytesInUnicodeString);
666
667NTSTATUS
668NTAPI
669RtlCharToInteger(
670 PCSZ String,
671 ULONG Base,
672 PULONG Value);
673
674BOOLEAN
675NTAPI
676RtlIsNameLegalDOS8Dot3(
677 _In_ PUNICODE_STRING Name,
678 _Inout_opt_ POEM_STRING OemName,
679 _Inout_opt_ PBOOLEAN NameContainsSpaces);
680
681NTSTATUS
682NTAPI
683RtlLocalTimeToSystemTime(
684 IN PLARGE_INTEGER LocalTime,
685 _Out_ PLARGE_INTEGER SystemTime);
686
687BOOLEAN
688NTAPI
689RtlTimeToSecondsSince1970(
690 PLARGE_INTEGER Time,
691 PULONG ElapsedSeconds);
692
693_When_(Status < 0, _Out_range_(>, 0))
694_When_(Status >= 0, _Out_range_(==, 0))
695ULONG
696NTAPI
697RtlNtStatusToDosError(
698 _In_ NTSTATUS Status);
699
700NTSTATUS
701NTAPI
702RtlConvertSidToUnicodeString(
703 PUNICODE_STRING UnicodeString,
704 PSID Sid,
705 BOOLEAN AllocateDestinationString);
706
707ULONG
708NTAPI
709RtlUniform(
710 PULONG Seed);
711
712
713#ifdef __cplusplus
714}
715#endif
716
717#endif /* _WINTERNL_ */