Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718/* * winternl.h * * Windows NT internal data structures and functions * * Note: This header exists only for compatibility with the native SDK. * It's definitions are incomplete and potentially unsuitable. * ReactOS modules should not make use of it! * * USE NDK INSTEAD! * * This file is part of the ReactOS PSDK package. * * Contributors: * Timo Kreuzer (timo.kreuzer@reactos.org) * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#pragma once
#ifdef __REACTOS__#error "Do not use this header, use NDK!"#endif
#ifndef _WINTERNL_#define _WINTERNL_
//#include <winapifamily.h>#include <windef.h>
#ifdef __cplusplusextern "C" {#endif
typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
#ifndef NT_SUCCESS#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)#endif
#ifndef NT_INFORMATION#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1)#endif
#ifndef NT_WARNING#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2)#endif
#ifndef NT_ERROR#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3)#endif
typedef CONST char *PCSZ;
typedef struct _STRING{ USHORT Length; USHORT MaximumLength; PCHAR Buffer;} STRING, *PSTRING;typedef STRING ANSI_STRING;typedef PSTRING PANSI_STRING;typedef PSTRING PCANSI_STRING; // yes, thats the definition from MS!typedef STRING OEM_STRING;typedef PSTRING POEM_STRING;typedef const STRING *PCOEM_STRING;
typedef struct _UNICODE_STRING{ USHORT Length; USHORT MaximumLength; PWSTR Buffer;} UNICODE_STRING, *PUNICODE_STRING;typedef const UNICODE_STRING *PCUNICODE_STRING;
typedef struct _RTL_USER_PROCESS_PARAMETERS{ BYTE Reserved1[16]; PVOID Reserved2[10]; UNICODE_STRING ImagePathName; UNICODE_STRING CommandLine;} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
typedef struct _PEB_LDR_DATA{ BYTE Reserved1[8]; PVOID Reserved2[3]; LIST_ENTRY InMemoryOrderModuleList;} PEB_LDR_DATA, *PPEB_LDR_DATA;
typedef struct _LDR_DATA_TABLE_ENTRY{ PVOID Reserved1[2]; LIST_ENTRY InMemoryOrderLinks; PVOID Reserved2[2]; PVOID DllBase; PVOID Reserved3[2]; UNICODE_STRING FullDllName; BYTE Reserved4[8]; PVOID Reserved5[3]; union { ULONG CheckSum; PVOID Reserved6; } DUMMYUNIONNAME; ULONG TimeDateStamp;} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
typedefVOID(NTAPI *PPS_POST_PROCESS_INIT_ROUTINE)( VOID);
typedef struct _PEB{ BYTE Reserved1[2]; BYTE BeingDebugged; BYTE Reserved2[1]; PVOID Reserved3[2]; PPEB_LDR_DATA Ldr; PRTL_USER_PROCESS_PARAMETERS ProcessParameters; PVOID Reserved4[3]; PVOID AtlThunkSListPtr; PVOID Reserved5; ULONG Reserved6; PVOID Reserved7; ULONG Reserved8; ULONG AtlThunkSListPtr32; PVOID Reserved9[45]; BYTE Reserved10[96]; PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine; BYTE Reserved11[128]; PVOID Reserved12[1]; ULONG SessionId;} PEB, *PPEB;
typedef struct _TEB{ PVOID Reserved1[12]; PPEB ProcessEnvironmentBlock; PVOID Reserved2[399]; BYTE Reserved3[1952]; PVOID TlsSlots[64]; BYTE Reserved4[8]; PVOID Reserved5[26]; PVOID ReservedForOle; PVOID Reserved6[4]; PVOID TlsExpansionSlots;} TEB, *PTEB;
typedef enum _FILE_INFORMATION_CLASS{ FileDirectoryInformation = 1} FILE_INFORMATION_CLASS;
#define INTERNAL_TS_ACTIVE_CONSOLE_ID (*((volatile ULONG*)0x7ffe02d8))#define LOGONID_CURRENT ((ULONG)-1)#define SERVERNAME_CURRENT ((HANDLE)NULL)
/* Flags for NtCreateFile and NtOpenFile */#define FILE_DIRECTORY_FILE 0x00000001#define FILE_WRITE_THROUGH 0x00000002#define FILE_SEQUENTIAL_ONLY 0x00000004#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020#define FILE_NON_DIRECTORY_FILE 0x00000040#define FILE_CREATE_TREE_CONNECTION 0x00000080#define FILE_COMPLETE_IF_OPLOCKED 0x00000100#define FILE_NO_EA_KNOWLEDGE 0x00000200#define FILE_OPEN_REMOTE_INSTANCE 0x00000400#define FILE_RANDOM_ACCESS 0x00000800#define FILE_DELETE_ON_CLOSE 0x00001000#define FILE_OPEN_BY_FILE_ID 0x00002000#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000#define FILE_NO_COMPRESSION 0x00008000#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)#define FILE_OPEN_REQUIRING_OPLOCK 0x00010000#endif#define FILE_RESERVE_OPFILTER 0x00100000#define FILE_OPEN_REPARSE_POINT 0x00200000#define FILE_OPEN_NO_RECALL 0x00400000#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
/* Status for NtCreateFile or NtOpenFile */#define FILE_SUPERSEDED 0x00000000#define FILE_OPENED 0x00000001#define FILE_CREATED 0x00000002#define FILE_OVERWRITTEN 0x00000003#define FILE_EXISTS 0x00000004#define FILE_DOES_NOT_EXIST 0x00000005
#define FILE_VALID_OPTION_FLAGS 0x00ffffff#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032#define FILE_VALID_SET_FLAGS 0x00000036
/* Disposition for NtCreateFile */#define FILE_SUPERSEDE 0x00000000#define FILE_OPEN 0x00000001#define FILE_CREATE 0x00000002#define FILE_OPEN_IF 0x00000003#define FILE_OVERWRITE 0x00000004#define FILE_OVERWRITE_IF 0x00000005#define FILE_MAXIMUM_DISPOSITION 0x00000005
typedef struct _OBJECT_ATTRIBUTES{ ULONG Length; HANDLE RootDirectory; PUNICODE_STRING ObjectName; ULONG Attributes; PVOID SecurityDescriptor; PVOID SecurityQualityOfService;} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
#define OBJ_INHERIT 0x00000002L#define OBJ_PERMANENT 0x00000010L#define OBJ_EXCLUSIVE 0x00000020L#define OBJ_CASE_INSENSITIVE 0x00000040L#define OBJ_OPENIF 0x00000080L#define OBJ_OPENLINK 0x00000100L#define OBJ_KERNEL_HANDLE 0x00000200L#define OBJ_FORCE_ACCESS_CHECK 0x00000400L#define OBJ_VALID_ATTRIBUTES 0x000007F2L
#ifndef InitializeObjectAttributes#define InitializeObjectAttributes(p, n, a, r, s) \{ \ (p)->Length = sizeof(OBJECT_ATTRIBUTES); \ (p)->RootDirectory = r; \ (p)->Attributes = a; \ (p)->ObjectName = n; \ (p)->SecurityDescriptor = s; \ (p)->SecurityQualityOfService = NULL; \}#endif
typedef struct _IO_STATUS_BLOCK { union { NTSTATUS Status; PVOID Pointer; } DUMMYUNIONNAME;
ULONG_PTR Information;} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtCreateFile( _Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_opt_ PLARGE_INTEGER AllocationSize, _In_ ULONG FileAttributes, _In_ ULONG ShareAccess, _In_ ULONG CreateDisposition, _In_ ULONG CreateOptions, _In_reads_bytes_opt_(EaLength) PVOID EaBuffer, _In_ ULONG EaLength);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtOpenFile( _Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtClose( _In_ HANDLE Handle);
typedefVOID(NTAPI *PIO_APC_ROUTINE)( _In_ PVOID ApcContext, _In_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG Reserved);
#define PIO_APC_ROUTINE_DEFINED
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtDeviceIoControlFile( _In_ HANDLE FileHandle, _In_opt_ HANDLE Event, _In_opt_ PIO_APC_ROUTINE ApcRoutine, _In_opt_ PVOID ApcContext, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG IoControlCode, _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer, _In_ ULONG OutputBufferLength);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtWaitForSingleObject( _In_ HANDLE Object, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Timeout);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtRenameKey( _In_ HANDLE KeyHandle, _In_ PUNICODE_STRING NewName);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtNotifyChangeMultipleKeys( _In_ HANDLE MasterKeyHandle, _In_opt_ ULONG Count, _In_reads_opt_(Count) OBJECT_ATTRIBUTES SubordinateObjects[], _In_opt_ HANDLE Event, _In_opt_ PIO_APC_ROUTINE ApcRoutine, _In_opt_ PVOID ApcContext, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG CompletionFilter, _In_ BOOLEAN WatchTree, _Out_writes_bytes_opt_(BufferSize) PVOID Buffer, _In_ ULONG BufferSize, _In_ BOOLEAN Asynchronous);
typedef struct _KEY_VALUE_ENTRY{ PUNICODE_STRING ValueName; ULONG DataLength; ULONG DataOffset; ULONG Type;} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQueryMultipleValueKey( _In_ HANDLE KeyHandle, _Inout_updates_(EntryCount) PKEY_VALUE_ENTRY ValueEntries, _In_ ULONG EntryCount, _Out_writes_bytes_(*BufferLength) PVOID ValueBuffer, _Inout_ PULONG BufferLength, _Out_opt_ PULONG RequiredBufferLength);
typedef enum _KEY_SET_INFORMATION_CLASS{ KeyWriteTimeInformation, KeyWow64FlagsInformation, KeyControlFlagsInformation, KeySetVirtualizationInformation, KeySetDebugInformation, KeySetHandleTagsInformation, MaxKeySetInfoClass} KEY_SET_INFORMATION_CLASS;
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtSetInformationKey( _In_ HANDLE KeyHandle, _In_ _Strict_type_match_ KEY_SET_INFORMATION_CLASS KeySetInformationClass, _In_reads_bytes_(KeySetInformationLength) PVOID KeySetInformation, _In_ ULONG KeySetInformationLength);
typedef enum _PROCESSINFOCLASS{ ProcessBasicInformation = 0, ProcessDebugPort = 7, ProcessWow64Information = 26, ProcessImageFileName = 27, ProcessBreakOnTermination = 29} PROCESSINFOCLASS;
typedef struct _PROCESS_BASIC_INFORMATION{ PVOID Reserved1; PPEB PebBaseAddress; PVOID Reserved2[2]; ULONG_PTR UniqueProcessId; PVOID Reserved3;} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQueryInformationProcess( _In_ HANDLE ProcessHandle, _In_ PROCESSINFOCLASS ProcessInformationClass, _Out_writes_bytes_to_opt_(ProcessInformationLength, *ReturnLength) PVOID ProcessInformation, _In_ ULONG ProcessInformationLength, _Out_opt_ PULONG ReturnLength);
typedef enum _THREADINFOCLASS{ ThreadIsIoPending = 16} THREADINFOCLASS;
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQueryInformationThread( _In_ HANDLE ThreadHandle, _In_ THREADINFOCLASS ThreadInformationClass, _Out_writes_bytes_to_opt_(ThreadInformationLength, *ReturnLength) PVOID ThreadInformation, _In_ ULONG ThreadInformationLength, _Out_opt_ PULONG ReturnLength);
typedef enum _OBJECT_INFORMATION_CLASS{ ObjectBasicInformation = 0, ObjectTypeInformation = 2} OBJECT_INFORMATION_CLASS;
typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION{ ULONG Attributes; ACCESS_MASK GrantedAccess; ULONG HandleCount; ULONG PointerCount; ULONG Reserved[10];} PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;
typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION{ UNICODE_STRING TypeName; ULONG Reserved [22];} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;
_IRQL_requires_max_(PASSIVE_LEVEL)__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQueryObject( _In_opt_ HANDLE Handle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _Out_writes_bytes_opt_(ObjectInformationLength) PVOID ObjectInformation, _In_ ULONG ObjectInformationLength, _Out_opt_ PULONG ReturnLength);
typedef enum _SYSTEM_INFORMATION_CLASS{ SystemBasicInformation = 0, SystemPerformanceInformation = 2, SystemTimeOfDayInformation = 3, SystemProcessInformation = 5, SystemProcessorPerformanceInformation = 8, SystemInterruptInformation = 23, SystemExceptionInformation = 33, SystemRegistryQuotaInformation = 37, SystemLookasideInformation = 45, SystemPolicyInformation = 134,} SYSTEM_INFORMATION_CLASS;
typedef struct _SYSTEM_BASIC_INFORMATION{ BYTE Reserved1[24]; PVOID Reserved2[4]; CCHAR NumberOfProcessors;} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
typedef struct _SYSTEM_PERFORMANCE_INFORMATION{#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) BYTE Reserved1[344];#elif (_WIN32_WINNT >= _WIN32_WINNT_WIN7) BYTE Reserved1[328];#else BYTE Reserved1[312];#endif} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
typedef struct _SYSTEM_TIMEOFDAY_INFORMATION{ BYTE Reserved1[48];} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
typedef struct _SYSTEM_PROCESS_INFORMATION{ ULONG NextEntryOffset; BYTE Reserved1[52]; PVOID Reserved2[3]; HANDLE UniqueProcessId; PVOID Reserved3; ULONG HandleCount; BYTE Reserved4[4]; PVOID Reserved5[11]; SIZE_T PeakPagefileUsage; SIZE_T PrivatePageCount; LARGE_INTEGER Reserved6[6];} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION{ LARGE_INTEGER IdleTime; LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER Reserved1[2]; ULONG Reserved2;} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
typedef struct _SYSTEM_INTERRUPT_INFORMATION{ BYTE Reserved1[24];} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
typedef struct _SYSTEM_EXCEPTION_INFORMATION{ BYTE Reserved1[16];} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION{ ULONG RegistryQuotaAllowed; ULONG RegistryQuotaUsed; PVOID Reserved1;} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
typedef struct _SYSTEM_LOOKASIDE_INFORMATION{ BYTE Reserved1[32];} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
typedef struct _SYSTEM_POLICY_INFORMATION{ PVOID Reserved1[2]; ULONG Reserved2[3];} SYSTEM_POLICY_INFORMATION, *PSYSTEM_POLICY_INFORMATION;
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQuerySystemInformation( _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass, _Out_ PVOID SystemInformation, _In_ ULONG InformationLength, _Out_opt_ PULONG ResultLength);
typedef enum _WINSTATIONINFOCLASS{ WinStationInformation = 8} WINSTATIONINFOCLASS;
typedef struct _WINSTATIONINFORMATIONW{ BYTE Reserved2[70]; ULONG LogonId; BYTE Reserved3[1140];} WINSTATIONINFORMATIONW, * PWINSTATIONINFORMATIONW;
typedefBOOLEAN(WINAPI * PWINSTATIONQUERYINFORMATIONW)( HANDLE, ULONG, WINSTATIONINFOCLASS, PVOID, ULONG, PULONG);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQuerySystemTime( _Out_ PLARGE_INTEGER SystemTime);
#define RtlMoveMemory(Dest,Source,Length) memmove((Dest),(Source),(Length))#define RtlFillMemory(Dest,Length,Fill) memset((Dest),(Fill),(Length))#define RtlZeroMemory(Dest,Length) RtlFillMemory((Dest),(Length),0)
VOIDNTAPIRtlInitString( PSTRING DestinationString, PCSZ SourceString);
VOIDNTAPIRtlInitAnsiString( PANSI_STRING DestinationString, PCSZ SourceString);
VOIDNTAPIRtlInitUnicodeString( PUNICODE_STRING DestinationString, PCWSTR SourceString);
VOIDNTAPIRtlFreeAnsiString( PANSI_STRING AnsiString);
VOIDNTAPIRtlFreeOemString( POEM_STRING OemString);
VOIDNTAPIRtlFreeUnicodeString( PUNICODE_STRING UnicodeString);
NTSTATUSNTAPIRtlAnsiStringToUnicodeString( PUNICODE_STRING DestinationString, PCANSI_STRING SourceString, BOOLEAN AllocateDestinationString);
NTSTATUSNTAPIRtlUnicodeStringToAnsiString( PANSI_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString);
NTSTATUSNTAPIRtlUnicodeStringToOemString( POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString);
NTSTATUSNTAPIRtlUnicodeToMultiByteSize( _Out_ PULONG BytesInMultiByteString, _In_reads_bytes_(BytesInUnicodeString) PWCH UnicodeString, _In_ ULONG BytesInUnicodeString);
NTSTATUSNTAPIRtlCharToInteger( PCSZ String, ULONG Base, PULONG Value);
BOOLEANNTAPIRtlIsNameLegalDOS8Dot3( _In_ PUNICODE_STRING Name, _Inout_opt_ POEM_STRING OemName, _Inout_opt_ PBOOLEAN NameContainsSpaces);
NTSTATUSNTAPIRtlLocalTimeToSystemTime( IN PLARGE_INTEGER LocalTime, _Out_ PLARGE_INTEGER SystemTime);
BOOLEANNTAPIRtlTimeToSecondsSince1970( PLARGE_INTEGER Time, PULONG ElapsedSeconds);
_When_(Status < 0, _Out_range_(>, 0))_When_(Status >= 0, _Out_range_(==, 0))ULONGNTAPIRtlNtStatusToDosError( _In_ NTSTATUS Status);
NTSTATUSNTAPIRtlConvertSidToUnicodeString( PUNICODE_STRING UnicodeString, PSID Sid, BOOLEAN AllocateDestinationString);
ULONGNTAPIRtlUniform( PULONG Seed);
#ifdef __cplusplus}#endif
#endif /* _WINTERNL_ */