Reactos
at master 717 lines 18 kB view raw
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_ */