/**
 * WinPR: Windows Portable Runtime
 * Windows Native System Services
 *
 * Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef WINPR_NT_H
#define WINPR_NT_H

#include <winpr/winpr.h>
#include <winpr/wtypes.h>
#include <winpr/windows.h>

#ifndef _WIN32

/* Defined in winnt.h, do not redefine */

#define STATUS_WAIT_0				((NTSTATUS)0x00000000L) 
#define STATUS_ABANDONED_WAIT_0			((NTSTATUS)0x00000080L)
#define STATUS_USER_APC				((NTSTATUS)0x000000C0L)
#define STATUS_TIMEOUT				((NTSTATUS)0x00000102L)
#define STATUS_PENDING				((NTSTATUS)0x00000103L)
#define DBG_EXCEPTION_HANDLED			((NTSTATUS)0x00010001L)
#define DBG_CONTINUE				((NTSTATUS)0x00010002L)
#define STATUS_SEGMENT_NOTIFICATION		((NTSTATUS)0x40000005L)
#define STATUS_FATAL_APP_EXIT			((NTSTATUS)0x40000015L)
#define DBG_TERMINATE_THREAD			((NTSTATUS)0x40010003L)
#define DBG_TERMINATE_PROCESS			((NTSTATUS)0x40010004L)
#define DBG_CONTROL_C				((NTSTATUS)0x40010005L)
#define DBG_PRINTEXCEPTION_C			((NTSTATUS)0x40010006L)
#define DBG_RIPEXCEPTION			((NTSTATUS)0x40010007L)
#define DBG_CONTROL_BREAK			((NTSTATUS)0x40010008L)
#define DBG_COMMAND_EXCEPTION			((NTSTATUS)0x40010009L)
#define STATUS_GUARD_PAGE_VIOLATION		((NTSTATUS)0x80000001L)
#define STATUS_DATATYPE_MISALIGNMENT		((NTSTATUS)0x80000002L)
#define STATUS_BREAKPOINT			((NTSTATUS)0x80000003L)
#define STATUS_SINGLE_STEP			((NTSTATUS)0x80000004L)
#define STATUS_LONGJUMP				((NTSTATUS)0x80000026L)
#define STATUS_UNWIND_CONSOLIDATE		((NTSTATUS)0x80000029L)
#define DBG_EXCEPTION_NOT_HANDLED		((NTSTATUS)0x80010001L)
#define STATUS_ACCESS_VIOLATION			((NTSTATUS)0xC0000005L)
#define STATUS_IN_PAGE_ERROR			((NTSTATUS)0xC0000006L)
#define STATUS_INVALID_HANDLE			((NTSTATUS)0xC0000008L)
#define STATUS_INVALID_PARAMETER		((NTSTATUS)0xC000000DL)
#define STATUS_NO_MEMORY			((NTSTATUS)0xC0000017L)
#define STATUS_ILLEGAL_INSTRUCTION		((NTSTATUS)0xC000001DL)
#define STATUS_NONCONTINUABLE_EXCEPTION		((NTSTATUS)0xC0000025L)
#define STATUS_INVALID_DISPOSITION		((NTSTATUS)0xC0000026L)
#define STATUS_ARRAY_BOUNDS_EXCEEDED		((NTSTATUS)0xC000008CL)
#define STATUS_FLOAT_DENORMAL_OPERAND		((NTSTATUS)0xC000008DL)
#define STATUS_FLOAT_DIVIDE_BY_ZERO		((NTSTATUS)0xC000008EL)
#define STATUS_FLOAT_INEXACT_RESULT		((NTSTATUS)0xC000008FL)
#define STATUS_FLOAT_INVALID_OPERATION		((NTSTATUS)0xC0000090L)
#define STATUS_FLOAT_OVERFLOW			((NTSTATUS)0xC0000091L)
#define STATUS_FLOAT_STACK_CHECK		((NTSTATUS)0xC0000092L)
#define STATUS_FLOAT_UNDERFLOW			((NTSTATUS)0xC0000093L)
#define STATUS_INTEGER_DIVIDE_BY_ZERO		((NTSTATUS)0xC0000094L)
#define STATUS_INTEGER_OVERFLOW			((NTSTATUS)0xC0000095L)
#define STATUS_PRIVILEGED_INSTRUCTION		((NTSTATUS)0xC0000096L)
#define STATUS_STACK_OVERFLOW			((NTSTATUS)0xC00000FDL)
#define STATUS_DLL_NOT_FOUND			((NTSTATUS)0xC0000135L)
#define STATUS_ORDINAL_NOT_FOUND		((NTSTATUS)0xC0000138L)
#define STATUS_ENTRYPOINT_NOT_FOUND		((NTSTATUS)0xC0000139L)
#define STATUS_CONTROL_C_EXIT			((NTSTATUS)0xC000013AL)
#define STATUS_DLL_INIT_FAILED			((NTSTATUS)0xC0000142L)
#define STATUS_FLOAT_MULTIPLE_FAULTS		((NTSTATUS)0xC00002B4L)
#define STATUS_FLOAT_MULTIPLE_TRAPS		((NTSTATUS)0xC00002B5L)
#define STATUS_REG_NAT_CONSUMPTION		((NTSTATUS)0xC00002C9L)    
#define STATUS_STACK_BUFFER_OVERRUN		((NTSTATUS)0xC0000409L)    
#define STATUS_INVALID_CRUNTIME_PARAMETER	((NTSTATUS)0xC0000417L)    
#define STATUS_ASSERTION_FAILURE		((NTSTATUS)0xC0000420L)
#define STATUS_SXS_EARLY_DEACTIVATION		((NTSTATUS)0xC015000FL)
#define STATUS_SXS_INVALID_DEACTIVATION		((NTSTATUS)0xC0150010L)

#endif

/* Defined in wincred.h, do not redefine */

#if defined(_WIN32) && !defined(_UWP)

#include <wincred.h>

#else

#define STATUS_LOGON_FAILURE						((NTSTATUS)0xC000006DL)
#define STATUS_WRONG_PASSWORD						((NTSTATUS)0xC000006AL)
#define STATUS_PASSWORD_EXPIRED						((NTSTATUS)0xC0000071L)
#define STATUS_PASSWORD_MUST_CHANGE					((NTSTATUS)0xC0000224L)
#define STATUS_ACCESS_DENIED						((NTSTATUS)0xC0000022L)
#define STATUS_DOWNGRADE_DETECTED					((NTSTATUS)0xC0000388L)
#define STATUS_AUTHENTICATION_FIREWALL_FAILED				((NTSTATUS)0xC0000413L)
#define STATUS_ACCOUNT_DISABLED						((NTSTATUS)0xC0000072L)
#define STATUS_ACCOUNT_RESTRICTION					((NTSTATUS)0xC000006EL)
#define STATUS_ACCOUNT_LOCKED_OUT					((NTSTATUS)0xC0000234L)
#define STATUS_ACCOUNT_EXPIRED						((NTSTATUS)0xC0000193L)
#define STATUS_LOGON_TYPE_NOT_GRANTED					((NTSTATUS)0xC000015BL)

#endif

#define FACILITY_DEBUGGER						0x1
#define FACILITY_RPC_RUNTIME						0x2
#define FACILITY_RPC_STUBS						0x3
#define FACILITY_IO_ERROR_CODE						0x4
#define FACILITY_TERMINAL_SERVER					0xA
#define FACILITY_USB_ERROR_CODE						0x10
#define FACILITY_HID_ERROR_CODE						0x11
#define FACILITY_FIREWIRE_ERROR_CODE					0x12
#define FACILITY_CLUSTER_ERROR_CODE					0x13
#define FACILITY_ACPI_ERROR_CODE					0x14
#define FACILITY_SXS_ERROR_CODE						0x15

/**
 * NTSTATUS codes
 */

#if!defined(STATUS_SUCCESS)
#define STATUS_SUCCESS							((NTSTATUS)0x00000000)
#endif

#define STATUS_SEVERITY_SUCCESS						0x0
#define STATUS_SEVERITY_INFORMATIONAL					0x1
#define STATUS_SEVERITY_WARNING						0x2
#define STATUS_SEVERITY_ERROR						0x3

#define STATUS_WAIT_1							((NTSTATUS)0x00000001)
#define STATUS_WAIT_2							((NTSTATUS)0x00000002)
#define STATUS_WAIT_3							((NTSTATUS)0x00000003)
#define STATUS_WAIT_63							((NTSTATUS)0x0000003f)
#define STATUS_ABANDONED						((NTSTATUS)0x00000080)
#define STATUS_ABANDONED_WAIT_63					((NTSTATUS)0x000000BF)
//#define STATUS_USER_APC							((NTSTATUS)0x000000C0)
#define STATUS_KERNEL_APC						((NTSTATUS)0x00000100)
#define STATUS_ALERTED							((NTSTATUS)0x00000101)
//#define STATUS_TIMEOUT							((NTSTATUS)0x00000102)
//#define STATUS_PENDING							((NTSTATUS)0x00000103)
#define STATUS_REPARSE							((NTSTATUS)0x00000104)
#define STATUS_MORE_ENTRIES						((NTSTATUS)0x00000105)
#define STATUS_NOT_ALL_ASSIGNED						((NTSTATUS)0x00000106)
#define STATUS_SOME_NOT_MAPPED						((NTSTATUS)0x00000107)
#define STATUS_OPLOCK_BREAK_IN_PROGRESS					((NTSTATUS)0x00000108)
#define STATUS_VOLUME_MOUNTED						((NTSTATUS)0x00000109)
#define STATUS_RXACT_COMMITTED						((NTSTATUS)0x0000010A)
#define STATUS_NOTIFY_CLEANUP						((NTSTATUS)0x0000010B)
#define STATUS_NOTIFY_ENUM_DIR						((NTSTATUS)0x0000010C)
#define STATUS_NO_QUOTAS_FOR_ACCOUNT					((NTSTATUS)0x0000010D)
#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED				((NTSTATUS)0x0000010E)
#define STATUS_PAGE_FAULT_TRANSITION					((NTSTATUS)0x00000110)
#define STATUS_PAGE_FAULT_DEMAND_ZERO					((NTSTATUS)0x00000111)
#define STATUS_PAGE_FAULT_COPY_ON_WRITE					((NTSTATUS)0x00000112)
#define STATUS_PAGE_FAULT_GUARD_PAGE					((NTSTATUS)0x00000113)
#define STATUS_PAGE_FAULT_PAGING_FILE					((NTSTATUS)0x00000114)
#define STATUS_CACHE_PAGE_LOCKED					((NTSTATUS)0x00000115)
#define STATUS_CRASH_DUMP						((NTSTATUS)0x00000116)
#define STATUS_BUFFER_ALL_ZEROS						((NTSTATUS)0x00000117)
#define STATUS_REPARSE_OBJECT						((NTSTATUS)0x00000118)
#define STATUS_RESOURCE_REQUIREMENTS_CHANGED				((NTSTATUS)0x00000119)
#define STATUS_TRANSLATION_COMPLETE					((NTSTATUS)0x00000120)
#define STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY				((NTSTATUS)0x00000121)
#define STATUS_NOTHING_TO_TERMINATE					((NTSTATUS)0x00000122)
#define STATUS_PROCESS_NOT_IN_JOB					((NTSTATUS)0x00000123)
#define STATUS_PROCESS_IN_JOB						((NTSTATUS)0x00000124)
#define STATUS_VOLSNAP_HIBERNATE_READY					((NTSTATUS)0x00000125)
#define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY			((NTSTATUS)0x00000126)

#define STATUS_OBJECT_NAME_EXISTS					((NTSTATUS)0x40000000)
#define STATUS_THREAD_WAS_SUSPENDED					((NTSTATUS)0x40000001)
#define STATUS_WORKING_SET_LIMIT_RANGE					((NTSTATUS)0x40000002)
#define STATUS_IMAGE_NOT_AT_BASE					((NTSTATUS)0x40000003)
#define STATUS_RXACT_STATE_CREATED					((NTSTATUS)0x40000004)
//#define STATUS_SEGMENT_NOTIFICATION					((NTSTATUS)0x40000005)
#define STATUS_LOCAL_USER_SESSION_KEY					((NTSTATUS)0x40000006)
#define STATUS_BAD_CURRENT_DIRECTORY					((NTSTATUS)0x40000007)
#define STATUS_SERIAL_MORE_WRITES					((NTSTATUS)0x40000008)
#define STATUS_REGISTRY_RECOVERED					((NTSTATUS)0x40000009)
#define STATUS_FT_READ_RECOVERY_FROM_BACKUP				((NTSTATUS)0x4000000A)
#define STATUS_FT_WRITE_RECOVERY					((NTSTATUS)0x4000000B)
#define STATUS_SERIAL_COUNTER_TIMEOUT					((NTSTATUS)0x4000000C)
#define STATUS_NULL_LM_PASSWORD						((NTSTATUS)0x4000000D)
#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH				((NTSTATUS)0x4000000E)
#define STATUS_RECEIVE_PARTIAL						((NTSTATUS)0x4000000F)
#define STATUS_RECEIVE_EXPEDITED					((NTSTATUS)0x40000010)
#define STATUS_RECEIVE_PARTIAL_EXPEDITED				((NTSTATUS)0x40000011)
#define STATUS_EVENT_DONE						((NTSTATUS)0x40000012)
#define STATUS_EVENT_PENDING						((NTSTATUS)0x40000013)
#define STATUS_CHECKING_FILE_SYSTEM					((NTSTATUS)0x40000014)
//#define STATUS_FATAL_APP_EXIT						((NTSTATUS)0x40000015)
#define STATUS_PREDEFINED_HANDLE					((NTSTATUS)0x40000016)
#define STATUS_WAS_UNLOCKED						((NTSTATUS)0x40000017)
#define STATUS_SERVICE_NOTIFICATION					((NTSTATUS)0x40000018)
#define STATUS_WAS_LOCKED						((NTSTATUS)0x40000019)
#define STATUS_LOG_HARD_ERROR						((NTSTATUS)0x4000001A)
#define STATUS_ALREADY_WIN32						((NTSTATUS)0x4000001B)
#define STATUS_WX86_UNSIMULATE						((NTSTATUS)0x4000001C)
#define STATUS_WX86_CONTINUE						((NTSTATUS)0x4000001D)
#define STATUS_WX86_SINGLE_STEP						((NTSTATUS)0x4000001E)
#define STATUS_WX86_BREAKPOINT						((NTSTATUS)0x4000001F)
#define STATUS_WX86_EXCEPTION_CONTINUE					((NTSTATUS)0x40000020)
#define STATUS_WX86_EXCEPTION_LASTCHANCE				((NTSTATUS)0x40000021)
#define STATUS_WX86_EXCEPTION_CHAIN					((NTSTATUS)0x40000022)
#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE				((NTSTATUS)0x40000023)
#define STATUS_NO_YIELD_PERFORMED					((NTSTATUS)0x40000024)
#define STATUS_TIMER_RESUME_IGNORED					((NTSTATUS)0x40000025)
#define STATUS_ARBITRATION_UNHANDLED					((NTSTATUS)0x40000026)
#define STATUS_CARDBUS_NOT_SUPPORTED					((NTSTATUS)0x40000027)
#define STATUS_WX86_CREATEWX86TIB					((NTSTATUS)0x40000028)
#define STATUS_MP_PROCESSOR_MISMATCH					((NTSTATUS)0x40000029)
#define STATUS_HIBERNATED						((NTSTATUS)0x4000002A)
#define STATUS_RESUME_HIBERNATION					((NTSTATUS)0x4000002B)
#define STATUS_FIRMWARE_UPDATED						((NTSTATUS)0x4000002C)
#define STATUS_WAKE_SYSTEM						((NTSTATUS)0x40000294)
#define STATUS_DS_SHUTTING_DOWN						((NTSTATUS)0x40000370)

#define RPC_NT_UUID_LOCAL_ONLY						((NTSTATUS)0x40020056)
#define RPC_NT_SEND_INCOMPLETE						((NTSTATUS)0x400200AF)

#define STATUS_CTX_CDM_CONNECT						((NTSTATUS)0x400A0004)
#define STATUS_CTX_CDM_DISCONNECT					((NTSTATUS)0x400A0005)

#define STATUS_SXS_RELEASE_ACTIVATION_CONTEXT				((NTSTATUS)0x4015000D)

//#define STATUS_GUARD_PAGE_VIOLATION					((NTSTATUS)0x80000001)
//#define STATUS_DATATYPE_MISALIGNMENT					((NTSTATUS)0x80000002)
//#define STATUS_BREAKPOINT						((NTSTATUS)0x80000003)
//#define STATUS_SINGLE_STEP						((NTSTATUS)0x80000004)
#define STATUS_BUFFER_OVERFLOW						((NTSTATUS)0x80000005)
#define STATUS_NO_MORE_FILES						((NTSTATUS)0x80000006)
#define STATUS_WAKE_SYSTEM_DEBUGGER					((NTSTATUS)0x80000007)

#define STATUS_HANDLES_CLOSED						((NTSTATUS)0x8000000A)
#define STATUS_NO_INHERITANCE						((NTSTATUS)0x8000000B)
#define STATUS_GUID_SUBSTITUTION_MADE					((NTSTATUS)0x8000000C)
#define STATUS_PARTIAL_COPY						((NTSTATUS)0x8000000D)
#define STATUS_DEVICE_PAPER_EMPTY					((NTSTATUS)0x8000000E)
#define STATUS_DEVICE_POWERED_OFF					((NTSTATUS)0x8000000F)
#define STATUS_DEVICE_OFF_LINE						((NTSTATUS)0x80000010)
#define STATUS_DEVICE_BUSY						((NTSTATUS)0x80000011)
#define STATUS_NO_MORE_EAS						((NTSTATUS)0x80000012)
#define STATUS_INVALID_EA_NAME						((NTSTATUS)0x80000013)
#define STATUS_EA_LIST_INCONSISTENT					((NTSTATUS)0x80000014)
#define STATUS_INVALID_EA_FLAG						((NTSTATUS)0x80000015)
#define STATUS_VERIFY_REQUIRED						((NTSTATUS)0x80000016)
#define STATUS_EXTRANEOUS_INFORMATION					((NTSTATUS)0x80000017)
#define STATUS_RXACT_COMMIT_NECESSARY					((NTSTATUS)0x80000018)
#define STATUS_NO_MORE_ENTRIES						((NTSTATUS)0x8000001A)
#define STATUS_FILEMARK_DETECTED					((NTSTATUS)0x8000001B)
#define STATUS_MEDIA_CHANGED						((NTSTATUS)0x8000001C)
#define STATUS_BUS_RESET						((NTSTATUS)0x8000001D)
#define STATUS_END_OF_MEDIA						((NTSTATUS)0x8000001E)
#define STATUS_BEGINNING_OF_MEDIA					((NTSTATUS)0x8000001F)
#define STATUS_MEDIA_CHECK						((NTSTATUS)0x80000020)
#define STATUS_SETMARK_DETECTED						((NTSTATUS)0x80000021)
#define STATUS_NO_DATA_DETECTED						((NTSTATUS)0x80000022)
#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES				((NTSTATUS)0x80000023)
#define STATUS_SERVER_HAS_OPEN_HANDLES					((NTSTATUS)0x80000024)
#define STATUS_ALREADY_DISCONNECTED					((NTSTATUS)0x80000025)
//#define STATUS_LONGJUMP							((NTSTATUS)0x80000026)
#define STATUS_CLEANER_CARTRIDGE_INSTALLED				((NTSTATUS)0x80000027)
#define STATUS_PLUGPLAY_QUERY_VETOED					((NTSTATUS)0x80000028)
//#define STATUS_UNWIND_CONSOLIDATE					((NTSTATUS)0x80000029)
#define STATUS_REGISTRY_HIVE_RECOVERED					((NTSTATUS)0x8000002A)
#define STATUS_DLL_MIGHT_BE_INSECURE					((NTSTATUS)0x8000002B)
#define STATUS_DLL_MIGHT_BE_INCOMPATIBLE				((NTSTATUS)0x8000002C)

#define STATUS_DEVICE_REQUIRES_CLEANING					((NTSTATUS)0x80000288)
#define STATUS_DEVICE_DOOR_OPEN						((NTSTATUS)0x80000289)

#define STATUS_CLUSTER_NODE_ALREADY_UP					((NTSTATUS)0x80130001)
#define STATUS_CLUSTER_NODE_ALREADY_DOWN				((NTSTATUS)0x80130002)
#define STATUS_CLUSTER_NETWORK_ALREADY_ONLINE				((NTSTATUS)0x80130003)
#define STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE				((NTSTATUS)0x80130004)
#define STATUS_CLUSTER_NODE_ALREADY_MEMBER				((NTSTATUS)0x80130005)

//#define STATUS_WAIT_0							((NTSTATUS)0x00000000)
#define STATUS_UNSUCCESSFUL						((NTSTATUS)0xC0000001)
#define STATUS_NOT_IMPLEMENTED						((NTSTATUS)0xC0000002)
#define STATUS_INVALID_INFO_CLASS					((NTSTATUS)0xC0000003)
#define STATUS_INFO_LENGTH_MISMATCH					((NTSTATUS)0xC0000004)
//#define STATUS_ACCESS_VIOLATION						((NTSTATUS)0xC0000005)
//#define STATUS_IN_PAGE_ERROR						((NTSTATUS)0xC0000006)
#define STATUS_PAGEFILE_QUOTA						((NTSTATUS)0xC0000007)
//#define STATUS_INVALID_HANDLE						((NTSTATUS)0xC0000008)
#define STATUS_BAD_INITIAL_STACK					((NTSTATUS)0xC0000009)
#define STATUS_BAD_INITIAL_PC						((NTSTATUS)0xC000000A)
#define STATUS_INVALID_CID						((NTSTATUS)0xC000000B)
#define STATUS_TIMER_NOT_CANCELED					((NTSTATUS)0xC000000C)
//#define STATUS_INVALID_PARAMETER					((NTSTATUS)0xC000000D)
#define STATUS_NO_SUCH_DEVICE						((NTSTATUS)0xC000000E)
#define STATUS_NO_SUCH_FILE						((NTSTATUS)0xC000000F)
#define STATUS_INVALID_DEVICE_REQUEST					((NTSTATUS)0xC0000010)
#define STATUS_END_OF_FILE						((NTSTATUS)0xC0000011)
#define STATUS_WRONG_VOLUME						((NTSTATUS)0xC0000012)
#define STATUS_NO_MEDIA_IN_DEVICE					((NTSTATUS)0xC0000013)
#define STATUS_UNRECOGNIZED_MEDIA					((NTSTATUS)0xC0000014)
#define STATUS_NONEXISTENT_SECTOR					((NTSTATUS)0xC0000015)
#define STATUS_MORE_PROCESSING_REQUIRED					((NTSTATUS)0xC0000016)
//#define STATUS_NO_MEMORY						((NTSTATUS)0xC0000017)
#define STATUS_CONFLICTING_ADDRESSES					((NTSTATUS)0xC0000018)
#define STATUS_NOT_MAPPED_VIEW						((NTSTATUS)0xC0000019)
#define STATUS_UNABLE_TO_FREE_VM					((NTSTATUS)0xC000001A)
#define STATUS_UNABLE_TO_DELETE_SECTION					((NTSTATUS)0xC000001B)
#define STATUS_INVALID_SYSTEM_SERVICE					((NTSTATUS)0xC000001C)
//#define STATUS_ILLEGAL_INSTRUCTION					((NTSTATUS)0xC000001D)
#define STATUS_INVALID_LOCK_SEQUENCE					((NTSTATUS)0xC000001E)
#define STATUS_INVALID_VIEW_SIZE					((NTSTATUS)0xC000001F)
#define STATUS_INVALID_FILE_FOR_SECTION					((NTSTATUS)0xC0000020)
#define STATUS_ALREADY_COMMITTED					((NTSTATUS)0xC0000021)
//#define STATUS_ACCESS_DENIED						((NTSTATUS)0xC0000022)
#define STATUS_BUFFER_TOO_SMALL						((NTSTATUS)0xC0000023)
#define STATUS_OBJECT_TYPE_MISMATCH					((NTSTATUS)0xC0000024)
//#define STATUS_NONCONTINUABLE_EXCEPTION					((NTSTATUS)0xC0000025)
//#define STATUS_INVALID_DISPOSITION					((NTSTATUS)0xC0000026)
#define STATUS_UNWIND							((NTSTATUS)0xC0000027)
#define STATUS_BAD_STACK						((NTSTATUS)0xC0000028)
#define STATUS_INVALID_UNWIND_TARGET					((NTSTATUS)0xC0000029)
#define STATUS_NOT_LOCKED						((NTSTATUS)0xC000002A)
#define STATUS_PARITY_ERROR						((NTSTATUS)0xC000002B)
#define STATUS_UNABLE_TO_DECOMMIT_VM					((NTSTATUS)0xC000002C)
#define STATUS_NOT_COMMITTED						((NTSTATUS)0xC000002D)
#define STATUS_INVALID_PORT_ATTRIBUTES					((NTSTATUS)0xC000002E)
#define STATUS_PORT_MESSAGE_TOO_LONG					((NTSTATUS)0xC000002F)
#define STATUS_INVALID_PARAMETER_MIX					((NTSTATUS)0xC0000030)
#define STATUS_INVALID_QUOTA_LOWER					((NTSTATUS)0xC0000031)
#define STATUS_DISK_CORRUPT_ERROR					((NTSTATUS)0xC0000032)
#define STATUS_OBJECT_NAME_INVALID					((NTSTATUS)0xC0000033)
#define STATUS_OBJECT_NAME_NOT_FOUND					((NTSTATUS)0xC0000034)
#define STATUS_OBJECT_NAME_COLLISION					((NTSTATUS)0xC0000035)
#define STATUS_PORT_DISCONNECTED					((NTSTATUS)0xC0000037)
#define STATUS_DEVICE_ALREADY_ATTACHED					((NTSTATUS)0xC0000038)
#define STATUS_OBJECT_PATH_INVALID					((NTSTATUS)0xC0000039)
#define STATUS_OBJECT_PATH_NOT_FOUND					((NTSTATUS)0xC000003A)
#define STATUS_OBJECT_PATH_SYNTAX_BAD					((NTSTATUS)0xC000003B)
#define STATUS_DATA_OVERRUN						((NTSTATUS)0xC000003C)
#define STATUS_DATA_LATE_ERROR						((NTSTATUS)0xC000003D)
#define STATUS_DATA_ERROR						((NTSTATUS)0xC000003E)
#define STATUS_CRC_ERROR						((NTSTATUS)0xC000003F)
#define STATUS_SECTION_TOO_BIG						((NTSTATUS)0xC0000040)
#define STATUS_PORT_CONNECTION_REFUSED					((NTSTATUS)0xC0000041)
#define STATUS_INVALID_PORT_HANDLE					((NTSTATUS)0xC0000042)
#define STATUS_SHARING_VIOLATION					((NTSTATUS)0xC0000043)
#define STATUS_QUOTA_EXCEEDED						((NTSTATUS)0xC0000044)
#define STATUS_INVALID_PAGE_PROTECTION					((NTSTATUS)0xC0000045)
#define STATUS_MUTANT_NOT_OWNED						((NTSTATUS)0xC0000046)
#define STATUS_SEMAPHORE_LIMIT_EXCEEDED					((NTSTATUS)0xC0000047)
#define STATUS_PORT_ALREADY_SET						((NTSTATUS)0xC0000048)
#define STATUS_SECTION_NOT_IMAGE					((NTSTATUS)0xC0000049)
#define STATUS_SUSPEND_COUNT_EXCEEDED					((NTSTATUS)0xC000004A)
#define STATUS_THREAD_IS_TERMINATING					((NTSTATUS)0xC000004B)
#define STATUS_BAD_WORKING_SET_LIMIT					((NTSTATUS)0xC000004C)
#define STATUS_INCOMPATIBLE_FILE_MAP					((NTSTATUS)0xC000004D)
#define STATUS_SECTION_PROTECTION					((NTSTATUS)0xC000004E)
#define STATUS_EAS_NOT_SUPPORTED					((NTSTATUS)0xC000004F)
#define STATUS_EA_TOO_LARGE						((NTSTATUS)0xC0000050)
#define STATUS_NONEXISTENT_EA_ENTRY					((NTSTATUS)0xC0000051)
#define STATUS_NO_EAS_ON_FILE						((NTSTATUS)0xC0000052)
#define STATUS_EA_CORRUPT_ERROR						((NTSTATUS)0xC0000053)
#define STATUS_FILE_LOCK_CONFLICT					((NTSTATUS)0xC0000054)
#define STATUS_LOCK_NOT_GRANTED						((NTSTATUS)0xC0000055)
#define STATUS_DELETE_PENDING						((NTSTATUS)0xC0000056)
#define STATUS_CTL_FILE_NOT_SUPPORTED					((NTSTATUS)0xC0000057)
#define STATUS_UNKNOWN_REVISION						((NTSTATUS)0xC0000058)
#define STATUS_REVISION_MISMATCH					((NTSTATUS)0xC0000059)
#define STATUS_INVALID_OWNER						((NTSTATUS)0xC000005A)
#define STATUS_INVALID_PRIMARY_GROUP					((NTSTATUS)0xC000005B)
#define STATUS_NO_IMPERSONATION_TOKEN					((NTSTATUS)0xC000005C)
#define STATUS_CANT_DISABLE_MANDATORY					((NTSTATUS)0xC000005D)
#define STATUS_NO_LOGON_SERVERS						((NTSTATUS)0xC000005E)
#define STATUS_NO_SUCH_LOGON_SESSION					((NTSTATUS)0xC000005F)
#define STATUS_NO_SUCH_PRIVILEGE					((NTSTATUS)0xC0000060)
#define STATUS_PRIVILEGE_NOT_HELD					((NTSTATUS)0xC0000061)
#define STATUS_INVALID_ACCOUNT_NAME					((NTSTATUS)0xC0000062)
#define STATUS_USER_EXISTS						((NTSTATUS)0xC0000063)
#define STATUS_NO_SUCH_USER						((NTSTATUS)0xC0000064)
#define STATUS_GROUP_EXISTS						((NTSTATUS)0xC0000065)
#define STATUS_NO_SUCH_GROUP						((NTSTATUS)0xC0000066)
#define STATUS_MEMBER_IN_GROUP						((NTSTATUS)0xC0000067)
#define STATUS_MEMBER_NOT_IN_GROUP					((NTSTATUS)0xC0000068)
#define STATUS_LAST_ADMIN						((NTSTATUS)0xC0000069)
//#define STATUS_WRONG_PASSWORD						((NTSTATUS)0xC000006A)
#define STATUS_ILL_FORMED_PASSWORD					((NTSTATUS)0xC000006B)
#define STATUS_PASSWORD_RESTRICTION					((NTSTATUS)0xC000006C)
//#define STATUS_LOGON_FAILURE						((NTSTATUS)0xC000006D)
//#define STATUS_ACCOUNT_RESTRICTION					((NTSTATUS)0xC000006E)
#define STATUS_INVALID_LOGON_HOURS					((NTSTATUS)0xC000006F)
#define STATUS_INVALID_WORKSTATION					((NTSTATUS)0xC0000070)
//#define STATUS_PASSWORD_EXPIRED						((NTSTATUS)0xC0000071)
//#define STATUS_ACCOUNT_DISABLED						((NTSTATUS)0xC0000072)
#define STATUS_NONE_MAPPED						((NTSTATUS)0xC0000073)
#define STATUS_TOO_MANY_LUIDS_REQUESTED					((NTSTATUS)0xC0000074)
#define STATUS_LUIDS_EXHAUSTED						((NTSTATUS)0xC0000075)
#define STATUS_INVALID_SUB_AUTHORITY					((NTSTATUS)0xC0000076)
#define STATUS_INVALID_ACL						((NTSTATUS)0xC0000077)
#define STATUS_INVALID_SID						((NTSTATUS)0xC0000078)
#define STATUS_INVALID_SECURITY_DESCR					((NTSTATUS)0xC0000079)
#define STATUS_PROCEDURE_NOT_FOUND					((NTSTATUS)0xC000007A)
#define STATUS_INVALID_IMAGE_FORMAT					((NTSTATUS)0xC000007B)
#define STATUS_NO_TOKEN							((NTSTATUS)0xC000007C)
#define STATUS_BAD_INHERITANCE_ACL					((NTSTATUS)0xC000007D)
#define STATUS_RANGE_NOT_LOCKED						((NTSTATUS)0xC000007E)
#define STATUS_DISK_FULL						((NTSTATUS)0xC000007F)
#define STATUS_SERVER_DISABLED						((NTSTATUS)0xC0000080)
#define STATUS_SERVER_NOT_DISABLED					((NTSTATUS)0xC0000081)
#define STATUS_TOO_MANY_GUIDS_REQUESTED					((NTSTATUS)0xC0000082)
#define STATUS_GUIDS_EXHAUSTED						((NTSTATUS)0xC0000083)
#define STATUS_INVALID_ID_AUTHORITY					((NTSTATUS)0xC0000084)
#define STATUS_AGENTS_EXHAUSTED						((NTSTATUS)0xC0000085)
#define STATUS_INVALID_VOLUME_LABEL					((NTSTATUS)0xC0000086)
#define STATUS_SECTION_NOT_EXTENDED					((NTSTATUS)0xC0000087)
#define STATUS_NOT_MAPPED_DATA						((NTSTATUS)0xC0000088)
#define STATUS_RESOURCE_DATA_NOT_FOUND					((NTSTATUS)0xC0000089)
#define STATUS_RESOURCE_TYPE_NOT_FOUND					((NTSTATUS)0xC000008A)
#define STATUS_RESOURCE_NAME_NOT_FOUND					((NTSTATUS)0xC000008B)
//#define STATUS_ARRAY_BOUNDS_EXCEEDED					((NTSTATUS)0xC000008C)
//#define STATUS_FLOAT_DENORMAL_OPERAND					((NTSTATUS)0xC000008D)
//#define STATUS_FLOAT_DIVIDE_BY_ZERO					((NTSTATUS)0xC000008E)
//#define STATUS_FLOAT_INEXACT_RESULT					((NTSTATUS)0xC000008F)
//#define STATUS_FLOAT_INVALID_OPERATION					((NTSTATUS)0xC0000090)
//#define STATUS_FLOAT_OVERFLOW						((NTSTATUS)0xC0000091)
//#define STATUS_FLOAT_STACK_CHECK					((NTSTATUS)0xC0000092)
//#define STATUS_FLOAT_UNDERFLOW						((NTSTATUS)0xC0000093)
//#define STATUS_INTEGER_DIVIDE_BY_ZERO					((NTSTATUS)0xC0000094)
//#define STATUS_INTEGER_OVERFLOW						((NTSTATUS)0xC0000095)
//#define STATUS_PRIVILEGED_INSTRUCTION					((NTSTATUS)0xC0000096)
#define STATUS_TOO_MANY_PAGING_FILES					((NTSTATUS)0xC0000097)
#define STATUS_FILE_INVALID						((NTSTATUS)0xC0000098)
#define STATUS_ALLOTTED_SPACE_EXCEEDED					((NTSTATUS)0xC0000099)
#define STATUS_INSUFFICIENT_RESOURCES					((NTSTATUS)0xC000009A)
#define STATUS_DFS_EXIT_PATH_FOUND					((NTSTATUS)0xC000009B)
#define STATUS_DEVICE_DATA_ERROR					((NTSTATUS)0xC000009C)
#define STATUS_DEVICE_NOT_CONNECTED					((NTSTATUS)0xC000009D)
#define STATUS_DEVICE_POWER_FAILURE					((NTSTATUS)0xC000009E)
#define STATUS_FREE_VM_NOT_AT_BASE					((NTSTATUS)0xC000009F)
#define STATUS_MEMORY_NOT_ALLOCATED					((NTSTATUS)0xC00000A0)
#define STATUS_WORKING_SET_QUOTA					((NTSTATUS)0xC00000A1)
#define STATUS_MEDIA_WRITE_PROTECTED					((NTSTATUS)0xC00000A2)
#define STATUS_DEVICE_NOT_READY						((NTSTATUS)0xC00000A3)
#define STATUS_INVALID_GROUP_ATTRIBUTES					((NTSTATUS)0xC00000A4)
#define STATUS_BAD_IMPERSONATION_LEVEL					((NTSTATUS)0xC00000A5)
#define STATUS_CANT_OPEN_ANONYMOUS					((NTSTATUS)0xC00000A6)
#define STATUS_BAD_VALIDATION_CLASS					((NTSTATUS)0xC00000A7)
#define STATUS_BAD_TOKEN_TYPE						((NTSTATUS)0xC00000A8)
#define STATUS_BAD_MASTER_BOOT_RECORD					((NTSTATUS)0xC00000A9)
#define STATUS_INSTRUCTION_MISALIGNMENT					((NTSTATUS)0xC00000AA)
#define STATUS_INSTANCE_NOT_AVAILABLE					((NTSTATUS)0xC00000AB)
#define STATUS_PIPE_NOT_AVAILABLE					((NTSTATUS)0xC00000AC)
#define STATUS_INVALID_PIPE_STATE					((NTSTATUS)0xC00000AD)
#define STATUS_PIPE_BUSY						((NTSTATUS)0xC00000AE)
#define STATUS_ILLEGAL_FUNCTION						((NTSTATUS)0xC00000AF)
#define STATUS_PIPE_DISCONNECTED					((NTSTATUS)0xC00000B0)
#define STATUS_PIPE_CLOSING						((NTSTATUS)0xC00000B1)
#define STATUS_PIPE_CONNECTED						((NTSTATUS)0xC00000B2)
#define STATUS_PIPE_LISTENING						((NTSTATUS)0xC00000B3)
#define STATUS_INVALID_READ_MODE					((NTSTATUS)0xC00000B4)
#define STATUS_IO_TIMEOUT						((NTSTATUS)0xC00000B5)
#define STATUS_FILE_FORCED_CLOSED					((NTSTATUS)0xC00000B6)
#define STATUS_PROFILING_NOT_STARTED					((NTSTATUS)0xC00000B7)
#define STATUS_PROFILING_NOT_STOPPED					((NTSTATUS)0xC00000B8)
#define STATUS_COULD_NOT_INTERPRET					((NTSTATUS)0xC00000B9)
#define STATUS_FILE_IS_A_DIRECTORY					((NTSTATUS)0xC00000BA)
#define STATUS_NOT_SUPPORTED						((NTSTATUS)0xC00000BB)
#define STATUS_REMOTE_NOT_LISTENING					((NTSTATUS)0xC00000BC)
#define STATUS_DUPLICATE_NAME						((NTSTATUS)0xC00000BD)
#define STATUS_BAD_NETWORK_PATH						((NTSTATUS)0xC00000BE)
#define STATUS_NETWORK_BUSY						((NTSTATUS)0xC00000BF)
#define STATUS_DEVICE_DOES_NOT_EXIST					((NTSTATUS)0xC00000C0)
#define STATUS_TOO_MANY_COMMANDS					((NTSTATUS)0xC00000C1)
#define STATUS_ADAPTER_HARDWARE_ERROR					((NTSTATUS)0xC00000C2)
#define STATUS_INVALID_NETWORK_RESPONSE					((NTSTATUS)0xC00000C3)
#define STATUS_UNEXPECTED_NETWORK_ERROR					((NTSTATUS)0xC00000C4)
#define STATUS_BAD_REMOTE_ADAPTER					((NTSTATUS)0xC00000C5)
#define STATUS_PRINT_QUEUE_FULL						((NTSTATUS)0xC00000C6)
#define STATUS_NO_SPOOL_SPACE						((NTSTATUS)0xC00000C7)
#define STATUS_PRINT_CANCELLED						((NTSTATUS)0xC00000C8)
#define STATUS_NETWORK_NAME_DELETED					((NTSTATUS)0xC00000C9)
#define STATUS_NETWORK_ACCESS_DENIED					((NTSTATUS)0xC00000CA)
#define STATUS_BAD_DEVICE_TYPE						((NTSTATUS)0xC00000CB)
#define STATUS_BAD_NETWORK_NAME						((NTSTATUS)0xC00000CC)
#define STATUS_TOO_MANY_NAMES						((NTSTATUS)0xC00000CD)
#define STATUS_TOO_MANY_SESSIONS					((NTSTATUS)0xC00000CE)
#define STATUS_SHARING_PAUSED						((NTSTATUS)0xC00000CF)
#define STATUS_REQUEST_NOT_ACCEPTED					((NTSTATUS)0xC00000D0)
#define STATUS_REDIRECTOR_PAUSED					((NTSTATUS)0xC00000D1)
#define STATUS_NET_WRITE_FAULT						((NTSTATUS)0xC00000D2)
#define STATUS_PROFILING_AT_LIMIT					((NTSTATUS)0xC00000D3)
#define STATUS_NOT_SAME_DEVICE						((NTSTATUS)0xC00000D4)
#define STATUS_FILE_RENAMED						((NTSTATUS)0xC00000D5)
#define STATUS_VIRTUAL_CIRCUIT_CLOSED					((NTSTATUS)0xC00000D6)
#define STATUS_NO_SECURITY_ON_OBJECT					((NTSTATUS)0xC00000D7)
#define STATUS_CANT_WAIT						((NTSTATUS)0xC00000D8)
#define STATUS_PIPE_EMPTY						((NTSTATUS)0xC00000D9)
#define STATUS_CANT_ACCESS_DOMAIN_INFO					((NTSTATUS)0xC00000DA)
#define STATUS_CANT_TERMINATE_SELF					((NTSTATUS)0xC00000DB)
#define STATUS_INVALID_SERVER_STATE					((NTSTATUS)0xC00000DC)
#define STATUS_INVALID_DOMAIN_STATE					((NTSTATUS)0xC00000DD)
#define STATUS_INVALID_DOMAIN_ROLE					((NTSTATUS)0xC00000DE)
#define STATUS_NO_SUCH_DOMAIN						((NTSTATUS)0xC00000DF)
#define STATUS_DOMAIN_EXISTS						((NTSTATUS)0xC00000E0)
#define STATUS_DOMAIN_LIMIT_EXCEEDED					((NTSTATUS)0xC00000E1)
#define STATUS_OPLOCK_NOT_GRANTED					((NTSTATUS)0xC00000E2)
#define STATUS_INVALID_OPLOCK_PROTOCOL					((NTSTATUS)0xC00000E3)
#define STATUS_INTERNAL_DB_CORRUPTION					((NTSTATUS)0xC00000E4)
#define STATUS_INTERNAL_ERROR						((NTSTATUS)0xC00000E5)
#define STATUS_GENERIC_NOT_MAPPED					((NTSTATUS)0xC00000E6)
#define STATUS_BAD_DESCRIPTOR_FORMAT					((NTSTATUS)0xC00000E7)
#define STATUS_INVALID_USER_BUFFER					((NTSTATUS)0xC00000E8)
#define STATUS_UNEXPECTED_IO_ERROR					((NTSTATUS)0xC00000E9)
#define STATUS_UNEXPECTED_MM_CREATE_ERR					((NTSTATUS)0xC00000EA)
#define STATUS_UNEXPECTED_MM_MAP_ERROR					((NTSTATUS)0xC00000EB)
#define STATUS_UNEXPECTED_MM_EXTEND_ERR					((NTSTATUS)0xC00000EC)
#define STATUS_NOT_LOGON_PROCESS					((NTSTATUS)0xC00000ED)
#define STATUS_LOGON_SESSION_EXISTS					((NTSTATUS)0xC00000EE)
#define STATUS_INVALID_PARAMETER_1					((NTSTATUS)0xC00000EF)
#define STATUS_INVALID_PARAMETER_2					((NTSTATUS)0xC00000F0)
#define STATUS_INVALID_PARAMETER_3					((NTSTATUS)0xC00000F1)
#define STATUS_INVALID_PARAMETER_4					((NTSTATUS)0xC00000F2)
#define STATUS_INVALID_PARAMETER_5					((NTSTATUS)0xC00000F3)
#define STATUS_INVALID_PARAMETER_6					((NTSTATUS)0xC00000F4)
#define STATUS_INVALID_PARAMETER_7					((NTSTATUS)0xC00000F5)
#define STATUS_INVALID_PARAMETER_8					((NTSTATUS)0xC00000F6)
#define STATUS_INVALID_PARAMETER_9					((NTSTATUS)0xC00000F7)
#define STATUS_INVALID_PARAMETER_10					((NTSTATUS)0xC00000F8)
#define STATUS_INVALID_PARAMETER_11					((NTSTATUS)0xC00000F9)
#define STATUS_INVALID_PARAMETER_12					((NTSTATUS)0xC00000FA)
#define STATUS_REDIRECTOR_NOT_STARTED					((NTSTATUS)0xC00000FB)
#define STATUS_REDIRECTOR_STARTED					((NTSTATUS)0xC00000FC)
//#define STATUS_STACK_OVERFLOW						((NTSTATUS)0xC00000FD)
#define STATUS_NO_SUCH_PACKAGE						((NTSTATUS)0xC00000FE)
#define STATUS_BAD_FUNCTION_TABLE					((NTSTATUS)0xC00000FF)
#define STATUS_VARIABLE_NOT_FOUND					((NTSTATUS)0xC0000100)
#define STATUS_DIRECTORY_NOT_EMPTY					((NTSTATUS)0xC0000101)
#define STATUS_FILE_CORRUPT_ERROR					((NTSTATUS)0xC0000102)
#define STATUS_NOT_A_DIRECTORY						((NTSTATUS)0xC0000103)
#define STATUS_BAD_LOGON_SESSION_STATE					((NTSTATUS)0xC0000104)
#define STATUS_LOGON_SESSION_COLLISION					((NTSTATUS)0xC0000105)
#define STATUS_NAME_TOO_LONG						((NTSTATUS)0xC0000106)
#define STATUS_FILES_OPEN						((NTSTATUS)0xC0000107)
#define STATUS_CONNECTION_IN_USE					((NTSTATUS)0xC0000108)
#define STATUS_MESSAGE_NOT_FOUND					((NTSTATUS)0xC0000109)
#define STATUS_PROCESS_IS_TERMINATING					((NTSTATUS)0xC000010A)
#define STATUS_INVALID_LOGON_TYPE					((NTSTATUS)0xC000010B)
#define STATUS_NO_GUID_TRANSLATION					((NTSTATUS)0xC000010C)
#define STATUS_CANNOT_IMPERSONATE					((NTSTATUS)0xC000010D)
#define STATUS_IMAGE_ALREADY_LOADED					((NTSTATUS)0xC000010E)
#define STATUS_ABIOS_NOT_PRESENT					((NTSTATUS)0xC000010F)
#define STATUS_ABIOS_LID_NOT_EXIST					((NTSTATUS)0xC0000110)
#define STATUS_ABIOS_LID_ALREADY_OWNED					((NTSTATUS)0xC0000111)
#define STATUS_ABIOS_NOT_LID_OWNER					((NTSTATUS)0xC0000112)
#define STATUS_ABIOS_INVALID_COMMAND					((NTSTATUS)0xC0000113)
#define STATUS_ABIOS_INVALID_LID					((NTSTATUS)0xC0000114)
#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE				((NTSTATUS)0xC0000115)
#define STATUS_ABIOS_INVALID_SELECTOR					((NTSTATUS)0xC0000116)
#define STATUS_NO_LDT							((NTSTATUS)0xC0000117)
#define STATUS_INVALID_LDT_SIZE						((NTSTATUS)0xC0000118)
#define STATUS_INVALID_LDT_OFFSET					((NTSTATUS)0xC0000119)
#define STATUS_INVALID_LDT_DESCRIPTOR					((NTSTATUS)0xC000011A)
#define STATUS_INVALID_IMAGE_NE_FORMAT					((NTSTATUS)0xC000011B)
#define STATUS_RXACT_INVALID_STATE					((NTSTATUS)0xC000011C)
#define STATUS_RXACT_COMMIT_FAILURE					((NTSTATUS)0xC000011D)
#define STATUS_MAPPED_FILE_SIZE_ZERO					((NTSTATUS)0xC000011E)
#define STATUS_TOO_MANY_OPENED_FILES					((NTSTATUS)0xC000011F)
#define STATUS_CANCELLED						((NTSTATUS)0xC0000120)
#define STATUS_CANNOT_DELETE						((NTSTATUS)0xC0000121)
#define STATUS_INVALID_COMPUTER_NAME					((NTSTATUS)0xC0000122)
#define STATUS_FILE_DELETED						((NTSTATUS)0xC0000123)
#define STATUS_SPECIAL_ACCOUNT						((NTSTATUS)0xC0000124)
#define STATUS_SPECIAL_GROUP						((NTSTATUS)0xC0000125)
#define STATUS_SPECIAL_USER						((NTSTATUS)0xC0000126)
#define STATUS_MEMBERS_PRIMARY_GROUP					((NTSTATUS)0xC0000127)
#define STATUS_FILE_CLOSED						((NTSTATUS)0xC0000128)
#define STATUS_TOO_MANY_THREADS						((NTSTATUS)0xC0000129)
#define STATUS_THREAD_NOT_IN_PROCESS					((NTSTATUS)0xC000012A)
#define STATUS_TOKEN_ALREADY_IN_USE					((NTSTATUS)0xC000012B)
#define STATUS_PAGEFILE_QUOTA_EXCEEDED					((NTSTATUS)0xC000012C)
#define STATUS_COMMITMENT_LIMIT						((NTSTATUS)0xC000012D)
#define STATUS_INVALID_IMAGE_LE_FORMAT					((NTSTATUS)0xC000012E)
#define STATUS_INVALID_IMAGE_NOT_MZ					((NTSTATUS)0xC000012F)
#define STATUS_INVALID_IMAGE_PROTECT					((NTSTATUS)0xC0000130)
#define STATUS_INVALID_IMAGE_WIN_16					((NTSTATUS)0xC0000131)
#define STATUS_LOGON_SERVER_CONFLICT					((NTSTATUS)0xC0000132)
#define STATUS_TIME_DIFFERENCE_AT_DC					((NTSTATUS)0xC0000133)
#define STATUS_SYNCHRONIZATION_REQUIRED					((NTSTATUS)0xC0000134)
//#define STATUS_DLL_NOT_FOUND						((NTSTATUS)0xC0000135)
#define STATUS_OPEN_FAILED						((NTSTATUS)0xC0000136)
#define STATUS_IO_PRIVILEGE_FAILED					((NTSTATUS)0xC0000137)
//#define STATUS_ORDINAL_NOT_FOUND					((NTSTATUS)0xC0000138)
//#define STATUS_ENTRYPOINT_NOT_FOUND					((NTSTATUS)0xC0000139)
//#define STATUS_CONTROL_C_EXIT						((NTSTATUS)0xC000013A)
#define STATUS_LOCAL_DISCONNECT						((NTSTATUS)0xC000013B)
#define STATUS_REMOTE_DISCONNECT					((NTSTATUS)0xC000013C)
#define STATUS_REMOTE_RESOURCES						((NTSTATUS)0xC000013D)
#define STATUS_LINK_FAILED						((NTSTATUS)0xC000013E)
#define STATUS_LINK_TIMEOUT						((NTSTATUS)0xC000013F)
#define STATUS_INVALID_CONNECTION					((NTSTATUS)0xC0000140)
#define STATUS_INVALID_ADDRESS						((NTSTATUS)0xC0000141)
//#define STATUS_DLL_INIT_FAILED						((NTSTATUS)0xC0000142)
#define STATUS_MISSING_SYSTEMFILE					((NTSTATUS)0xC0000143)
#define STATUS_UNHANDLED_EXCEPTION					((NTSTATUS)0xC0000144)
#define STATUS_APP_INIT_FAILURE						((NTSTATUS)0xC0000145)
#define STATUS_PAGEFILE_CREATE_FAILED					((NTSTATUS)0xC0000146)
#define STATUS_NO_PAGEFILE						((NTSTATUS)0xC0000147)
#define STATUS_INVALID_LEVEL						((NTSTATUS)0xC0000148)
#define STATUS_WRONG_PASSWORD_CORE					((NTSTATUS)0xC0000149)
#define STATUS_ILLEGAL_FLOAT_CONTEXT					((NTSTATUS)0xC000014A)
#define STATUS_PIPE_BROKEN						((NTSTATUS)0xC000014B)
#define STATUS_REGISTRY_CORRUPT						((NTSTATUS)0xC000014C)
#define STATUS_REGISTRY_IO_FAILED					((NTSTATUS)0xC000014D)
#define STATUS_NO_EVENT_PAIR						((NTSTATUS)0xC000014E)
#define STATUS_UNRECOGNIZED_VOLUME					((NTSTATUS)0xC000014F)
#define STATUS_SERIAL_NO_DEVICE_INITED					((NTSTATUS)0xC0000150)
#define STATUS_NO_SUCH_ALIAS						((NTSTATUS)0xC0000151)
#define STATUS_MEMBER_NOT_IN_ALIAS					((NTSTATUS)0xC0000152)
#define STATUS_MEMBER_IN_ALIAS						((NTSTATUS)0xC0000153)
#define STATUS_ALIAS_EXISTS						((NTSTATUS)0xC0000154)
#define STATUS_LOGON_NOT_GRANTED					((NTSTATUS)0xC0000155)
#define STATUS_TOO_MANY_SECRETS						((NTSTATUS)0xC0000156)
#define STATUS_SECRET_TOO_LONG						((NTSTATUS)0xC0000157)
#define STATUS_INTERNAL_DB_ERROR					((NTSTATUS)0xC0000158)
#define STATUS_FULLSCREEN_MODE						((NTSTATUS)0xC0000159)
#define STATUS_TOO_MANY_CONTEXT_IDS					((NTSTATUS)0xC000015A)
//#define STATUS_LOGON_TYPE_NOT_GRANTED					((NTSTATUS)0xC000015B)
#define STATUS_NOT_REGISTRY_FILE					((NTSTATUS)0xC000015C)
#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED				((NTSTATUS)0xC000015D)
#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR				((NTSTATUS)0xC000015E)
#define STATUS_FT_MISSING_MEMBER					((NTSTATUS)0xC000015F)
#define STATUS_ILL_FORMED_SERVICE_ENTRY					((NTSTATUS)0xC0000160)
#define STATUS_ILLEGAL_CHARACTER					((NTSTATUS)0xC0000161)
#define STATUS_UNMAPPABLE_CHARACTER					((NTSTATUS)0xC0000162)
#define STATUS_UNDEFINED_CHARACTER					((NTSTATUS)0xC0000163)
#define STATUS_FLOPPY_VOLUME						((NTSTATUS)0xC0000164)
#define STATUS_FLOPPY_ID_MARK_NOT_FOUND					((NTSTATUS)0xC0000165)
#define STATUS_FLOPPY_WRONG_CYLINDER					((NTSTATUS)0xC0000166)
#define STATUS_FLOPPY_UNKNOWN_ERROR					((NTSTATUS)0xC0000167)
#define STATUS_FLOPPY_BAD_REGISTERS					((NTSTATUS)0xC0000168)
#define STATUS_DISK_RECALIBRATE_FAILED					((NTSTATUS)0xC0000169)
#define STATUS_DISK_OPERATION_FAILED					((NTSTATUS)0xC000016A)
#define STATUS_DISK_RESET_FAILED					((NTSTATUS)0xC000016B)
#define STATUS_SHARED_IRQ_BUSY						((NTSTATUS)0xC000016C)
#define STATUS_FT_ORPHANING						((NTSTATUS)0xC000016D)
#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT				((NTSTATUS)0xC000016E)

#define STATUS_PARTITION_FAILURE					((NTSTATUS)0xC0000172)
#define STATUS_INVALID_BLOCK_LENGTH					((NTSTATUS)0xC0000173)
#define STATUS_DEVICE_NOT_PARTITIONED					((NTSTATUS)0xC0000174)
#define STATUS_UNABLE_TO_LOCK_MEDIA					((NTSTATUS)0xC0000175)
#define STATUS_UNABLE_TO_UNLOAD_MEDIA					((NTSTATUS)0xC0000176)
#define STATUS_EOM_OVERFLOW						((NTSTATUS)0xC0000177)
#define STATUS_NO_MEDIA							((NTSTATUS)0xC0000178)
#define STATUS_NO_SUCH_MEMBER						((NTSTATUS)0xC000017A)
#define STATUS_INVALID_MEMBER						((NTSTATUS)0xC000017B)
#define STATUS_KEY_DELETED						((NTSTATUS)0xC000017C)
#define STATUS_NO_LOG_SPACE						((NTSTATUS)0xC000017D)
#define STATUS_TOO_MANY_SIDS						((NTSTATUS)0xC000017E)
#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED				((NTSTATUS)0xC000017F)
#define STATUS_KEY_HAS_CHILDREN						((NTSTATUS)0xC0000180)
#define STATUS_CHILD_MUST_BE_VOLATILE					((NTSTATUS)0xC0000181)
#define STATUS_DEVICE_CONFIGURATION_ERROR				((NTSTATUS)0xC0000182)
#define STATUS_DRIVER_INTERNAL_ERROR					((NTSTATUS)0xC0000183)
#define STATUS_INVALID_DEVICE_STATE					((NTSTATUS)0xC0000184)
#define STATUS_IO_DEVICE_ERROR						((NTSTATUS)0xC0000185)
#define STATUS_DEVICE_PROTOCOL_ERROR					((NTSTATUS)0xC0000186)
#define STATUS_BACKUP_CONTROLLER					((NTSTATUS)0xC0000187)
#define STATUS_LOG_FILE_FULL						((NTSTATUS)0xC0000188)
#define STATUS_TOO_LATE							((NTSTATUS)0xC0000189)
#define STATUS_NO_TRUST_LSA_SECRET					((NTSTATUS)0xC000018A)
#define STATUS_NO_TRUST_SAM_ACCOUNT					((NTSTATUS)0xC000018B)
#define STATUS_TRUSTED_DOMAIN_FAILURE					((NTSTATUS)0xC000018C)
#define STATUS_TRUSTED_RELATIONSHIP_FAILURE				((NTSTATUS)0xC000018D)
#define STATUS_EVENTLOG_FILE_CORRUPT					((NTSTATUS)0xC000018E)
#define STATUS_EVENTLOG_CANT_START					((NTSTATUS)0xC000018F)
#define STATUS_TRUST_FAILURE						((NTSTATUS)0xC0000190)
#define STATUS_MUTANT_LIMIT_EXCEEDED					((NTSTATUS)0xC0000191)
#define STATUS_NETLOGON_NOT_STARTED					((NTSTATUS)0xC0000192)
//#define STATUS_ACCOUNT_EXPIRED						((NTSTATUS)0xC0000193)
#define STATUS_POSSIBLE_DEADLOCK					((NTSTATUS)0xC0000194)
#define STATUS_NETWORK_CREDENTIAL_CONFLICT				((NTSTATUS)0xC0000195)
#define STATUS_REMOTE_SESSION_LIMIT					((NTSTATUS)0xC0000196)
#define STATUS_EVENTLOG_FILE_CHANGED					((NTSTATUS)0xC0000197)
#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT			((NTSTATUS)0xC0000198)
#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT			((NTSTATUS)0xC0000199)
#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT				((NTSTATUS)0xC000019A)
#define STATUS_DOMAIN_TRUST_INCONSISTENT				((NTSTATUS)0xC000019B)
#define STATUS_FS_DRIVER_REQUIRED					((NTSTATUS)0xC000019C)
#define STATUS_NO_USER_SESSION_KEY					((NTSTATUS)0xC0000202)
#define STATUS_USER_SESSION_DELETED					((NTSTATUS)0xC0000203)
#define STATUS_RESOURCE_LANG_NOT_FOUND					((NTSTATUS)0xC0000204)
#define STATUS_INSUFF_SERVER_RESOURCES					((NTSTATUS)0xC0000205)
#define STATUS_INVALID_BUFFER_SIZE					((NTSTATUS)0xC0000206)
#define STATUS_INVALID_ADDRESS_COMPONENT				((NTSTATUS)0xC0000207)
#define STATUS_INVALID_ADDRESS_WILDCARD					((NTSTATUS)0xC0000208)
#define STATUS_TOO_MANY_ADDRESSES					((NTSTATUS)0xC0000209)
#define STATUS_ADDRESS_ALREADY_EXISTS					((NTSTATUS)0xC000020A)
#define STATUS_ADDRESS_CLOSED						((NTSTATUS)0xC000020B)
#define STATUS_CONNECTION_DISCONNECTED					((NTSTATUS)0xC000020C)
#define STATUS_CONNECTION_RESET						((NTSTATUS)0xC000020D)
#define STATUS_TOO_MANY_NODES						((NTSTATUS)0xC000020E)
#define STATUS_TRANSACTION_ABORTED					((NTSTATUS)0xC000020F)
#define STATUS_TRANSACTION_TIMED_OUT					((NTSTATUS)0xC0000210)
#define STATUS_TRANSACTION_NO_RELEASE					((NTSTATUS)0xC0000211)
#define STATUS_TRANSACTION_NO_MATCH					((NTSTATUS)0xC0000212)
#define STATUS_TRANSACTION_RESPONDED					((NTSTATUS)0xC0000213)
#define STATUS_TRANSACTION_INVALID_ID					((NTSTATUS)0xC0000214)
#define STATUS_TRANSACTION_INVALID_TYPE					((NTSTATUS)0xC0000215)
#define STATUS_NOT_SERVER_SESSION					((NTSTATUS)0xC0000216)
#define STATUS_NOT_CLIENT_SESSION					((NTSTATUS)0xC0000217)
#define STATUS_CANNOT_LOAD_REGISTRY_FILE				((NTSTATUS)0xC0000218)
#define STATUS_DEBUG_ATTACH_FAILED					((NTSTATUS)0xC0000219)
#define STATUS_SYSTEM_PROCESS_TERMINATED				((NTSTATUS)0xC000021A)
#define STATUS_DATA_NOT_ACCEPTED					((NTSTATUS)0xC000021B)
#define STATUS_NO_BROWSER_SERVERS_FOUND					((NTSTATUS)0xC000021C)
#define STATUS_VDM_HARD_ERROR						((NTSTATUS)0xC000021D)
#define STATUS_DRIVER_CANCEL_TIMEOUT					((NTSTATUS)0xC000021E)
#define STATUS_REPLY_MESSAGE_MISMATCH					((NTSTATUS)0xC000021F)
#define STATUS_MAPPED_ALIGNMENT						((NTSTATUS)0xC0000220)
#define STATUS_IMAGE_CHECKSUM_MISMATCH					((NTSTATUS)0xC0000221)
#define STATUS_LOST_WRITEBEHIND_DATA					((NTSTATUS)0xC0000222)
#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID				((NTSTATUS)0xC0000223)
//#define STATUS_PASSWORD_MUST_CHANGE					((NTSTATUS)0xC0000224)
#define STATUS_NOT_FOUND						((NTSTATUS)0xC0000225)
#define STATUS_NOT_TINY_STREAM						((NTSTATUS)0xC0000226)
#define STATUS_RECOVERY_FAILURE						((NTSTATUS)0xC0000227)
#define STATUS_STACK_OVERFLOW_READ					((NTSTATUS)0xC0000228)
#define STATUS_FAIL_CHECK						((NTSTATUS)0xC0000229)
#define STATUS_DUPLICATE_OBJECTID					((NTSTATUS)0xC000022A)
#define STATUS_OBJECTID_EXISTS						((NTSTATUS)0xC000022B)
#define STATUS_CONVERT_TO_LARGE						((NTSTATUS)0xC000022C)
#define STATUS_RETRY							((NTSTATUS)0xC000022D)
#define STATUS_FOUND_OUT_OF_SCOPE					((NTSTATUS)0xC000022E)
#define STATUS_ALLOCATE_BUCKET						((NTSTATUS)0xC000022F)
#define STATUS_PROPSET_NOT_FOUND					((NTSTATUS)0xC0000230)
#define STATUS_MARSHALL_OVERFLOW					((NTSTATUS)0xC0000231)
#define STATUS_INVALID_VARIANT						((NTSTATUS)0xC0000232)
#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND				((NTSTATUS)0xC0000233)
//#define STATUS_ACCOUNT_LOCKED_OUT					((NTSTATUS)0xC0000234)
#define STATUS_HANDLE_NOT_CLOSABLE					((NTSTATUS)0xC0000235)
#define STATUS_CONNECTION_REFUSED					((NTSTATUS)0xC0000236)
#define STATUS_GRACEFUL_DISCONNECT					((NTSTATUS)0xC0000237)
#define STATUS_ADDRESS_ALREADY_ASSOCIATED				((NTSTATUS)0xC0000238)
#define STATUS_ADDRESS_NOT_ASSOCIATED					((NTSTATUS)0xC0000239)
#define STATUS_CONNECTION_INVALID					((NTSTATUS)0xC000023A)
#define STATUS_CONNECTION_ACTIVE					((NTSTATUS)0xC000023B)
#define STATUS_NETWORK_UNREACHABLE					((NTSTATUS)0xC000023C)
#define STATUS_HOST_UNREACHABLE						((NTSTATUS)0xC000023D)
#define STATUS_PROTOCOL_UNREACHABLE					((NTSTATUS)0xC000023E)
#define STATUS_PORT_UNREACHABLE						((NTSTATUS)0xC000023F)
#define STATUS_REQUEST_ABORTED						((NTSTATUS)0xC0000240)
#define STATUS_CONNECTION_ABORTED					((NTSTATUS)0xC0000241)
#define STATUS_BAD_COMPRESSION_BUFFER					((NTSTATUS)0xC0000242)
#define STATUS_USER_MAPPED_FILE						((NTSTATUS)0xC0000243)
#define STATUS_AUDIT_FAILED						((NTSTATUS)0xC0000244)
#define STATUS_TIMER_RESOLUTION_NOT_SET					((NTSTATUS)0xC0000245)
#define STATUS_CONNECTION_COUNT_LIMIT					((NTSTATUS)0xC0000246)
#define STATUS_LOGIN_TIME_RESTRICTION					((NTSTATUS)0xC0000247)
#define STATUS_LOGIN_WKSTA_RESTRICTION					((NTSTATUS)0xC0000248)
#define STATUS_IMAGE_MP_UP_MISMATCH					((NTSTATUS)0xC0000249)
#define STATUS_INSUFFICIENT_LOGON_INFO					((NTSTATUS)0xC0000250)
#define STATUS_BAD_DLL_ENTRYPOINT					((NTSTATUS)0xC0000251)
#define STATUS_BAD_SERVICE_ENTRYPOINT					((NTSTATUS)0xC0000252)
#define STATUS_LPC_REPLY_LOST						((NTSTATUS)0xC0000253)
#define STATUS_IP_ADDRESS_CONFLICT1					((NTSTATUS)0xC0000254)
#define STATUS_IP_ADDRESS_CONFLICT2					((NTSTATUS)0xC0000255)
#define STATUS_REGISTRY_QUOTA_LIMIT					((NTSTATUS)0xC0000256)
#define STATUS_PATH_NOT_COVERED						((NTSTATUS)0xC0000257)
#define STATUS_NO_CALLBACK_ACTIVE					((NTSTATUS)0xC0000258)
#define STATUS_LICENSE_QUOTA_EXCEEDED					((NTSTATUS)0xC0000259)
#define STATUS_PWD_TOO_SHORT						((NTSTATUS)0xC000025A)
#define STATUS_PWD_TOO_RECENT						((NTSTATUS)0xC000025B)
#define STATUS_PWD_HISTORY_CONFLICT					((NTSTATUS)0xC000025C)
#define STATUS_PLUGPLAY_NO_DEVICE					((NTSTATUS)0xC000025E)
#define STATUS_UNSUPPORTED_COMPRESSION					((NTSTATUS)0xC000025F)
#define STATUS_INVALID_HW_PROFILE					((NTSTATUS)0xC0000260)
#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH				((NTSTATUS)0xC0000261)
#define STATUS_DRIVER_ORDINAL_NOT_FOUND					((NTSTATUS)0xC0000262)
#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND				((NTSTATUS)0xC0000263)
#define STATUS_RESOURCE_NOT_OWNED					((NTSTATUS)0xC0000264)
#define STATUS_TOO_MANY_LINKS						((NTSTATUS)0xC0000265)
#define STATUS_QUOTA_LIST_INCONSISTENT					((NTSTATUS)0xC0000266)
#define STATUS_FILE_IS_OFFLINE						((NTSTATUS)0xC0000267)
#define STATUS_EVALUATION_EXPIRATION					((NTSTATUS)0xC0000268)
#define STATUS_ILLEGAL_DLL_RELOCATION					((NTSTATUS)0xC0000269)
#define STATUS_LICENSE_VIOLATION					((NTSTATUS)0xC000026A)
#define STATUS_DLL_INIT_FAILED_LOGOFF					((NTSTATUS)0xC000026B)
#define STATUS_DRIVER_UNABLE_TO_LOAD					((NTSTATUS)0xC000026C)
#define STATUS_DFS_UNAVAILABLE						((NTSTATUS)0xC000026D)
#define STATUS_VOLUME_DISMOUNTED					((NTSTATUS)0xC000026E)
#define STATUS_WX86_INTERNAL_ERROR					((NTSTATUS)0xC000026F)
#define STATUS_WX86_FLOAT_STACK_CHECK					((NTSTATUS)0xC0000270)
#define STATUS_VALIDATE_CONTINUE					((NTSTATUS)0xC0000271)
#define STATUS_NO_MATCH							((NTSTATUS)0xC0000272)
#define STATUS_NO_MORE_MATCHES						((NTSTATUS)0xC0000273)
#define STATUS_NOT_A_REPARSE_POINT					((NTSTATUS)0xC0000275)
#define STATUS_IO_REPARSE_TAG_INVALID					((NTSTATUS)0xC0000276)
#define STATUS_IO_REPARSE_TAG_MISMATCH					((NTSTATUS)0xC0000277)
#define STATUS_IO_REPARSE_DATA_INVALID					((NTSTATUS)0xC0000278)
#define STATUS_IO_REPARSE_TAG_NOT_HANDLED				((NTSTATUS)0xC0000279)
#define STATUS_REPARSE_POINT_NOT_RESOLVED				((NTSTATUS)0xC0000280)
#define STATUS_DIRECTORY_IS_A_REPARSE_POINT				((NTSTATUS)0xC0000281)
#define STATUS_RANGE_LIST_CONFLICT					((NTSTATUS)0xC0000282)
#define STATUS_SOURCE_ELEMENT_EMPTY					((NTSTATUS)0xC0000283)
#define STATUS_DESTINATION_ELEMENT_FULL					((NTSTATUS)0xC0000284)
#define STATUS_ILLEGAL_ELEMENT_ADDRESS					((NTSTATUS)0xC0000285)
#define STATUS_MAGAZINE_NOT_PRESENT					((NTSTATUS)0xC0000286)
#define STATUS_REINITIALIZATION_NEEDED					((NTSTATUS)0xC0000287)
#define STATUS_ENCRYPTION_FAILED					((NTSTATUS)0xC000028A)
#define STATUS_DECRYPTION_FAILED					((NTSTATUS)0xC000028B)
#define STATUS_RANGE_NOT_FOUND						((NTSTATUS)0xC000028C)
#define STATUS_NO_RECOVERY_POLICY					((NTSTATUS)0xC000028D)
#define STATUS_NO_EFS							((NTSTATUS)0xC000028E)
#define STATUS_WRONG_EFS						((NTSTATUS)0xC000028F)
#define STATUS_NO_USER_KEYS						((NTSTATUS)0xC0000290)
#define STATUS_FILE_NOT_ENCRYPTED					((NTSTATUS)0xC0000291)
#define STATUS_NOT_EXPORT_FORMAT					((NTSTATUS)0xC0000292)
#define STATUS_FILE_ENCRYPTED						((NTSTATUS)0xC0000293)
#define STATUS_WMI_GUID_NOT_FOUND					((NTSTATUS)0xC0000295)
#define STATUS_WMI_INSTANCE_NOT_FOUND					((NTSTATUS)0xC0000296)
#define STATUS_WMI_ITEMID_NOT_FOUND					((NTSTATUS)0xC0000297)
#define STATUS_WMI_TRY_AGAIN						((NTSTATUS)0xC0000298)
#define STATUS_SHARED_POLICY						((NTSTATUS)0xC0000299)
#define STATUS_POLICY_OBJECT_NOT_FOUND					((NTSTATUS)0xC000029A)
#define STATUS_POLICY_ONLY_IN_DS					((NTSTATUS)0xC000029B)
#define STATUS_VOLUME_NOT_UPGRADED					((NTSTATUS)0xC000029C)
#define STATUS_REMOTE_STORAGE_NOT_ACTIVE				((NTSTATUS)0xC000029D)
#define STATUS_REMOTE_STORAGE_MEDIA_ERROR				((NTSTATUS)0xC000029E)
#define STATUS_NO_TRACKING_SERVICE					((NTSTATUS)0xC000029F)
#define STATUS_SERVER_SID_MISMATCH					((NTSTATUS)0xC00002A0)
#define STATUS_DS_NO_ATTRIBUTE_OR_VALUE					((NTSTATUS)0xC00002A1)
#define STATUS_DS_INVALID_ATTRIBUTE_SYNTAX				((NTSTATUS)0xC00002A2)
#define STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED				((NTSTATUS)0xC00002A3)
#define STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS				((NTSTATUS)0xC00002A4)
#define STATUS_DS_BUSY							((NTSTATUS)0xC00002A5)
#define STATUS_DS_UNAVAILABLE						((NTSTATUS)0xC00002A6)
#define STATUS_DS_NO_RIDS_ALLOCATED					((NTSTATUS)0xC00002A7)
#define STATUS_DS_NO_MORE_RIDS						((NTSTATUS)0xC00002A8)
#define STATUS_DS_INCORRECT_ROLE_OWNER					((NTSTATUS)0xC00002A9)
#define STATUS_DS_RIDMGR_INIT_ERROR					((NTSTATUS)0xC00002AA)
#define STATUS_DS_OBJ_CLASS_VIOLATION					((NTSTATUS)0xC00002AB)
#define STATUS_DS_CANT_ON_NON_LEAF					((NTSTATUS)0xC00002AC)
#define STATUS_DS_CANT_ON_RDN						((NTSTATUS)0xC00002AD)
#define STATUS_DS_CANT_MOD_OBJ_CLASS					((NTSTATUS)0xC00002AE)
#define STATUS_DS_CROSS_DOM_MOVE_FAILED					((NTSTATUS)0xC00002AF)
#define STATUS_DS_GC_NOT_AVAILABLE					((NTSTATUS)0xC00002B0)
#define STATUS_DIRECTORY_SERVICE_REQUIRED				((NTSTATUS)0xC00002B1)
#define STATUS_REPARSE_ATTRIBUTE_CONFLICT				((NTSTATUS)0xC00002B2)
#define STATUS_CANT_ENABLE_DENY_ONLY					((NTSTATUS)0xC00002B3)
//#define STATUS_FLOAT_MULTIPLE_FAULTS					((NTSTATUS)0xC00002B4)
//#define STATUS_FLOAT_MULTIPLE_TRAPS					((NTSTATUS)0xC00002B5)
#define STATUS_DEVICE_REMOVED						((NTSTATUS)0xC00002B6)
#define STATUS_JOURNAL_DELETE_IN_PROGRESS				((NTSTATUS)0xC00002B7)
#define STATUS_JOURNAL_NOT_ACTIVE					((NTSTATUS)0xC00002B8)
#define STATUS_NOINTERFACE						((NTSTATUS)0xC00002B9)
#define STATUS_DS_ADMIN_LIMIT_EXCEEDED					((NTSTATUS)0xC00002C1)
#define STATUS_DRIVER_FAILED_SLEEP					((NTSTATUS)0xC00002C2)
#define STATUS_MUTUAL_AUTHENTICATION_FAILED				((NTSTATUS)0xC00002C3)
#define STATUS_CORRUPT_SYSTEM_FILE					((NTSTATUS)0xC00002C4)
#define STATUS_DATATYPE_MISALIGNMENT_ERROR				((NTSTATUS)0xC00002C5)
#define STATUS_WMI_READ_ONLY						((NTSTATUS)0xC00002C6)
#define STATUS_WMI_SET_FAILURE						((NTSTATUS)0xC00002C7)
#define STATUS_COMMITMENT_MINIMUM					((NTSTATUS)0xC00002C8)
//#define STATUS_REG_NAT_CONSUMPTION					((NTSTATUS)0xC00002C9)
#define STATUS_TRANSPORT_FULL						((NTSTATUS)0xC00002CA)
#define STATUS_DS_SAM_INIT_FAILURE					((NTSTATUS)0xC00002CB)
#define STATUS_ONLY_IF_CONNECTED					((NTSTATUS)0xC00002CC)
#define STATUS_DS_SENSITIVE_GROUP_VIOLATION				((NTSTATUS)0xC00002CD)
#define STATUS_PNP_RESTART_ENUMERATION					((NTSTATUS)0xC00002CE)
#define STATUS_JOURNAL_ENTRY_DELETED					((NTSTATUS)0xC00002CF)
#define STATUS_DS_CANT_MOD_PRIMARYGROUPID				((NTSTATUS)0xC00002D0)
#define STATUS_SYSTEM_IMAGE_BAD_SIGNATURE				((NTSTATUS)0xC00002D1)
#define STATUS_PNP_REBOOT_REQUIRED					((NTSTATUS)0xC00002D2)
#define STATUS_POWER_STATE_INVALID					((NTSTATUS)0xC00002D3)
#define STATUS_DS_INVALID_GROUP_TYPE					((NTSTATUS)0xC00002D4)
#define STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN			((NTSTATUS)0xC00002D5)
#define STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN			((NTSTATUS)0xC00002D6)
#define STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER				((NTSTATUS)0xC00002D7)
#define STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER			((NTSTATUS)0xC00002D8)
#define STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER			((NTSTATUS)0xC00002D9)
#define STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER			((NTSTATUS)0xC00002DA)
#define STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER		((NTSTATUS)0xC00002DB)
#define STATUS_DS_HAVE_PRIMARY_MEMBERS					((NTSTATUS)0xC00002DC)
#define STATUS_WMI_NOT_SUPPORTED					((NTSTATUS)0xC00002DD)
#define STATUS_INSUFFICIENT_POWER					((NTSTATUS)0xC00002DE)
#define STATUS_SAM_NEED_BOOTKEY_PASSWORD				((NTSTATUS)0xC00002DF)
#define STATUS_SAM_NEED_BOOTKEY_FLOPPY					((NTSTATUS)0xC00002E0)
#define STATUS_DS_CANT_START						((NTSTATUS)0xC00002E1)
#define STATUS_DS_INIT_FAILURE						((NTSTATUS)0xC00002E2)
#define STATUS_SAM_INIT_FAILURE						((NTSTATUS)0xC00002E3)
#define STATUS_DS_GC_REQUIRED						((NTSTATUS)0xC00002E4)
#define STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY				((NTSTATUS)0xC00002E5)
#define STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS				((NTSTATUS)0xC00002E6)
#define STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED			((NTSTATUS)0xC00002E7)
#define STATUS_MULTIPLE_FAULT_VIOLATION					((NTSTATUS)0xC00002E8)
#define STATUS_CURRENT_DOMAIN_NOT_ALLOWED				((NTSTATUS)0xC00002E9)
#define STATUS_CANNOT_MAKE						((NTSTATUS)0xC00002EA)
#define STATUS_SYSTEM_SHUTDOWN						((NTSTATUS)0xC00002EB)
#define STATUS_DS_INIT_FAILURE_CONSOLE					((NTSTATUS)0xC00002EC)
#define STATUS_DS_SAM_INIT_FAILURE_CONSOLE				((NTSTATUS)0xC00002ED)
#define STATUS_UNFINISHED_CONTEXT_DELETED				((NTSTATUS)0xC00002EE)
#define STATUS_NO_TGT_REPLY						((NTSTATUS)0xC00002EF)
#define STATUS_OBJECTID_NOT_FOUND					((NTSTATUS)0xC00002F0)
#define STATUS_NO_IP_ADDRESSES						((NTSTATUS)0xC00002F1)
#define STATUS_WRONG_CREDENTIAL_HANDLE					((NTSTATUS)0xC00002F2)
#define STATUS_CRYPTO_SYSTEM_INVALID					((NTSTATUS)0xC00002F3)
#define STATUS_MAX_REFERRALS_EXCEEDED					((NTSTATUS)0xC00002F4)
#define STATUS_MUST_BE_KDC						((NTSTATUS)0xC00002F5)
#define STATUS_STRONG_CRYPTO_NOT_SUPPORTED				((NTSTATUS)0xC00002F6)
#define STATUS_TOO_MANY_PRINCIPALS					((NTSTATUS)0xC00002F7)
#define STATUS_NO_PA_DATA						((NTSTATUS)0xC00002F8)
#define STATUS_PKINIT_NAME_MISMATCH					((NTSTATUS)0xC00002F9)
#define STATUS_SMARTCARD_LOGON_REQUIRED					((NTSTATUS)0xC00002FA)
#define STATUS_KDC_INVALID_REQUEST					((NTSTATUS)0xC00002FB)
#define STATUS_KDC_UNABLE_TO_REFER					((NTSTATUS)0xC00002FC)
#define STATUS_KDC_UNKNOWN_ETYPE					((NTSTATUS)0xC00002FD)
#define STATUS_SHUTDOWN_IN_PROGRESS					((NTSTATUS)0xC00002FE)
#define STATUS_SERVER_SHUTDOWN_IN_PROGRESS				((NTSTATUS)0xC00002FF)
#define STATUS_NOT_SUPPORTED_ON_SBS					((NTSTATUS)0xC0000300)
#define STATUS_WMI_GUID_DISCONNECTED					((NTSTATUS)0xC0000301)
#define STATUS_WMI_ALREADY_DISABLED					((NTSTATUS)0xC0000302)
#define STATUS_WMI_ALREADY_ENABLED					((NTSTATUS)0xC0000303)
#define STATUS_MFT_TOO_FRAGMENTED					((NTSTATUS)0xC0000304)
#define STATUS_COPY_PROTECTION_FAILURE					((NTSTATUS)0xC0000305)
#define STATUS_CSS_AUTHENTICATION_FAILURE				((NTSTATUS)0xC0000306)
#define STATUS_CSS_KEY_NOT_PRESENT					((NTSTATUS)0xC0000307)
#define STATUS_CSS_KEY_NOT_ESTABLISHED					((NTSTATUS)0xC0000308)
#define STATUS_CSS_SCRAMBLED_SECTOR					((NTSTATUS)0xC0000309)
#define STATUS_CSS_REGION_MISMATCH					((NTSTATUS)0xC000030A)
#define STATUS_CSS_RESETS_EXHAUSTED					((NTSTATUS)0xC000030B)
#define STATUS_PKINIT_FAILURE						((NTSTATUS)0xC0000320)
#define STATUS_SMARTCARD_SUBSYSTEM_FAILURE				((NTSTATUS)0xC0000321)
#define STATUS_NO_KERB_KEY						((NTSTATUS)0xC0000322)
#define STATUS_HOST_DOWN						((NTSTATUS)0xC0000350)
#define STATUS_UNSUPPORTED_PREAUTH					((NTSTATUS)0xC0000351)
#define STATUS_EFS_ALG_BLOB_TOO_BIG					((NTSTATUS)0xC0000352)
#define STATUS_PORT_NOT_SET						((NTSTATUS)0xC0000353)
#define STATUS_DEBUGGER_INACTIVE					((NTSTATUS)0xC0000354)
#define STATUS_DS_VERSION_CHECK_FAILURE					((NTSTATUS)0xC0000355)
#define STATUS_AUDITING_DISABLED					((NTSTATUS)0xC0000356)
#define STATUS_PRENT4_MACHINE_ACCOUNT					((NTSTATUS)0xC0000357)
#define STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER				((NTSTATUS)0xC0000358)
#define STATUS_INVALID_IMAGE_WIN_32					((NTSTATUS)0xC0000359)
#define STATUS_INVALID_IMAGE_WIN_64					((NTSTATUS)0xC000035A)
#define STATUS_BAD_BINDINGS						((NTSTATUS)0xC000035B)
#define STATUS_NETWORK_SESSION_EXPIRED					((NTSTATUS)0xC000035C)
#define STATUS_APPHELP_BLOCK						((NTSTATUS)0xC000035D)
#define STATUS_ALL_SIDS_FILTERED					((NTSTATUS)0xC000035E)
#define STATUS_NOT_SAFE_MODE_DRIVER					((NTSTATUS)0xC000035F)
#define STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT			((NTSTATUS)0xC0000361)
#define STATUS_ACCESS_DISABLED_BY_POLICY_PATH				((NTSTATUS)0xC0000362)
#define STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER			((NTSTATUS)0xC0000363)
#define STATUS_ACCESS_DISABLED_BY_POLICY_OTHER				((NTSTATUS)0xC0000364)
#define STATUS_FAILED_DRIVER_ENTRY					((NTSTATUS)0xC0000365)
#define STATUS_DEVICE_ENUMERATION_ERROR					((NTSTATUS)0xC0000366)
#define STATUS_WAIT_FOR_OPLOCK						((NTSTATUS)0x00000367)
#define STATUS_MOUNT_POINT_NOT_RESOLVED					((NTSTATUS)0xC0000368)
#define STATUS_INVALID_DEVICE_OBJECT_PARAMETER				((NTSTATUS)0xC0000369)
/* The following is not a typo. It's the same spelling as in the Microsoft headers */
#define STATUS_MCA_OCCURED						((NTSTATUS)0xC000036A)
#define STATUS_DRIVER_BLOCKED_CRITICAL					((NTSTATUS)0xC000036B)
#define STATUS_DRIVER_BLOCKED						((NTSTATUS)0xC000036C)
#define STATUS_DRIVER_DATABASE_ERROR					((NTSTATUS)0xC000036D)
#define STATUS_SYSTEM_HIVE_TOO_LARGE					((NTSTATUS)0xC000036E)
#define STATUS_INVALID_IMPORT_OF_NON_DLL				((NTSTATUS)0xC000036F)
#define STATUS_SMARTCARD_WRONG_PIN					((NTSTATUS)0xC0000380)
#define STATUS_SMARTCARD_CARD_BLOCKED					((NTSTATUS)0xC0000381)
#define STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED				((NTSTATUS)0xC0000382)
#define STATUS_SMARTCARD_NO_CARD					((NTSTATUS)0xC0000383)
#define STATUS_SMARTCARD_NO_KEY_CONTAINER				((NTSTATUS)0xC0000384)
#define STATUS_SMARTCARD_NO_CERTIFICATE					((NTSTATUS)0xC0000385)
#define STATUS_SMARTCARD_NO_KEYSET					((NTSTATUS)0xC0000386)
#define STATUS_SMARTCARD_IO_ERROR					((NTSTATUS)0xC0000387)
//#define STATUS_DOWNGRADE_DETECTED					((NTSTATUS)0xC0000388)
#define STATUS_SMARTCARD_CERT_REVOKED					((NTSTATUS)0xC0000389)
#define STATUS_ISSUING_CA_UNTRUSTED					((NTSTATUS)0xC000038A)
#define STATUS_REVOCATION_OFFLINE_C					((NTSTATUS)0xC000038B)
#define STATUS_PKINIT_CLIENT_FAILURE					((NTSTATUS)0xC000038C)
#define STATUS_SMARTCARD_CERT_EXPIRED					((NTSTATUS)0xC000038D)
#define STATUS_DRIVER_FAILED_PRIOR_UNLOAD				((NTSTATUS)0xC000038E)
#define STATUS_SMARTCARD_SILENT_CONTEXT					((NTSTATUS)0xC000038F)
#define STATUS_PER_USER_TRUST_QUOTA_EXCEEDED				((NTSTATUS)0xC0000401)
#define STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED				((NTSTATUS)0xC0000402)
#define STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED				((NTSTATUS)0xC0000403)
#define STATUS_DS_NAME_NOT_UNIQUE					((NTSTATUS)0xC0000404)
#define STATUS_DS_DUPLICATE_ID_FOUND					((NTSTATUS)0xC0000405)
#define STATUS_DS_GROUP_CONVERSION_ERROR				((NTSTATUS)0xC0000406)
#define STATUS_VOLSNAP_PREPARE_HIBERNATE				((NTSTATUS)0xC0000407)
#define STATUS_USER2USER_REQUIRED					((NTSTATUS)0xC0000408)
//#define STATUS_STACK_BUFFER_OVERRUN					((NTSTATUS)0xC0000409)
#define STATUS_NO_S4U_PROT_SUPPORT					((NTSTATUS)0xC000040A)
#define STATUS_CROSSREALM_DELEGATION_FAILURE				((NTSTATUS)0xC000040B)
#define STATUS_REVOCATION_OFFLINE_KDC					((NTSTATUS)0xC000040C)
#define STATUS_ISSUING_CA_UNTRUSTED_KDC					((NTSTATUS)0xC000040D)
#define STATUS_KDC_CERT_EXPIRED						((NTSTATUS)0xC000040E)
#define STATUS_KDC_CERT_REVOKED						((NTSTATUS)0xC000040F)
#define STATUS_PARAMETER_QUOTA_EXCEEDED					((NTSTATUS)0xC0000410)
#define STATUS_HIBERNATION_FAILURE					((NTSTATUS)0xC0000411)
#define STATUS_DELAY_LOAD_FAILED					((NTSTATUS)0xC0000412)
//#define STATUS_AUTHENTICATION_FIREWALL_FAILED				((NTSTATUS)0xC0000413)
#define STATUS_VDM_DISALLOWED						((NTSTATUS)0xC0000414)
#define STATUS_HUNG_DISPLAY_DRIVER_THREAD				((NTSTATUS)0xC0000415)
//#define STATUS_INVALID_CRUNTIME_PARAMETER				((NTSTATUS)0xC0000417)
//#define STATUS_ASSERTION_FAILURE					((NTSTATUS)0xC0000420L)
#define STATUS_CALLBACK_POP_STACK					((NTSTATUS)0xC0000423)
#define STATUS_WOW_ASSERTION						((NTSTATUS)0xC0009898)

#define RPC_NT_INVALID_STRING_BINDING					((NTSTATUS)0xC0020001)
#define RPC_NT_WRONG_KIND_OF_BINDING					((NTSTATUS)0xC0020002)
#define RPC_NT_INVALID_BINDING						((NTSTATUS)0xC0020003)
#define RPC_NT_PROTSEQ_NOT_SUPPORTED					((NTSTATUS)0xC0020004)
#define RPC_NT_INVALID_RPC_PROTSEQ					((NTSTATUS)0xC0020005)
#define RPC_NT_INVALID_STRING_UUID					((NTSTATUS)0xC0020006)
#define RPC_NT_INVALID_ENDPOINT_FORMAT					((NTSTATUS)0xC0020007)
#define RPC_NT_INVALID_NET_ADDR						((NTSTATUS)0xC0020008)
#define RPC_NT_NO_ENDPOINT_FOUND					((NTSTATUS)0xC0020009)
#define RPC_NT_INVALID_TIMEOUT						((NTSTATUS)0xC002000A)
#define RPC_NT_OBJECT_NOT_FOUND						((NTSTATUS)0xC002000B)
#define RPC_NT_ALREADY_REGISTERED					((NTSTATUS)0xC002000C)
#define RPC_NT_TYPE_ALREADY_REGISTERED					((NTSTATUS)0xC002000D)
#define RPC_NT_ALREADY_LISTENING					((NTSTATUS)0xC002000E)
#define RPC_NT_NO_PROTSEQS_REGISTERED					((NTSTATUS)0xC002000F)
#define RPC_NT_NOT_LISTENING						((NTSTATUS)0xC0020010)
#define RPC_NT_UNKNOWN_MGR_TYPE						((NTSTATUS)0xC0020011)
#define RPC_NT_UNKNOWN_IF						((NTSTATUS)0xC0020012)
#define RPC_NT_NO_BINDINGS						((NTSTATUS)0xC0020013)
#define RPC_NT_NO_PROTSEQS						((NTSTATUS)0xC0020014)
#define RPC_NT_CANT_CREATE_ENDPOINT					((NTSTATUS)0xC0020015)
#define RPC_NT_OUT_OF_RESOURCES						((NTSTATUS)0xC0020016)
#define RPC_NT_SERVER_UNAVAILABLE					((NTSTATUS)0xC0020017)
#define RPC_NT_SERVER_TOO_BUSY						((NTSTATUS)0xC0020018)
#define RPC_NT_INVALID_NETWORK_OPTIONS					((NTSTATUS)0xC0020019)
#define RPC_NT_NO_CALL_ACTIVE						((NTSTATUS)0xC002001A)
#define RPC_NT_CALL_FAILED						((NTSTATUS)0xC002001B)
#define RPC_NT_CALL_FAILED_DNE						((NTSTATUS)0xC002001C)
#define RPC_NT_PROTOCOL_ERROR						((NTSTATUS)0xC002001D)
#define RPC_NT_UNSUPPORTED_TRANS_SYN					((NTSTATUS)0xC002001F)
#define RPC_NT_UNSUPPORTED_TYPE						((NTSTATUS)0xC0020021)
#define RPC_NT_INVALID_TAG						((NTSTATUS)0xC0020022)
#define RPC_NT_INVALID_BOUND						((NTSTATUS)0xC0020023)
#define RPC_NT_NO_ENTRY_NAME						((NTSTATUS)0xC0020024)
#define RPC_NT_INVALID_NAME_SYNTAX					((NTSTATUS)0xC0020025)
#define RPC_NT_UNSUPPORTED_NAME_SYNTAX					((NTSTATUS)0xC0020026)
#define RPC_NT_UUID_NO_ADDRESS						((NTSTATUS)0xC0020028)
#define RPC_NT_DUPLICATE_ENDPOINT					((NTSTATUS)0xC0020029)
#define RPC_NT_UNKNOWN_AUTHN_TYPE					((NTSTATUS)0xC002002A)
#define RPC_NT_MAX_CALLS_TOO_SMALL					((NTSTATUS)0xC002002B)
#define RPC_NT_STRING_TOO_LONG						((NTSTATUS)0xC002002C)
#define RPC_NT_PROTSEQ_NOT_FOUND					((NTSTATUS)0xC002002D)
#define RPC_NT_PROCNUM_OUT_OF_RANGE					((NTSTATUS)0xC002002E)
#define RPC_NT_BINDING_HAS_NO_AUTH					((NTSTATUS)0xC002002F)
#define RPC_NT_UNKNOWN_AUTHN_SERVICE					((NTSTATUS)0xC0020030)
#define RPC_NT_UNKNOWN_AUTHN_LEVEL					((NTSTATUS)0xC0020031)
#define RPC_NT_INVALID_AUTH_IDENTITY					((NTSTATUS)0xC0020032)
#define RPC_NT_UNKNOWN_AUTHZ_SERVICE					((NTSTATUS)0xC0020033)
#define EPT_NT_INVALID_ENTRY						((NTSTATUS)0xC0020034)
#define EPT_NT_CANT_PERFORM_OP						((NTSTATUS)0xC0020035)
#define EPT_NT_NOT_REGISTERED						((NTSTATUS)0xC0020036)
#define RPC_NT_NOTHING_TO_EXPORT					((NTSTATUS)0xC0020037)
#define RPC_NT_INCOMPLETE_NAME						((NTSTATUS)0xC0020038)
#define RPC_NT_INVALID_VERS_OPTION					((NTSTATUS)0xC0020039)
#define RPC_NT_NO_MORE_MEMBERS						((NTSTATUS)0xC002003A)
#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED					((NTSTATUS)0xC002003B)
#define RPC_NT_INTERFACE_NOT_FOUND					((NTSTATUS)0xC002003C)
#define RPC_NT_ENTRY_ALREADY_EXISTS					((NTSTATUS)0xC002003D)
#define RPC_NT_ENTRY_NOT_FOUND						((NTSTATUS)0xC002003E)
#define RPC_NT_NAME_SERVICE_UNAVAILABLE					((NTSTATUS)0xC002003F)
#define RPC_NT_INVALID_NAF_ID						((NTSTATUS)0xC0020040)
#define RPC_NT_CANNOT_SUPPORT						((NTSTATUS)0xC0020041)
#define RPC_NT_NO_CONTEXT_AVAILABLE					((NTSTATUS)0xC0020042)
#define RPC_NT_INTERNAL_ERROR						((NTSTATUS)0xC0020043)
#define RPC_NT_ZERO_DIVIDE						((NTSTATUS)0xC0020044)
#define RPC_NT_ADDRESS_ERROR						((NTSTATUS)0xC0020045)
#define RPC_NT_FP_DIV_ZERO						((NTSTATUS)0xC0020046)
#define RPC_NT_FP_UNDERFLOW						((NTSTATUS)0xC0020047)
#define RPC_NT_FP_OVERFLOW						((NTSTATUS)0xC0020048)
#define RPC_NT_CALL_IN_PROGRESS						((NTSTATUS)0xC0020049)
#define RPC_NT_NO_MORE_BINDINGS						((NTSTATUS)0xC002004A)
#define RPC_NT_GROUP_MEMBER_NOT_FOUND					((NTSTATUS)0xC002004B)
#define EPT_NT_CANT_CREATE						((NTSTATUS)0xC002004C)
#define RPC_NT_INVALID_OBJECT						((NTSTATUS)0xC002004D)
#define RPC_NT_NO_INTERFACES						((NTSTATUS)0xC002004F)
#define RPC_NT_CALL_CANCELLED						((NTSTATUS)0xC0020050)
#define RPC_NT_BINDING_INCOMPLETE					((NTSTATUS)0xC0020051)
#define RPC_NT_COMM_FAILURE						((NTSTATUS)0xC0020052)
#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL					((NTSTATUS)0xC0020053)
#define RPC_NT_NO_PRINC_NAME						((NTSTATUS)0xC0020054)
#define RPC_NT_NOT_RPC_ERROR						((NTSTATUS)0xC0020055)
#define RPC_NT_SEC_PKG_ERROR						((NTSTATUS)0xC0020057)
#define RPC_NT_NOT_CANCELLED						((NTSTATUS)0xC0020058)
#define RPC_NT_INVALID_ASYNC_HANDLE					((NTSTATUS)0xC0020062)
#define RPC_NT_INVALID_ASYNC_CALL					((NTSTATUS)0xC0020063)

#define RPC_NT_NO_MORE_ENTRIES						((NTSTATUS)0xC0030001)
#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL					((NTSTATUS)0xC0030002)
#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE					((NTSTATUS)0xC0030003)
#define RPC_NT_SS_IN_NULL_CONTEXT					((NTSTATUS)0xC0030004)
#define RPC_NT_SS_CONTEXT_MISMATCH					((NTSTATUS)0xC0030005)
#define RPC_NT_SS_CONTEXT_DAMAGED					((NTSTATUS)0xC0030006)
#define RPC_NT_SS_HANDLES_MISMATCH					((NTSTATUS)0xC0030007)
#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE				((NTSTATUS)0xC0030008)
#define RPC_NT_NULL_REF_POINTER						((NTSTATUS)0xC0030009)
#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE					((NTSTATUS)0xC003000A)
#define RPC_NT_BYTE_COUNT_TOO_SMALL					((NTSTATUS)0xC003000B)
#define RPC_NT_BAD_STUB_DATA						((NTSTATUS)0xC003000C)
#define RPC_NT_INVALID_ES_ACTION					((NTSTATUS)0xC0030059)
#define RPC_NT_WRONG_ES_VERSION						((NTSTATUS)0xC003005A)
#define RPC_NT_WRONG_STUB_VERSION					((NTSTATUS)0xC003005B)
#define RPC_NT_INVALID_PIPE_OBJECT					((NTSTATUS)0xC003005C)
#define RPC_NT_INVALID_PIPE_OPERATION					((NTSTATUS)0xC003005D)
#define RPC_NT_WRONG_PIPE_VERSION					((NTSTATUS)0xC003005E)
#define RPC_NT_PIPE_CLOSED						((NTSTATUS)0xC003005F)
#define RPC_NT_PIPE_DISCIPLINE_ERROR					((NTSTATUS)0xC0030060)
#define RPC_NT_PIPE_EMPTY						((NTSTATUS)0xC0030061)

#define STATUS_PNP_BAD_MPS_TABLE					((NTSTATUS)0xC0040035)
#define STATUS_PNP_TRANSLATION_FAILED					((NTSTATUS)0xC0040036)
#define STATUS_PNP_IRQ_TRANSLATION_FAILED				((NTSTATUS)0xC0040037)
#define STATUS_PNP_INVALID_ID						((NTSTATUS)0xC0040038)

#define STATUS_ACPI_INVALID_OPCODE					((NTSTATUS)0xC0140001L)
#define STATUS_ACPI_STACK_OVERFLOW					((NTSTATUS)0xC0140002L)
#define STATUS_ACPI_ASSERT_FAILED					((NTSTATUS)0xC0140003L)
#define STATUS_ACPI_INVALID_INDEX					((NTSTATUS)0xC0140004L)
#define STATUS_ACPI_INVALID_ARGUMENT					((NTSTATUS)0xC0140005L)
#define STATUS_ACPI_FATAL						((NTSTATUS)0xC0140006L)
#define STATUS_ACPI_INVALID_SUPERNAME					((NTSTATUS)0xC0140007L)
#define STATUS_ACPI_INVALID_ARGTYPE					((NTSTATUS)0xC0140008L)
#define STATUS_ACPI_INVALID_OBJTYPE					((NTSTATUS)0xC0140009L)
#define STATUS_ACPI_INVALID_TARGETTYPE					((NTSTATUS)0xC014000AL)
#define STATUS_ACPI_INCORRECT_ARGUMENT_COUNT				((NTSTATUS)0xC014000BL)
#define STATUS_ACPI_ADDRESS_NOT_MAPPED					((NTSTATUS)0xC014000CL)
#define STATUS_ACPI_INVALID_EVENTTYPE					((NTSTATUS)0xC014000DL)
#define STATUS_ACPI_HANDLER_COLLISION					((NTSTATUS)0xC014000EL)
#define STATUS_ACPI_INVALID_DATA					((NTSTATUS)0xC014000FL)
#define STATUS_ACPI_INVALID_REGION					((NTSTATUS)0xC0140010L)
#define STATUS_ACPI_INVALID_ACCESS_SIZE					((NTSTATUS)0xC0140011L)
#define STATUS_ACPI_ACQUIRE_GLOBAL_LOCK					((NTSTATUS)0xC0140012L)
#define STATUS_ACPI_ALREADY_INITIALIZED					((NTSTATUS)0xC0140013L)
#define STATUS_ACPI_NOT_INITIALIZED					((NTSTATUS)0xC0140014L)
#define STATUS_ACPI_INVALID_MUTEX_LEVEL					((NTSTATUS)0xC0140015L)
#define STATUS_ACPI_MUTEX_NOT_OWNED					((NTSTATUS)0xC0140016L)
#define STATUS_ACPI_MUTEX_NOT_OWNER					((NTSTATUS)0xC0140017L)
#define STATUS_ACPI_RS_ACCESS						((NTSTATUS)0xC0140018L)
#define STATUS_ACPI_INVALID_TABLE					((NTSTATUS)0xC0140019L)
#define STATUS_ACPI_REG_HANDLER_FAILED					((NTSTATUS)0xC0140020L)
#define STATUS_ACPI_POWER_REQUEST_FAILED				((NTSTATUS)0xC0140021L)

#define STATUS_CTX_WINSTATION_NAME_INVALID				((NTSTATUS)0xC00A0001)
#define STATUS_CTX_INVALID_PD						((NTSTATUS)0xC00A0002)
#define STATUS_CTX_PD_NOT_FOUND						((NTSTATUS)0xC00A0003)
#define STATUS_CTX_CLOSE_PENDING					((NTSTATUS)0xC00A0006)
#define STATUS_CTX_NO_OUTBUF						((NTSTATUS)0xC00A0007)
#define STATUS_CTX_MODEM_INF_NOT_FOUND					((NTSTATUS)0xC00A0008)
#define STATUS_CTX_INVALID_MODEMNAME					((NTSTATUS)0xC00A0009)
#define STATUS_CTX_RESPONSE_ERROR					((NTSTATUS)0xC00A000A)
#define STATUS_CTX_MODEM_RESPONSE_TIMEOUT				((NTSTATUS)0xC00A000B)
#define STATUS_CTX_MODEM_RESPONSE_NO_CARRIER				((NTSTATUS)0xC00A000C)
#define STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE				((NTSTATUS)0xC00A000D)
#define STATUS_CTX_MODEM_RESPONSE_BUSY					((NTSTATUS)0xC00A000E)
#define STATUS_CTX_MODEM_RESPONSE_VOICE					((NTSTATUS)0xC00A000F)
#define STATUS_CTX_TD_ERROR						((NTSTATUS)0xC00A0010)
#define STATUS_CTX_LICENSE_CLIENT_INVALID				((NTSTATUS)0xC00A0012)
#define STATUS_CTX_LICENSE_NOT_AVAILABLE				((NTSTATUS)0xC00A0013)
#define STATUS_CTX_LICENSE_EXPIRED					((NTSTATUS)0xC00A0014)
#define STATUS_CTX_WINSTATION_NOT_FOUND					((NTSTATUS)0xC00A0015)
#define STATUS_CTX_WINSTATION_NAME_COLLISION				((NTSTATUS)0xC00A0016)
#define STATUS_CTX_WINSTATION_BUSY					((NTSTATUS)0xC00A0017)
#define STATUS_CTX_BAD_VIDEO_MODE					((NTSTATUS)0xC00A0018)
#define STATUS_CTX_GRAPHICS_INVALID					((NTSTATUS)0xC00A0022)
#define STATUS_CTX_NOT_CONSOLE						((NTSTATUS)0xC00A0024)
#define STATUS_CTX_CLIENT_QUERY_TIMEOUT					((NTSTATUS)0xC00A0026)
#define STATUS_CTX_CONSOLE_DISCONNECT					((NTSTATUS)0xC00A0027)
#define STATUS_CTX_CONSOLE_CONNECT					((NTSTATUS)0xC00A0028)
#define STATUS_CTX_SHADOW_DENIED					((NTSTATUS)0xC00A002A)
#define STATUS_CTX_WINSTATION_ACCESS_DENIED				((NTSTATUS)0xC00A002B)
#define STATUS_CTX_INVALID_WD						((NTSTATUS)0xC00A002E)
#define STATUS_CTX_WD_NOT_FOUND						((NTSTATUS)0xC00A002F)
#define STATUS_CTX_SHADOW_INVALID					((NTSTATUS)0xC00A0030)
#define STATUS_CTX_SHADOW_DISABLED					((NTSTATUS)0xC00A0031)
#define STATUS_RDP_PROTOCOL_ERROR					((NTSTATUS)0xC00A0032)
#define STATUS_CTX_CLIENT_LICENSE_NOT_SET				((NTSTATUS)0xC00A0033)
#define STATUS_CTX_CLIENT_LICENSE_IN_USE				((NTSTATUS)0xC00A0034)
#define STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE				((NTSTATUS)0xC00A0035)
#define STATUS_CTX_SHADOW_NOT_RUNNING					((NTSTATUS)0xC00A0036)

#define STATUS_CLUSTER_INVALID_NODE					((NTSTATUS)0xC0130001)
#define STATUS_CLUSTER_NODE_EXISTS					((NTSTATUS)0xC0130002)
#define STATUS_CLUSTER_JOIN_IN_PROGRESS					((NTSTATUS)0xC0130003)
#define STATUS_CLUSTER_NODE_NOT_FOUND					((NTSTATUS)0xC0130004)
#define STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND				((NTSTATUS)0xC0130005)
#define STATUS_CLUSTER_NETWORK_EXISTS					((NTSTATUS)0xC0130006)
#define STATUS_CLUSTER_NETWORK_NOT_FOUND				((NTSTATUS)0xC0130007)
#define STATUS_CLUSTER_NETINTERFACE_EXISTS				((NTSTATUS)0xC0130008)
#define STATUS_CLUSTER_NETINTERFACE_NOT_FOUND				((NTSTATUS)0xC0130009)
#define STATUS_CLUSTER_INVALID_REQUEST					((NTSTATUS)0xC013000A)
#define STATUS_CLUSTER_INVALID_NETWORK_PROVIDER				((NTSTATUS)0xC013000B)
#define STATUS_CLUSTER_NODE_DOWN					((NTSTATUS)0xC013000C)
#define STATUS_CLUSTER_NODE_UNREACHABLE					((NTSTATUS)0xC013000D)
#define STATUS_CLUSTER_NODE_NOT_MEMBER					((NTSTATUS)0xC013000E)
#define STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS				((NTSTATUS)0xC013000F)
#define STATUS_CLUSTER_INVALID_NETWORK					((NTSTATUS)0xC0130010)
#define STATUS_CLUSTER_NO_NET_ADAPTERS					((NTSTATUS)0xC0130011)
#define STATUS_CLUSTER_NODE_UP						((NTSTATUS)0xC0130012)
#define STATUS_CLUSTER_NODE_PAUSED					((NTSTATUS)0xC0130013)
#define STATUS_CLUSTER_NODE_NOT_PAUSED					((NTSTATUS)0xC0130014)
#define STATUS_CLUSTER_NO_SECURITY_CONTEXT				((NTSTATUS)0xC0130015)
#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL				((NTSTATUS)0xC0130016)
#define STATUS_CLUSTER_POISONED						((NTSTATUS)0xC0130017)

#define STATUS_SXS_SECTION_NOT_FOUND					((NTSTATUS)0xC0150001)
#define STATUS_SXS_CANT_GEN_ACTCTX					((NTSTATUS)0xC0150002)
#define STATUS_SXS_INVALID_ACTCTXDATA_FORMAT				((NTSTATUS)0xC0150003)
#define STATUS_SXS_ASSEMBLY_NOT_FOUND					((NTSTATUS)0xC0150004)
#define STATUS_SXS_MANIFEST_FORMAT_ERROR				((NTSTATUS)0xC0150005)
#define STATUS_SXS_MANIFEST_PARSE_ERROR					((NTSTATUS)0xC0150006)
#define STATUS_SXS_ACTIVATION_CONTEXT_DISABLED				((NTSTATUS)0xC0150007)
#define STATUS_SXS_KEY_NOT_FOUND					((NTSTATUS)0xC0150008)
#define STATUS_SXS_VERSION_CONFLICT					((NTSTATUS)0xC0150009)
#define STATUS_SXS_WRONG_SECTION_TYPE					((NTSTATUS)0xC015000A)
#define STATUS_SXS_THREAD_QUERIES_DISABLED				((NTSTATUS)0xC015000B)
#define STATUS_SXS_ASSEMBLY_MISSING					((NTSTATUS)0xC015000C)
#define STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET				((NTSTATUS)0xC015000E)
//#define STATUS_SXS_EARLY_DEACTIVATION					((NTSTATUS)0xC015000F)
//#define STATUS_SXS_INVALID_DEACTIVATION					((NTSTATUS)0xC0150010)
#define STATUS_SXS_MULTIPLE_DEACTIVATION				((NTSTATUS)0xC0150011)
#define STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY		((NTSTATUS)0xC0150012)
#define STATUS_SXS_PROCESS_TERMINATION_REQUESTED			((NTSTATUS)0xC0150013)
#define STATUS_SXS_CORRUPT_ACTIVATION_STACK				((NTSTATUS)0xC0150014)
#define STATUS_SXS_CORRUPTION						((NTSTATUS)0xC0150015)
#define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE			((NTSTATUS)0xC0150016)
#define STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME			((NTSTATUS)0xC0150017)
#define STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE				((NTSTATUS)0xC0150018)
#define STATUS_SXS_IDENTITY_PARSE_ERROR					((NTSTATUS)0xC0150019)
#define STATUS_SXS_COMPONENT_STORE_CORRUPT				((NTSTATUS)0xC015001A)
#define STATUS_SXS_FILE_HASH_MISMATCH					((NTSTATUS)0xC015001B)
#define STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT	((NTSTATUS)0xC015001C)
#define STATUS_SXS_IDENTITIES_DIFFERENT					((NTSTATUS)0xC015001D)
#define STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT				((NTSTATUS)0xC015001E)
#define STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY				((NTSTATUS)0xC015001F)
#define STATUS_ADVANCED_INSTALLER_FAILED				((NTSTATUS)0xC0150020)
#define STATUS_XML_ENCODING_MISMATCH					((NTSTATUS)0xC0150021)
#define STATUS_SXS_MANIFEST_TOO_BIG					((NTSTATUS)0xC0150022)
#define STATUS_SXS_SETTING_NOT_REGISTERED				((NTSTATUS)0xC0150023)
#define STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE			((NTSTATUS)0xC0150024)
#define STATUS_SXS_PRIMITIVE_INSTALLER_FAILED				((NTSTATUS)0xC0150025)
#define STATUS_GENERIC_COMMAND_FAILED					((NTSTATUS)0xC0150026)
#define STATUS_SXS_FILE_HASH_MISSING					((NTSTATUS)0xC0150027)

/* Defined in winternl.h, always define since we do not include this header */

/* defined in ntstatus.h */
#if !defined(NTSTATUS_FROM_WIN32) && !defined(INLINE_NTSTATUS_FROM_WIN32)
static INLINE NTSTATUS NTSTATUS_FROM_WIN32(long x)
{
	return x <= 0 ? (NTSTATUS)x : (NTSTATUS) (((x) & 0x0000FFFF) | (0x7 << 16) | 0xC0000000);
}
#endif

#ifdef _WIN32

/**
 * winternl.h contains an incomplete definition of enum FILE_INFORMATION_CLASS
 * avoid conflict by prefixing the winternl.h definition by _WINTERNL_ and then
 * make a complete definition of enum FILE_INFORMATION_CLASS ourselves.
 * 
 * For more information, refer to [MS-FSCC]: File System Control Codes:
 * http://msdn.microsoft.com/en-us/library/cc231987.aspx
 */

#define FILE_INFORMATION_CLASS		_WINTERNL_FILE_INFORMATION_CLASS
#define _FILE_INFORMATION_CLASS		_WINTERNL__FILE_INFORMATION_CLASS
#define FileDirectoryInformation	_WINTERNL_FileDirectoryInformation

#include <winternl.h>

#undef FILE_INFORMATION_CLASS
#undef _FILE_INFORMATION_CLASS
#undef FileDirectoryInformation

#endif

typedef enum _FILE_INFORMATION_CLASS
{
	FileDirectoryInformation = 1,
	FileFullDirectoryInformation,
	FileBothDirectoryInformation,
	FileBasicInformation,
	FileStandardInformation,
	FileInternalInformation,
	FileEaInformation,
	FileAccessInformation,
	FileNameInformation,
	FileRenameInformation,
	FileLinkInformation,
	FileNamesInformation,
	FileDispositionInformation,
	FilePositionInformation,
	FileFullEaInformation,
	FileModeInformation,
	FileAlignmentInformation,
	FileAllInformation,
	FileAllocationInformation,
	FileEndOfFileInformation,
	FileAlternateNameInformation,
	FileStreamInformation,
	FilePipeInformation,
	FilePipeLocalInformation,
	FilePipeRemoteInformation,
	FileMailslotQueryInformation,
	FileMailslotSetInformation,
	FileCompressionInformation,
	FileObjectIdInformation,
	FileUnknownInformation1,
	FileMoveClusterInformation,
	FileQuotaInformation,
	FileReparsePointInformation,
	FileNetworkOpenInformation,
	FileAttributeTagInformation,
	FileTrackingInformation,
	FileIdBothDirectoryInformation,
	FileIdFullDirectoryInformation,
	FileValidDataLengthInformation,
	FileShortNameInformation
} FILE_INFORMATION_CLASS;

#if !defined(_WIN32) || defined(_UWP)

#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

#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

#define FILE_OPEN_REQUIRING_OPLOCK		0x00010000

#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

#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

#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

typedef CONST char *PCSZ;

typedef struct _STRING
{
	USHORT Length;
	USHORT MaximumLength;
	PCHAR Buffer;
} STRING;
typedef STRING *PSTRING;

typedef STRING ANSI_STRING;
typedef PSTRING PANSI_STRING;
typedef PSTRING PCANSI_STRING;

typedef STRING OEM_STRING;
typedef PSTRING POEM_STRING;
typedef CONST STRING* PCOEM_STRING;

typedef struct _LSA_UNICODE_STRING
{
	USHORT Length;
	USHORT MaximumLength;
	PWSTR Buffer;
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;

#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

typedef struct _OBJECT_ATTRIBUTES
{
	ULONG Length;
	HANDLE RootDirectory;
	PUNICODE_STRING ObjectName;
	ULONG Attributes;
	PVOID SecurityDescriptor;
	PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES;
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;

typedef struct _IO_STATUS_BLOCK
{
	union
	{
#ifdef _WIN32
		NTSTATUS Status;
#else
		NTSTATUS status;
#endif
		PVOID Pointer;
	};
	ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;

typedef VOID (*PIO_APC_ROUTINE)(PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved);

#endif

#if !defined(_WIN32)

typedef struct _PEB PEB;
typedef struct _PEB* PPEB;

typedef struct _TEB TEB;
typedef struct _TEB* PTEB;

/**
 * Process Environment Block
 */

struct _THREAD_BLOCK_ID
{
	DWORD ThreadId;
	TEB* ThreadEnvironmentBlock;
};
typedef struct _THREAD_BLOCK_ID THREAD_BLOCK_ID;

struct _PEB
{
	DWORD ThreadCount;
	DWORD ThreadArraySize;
	THREAD_BLOCK_ID* Threads;
};

/*
 * Thread Environment Block
 */

struct _TEB
{
	PEB* ProcessEnvironmentBlock;

	DWORD LastErrorValue;
	PVOID TlsSlots[64];
};

#define GENERIC_READ				0x80000000
#define GENERIC_WRITE				0x40000000
#define GENERIC_EXECUTE				0x20000000
#define GENERIC_ALL				0x10000000

#define DELETE					0x00010000
#define READ_CONTROL				0x00020000
#define WRITE_DAC				0x00040000
#define WRITE_OWNER				0x00080000
#define SYNCHRONIZE				0x00100000
#define STANDARD_RIGHTS_REQUIRED		0x000F0000
#define STANDARD_RIGHTS_READ			0x00020000
#define STANDARD_RIGHTS_WRITE			0x00020000
#define STANDARD_RIGHTS_EXECUTE			0x00020000
#define STANDARD_RIGHTS_ALL			0x001F0000
#define SPECIFIC_RIGHTS_ALL			0x0000FFFF
#define ACCESS_SYSTEM_SECURITY			0x01000000
#define MAXIMUM_ALLOWED				0x02000000

#define FILE_READ_DATA				0x0001
#define FILE_LIST_DIRECTORY			0x0001
#define FILE_WRITE_DATA				0x0002
#define FILE_ADD_FILE				0x0002
#define FILE_APPEND_DATA			0x0004
#define FILE_ADD_SUBDIRECTORY			0x0004
#define FILE_CREATE_PIPE_INSTANCE		0x0004
#define FILE_READ_EA				0x0008
#define FILE_WRITE_EA				0x0010
#define FILE_EXECUTE				0x0020
#define FILE_TRAVERSE				0x0020
#define FILE_DELETE_CHILD			0x0040
#define FILE_READ_ATTRIBUTES			0x0080
#define FILE_WRITE_ATTRIBUTES			0x0100

#define FILE_ALL_ACCESS		(STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
#define FILE_GENERIC_READ	(STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE)
#define FILE_GENERIC_WRITE	(STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE)
#define FILE_GENERIC_EXECUTE	(STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE)

#define FILE_SHARE_READ				0x00000001
#define FILE_SHARE_WRITE			0x00000002
#define FILE_SHARE_DELETE			0x00000004

typedef DWORD ACCESS_MASK;
typedef ACCESS_MASK* PACCESS_MASK;

#ifdef __cplusplus
extern "C" {
#endif

WINPR_API PTEB NtCurrentTeb(void);

#ifdef __cplusplus
}
#endif

#endif

#ifdef __cplusplus
extern "C" {
#endif

WINPR_API VOID _RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString);

WINPR_API VOID _RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString);

WINPR_API NTSTATUS _RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString,
		PCANSI_STRING SourceString, BOOLEAN AllocateDestinationString);

WINPR_API VOID _RtlFreeUnicodeString(PUNICODE_STRING UnicodeString);

WINPR_API ULONG _RtlNtStatusToDosError(NTSTATUS status);

WINPR_API VOID _InitializeObjectAttributes(POBJECT_ATTRIBUTES InitializedAttributes,
		PUNICODE_STRING ObjectName, ULONG Attributes, HANDLE RootDirectory,
		PSECURITY_DESCRIPTOR SecurityDescriptor);

WINPR_API NTSTATUS _NtCreateFile(PHANDLE FileHandle, ACCESS_MASK DesiredAccess,
		POBJECT_ATTRIBUTES ObjectAttributes, PIO_STATUS_BLOCK IoStatusBlock,
		PLARGE_INTEGER AllocationSize, ULONG FileAttributes, ULONG ShareAccess,
		ULONG CreateDisposition, ULONG CreateOptions, PVOID EaBuffer, ULONG EaLength);

WINPR_API NTSTATUS _NtOpenFile(PHANDLE FileHandle, ACCESS_MASK DesiredAccess,
		POBJECT_ATTRIBUTES ObjectAttributes, PIO_STATUS_BLOCK IoStatusBlock,
		ULONG ShareAccess, ULONG OpenOptions);

WINPR_API NTSTATUS _NtReadFile(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext,
		PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, PLARGE_INTEGER ByteOffset, PULONG Key);

WINPR_API NTSTATUS _NtWriteFile(HANDLE FileHandle, HANDLE Event, PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext,
		PIO_STATUS_BLOCK IoStatusBlock, PVOID Buffer, ULONG Length, PLARGE_INTEGER ByteOffset, PULONG Key);

WINPR_API NTSTATUS _NtDeviceIoControlFile(HANDLE FileHandle, HANDLE Event,
		PIO_APC_ROUTINE ApcRoutine, PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock,
		ULONG IoControlCode, PVOID InputBuffer, ULONG InputBufferLength,
		PVOID OutputBuffer, ULONG OutputBufferLength);

WINPR_API NTSTATUS _NtClose(HANDLE Handle);

WINPR_API NTSTATUS _NtWaitForSingleObject(HANDLE Handle, BOOLEAN Alertable, PLARGE_INTEGER Timeout);

#ifdef __cplusplus
}
#endif

#endif /* WINPR_NT_H */
