from ctypes import *

TRUE  = 1
FALSE = 0
NULL  = 0

#
# Definition for NetWkstaTransportDel and NetUseDel deletion force levels
#

USE_NOFORCE       = 0
USE_FORCE         = 1
USE_LOTS_OF_FORCE = 2


#
# Special Values and Constants
#

#
# One of these values indicates the parameter within an information
# structure that is invalid when ERROR_INVALID_PARAMETER is returned by
# NetUseAdd.
#

USE_LOCAL_PARMNUM      = 1
USE_REMOTE_PARMNUM     = 2
USE_PASSWORD_PARMNUM   = 3
USE_ASGTYPE_PARMNUM    = 4
USE_USERNAME_PARMNUM   = 5
USE_DOMAINNAME_PARMNUM = 6

#
# Values appearing in the ui1_status field of use_info_1 structure.
# Note that USE_SESSLOST and USE_DISCONN are synonyms.
#

USE_OK                = 0
USE_PAUSED            = 1
USE_SESSLOST          = 2
USE_DISCONN           = 2
USE_NETERR            = 3
USE_CONN              = 4
USE_RECONN            = 5


#
# Values of the ui1_asg_type field of use_info_1 structure
#


USE_DISKDEV           = 0
USE_SPOOLDEV          = 1
USE_CHARDEV           = 2
USE_IPC               = 3

#
# Flags defined in the use_info_3 structure
#

CREATE_NO_CONNECT = 0x01        # creation flags
CREATE_BYPASS_CSC = 0x02        # force connection to server, bypassing CSC
                                #  all ops on this connection go to the server,
                                #  never to the cache
USE_DEFAULT_CREDENTIALS = 0x04  # No explicit credentials passed to NetUseAdd


PW_CLIENTONLY = 0x000000001
LWA_COLORKEY  = 0x000000001
LWA_ALPHA     = 0x000000002
ULW_COLORKEY  = 0x000000001
ULW_ALPHA     = 0x000000002
ULW_OPAQUE    = 0x000000004

FLASHW_STOP      = 0
FLASHW_CAPTION   = 0x000000001
FLASHW_TRAY      = 0x000000002
FLASHW_ALL       = FLASHW_CAPTION or FLASHW_TRAY
FLASHW_TIMER     = 0x000000004
FLASHW_TIMERNOFG = 0x00000000C

# LogonFlags
LOGON_WITH_PROFILE         = 0x000000001
LOGON_NETCREDENTIALS_ONLY  = 0x000000002
LOGON_ZERO_PASSWORD_BUFFER = 0x080000000

INPUT_MOUSE    = 0
INPUT_KEYBOARD = 1
INPUT_HARDWARE = 2

DOF_EXECUTABLE = 0x000008001      # wFmt flags
DOF_DOCUMENT   = 0x000008002
DOF_DIRECTORY  = 0x000008003
DOF_MULTIPLE   = 0x000008004
DOF_PROGMAN    = 0x000000001
DOF_SHELLDATA  = 0x000000002

DO_DROPFILE    = 0x0454C4946
DO_PRINTFILE   = 0x0544E5250

ASFW_ANY = 0x0FFFFFFFF # BITS???(-1)

LSFW_LOCK   = 1
LSFW_UNLOCK = 2

# Private Window Messages Start Here:
WM_USER = 0x0400

CSIDL_DESKTOP                 = 0x00000  # <desktop>
CSIDL_INTERNET                = 0x00001  # Internet Explorer (icon on desktop)
CSIDL_PROGRAMS                = 0x00002  # Start Menu\Programs
CSIDL_CONTROLS                = 0x00003  # My Computer\Control Panel
CSIDL_PRINTERS                = 0x00004  # My Computer\Printers
CSIDL_PERSONAL                = 0x00005  # My Documents
CSIDL_FAVORITES               = 0x00006  # <user name>\Favorites
CSIDL_STARTUP                 = 0x00007  # Start Menu\Programs\Startup
CSIDL_RECENT                  = 0x00008  # <user name>\Recent
CSIDL_SENDTO                  = 0x00009  # <user name>\SendTo
CSIDL_BITBUCKET               = 0x0000a  # <desktop>\Recycle Bin
CSIDL_STARTMENU               = 0x0000b  # <user name>\Start Menu
CSIDL_MYDOCUMENTS             = 0x0000c  # logical "My Documents" desktop icon
CSIDL_MYMUSIC                 = 0x0000d  # "My Music" folder
CSIDL_MYVIDEO                 = 0x0000e  # "My Videos" folder
CSIDL_DESKTOPDIRECTORY        = 0x00010  # <user name>\Desktop
CSIDL_DRIVES                  = 0x00011  # My Computer
CSIDL_NETWORK                 = 0x00012  # Network Neighborhood
CSIDL_NETHOOD                 = 0x00013  # <user name>\nethood
CSIDL_FONTS                   = 0x00014  # windows\fonts
CSIDL_TEMPLATES               = 0x00015
CSIDL_COMMON_STARTMENU        = 0x00016  # All Users\Start Menu
CSIDL_COMMON_PROGRAMS         = 0x00017  # All Users\Programs
CSIDL_COMMON_STARTUP          = 0x00018  # All Users\Startup
CSIDL_COMMON_DESKTOPDIRECTORY = 0x00019  # All Users\Desktop
CSIDL_APPDATA                 = 0x0001a  # <user name>\Application Data
CSIDL_PRINTHOOD               = 0x0001b  # <user name>\PrintHood
CSIDL_LOCAL_APPDATA           = 0x0001c  # <user name>\Local Settings\Application Data (non roaming)
CSIDL_ALTSTARTUP              = 0x0001d  # non localized startup
CSIDL_COMMON_ALTSTARTUP       = 0x0001e  # non localized common startup
CSIDL_COMMON_FAVORITES        = 0x0001f
CSIDL_INTERNET_CACHE          = 0x00020
CSIDL_COOKIES                 = 0x00021
CSIDL_HISTORY                 = 0x00022
CSIDL_COMMON_APPDATA          = 0x00023  # All Users\Application Data
CSIDL_WINDOWS                 = 0x00024  # GetWindowsDirectory()
CSIDL_SYSTEM                  = 0x00025  # GetSystemDirectory()
CSIDL_PROGRAM_FILES           = 0x00026  # C:\Program Files
CSIDL_MYPICTURES              = 0x00027  # C:\Program Files\My Pictures
CSIDL_PROFILE                 = 0x00028  # USERPROFILE
CSIDL_SYSTEMX86               = 0x00029  # x86 system directory on RISC
CSIDL_PROGRAM_FILESX86        = 0x0002a  # x86 C:\Program Files on RISC
CSIDL_PROGRAM_FILES_COMMON    = 0x0002b  # C:\Program Files\Common
CSIDL_PROGRAM_FILES_COMMONX86 = 0x0002c  # x86 Program Files\Common on RISC
CSIDL_COMMON_TEMPLATES        = 0x0002d  # All Users\Templates
CSIDL_COMMON_DOCUMENTS        = 0x0002e  # All Users\Documents
CSIDL_COMMON_ADMINTOOLS       = 0x0002f  # All Users\Start Menu\Programs\Administrative Tools
CSIDL_ADMINTOOLS              = 0x00030  # <user name>\Start Menu\Programs\Administrative Tools
CSIDL_CONNECTIONS             = 0x00031  # Network and Dial-up Connections
CSIDL_COMMON_MUSIC            = 0x00035  # All Users\My Music
CSIDL_COMMON_PICTURES         = 0x00036  # All Users\My Pictures
CSIDL_COMMON_VIDEO            = 0x00037  # All Users\My Video
CSIDL_RESOURCES               = 0x00038  # Resource Direcotry


CSIDL_RESOURCES_LOCALIZED     = 0x00039  # Localized Resource Direcotry


CSIDL_COMMON_OEM_LINKS        = 0x0003a  # Links to All Users OEM specific apps
CSIDL_CDBURN_AREA             = 0x0003b  # USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
# unused                             = 0x0003c
CSIDL_COMPUTERSNEARME         = 0x0003d  # Computers Near Me (computered from Workgroup membership)

CSIDL_FLAG_CREATE             = 0x000008000  # combine with CSIDL_ value to force folder creation in SHGetFolderPath()
CSIDL_FLAG_DONT_VERIFY        = 0x000004000  # combine with CSIDL_ value to return an unverified folder path
CSIDL_FLAG_MASK               = 0x00000FF00  # mask for all possible flag values
CSIDL_FLAG_PFTI_TRACKTARGET   = CSIDL_FLAG_DONT_VERIFY


CSIDL_PERSONAL                = 0x00005  # My Documents


LF_FACESIZE     = 32

#
# maximum field lengths (arbitrary)
#

INTERNET_MAX_HOST_NAME_LENGTH   = 256
INTERNET_MAX_USER_NAME_LENGTH   = 128
INTERNET_MAX_PASSWORD_LENGTH    = 128
INTERNET_MAX_PORT_NUMBER_LENGTH = 5     # INTERNET_PORT is unsigned short
INTERNET_MAX_PORT_NUMBER_VALUE  = 65535 # maximum unsigned short value
INTERNET_MAX_PATH_LENGTH        = 2048
INTERNET_MAX_SCHEME_LENGTH      = 32    # longest protocol name length
INTERNET_MAX_URL_LENGTH         = (INTERNET_MAX_SCHEME_LENGTH + 3 + INTERNET_MAX_PATH_LENGTH)

# Constants from winnt.h ======================================================

ANYSIZE_ARRAY = 1

MAX_NATURAL_ALIGNMENT = 4   # SIZEOF(DWORD)

APPLICATION_ERROR_MASK       = 0x020000000
ERROR_SEVERITY_SUCCESS       = 0x000000000
ERROR_SEVERITY_INFORMATIONAL = 0x040000000
ERROR_SEVERITY_WARNING       = 0x080000000
ERROR_SEVERITY_ERROR         = 0x0C0000000

MINCHAR  = 0x080
MAXCHAR  = 0x07F
MINSHORT = 0x08000
MAXSHORT = 0x07FFF
MINLONG  = 0x080000000
MAXBYTE  = 0x0FF
MAXWORD  = 0x0FFFF
MAXDWORD = 0x0FFFFFFFF

#
#  Language IDs.
#
#  The following two combinations of primary language ID and
#  sublanguage ID have special semantics:
#
#    Primary Language ID   Sublanguage ID      Result
#    -------------------   ---------------     ------------------------
#    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
#    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language
#    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language
#    LANG_INVARIANT        SUBLANG_NEUTRAL     Invariant locale
#

#
#  Primary language IDs.
#

LANG_NEUTRAL                     = 0x000
LANG_INVARIANT                   = 0x07f

LANG_AFRIKAANS                   = 0x036
LANG_ALBANIAN                    = 0x01c
LANG_ARABIC                      = 0x001
LANG_ARMENIAN                    = 0x02b
LANG_ASSAMESE                    = 0x04d
LANG_AZERI                       = 0x02c
LANG_BASQUE                      = 0x02d
LANG_BELARUSIAN                  = 0x023
LANG_BENGALI                     = 0x045
LANG_BULGARIAN                   = 0x002
LANG_CATALAN                     = 0x003
LANG_CHINESE                     = 0x004
LANG_CROATIAN                    = 0x01a
LANG_CZECH                       = 0x005
LANG_DANISH                      = 0x006
LANG_DIVEHI                      = 0x065
LANG_DUTCH                       = 0x013
LANG_ENGLISH                     = 0x009
LANG_ESTONIAN                    = 0x025
LANG_FAEROESE                    = 0x038
LANG_FARSI                       = 0x029
LANG_FINNISH                     = 0x00b
LANG_FRENCH                      = 0x00c
LANG_GALICIAN                    = 0x056
LANG_GEORGIAN                    = 0x037
LANG_GERMAN                      = 0x007
LANG_GREEK                       = 0x008
LANG_GUJARATI                    = 0x047
LANG_HEBREW                      = 0x00d
LANG_HINDI                       = 0x039
LANG_HUNGARIAN                   = 0x00e
LANG_ICELANDIC                   = 0x00f
LANG_INDONESIAN                  = 0x021
LANG_ITALIAN                     = 0x010
LANG_JAPANESE                    = 0x011
LANG_KANNADA                     = 0x04b
LANG_KASHMIRI                    = 0x060
LANG_KAZAK                       = 0x03f
LANG_KONKANI                     = 0x057
LANG_KOREAN                      = 0x012
LANG_KYRGYZ                      = 0x040
LANG_LATVIAN                     = 0x026
LANG_LITHUANIAN                  = 0x027
LANG_MACEDONIAN                  = 0x02f   # the Former Yugoslav Republic of Macedonia
LANG_MALAY                       = 0x03e
LANG_MALAYALAM                   = 0x04c
LANG_MANIPURI                    = 0x058
LANG_MARATHI                     = 0x04e
LANG_MONGOLIAN                   = 0x050
LANG_NEPALI                      = 0x061
LANG_NORWEGIAN                   = 0x014
LANG_ORIYA                       = 0x048
LANG_POLISH                      = 0x015
LANG_PORTUGUESE                  = 0x016
LANG_PUNJABI                     = 0x046
LANG_ROMANIAN                    = 0x018
LANG_RUSSIAN                     = 0x019
LANG_SANSKRIT                    = 0x04f
LANG_SERBIAN                     = 0x01a
LANG_SINDHI                      = 0x059
LANG_SLOVAK                      = 0x01b
LANG_SLOVENIAN                   = 0x024
LANG_SPANISH                     = 0x00a
LANG_SWAHILI                     = 0x041
LANG_SWEDISH                     = 0x01d
LANG_SYRIAC                      = 0x05a
LANG_TAMIL                       = 0x049
LANG_TATAR                       = 0x044
LANG_TELUGU                      = 0x04a
LANG_THAI                        = 0x01e
LANG_TURKISH                     = 0x01f
LANG_UKRAINIAN                   = 0x022
LANG_URDU                        = 0x020
LANG_UZBEK                       = 0x043
LANG_VIETNAMESE                  = 0x02a

#
#  Sublanguage IDs.
#
#  The name immediately following SUBLANG_ dictates which primary
#  language ID that sublanguage ID can be combined with to form a
#  valid language ID.
#

SUBLANG_NEUTRAL                  = 0x000    # language neutral
SUBLANG_DEFAULT                  = 0x001    # user default
SUBLANG_SYS_DEFAULT              = 0x002    # system default

SUBLANG_ARABIC_SAUDI_ARABIA      = 0x001    # Arabic (Saudi Arabia)
SUBLANG_ARABIC_IRAQ              = 0x002    # Arabic (Iraq)
SUBLANG_ARABIC_EGYPT             = 0x003    # Arabic (Egypt)
SUBLANG_ARABIC_LIBYA             = 0x004    # Arabic (Libya)
SUBLANG_ARABIC_ALGERIA           = 0x005    # Arabic (Algeria)
SUBLANG_ARABIC_MOROCCO           = 0x006    # Arabic (Morocco)
SUBLANG_ARABIC_TUNISIA           = 0x007    # Arabic (Tunisia)
SUBLANG_ARABIC_OMAN              = 0x008    # Arabic (Oman)
SUBLANG_ARABIC_YEMEN             = 0x009    # Arabic (Yemen)
SUBLANG_ARABIC_SYRIA             = 0x00a    # Arabic (Syria)
SUBLANG_ARABIC_JORDAN            = 0x00b    # Arabic (Jordan)
SUBLANG_ARABIC_LEBANON           = 0x00c    # Arabic (Lebanon)
SUBLANG_ARABIC_KUWAIT            = 0x00d    # Arabic (Kuwait)
SUBLANG_ARABIC_UAE               = 0x00e    # Arabic (U.A.E)
SUBLANG_ARABIC_BAHRAIN           = 0x00f    # Arabic (Bahrain)
SUBLANG_ARABIC_QATAR             = 0x010    # Arabic (Qatar)
SUBLANG_AZERI_LATIN              = 0x001    # Azeri (Latin)
SUBLANG_AZERI_CYRILLIC           = 0x002    # Azeri (Cyrillic)
SUBLANG_CHINESE_TRADITIONAL      = 0x001    # Chinese (Taiwan)
SUBLANG_CHINESE_SIMPLIFIED       = 0x002    # Chinese (PR China)
SUBLANG_CHINESE_HONGKONG         = 0x003    # Chinese (Hong Kong S.A.R., P.R.C.)
SUBLANG_CHINESE_SINGAPORE        = 0x004    # Chinese (Singapore)
SUBLANG_CHINESE_MACAU            = 0x005    # Chinese (Macau S.A.R.)
SUBLANG_DUTCH                    = 0x001    # Dutch
SUBLANG_DUTCH_BELGIAN            = 0x002    # Dutch (Belgian)
SUBLANG_ENGLISH_US               = 0x001    # English (USA)
SUBLANG_ENGLISH_UK               = 0x002    # English (UK)
SUBLANG_ENGLISH_AUS              = 0x003    # English (Australian)
SUBLANG_ENGLISH_CAN              = 0x004    # English (Canadian)
SUBLANG_ENGLISH_NZ               = 0x005    # English (New Zealand)
SUBLANG_ENGLISH_EIRE             = 0x006    # English (Irish)
SUBLANG_ENGLISH_SOUTH_AFRICA     = 0x007    # English (South Africa)
SUBLANG_ENGLISH_JAMAICA          = 0x008    # English (Jamaica)
SUBLANG_ENGLISH_CARIBBEAN        = 0x009    # English (Caribbean)
SUBLANG_ENGLISH_BELIZE           = 0x00a    # English (Belize)
SUBLANG_ENGLISH_TRINIDAD         = 0x00b    # English (Trinidad)
SUBLANG_ENGLISH_ZIMBABWE         = 0x00c    # English (Zimbabwe)
SUBLANG_ENGLISH_PHILIPPINES      = 0x00d    # English (Philippines)
SUBLANG_FRENCH                   = 0x001    # French
SUBLANG_FRENCH_BELGIAN           = 0x002    # French (Belgian)
SUBLANG_FRENCH_CANADIAN          = 0x003    # French (Canadian)
SUBLANG_FRENCH_SWISS             = 0x004    # French (Swiss)
SUBLANG_FRENCH_LUXEMBOURG        = 0x005    # French (Luxembourg)
SUBLANG_FRENCH_MONACO            = 0x006    # French (Monaco)
SUBLANG_GERMAN                   = 0x001    # German
SUBLANG_GERMAN_SWISS             = 0x002    # German (Swiss)
SUBLANG_GERMAN_AUSTRIAN          = 0x003    # German (Austrian)
SUBLANG_GERMAN_LUXEMBOURG        = 0x004    # German (Luxembourg)
SUBLANG_GERMAN_LIECHTENSTEIN     = 0x005    # German (Liechtenstein)
SUBLANG_ITALIAN                  = 0x001    # Italian
SUBLANG_ITALIAN_SWISS            = 0x002    # Italian (Swiss)
SUBLANG_KASHMIRI_SASIA           = 0x002    # Kashmiri (South Asia)
SUBLANG_KASHMIRI_INDIA           = 0x002    # For app compatibility only
SUBLANG_KOREAN                   = 0x001    # Korean (Extended Wansung)
SUBLANG_LITHUANIAN               = 0x001    # Lithuanian
SUBLANG_MALAY_MALAYSIA           = 0x001    # Malay (Malaysia)
SUBLANG_MALAY_BRUNEI_DARUSSALAM  = 0x002    # Malay (Brunei Darussalam)
SUBLANG_NEPALI_INDIA             = 0x002    # Nepali (India)
SUBLANG_NORWEGIAN_BOKMAL         = 0x001    # Norwegian (Bokmal)
SUBLANG_NORWEGIAN_NYNORSK        = 0x002    # Norwegian (Nynorsk)
SUBLANG_PORTUGUESE               = 0x002    # Portuguese
SUBLANG_PORTUGUESE_BRAZILIAN     = 0x001    # Portuguese (Brazilian)
SUBLANG_SERBIAN_LATIN            = 0x002    # Serbian (Latin)
SUBLANG_SERBIAN_CYRILLIC         = 0x003    # Serbian (Cyrillic)
SUBLANG_SPANISH                  = 0x001    # Spanish (Castilian)
SUBLANG_SPANISH_MEXICAN          = 0x002    # Spanish (Mexican)
SUBLANG_SPANISH_MODERN           = 0x003    # Spanish (Spain)
SUBLANG_SPANISH_GUATEMALA        = 0x004    # Spanish (Guatemala)
SUBLANG_SPANISH_COSTA_RICA       = 0x005    # Spanish (Costa Rica)
SUBLANG_SPANISH_PANAMA           = 0x006    # Spanish (Panama)
SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x007  # Spanish (Dominican Republic)
SUBLANG_SPANISH_VENEZUELA        = 0x008    # Spanish (Venezuela)
SUBLANG_SPANISH_COLOMBIA         = 0x009    # Spanish (Colombia)
SUBLANG_SPANISH_PERU             = 0x00a    # Spanish (Peru)
SUBLANG_SPANISH_ARGENTINA        = 0x00b    # Spanish (Argentina)
SUBLANG_SPANISH_ECUADOR          = 0x00c    # Spanish (Ecuador)
SUBLANG_SPANISH_CHILE            = 0x00d    # Spanish (Chile)
SUBLANG_SPANISH_URUGUAY          = 0x00e    # Spanish (Uruguay)
SUBLANG_SPANISH_PARAGUAY         = 0x00f    # Spanish (Paraguay)
SUBLANG_SPANISH_BOLIVIA          = 0x010    # Spanish (Bolivia)
SUBLANG_SPANISH_EL_SALVADOR      = 0x011    # Spanish (El Salvador)
SUBLANG_SPANISH_HONDURAS         = 0x012    # Spanish (Honduras)
SUBLANG_SPANISH_NICARAGUA        = 0x013    # Spanish (Nicaragua)
SUBLANG_SPANISH_PUERTO_RICO      = 0x014    # Spanish (Puerto Rico)
SUBLANG_SWEDISH                  = 0x001    # Swedish
SUBLANG_SWEDISH_FINLAND          = 0x002    # Swedish (Finland)
SUBLANG_URDU_PAKISTAN            = 0x001    # Urdu (Pakistan)
SUBLANG_URDU_INDIA               = 0x002    # Urdu (India)
SUBLANG_UZBEK_LATIN              = 0x001    # Uzbek (Latin)
SUBLANG_UZBEK_CYRILLIC           = 0x002    # Uzbek (Cyrillic)

#
#  Sorting IDs.
#

SORT_DEFAULT                     = 0x00     # sorting default

SORT_JAPANESE_XJIS               = 0x00     # Japanese XJIS order
SORT_JAPANESE_UNICODE            = 0x01     # Japanese Unicode order

SORT_CHINESE_BIG5                = 0x00     # Chinese BIG5 order
SORT_CHINESE_PRCP                = 0x00     # PRC Chinese Phonetic order
SORT_CHINESE_UNICODE             = 0x01     # Chinese Unicode order
SORT_CHINESE_PRC                 = 0x02     # PRC Chinese Stroke Count order
SORT_CHINESE_BOPOMOFO            = 0x03     # Traditional Chinese Bopomofo order

SORT_KOREAN_KSC                  = 0x00     # Korean KSC order
SORT_KOREAN_UNICODE              = 0x01     # Korean Unicode order

SORT_GERMAN_PHONE_BOOK           = 0x01     # German Phone Book order

SORT_HUNGARIAN_DEFAULT           = 0x00     # Hungarian Default order
SORT_HUNGARIAN_TECHNICAL         = 0x01     # Hungarian Technical order

SORT_GEORGIAN_TRADITIONAL        = 0x00     # Georgian Traditional order
SORT_GEORGIAN_MODERN             = 0x01     # Georgian Modern order


STATUS_WAIT_0                   = 0x000000000
STATUS_ABANDONED_WAIT_0         = 0x000000080
STATUS_USER_APC                 = 0x0000000C0
STATUS_TIMEOUT                  = 0x000000102
STATUS_PENDING                  = 0x000000103
STILL_ACTIVE                    = STATUS_PENDING
STATUS_DATATYPE_MISALIGNMENT    = 0x080000002
STATUS_BREAKPOINT               = 0x080000003
STATUS_SINGLE_STEP              = 0x080000004
STATUS_ACCESS_VIOLATION         = 0x0C0000005
STATUS_IN_PAGE_ERROR            = 0x0C0000006
STATUS_INVALID_HANDLE           = 0x0C0000008
STATUS_NO_MEMORY                = 0x0C0000017
STATUS_ILLEGAL_INSTRUCTION      = 0x0C000001D
STATUS_NONCONTINUABLE_EXCEPTION = 0x0C0000025
STATUS_INVALID_DISPOSITION      = 0x0C0000026
STATUS_ARRAY_BOUNDS_EXCEEDED    = 0x0C000008C
STATUS_FLOAT_DENORMAL_OPERAND   = 0x0C000008D
STATUS_FLOAT_DIVIDE_BY_ZERO     = 0x0C000008E
STATUS_FLOAT_INEXACT_RESULT     = 0x0C000008F
STATUS_FLOAT_INVALID_OPERATION  = 0x0C0000090
STATUS_FLOAT_OVERFLOW           = 0x0C0000091
STATUS_FLOAT_STACK_CHECK        = 0x0C0000092
STATUS_FLOAT_UNDERFLOW          = 0x0C0000093
STATUS_INTEGER_DIVIDE_BY_ZERO   = 0x0C0000094
STATUS_INTEGER_OVERFLOW         = 0x0C0000095
STATUS_PRIVILEGED_INSTRUCTION   = 0x0C0000096
STATUS_STACK_OVERFLOW           = 0x0C00000FD
STATUS_CONTROL_C_EXIT           = 0x0C000013A
STATUS_FLOAT_MULTIPLE_FAULTS    = 0x0C00002B4
STATUS_FLOAT_MULTIPLE_TRAPS     = 0x0C00002B5
STATUS_ILLEGAL_VLM_REFERENCE    = 0x0C00002C0
STATUS_REG_NAT_CONSUMPTION      = 0x0C00002C9
STATUS_SXS_EARLY_DEACTIVATION   = 0x0C015000F
STATUS_SXS_INVALID_DEACTIVATION = 0x0C0150010


MAXIMUM_WAIT_OBJECTS = 64  # Maximum number of wait objects

MAXIMUM_SUSPEND_COUNT = MAXCHAR  # Maximum times thread can be suspended

#
# Define the size of the 80387 save area, which is in the context frame.
#
SIZE_OF_80387_REGISTERS = 80

#
# The following flags control the contents of the CONTEXT structure.
#

CONTEXT_i386            = 0x000010000    # this assumes that i386 and
CONTEXT_i486            = 0x000010000    # i486 have identical context records

CONTEXT_CONTROL         = CONTEXT_i386 or 0x000000001 # SS:SP, CS:IP, FLAGS, BP
CONTEXT_INTEGER         = CONTEXT_i386 or 0x000000002 # AX, BX, CX, DX, SI, DI
CONTEXT_SEGMENTS        = CONTEXT_i386 or 0x000000004 # DS, ES, FS, GS
CONTEXT_FLOATING_POINT  = CONTEXT_i386 or 0x000000008 # 387 state
CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 or 0x000000010 # DB 0-3,6,7

CONTEXT_FULL            = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS

MAXIMUM_SUPPORTED_EXTENSION = 512

EXCEPTION_NONCONTINUABLE     = 0x01  # Noncontinuable exception
EXCEPTION_MAXIMUM_PARAMETERS = 15   # maximum number of exception parameters

#
# The following are masks for the predefined standard access types
#

DELETE                   = 0x000010000
READ_CONTROL             = 0x000020000
WRITE_DAC                = 0x000040000
WRITE_OWNER              = 0x000080000
SYNCHRONIZE              = 0x000100000

STANDARD_RIGHTS_REQUIRED = 0x0000F0000

STANDARD_RIGHTS_READ     = READ_CONTROL
STANDARD_RIGHTS_WRITE    = READ_CONTROL
STANDARD_RIGHTS_EXECUTE  = READ_CONTROL

STANDARD_RIGHTS_ALL      = 0x0001F0000

SPECIFIC_RIGHTS_ALL      = 0x00000FFFF

#
# AccessSystemAcl access type
#

ACCESS_SYSTEM_SECURITY = 0x001000000

#
# MaximumAllowed access type
#

MAXIMUM_ALLOWED        = 0x002000000

#
# These are the generic rights.
#

GENERIC_READ           = 0x080000000
GENERIC_WRITE          = 0x040000000
GENERIC_EXECUTE        = 0x020000000
GENERIC_ALL            = 0x010000000

SID_REVISION                    = 1     # Current revision level
SID_MAX_SUB_AUTHORITIES         = 15
SID_RECOMMENDED_SUB_AUTHORITIES = 1     # Will change to around 6 in a future release.

# In the SDK, these are from the enumerated type SID_NAME_USE
#
SidTypeUser           = 1
SidTypeGroup          = 2
SidTypeDomain         = 3
SidTypeAlias          = 4
SidTypeWellKnownGroup = 5
SidTypeDeletedaccount = 6
SidTypeInvalid        = 7
SidTypeUnknown        = 8
SidTypeComputer       = 9

SECURITY_NULL_RID     = 0x000000000
SECURITY_WORLD_RID    = 0x000000000
SECURITY_LOCAL_RID    = 0x000000000

SECURITY_CREATOR_OWNER_RID = 0x000000000
SECURITY_CREATOR_GROUP_RID = 0x000000001

SECURITY_CREATOR_OWNER_SERVER_RID = 0x000000000
SECURITY_CREATOR_GROUP_SERVER_RID = 0x000000001

SECURITY_DIALUP_RID             = 0x000000001
SECURITY_NETWORK_RID            = 0x000000002
SECURITY_BATCH_RID              = 0x000000003
SECURITY_INTERACTIVE_RID        = 0x000000004
SECURITY_SERVICE_RID            = 0x000000006
SECURITY_ANONYMOUS_LOGON_RID    = 0x000000007
SECURITY_PROXY_RID              = 0x000000008
SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x000000009
SECURITY_SERVER_LOGON_RID       = SECURITY_ENTERPRISE_CONTROLLERS_RID
SECURITY_PRINCIPAL_SELF_RID     = 0x00000000A
SECURITY_AUTHENTICATED_USER_RID = 0x00000000B
SECURITY_RESTRICTED_CODE_RID    = 0x00000000C

SECURITY_LOGON_IDS_RID       = 0x000000005
SECURITY_LOGON_IDS_RID_COUNT = 3

SECURITY_LOCAL_SYSTEM_RID    = 0x000000012

SECURITY_NT_NON_UNIQUE       = 0x000000015

SECURITY_BUILTIN_DOMAIN_RID  = 0x000000020

# Well-known users ...

DOMAIN_USER_RID_ADMIN        = 0x0000001F4
DOMAIN_USER_RID_GUEST        = 0x0000001F5
DOMAIN_USER_RID_KRBTGT       = 0x0000001F6

# Well-known groups ...

DOMAIN_GROUP_RID_ADMINS        = 0x000000200
DOMAIN_GROUP_RID_USERS         = 0x000000201
DOMAIN_GROUP_RID_GUESTS        = 0x000000202
DOMAIN_GROUP_RID_COMPUTERS     = 0x000000202
DOMAIN_GROUP_RID_CONTROLLERS   = 0x000000202
DOMAIN_GROUP_RID_CERT_ADMINS   = 0x000000202
DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x000000202

# Well-known aliases ...

DOMAIN_ALIAS_RID_ADMINS      = 0x000000220
DOMAIN_ALIAS_RID_USERS       = 0x000000221
DOMAIN_ALIAS_RID_GUESTS      = 0x000000222
DOMAIN_ALIAS_RID_POWER_USERS = 0x000000223

DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x000000224
DOMAIN_ALIAS_RID_SYSTEM_OPS  = 0x000000225
DOMAIN_ALIAS_RID_PRINT_OPS   = 0x000000226
DOMAIN_ALIAS_RID_BACKUP_OPS  = 0x000000227

DOMAIN_ALIAS_RID_REPLICATOR  = 0x000000228

# Group attributes

SE_GROUP_MANDATORY          = 0x000000001
SE_GROUP_ENABLED_BY_DEFAULT = 0x000000002
SE_GROUP_ENABLED            = 0x000000004
SE_GROUP_OWNER              = 0x000000008
SE_GROUP_USE_FOR_DENY_ONLY  = 0x000000010
SE_GROUP_LOGON_ID           = 0x0C0000000
SE_GROUP_RESOURCE           = 0x020000000

# User attributes

# (None yet defined.)

# This is the *current* ACL revision

ACL_REVISION     = 2
ACL_REVISION_DS  = 4

# This is the history of ACL revisions.  Add a new one whenever
# ACL_REVISION is updated

ACL_REVISION1    = 1
ACL_REVISION2    = 2
MIN_ACL_REVISION = ACL_REVISION2
ACL_REVISION3    = 3
ACL_REVISION4    = 4
MAX_ACL_REVISION = ACL_REVISION4

# The following are the predefined ace types that go into the AceType
# field of an Ace header.

ACCESS_MIN_MS_ACE_TYPE           = 0x00
ACCESS_ALLOWED_ACE_TYPE          = 0x00
ACCESS_DENIED_ACE_TYPE           = 0x01
SYSTEM_AUDIT_ACE_TYPE            = 0x02
SYSTEM_ALARM_ACE_TYPE            = 0x03
ACCESS_MAX_MS_V2_ACE_TYPE        = 0x03

ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 0x04
ACCESS_MAX_MS_V3_ACE_TYPE        = 0x04

ACCESS_MIN_MS_OBJECT_ACE_TYPE    = 0x05
ACCESS_ALLOWED_OBJECT_ACE_TYPE   = 0x05
ACCESS_DENIED_OBJECT_ACE_TYPE    = 0x06
SYSTEM_AUDIT_OBJECT_ACE_TYPE     = 0x07
SYSTEM_ALARM_OBJECT_ACE_TYPE     = 0x08
ACCESS_MAX_MS_OBJECT_ACE_TYPE    = 0x08

ACCESS_MAX_MS_V4_ACE_TYPE        = 0x08
ACCESS_MAX_MS_ACE_TYPE           = 0x08

#
# The following are the inherit flags that go into the AceFlags field
# of an Ace header.
#

OBJECT_INHERIT_ACE       = 0x01
CONTAINER_INHERIT_ACE    = 0x02
NO_PROPAGATE_INHERIT_ACE = 0x04
INHERIT_ONLY_ACE         = 0x08
INHERITED_ACE            = 0x010
VALID_INHERIT_FLAGS      = 0x01F

# The following are the currently defined ACE flags that go into the
# AceFlags field of an ACE header.  Each ACE type has its own set of
# AceFlags.
#
# SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
# types to indicate that a message is generated for successful accesses.
#
# FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
# to indicate that a message is generated for failed accesses.
#

#
# SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
#
# These control the signaling of audit and alarms for success or failure.
#

SUCCESSFUL_ACCESS_ACE_FLAG = 0x040
FAILED_ACCESS_ACE_FLAG     = 0x080

#
# Currently define Flags for "OBJECT" ACE types.
#

ACE_OBJECT_TYPE_PRESENT           = 0x01
ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x02

AclRevisionInformation = 1
AclSizeInformation     = 2

#
# Current security descriptor revision value
#

SECURITY_DESCRIPTOR_REVISION   = 1
SECURITY_DESCRIPTOR_REVISION1  = 1

SECURITY_DESCRIPTOR_MIN_LENGTH = 20  # SIZEOF(SECURITY_DESCRIPTOR)

SE_OWNER_DEFAULTED       = 0x000000001
SE_GROUP_DEFAULTED       = 0x000000002
SE_DACL_PRESENT          = 0x000000004
SE_DACL_DEFAULTED        = 0x000000008
SE_SACL_PRESENT          = 0x000000010
SE_SACL_DEFAULTED        = 0x000000020
SE_DACL_AUTO_INHERIT_REQ = 0x000000100
SE_SACL_AUTO_INHERIT_REQ = 0x000000200
SE_DACL_AUTO_INHERITED   = 0x000000400
SE_SACL_AUTO_INHERITED   = 0x000000800
SE_DACL_PROTECTED        = 0x000001000
SE_SACL_PROTECTED        = 0x000002000
SE_SELF_RELATIVE         = 0x000008000

#
# DS values for Level
#

ACCESS_OBJECT_GUID       = 0
ACCESS_PROPERTY_SET_GUID = 1
ACCESS_PROPERTY_GUID     = 2
ACCESS_MAX_LEVEL         = 4

#
# Parameters to NtAccessCheckByTypeAndAuditAlarm
#
AuditEventObjectAccess           = 0
AuditEventDirectoryServiceAccess = 1


AUDIT_ALLOW_NO_PRIVILEGE = 0x01

#
# DS values for Source and ObjectTypeName
#

ACCESS_DS_SOURCE           = "DS"
ACCESS_DS_OBJECT_TYPE_NAME = "Directory Service Object"

#
# Privilege attributes
#

SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x000000001
SE_PRIVILEGE_ENABLED            = 0x000000002
SE_PRIVILEGE_USED_FOR_ACCESS    = 0x080000000

#
# Privilege Set Control flags
#

PRIVILEGE_SET_ALL_NECESSARY = 1

#
# NT Defined Privileges
#

SE_CREATE_TOKEN_NAME       = "SeCreateTokenPrivilege"
SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
SE_LOCK_MEMORY_NAME        = "SeLockMemoryPrivilege"
SE_INCREASE_QUOTA_NAME     = "SeIncreaseQuotaPrivilege"
SE_UNSOLICITED_INPUT_NAME  = "SeUnsolicitedInputPrivilege"
SE_MACHINE_ACCOUNT_NAME    = "SeMachineAccountPrivilege"
SE_TCB_NAME                = "SeTcbPrivilege"
SE_SECURITY_NAME           = "SeSecurityPrivilege"
SE_TAKE_OWNERSHIP_NAME     = "SeTakeOwnershipPrivilege"
SE_LOAD_DRIVER_NAME        = "SeLoadDriverPrivilege"
SE_SYSTEM_PROFILE_NAME     = "SeSystemProfilePrivilege"
SE_SYSTEMTIME_NAME         = "SeSystemtimePrivilege"
SE_PROF_SINGLE_PROCESS_NAME= "SeProfileSingleProcessPrivilege"
SE_INC_BASE_PRIORITY_NAME  = "SeIncreaseBasePriorityPrivilege"
SE_CREATE_PAGEFILE_NAME    = "SeCreatePagefilePrivilege"
SE_CREATE_PERMANENT_NAME   = "SeCreatePermanentPrivilege"
SE_BACKUP_NAME             = "SeBackupPrivilege"
SE_RESTORE_NAME            = "SeRestorePrivilege"
SE_SHUTDOWN_NAME           = "SeShutdownPrivilege"
SE_DEBUG_NAME              = "SeDebugPrivilege"
SE_AUDIT_NAME              = "SeAuditPrivilege"
SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
SE_CHANGE_NOTIFY_NAME      = "SeChangeNotifyPrivilege"
SE_REMOTE_SHUTDOWN_NAME    = "SeRemoteShutdownPrivilege"

# Security Quality Of Service

# Impersonation Level
#
# Impersonation level is represented by a pair of bits in Windows.
# If a new impersonation level is added or lowest value is changed from
# 0 to something else, fix the Windows CreateFile call.
#
# These constants derive from the SECURITY_IMPERSONATION_LEVEL enumerated type
#
SecurityAnonymous      = 0
SecurityIdentification = 1
SecurityImpersonation  = 2
SecurityDelegation     = 3

SECURITY_MAX_IMPERSONATION_LEVEL = SecurityDelegation
DEFAULT_IMPERSONATION_LEVEL      = SecurityImpersonation

# Token Object Definitions

# Token Specific Access Rights.

TOKEN_ASSIGN_PRIMARY    = 0x00001
TOKEN_DUPLICATE         = 0x00002
TOKEN_IMPERSONATE       = 0x00004
TOKEN_QUERY             = 0x00008
TOKEN_QUERY_SOURCE      = 0x00010
TOKEN_ADJUST_PRIVILEGES = 0x00020
TOKEN_ADJUST_GROUPS     = 0x00040
TOKEN_ADJUST_DEFAULT    = 0x00080
TOKEN_ADJUST_SESSIONID  = 0x00100

TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or TOKEN_ASSIGN_PRIMARY or TOKEN_DUPLICATE or TOKEN_IMPERSONATE or TOKEN_QUERY or TOKEN_QUERY_SOURCE or TOKEN_ADJUST_PRIVILEGES or TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_SESSIONID or TOKEN_ADJUST_DEFAULT

TOKEN_READ       = STANDARD_RIGHTS_READ or TOKEN_QUERY

TOKEN_WRITE      = STANDARD_RIGHTS_WRITE or TOKEN_ADJUST_PRIVILEGES or TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_DEFAULT

TOKEN_EXECUTE    = STANDARD_RIGHTS_EXECUTE

# Token Types / enumerated type TOKEN_TYPE

TokenPrimary       = 1
TokenImpersonation = 2

# Token Information Classes. / enumerated type TOKEN_INFORMATION_CLASS

TokenUser               = 1
TokenGroups             = 2
TokenPrivileges         = 3
TokenOwner              = 4
TokenPrimaryGroup       = 5
TokenDefaultDacl        = 6
TokenSource             = 7
TokenType               = 8
TokenImpersonationLevel = 9
TokenStatistics         = 10
TokenRestrictedSids     = 11
TokenSessionId          = 12

TOKEN_SOURCE_LENGTH = 8

# Security Tracking Mode

SECURITY_DYNAMIC_TRACKING = 1
SECURITY_STATIC_TRACKING  = 0

DISABLE_MAX_PRIVILEGE = 0x01

OWNER_SECURITY_INFORMATION = 0x000000001
GROUP_SECURITY_INFORMATION = 0x000000002
DACL_SECURITY_INFORMATION  = 0x000000004
SACL_SECURITY_INFORMATION  = 0x000000008

PROTECTED_DACL_SECURITY_INFORMATION   = 0x080000000
PROTECTED_SACL_SECURITY_INFORMATION   = 0x040000000
UNPROTECTED_DACL_SECURITY_INFORMATION = 0x020000000
UNPROTECTED_SACL_SECURITY_INFORMATION = 0x010000000

PROCESS_TERMINATE         = 0x00001
PROCESS_CREATE_THREAD     = 0x00002
PROCESS_SET_SESSIONID     = 0x00004
PROCESS_VM_OPERATION      = 0x00008
PROCESS_VM_READ           = 0x00010
PROCESS_VM_WRITE          = 0x00020
PROCESS_DUP_HANDLE        = 0x00040
PROCESS_CREATE_PROCESS    = 0x00080
PROCESS_SET_QUOTA         = 0x00100
PROCESS_SET_INFORMATION   = 0x00200
PROCESS_QUERY_INFORMATION = 0x00400
PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x00FFF

MAXIMUM_PROCESSORS = 32

THREAD_TERMINATE            = 0x00001
THREAD_SUSPEND_RESUME       = 0x00002
THREAD_GET_CONTEXT          = 0x00008
THREAD_SET_CONTEXT          = 0x00010
THREAD_SET_INFORMATION      = 0x00020
THREAD_QUERY_INFORMATION    = 0x00040
THREAD_SET_THREAD_TOKEN     = 0x00080
THREAD_IMPERSONATE          = 0x00100
THREAD_DIRECT_IMPERSONATION = 0x00200

THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x003FF

JOB_OBJECT_ASSIGN_PROCESS           = 0x00001
JOB_OBJECT_SET_ATTRIBUTES           = 0x00002
JOB_OBJECT_QUERY                    = 0x00004
JOB_OBJECT_TERMINATE                = 0x00008
JOB_OBJECT_SET_SECURITY_ATTRIBUTES  = 0x00010
JOB_OBJECT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x01F
TLS_MINIMUM_AVAILABLE = 64

#
# Completion Port Messages for job objects
#
# These values are returned via the lpNumberOfBytesTransferred parameter
#

JOB_OBJECT_MSG_END_OF_JOB_TIME       = 1
JOB_OBJECT_MSG_END_OF_PROCESS_TIME   = 2
JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT  = 3
JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO   = 4
JOB_OBJECT_MSG_NEW_PROCESS           = 6
JOB_OBJECT_MSG_EXIT_PROCESS          = 7
JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8
JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT  = 9
JOB_OBJECT_MSG_JOB_MEMORY_LIMIT      = 10

#
# Basic Limits
#
JOB_OBJECT_LIMIT_WORKINGSET        = 0x000000001
JOB_OBJECT_LIMIT_PROCESS_TIME      = 0x000000002
JOB_OBJECT_LIMIT_JOB_TIME          = 0x000000004
JOB_OBJECT_LIMIT_ACTIVE_PROCESS    = 0x000000008
JOB_OBJECT_LIMIT_AFFINITY          = 0x000000010
JOB_OBJECT_LIMIT_PRIORITY_CLASS    = 0x000000020
JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x000000040
JOB_OBJECT_LIMIT_SCHEDULING_CLASS  = 0x000000080

#
# Extended Limits
#
JOB_OBJECT_LIMIT_PROCESS_MEMORY             = 0x000000100
JOB_OBJECT_LIMIT_JOB_MEMORY                 = 0x000000200
JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x000000400
JOB_OBJECT_LIMIT_BREAKAWAY_OK               = 0x000000800
JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK        = 0x000001000

JOB_OBJECT_LIMIT_RESERVED1                  = 0x000002000
JOB_OBJECT_LIMIT_RESERVED2                  = 0x000004000
JOB_OBJECT_LIMIT_RESERVED3                  = 0x000008000
JOB_OBJECT_LIMIT_RESERVED4                  = 0x000010000
JOB_OBJECT_LIMIT_RESERVED5                  = 0x000020000
JOB_OBJECT_LIMIT_RESERVED6                  = 0x000040000

JOB_OBJECT_LIMIT_VALID_FLAGS          = 0x00007ffff

JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS    = 0x0000000ff
JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS = 0x000001fff
JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS = 0x00007ffff

#
# UI restrictions for jobs
#

JOB_OBJECT_UILIMIT_NONE             = 0x000000000

JOB_OBJECT_UILIMIT_HANDLES          = 0x000000001
JOB_OBJECT_UILIMIT_READCLIPBOARD    = 0x000000002
JOB_OBJECT_UILIMIT_WRITECLIPBOARD   = 0x000000004
JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x000000008
JOB_OBJECT_UILIMIT_DISPLAYSETTINGS  = 0x000000010
JOB_OBJECT_UILIMIT_GLOBALATOMS      = 0x000000020
JOB_OBJECT_UILIMIT_DESKTOP          = 0x000000040
JOB_OBJECT_UILIMIT_EXITWINDOWS      = 0x000000080

JOB_OBJECT_UILIMIT_ALL              = 0x0000000FF

JOB_OBJECT_UI_VALID_FLAGS           = 0x0000000FF

JOB_OBJECT_SECURITY_NO_ADMIN         = 0x000000001
JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x000000002
JOB_OBJECT_SECURITY_ONLY_TOKEN       = 0x000000004
JOB_OBJECT_SECURITY_FILTER_TOKENS    = 0x000000008

JOB_OBJECT_SECURITY_VALID_FLAGS      = 0x00000000f

# enumerated type JOBOBJECTINFOCLASS
JobObjectBasicAccountingInformation         = 1
JobObjectBasicLimitInformation              = 2
JobObjectBasicProcessIdList                 = 3
JobObjectBasicUIRestrictions                = 4
JobObjectSecurityLimitInformation           = 5
JobObjectEndOfJobTimeInformation            = 6
JobObjectAssociateCompletionPortInformation = 7
JobObjectBasicAndIoAccountingInformation    = 8
JobObjectExtendedLimitInformation           = 9
MaxJobObjectInfoClass                       = 10

EVENT_MODIFY_STATE      = 0x00002
EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x03
MUTANT_QUERY_STATE      = 0x00001
MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE
MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or MUTANT_QUERY_STATE
MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS
SEMAPHORE_MODIFY_STATE      = 0x00002
SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x03
#
# Timer Specific Access Rights.
#

TIMER_QUERY_STATE       = 0x00001
TIMER_MODIFY_STATE      = 0x00002

TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or TIMER_QUERY_STATE or TIMER_MODIFY_STATE

PROCESSOR_INTEL_386     = 386
PROCESSOR_INTEL_486     = 486
PROCESSOR_INTEL_PENTIUM = 586
PROCESSOR_INTEL_IA64    = 2200
PROCESSOR_MIPS_R4000    = 4000    # incl R4101  R3910 for Windows CE
PROCESSOR_ALPHA_21064   = 21064
PROCESSOR_PPC_601       = 601
PROCESSOR_PPC_603       = 603
PROCESSOR_PPC_604       = 604
PROCESSOR_PPC_620       = 620
PROCESSOR_HITACHI_SH3   = 10003   # Windows CE
PROCESSOR_HITACHI_SH3E  = 10004   # Windows CE
PROCESSOR_HITACHI_SH4   = 10005   # Windows CE
PROCESSOR_MOTOROLA_821  = 821     # Windows CE
PROCESSOR_SHx_SH3       = 103     # Windows CE
PROCESSOR_SHx_SH4       = 104     # Windows CE
PROCESSOR_STRONGARM     = 2577    # Windows CE - = 0x0A11
PROCESSOR_ARM720        = 1824    # Windows CE - = 0x0720
PROCESSOR_ARM820        = 2080    # Windows CE - = 0x0820
PROCESSOR_ARM920        = 2336    # Windows CE - = 0x0920
PROCESSOR_ARM_7TDMI     = 70001   # Windows CE
PROCESSOR_OPTIL         = 0x0494f  # MSIL

PROCESSOR_ARCHITECTURE_INTEL   = 0
PROCESSOR_ARCHITECTURE_MIPS    = 1
PROCESSOR_ARCHITECTURE_ALPHA   = 2
PROCESSOR_ARCHITECTURE_PPC     = 3
PROCESSOR_ARCHITECTURE_SHX     = 4
PROCESSOR_ARCHITECTURE_ARM     = 5
PROCESSOR_ARCHITECTURE_IA64    = 6
PROCESSOR_ARCHITECTURE_ALPHA64 = 7
PROCESSOR_ARCHITECTURE_MSIL    = 8

PROCESSOR_ARCHITECTURE_UNKNOWN = 0x0FFFF

PF_FLOATING_POINT_PRECISION_ERRATA = 0
PF_FLOATING_POINT_EMULATED         = 1
PF_COMPARE_EXCHANGE_DOUBLE         = 2
PF_MMX_INSTRUCTIONS_AVAILABLE      = 3
PF_PPC_MOVEMEM_64BIT_OK            = 4
PF_ALPHA_BYTE_INSTRUCTIONS         = 5
PF_XMMI_INSTRUCTIONS_AVAILABLE     = 6
PF_3DNOW_INSTRUCTIONS_AVAILABLE    = 7
PF_RDTSC_INSTRUCTION_AVAILABLE     = 8
PF_PAE_ENABLED                     = 9

SECTION_QUERY       = 0x00001
SECTION_MAP_WRITE   = 0x00002
SECTION_MAP_READ    = 0x00004
SECTION_MAP_EXECUTE = 0x00008
SECTION_EXTEND_SIZE = 0x00010

SECTION_ALL_ACCESS  = STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE

PAGE_NOACCESS          = 0x001
PAGE_READONLY          = 0x002
PAGE_READWRITE         = 0x004
PAGE_WRITECOPY         = 0x008
PAGE_EXECUTE           = 0x010
PAGE_EXECUTE_READ      = 0x020
PAGE_EXECUTE_READWRITE = 0x040
PAGE_EXECUTE_WRITECOPY = 0x080
PAGE_GUARD             = 0x0100
PAGE_NOCACHE           = 0x0200
PAGE_WRITECOMBINE      = 0x0400
MEM_COMMIT             = 0x000001000
MEM_RESERVE            = 0x000002000
MEM_DECOMMIT           = 0x000004000
MEM_RELEASE            = 0x000008000
MEM_FREE               = 0x010000
MEM_PRIVATE            = 0x020000
MEM_MAPPED             = 0x040000
MEM_RESET              = 0x080000
MEM_TOP_DOWN           = 0x0100000
MEM_WRITE_WATCH        = 0x0200000
MEM_PHYSICAL           = 0x0400000
SEC_FILE               = 0x0800000
SEC_IMAGE              = 0x001000000
SEC_VLM                = 0x002000000
SEC_RESERVE            = 0x004000000
SEC_COMMIT             = 0x008000000
SEC_NOCACHE            = 0x010000000
MEM_IMAGE              = SEC_IMAGE
WRITE_WATCH_FLAG_RESET = 0x001

#
# Define access rights to files and directories
#

#
# The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
# devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
# constants *MUST* always be in sync.
# The values are redefined in devioctl.h because they must be available to
# both DOS and NT.
#

FILE_READ_DATA            = 0x00001    # file  pipe
FILE_LIST_DIRECTORY       = 0x00001    # directory

FILE_WRITE_DATA           = 0x00002    # file  pipe
FILE_ADD_FILE             = 0x00002    # directory

FILE_APPEND_DATA          = 0x00004    # file
FILE_ADD_SUBDIRECTORY     = 0x00004    # directory
FILE_CREATE_PIPE_INSTANCE = 0x00004    # named pipe


FILE_READ_EA              = 0x00008    # file  directory

FILE_WRITE_EA             = 0x00010    # file  directory

FILE_EXECUTE              = 0x00020    # file
FILE_TRAVERSE             = 0x00020    # directory

FILE_DELETE_CHILD         = 0x00040    # directory

FILE_READ_ATTRIBUTES      = 0x00080    # all

FILE_WRITE_ATTRIBUTES     = 0x00100    # all

FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x01FF

FILE_GENERIC_READ =   STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE

FILE_GENERIC_WRITE =  STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE


FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE

FILE_SHARE_READ               = 0x000000001
FILE_SHARE_WRITE              = 0x000000002
FILE_SHARE_DELETE             = 0x000000004
FILE_ATTRIBUTE_READONLY            = 0x000000001
FILE_ATTRIBUTE_HIDDEN              = 0x000000002
FILE_ATTRIBUTE_SYSTEM              = 0x000000004
FILE_ATTRIBUTE_DIRECTORY           = 0x000000010
FILE_ATTRIBUTE_ARCHIVE             = 0x000000020
FILE_ATTRIBUTE_DEVICE              = 0x000000040
FILE_ATTRIBUTE_NORMAL              = 0x000000080
FILE_ATTRIBUTE_TEMPORARY           = 0x000000100
FILE_ATTRIBUTE_SPARSE_FILE         = 0x000000200
FILE_ATTRIBUTE_REPARSE_POINT       = 0x000000400
FILE_ATTRIBUTE_COMPRESSED          = 0x000000800
FILE_ATTRIBUTE_OFFLINE             = 0x000001000
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x000002000
FILE_ATTRIBUTE_ENCRYPTED           = 0x000004000
FILE_NOTIFY_CHANGE_FILE_NAME  = 0x000000001
FILE_NOTIFY_CHANGE_DIR_NAME   = 0x000000002
FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x000000004
FILE_NOTIFY_CHANGE_SIZE       = 0x000000008
FILE_NOTIFY_CHANGE_LAST_WRITE = 0x000000010
FILE_NOTIFY_CHANGE_LAST_ACCESS= 0x000000020
FILE_NOTIFY_CHANGE_CREATION   = 0x000000040
FILE_NOTIFY_CHANGE_SECURITY   = 0x000000100
FILE_ACTION_ADDED                 = 0x000000001
FILE_ACTION_REMOVED               = 0x000000002
FILE_ACTION_MODIFIED              = 0x000000003
FILE_ACTION_RENAMED_OLD_NAME      = 0x000000004
FILE_ACTION_RENAMED_NEW_NAME      = 0x000000005
MAILSLOT_NO_MESSAGE           = 0x0FFFFFFFF
MAILSLOT_WAIT_FOREVER         = 0x0FFFFFFFF
FILE_CASE_SENSITIVE_SEARCH    = 0x000000001
FILE_CASE_PRESERVED_NAMES     = 0x000000002
FILE_UNICODE_ON_DISK          = 0x000000004
FILE_PERSISTENT_ACLS          = 0x000000008
FILE_FILE_COMPRESSION         = 0x000000010
FILE_VOLUME_QUOTAS            = 0x000000020
FILE_SUPPORTS_SPARSE_FILES    = 0x000000040
FILE_SUPPORTS_REPARSE_POINTS  = 0x000000080
FILE_SUPPORTS_REMOTE_STORAGE  = 0x000000100
FILE_VOLUME_IS_COMPRESSED     = 0x000008000
FILE_SUPPORTS_OBJECT_IDS      = 0x000010000
FILE_SUPPORTS_ENCRYPTION      = 0x000020000
FILE_NAMED_STREAMS            = 0x000040000

# The below may vary according to the alignment of REPARSE_GUID_DATA_BUFFER.
REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = 24

#
# Maximum allowed size of the reparse data.
#

MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024

#
# Predefined reparse tags.
# These tags need to avoid conflicting with IO_REMOUNT defined in ntos\inc\io.h
#

IO_REPARSE_TAG_RESERVED_ZERO = 0
IO_REPARSE_TAG_RESERVED_ONE  = 1

#
# The value of the following constant needs to satisfy the following conditions:
# (1) Be at least as large as the largest of the reserved tags.
# (2) Be strictly smaller than all the tags in use.
#

IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE

IO_REPARSE_TAG_MOUNT_POINT = 0x0A0000003
IO_REPARSE_TAG_HSM         = 0x0C0000004
IO_REPARSE_TAG_SIS         = 0x080000007
IO_COMPLETION_MODIFY_STATE = 0x00002
IO_COMPLETION_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0x03
DUPLICATE_CLOSE_SOURCE     = 0x000000001
DUPLICATE_SAME_ACCESS      = 0x000000002

# enumerated type SYSTEM_POWER_STATE
PowerSystemUnspecified = 0
PowerSystemWorking     = 1
PowerSystemSleeping1   = 2
PowerSystemSleeping2   = 3
PowerSystemSleeping3   = 4
PowerSystemHibernate   = 5
PowerSystemShutdown    = 6
PowerSystemMaximum     = 7

POWER_SYSTEM_MAXIMUM = 7

# enumerated type POWER_ACTION
PowerActionNone          = 0
PowerActionReserved      = 1
PowerActionSleep         = 2
PowerActionHibernate     = 3
PowerActionShutdown      = 4
PowerActionShutdownReset = 5
PowerActionShutdownOff   = 6
PowerActionWarmEject     = 7

# enumerated type DEVICE_POWER_STATE
PowerDeviceUnspecified = 0
PowerDeviceD0          = 1
PowerDeviceD1          = 2
PowerDeviceD2          = 3
PowerDeviceD3          = 4
PowerDeviceMaximum     = 5

ES_SYSTEM_REQUIRED  = 0x000000001
ES_DISPLAY_REQUIRED = 0x000000002
ES_USER_PRESENT     = 0x000000004
ES_CONTINUOUS       = 0x080000000

LT_DONT_CARE      = 0
LT_LOWEST_LATENCY = 1

# enumerated type POWER_INFORMATION_LEVEL
SystemPowerPolicyAc           = 0
SystemPowerPolicyDc           = 1
VerifySystemPolicyAc          = 2
VerifySystemPolicyDc          = 3
SystemPowerCapabilities       = 4
SystemBatteryState            = 5
SystemPowerStateHandler       = 6
ProcessorStateHandler         = 7
SystemPowerPolicyCurrent      = 8
AdministratorPowerPolicy      = 9
SystemReserveHiberFile        = 10
ProcessorInformation          = 11
SystemPowerInformation        = 12
ProcessorStateHandler2        = 13
LastWakeTime                  = 14     # Compare with KeQueryInterruptTime()
LastSleepTime                 = 15     # Compare with KeQueryInterruptTime()
SystemExecutionState          = 16
SystemPowerStateNotifyHandler = 17
ProcessorPowerPolicyAc        = 18
ProcessorPowerPolicyDc        = 19
VerifyProcessorPowerPolicyAc  = 20
VerifyProcessorPowerPolicyDc  = 21
ProcessorPowerPolicyCurrent   = 22
SystemPowerStateLogging       = 23
SystemPowerLoggingEntry       = 24


# System power manager capabilities
#
# Power Policy Management interfaces
#


# POWER_ACTION_POLICY.Flags:
POWER_ACTION_QUERY_ALLOWED  = 0x0000000001
POWER_ACTION_UI_ALLOWED     = 0x0000000002
POWER_ACTION_OVERRIDE_APPS  = 0x0000000004
POWER_ACTION_LIGHTEST_FIRST = 0x0010000000
POWER_ACTION_LOCK_CONSOLE   = 0x0020000000
POWER_ACTION_DISABLE_WAKES  = 0x0040000000
POWER_ACTION_CRITICAL       = 0x0080000000

# POWER_ACTION_POLICY.EventCode flags
POWER_LEVEL_USER_NOTIFY_TEXT  = 0x0000000001
POWER_LEVEL_USER_NOTIFY_SOUND = 0x0000000002
POWER_LEVEL_USER_NOTIFY_EXEC  = 0x0000000004
POWER_USER_NOTIFY_BUTTON      = 0x0000000008
POWER_USER_NOTIFY_SHUTDOWN    = 0x0000000010
POWER_FORCE_TRIGGER_RESET     = 0x0080000000

# system battery drain policies


# Discharge policy constants
NUM_DISCHARGE_POLICIES    = 4
DISCHARGE_POLICY_CRITICAL = 0
DISCHARGE_POLICY_LOW      = 1

#
# Throttling policies
#
PO_THROTTLE_NONE     = 0
PO_THROTTLE_CONSTANT = 1
PO_THROTTLE_DEGRADE  = 2
PO_THROTTLE_ADAPTIVE = 3
PO_THROTTLE_MAXIMUM  = 4   # not a policy, just a limit

# system power policies


# processor power policy state


# processor power policy

# administrator power policy overrides


IMAGE_DOS_SIGNATURE    = 0x05A4D      # MZ
IMAGE_OS2_SIGNATURE    = 0x0454E      # NE
IMAGE_OS2_SIGNATURE_LE = 0x0454C      # LE
IMAGE_VXD_SIGNATURE    = 0x0454C      # LE
IMAGE_NT_SIGNATURE     = 0x000004550  # PE00

IMAGE_SIZEOF_FILE_HEADER = 20

IMAGE_FILE_RELOCS_STRIPPED         = 0x000000001  # Relocation info stripped from file.
IMAGE_FILE_EXECUTABLE_IMAGE        = 0x000000002  # File is executable  (i.e. no unresolved externel references).
IMAGE_FILE_LINE_NUMS_STRIPPED      = 0x000000004  # Line nunbers stripped from file.
IMAGE_FILE_LOCAL_SYMS_STRIPPED     = 0x000000008  # Local symbols stripped from file.
IMAGE_FILE_AGGRESIVE_WS_TRIM       = 0x000000010  # Agressively trim working set
IMAGE_FILE_LARGE_ADDRESS_AWARE     = 0x000000020  # App can handle >2gb addresses
IMAGE_FILE_BYTES_REVERSED_LO       = 0x000000080  # Bytes of machine word are reversed.
IMAGE_FILE_32BIT_MACHINE           = 0x000000100  # 32 bit word machine.
IMAGE_FILE_DEBUG_STRIPPED          = 0x000000200  # Debugging info stripped from file in .DBG file
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x000000400  # If Image is on removable media, copy and run from the swap file.
IMAGE_FILE_NET_RUN_FROM_SWAP       = 0x000000800  # If Image is on Net, copy and run from the swap file.
IMAGE_FILE_SYSTEM                  = 0x000001000  # System File.
IMAGE_FILE_DLL                     = 0x000002000  # File is a DLL.
IMAGE_FILE_UP_SYSTEM_ONLY          = 0x000004000  # File should only be run on a UP machine
IMAGE_FILE_BYTES_REVERSED_HI       = 0x000008000  # Bytes of machine word are reversed.

IMAGE_FILE_MACHINE_UNKNOWN         = 0
IMAGE_FILE_MACHINE_I386            = 0x0014c  # Intel 386.
IMAGE_FILE_MACHINE_R3000           = 0x00162  # MIPS little-endian, = 0x0160 big-endian
IMAGE_FILE_MACHINE_R4000           = 0x00166  # MIPS little-endian
IMAGE_FILE_MACHINE_R10000          = 0x00168  # MIPS little-endian
IMAGE_FILE_MACHINE_WCEMIPSV2       = 0x00169  # MIPS little-endian WCE v2
IMAGE_FILE_MACHINE_ALPHA           = 0x00184  # Alpha_AXP
IMAGE_FILE_MACHINE_POWERPC         = 0x001F0  # IBM PowerPC Little-Endian
IMAGE_FILE_MACHINE_SH3             = 0x001a2  # SH3 little-endian
IMAGE_FILE_MACHINE_SH3E            = 0x001a4  # SH3E little-endian
IMAGE_FILE_MACHINE_SH4             = 0x001a6  # SH4 little-endian
IMAGE_FILE_MACHINE_ARM             = 0x001c0  # ARM Little-Endian
IMAGE_FILE_MACHINE_THUMB           = 0x001c2
IMAGE_FILE_MACHINE_IA64            = 0x00200  # Intel 64
IMAGE_FILE_MACHINE_MIPS16          = 0x00266  # MIPS
IMAGE_FILE_MACHINE_MIPSFPU         = 0x00366  # MIPS
IMAGE_FILE_MACHINE_MIPSFPU16       = 0x00466  # MIPS
IMAGE_FILE_MACHINE_ALPHA64         = 0x00284  # ALPHA64
IMAGE_FILE_MACHINE_AXP64           = IMAGE_FILE_MACHINE_ALPHA64

IMAGE_SIZEOF_ROM_OPTIONAL_HEADER  =  56
IMAGE_SIZEOF_STD_OPTIONAL_HEADER  =  28
IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224
IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240

IMAGE_NT_OPTIONAL_HDR32_MAGIC     = 0x010b
IMAGE_NT_OPTIONAL_HDR64_MAGIC     = 0x020b
IMAGE_ROM_OPTIONAL_HDR_MAGIC      = 0x0107

IMAGE_SUBSYSTEM_UNKNOWN           =  0   # Unknown subsystem.
IMAGE_SUBSYSTEM_NATIVE            =  1   # Image doesn#t require a subsystem.
IMAGE_SUBSYSTEM_WINDOWS_GUI       =  2   # Image runs in the Windows GUI subsystem.
IMAGE_SUBSYSTEM_WINDOWS_CUI       =  3   # Image runs in the Windows character subsystem.
IMAGE_SUBSYSTEM_OS2_CUI           =  5   # image runs in the OS/2 character subsystem.
IMAGE_SUBSYSTEM_POSIX_CUI         =  7   # image runs in the Posix character subsystem.
IMAGE_SUBSYSTEM_NATIVE_WINDOWS    =  8   # image is a native Win9x driver.
IMAGE_SUBSYSTEM_WINDOWS_CE_GUI    =  9   # Image runs in the Windows CE subsystem.
IMAGE_SUBSYSTEM_EFI_APPLICATION   = 10   #
IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11
IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12

# DllCharacteristics Entries

#    IMAGE_LIBRARY_PROCESS_INIT         = 0x00001     # Reserved.
#    IMAGE_LIBRARY_PROCESS_TERM         = 0x00002     # Reserved.
#    IMAGE_LIBRARY_THREAD_INIT          = 0x00004     # Reserved.
#    IMAGE_LIBRARY_THREAD_TERM          = 0x00008     # Reserved.
IMAGE_DLLCHARACTERISTICS_NO_BIND    = 0x00800     # Do not bind this image.
#                                          0x01000     # Reserved.
IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x02000     # Driver uses WDM model
#                                          0x04000     # Reserved.
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x000008000

IMAGE_SIZEOF_SHORT_NAME = 8

IMAGE_SIZEOF_SECTION_HEADER = 40

#
# Section characteristics.
#
#     IMAGE_SCN_TYPE_REG                  = 0x000000000  # Reserved.
#     IMAGE_SCN_TYPE_DSECT                = 0x000000001  # Reserved.
#     IMAGE_SCN_TYPE_NOLOAD               = 0x000000002  # Reserved.
#     IMAGE_SCN_TYPE_GROUP                = 0x000000004  # Reserved.
IMAGE_SCN_TYPE_NO_PAD               = 0x000000008  # Reserved.
#     IMAGE_SCN_TYPE_COPY                 = 0x000000010  # Reserved.

IMAGE_SCN_CNT_CODE                  = 0x000000020  # Section contains code.
IMAGE_SCN_CNT_INITIALIZED_DATA      = 0x000000040  # Section contains initialized data.
IMAGE_SCN_CNT_UNINITIALIZED_DATA    = 0x000000080  # Section contains uninitialized data.

IMAGE_SCN_LNK_OTHER                 = 0x000000100  # Reserved.
IMAGE_SCN_LNK_INFO                  = 0x000000200  # Section contains comments or some other type of information.
#     IMAGE_SCN_TYPE_OVER                 = 0x000000400  # Reserved.
IMAGE_SCN_LNK_REMOVE                = 0x000000800  # Section contents will not become part of image.
IMAGE_SCN_LNK_COMDAT                = 0x000001000  # Section contents comdat.
#                                         = 0x000002000  # Reserved.
#     IMAGE_SCN_MEM_PROTECTED - Obsolete  = 0x000004000
IMAGE_SCN_NO_DEFER_SPEC_EXC         = 0x000004000  # Reset speculative exceptions handling bits in the TLB entries for this section.
IMAGE_SCN_GPREL                     = 0x000008000  # Section content can be accessed relative to GP
IMAGE_SCN_MEM_FARDATA               = 0x000008000
#     IMAGE_SCN_MEM_SYSHEAP  - Obsolete   = 0x000010000
IMAGE_SCN_MEM_PURGEABLE             = 0x000020000
IMAGE_SCN_MEM_16BIT                 = 0x000020000
IMAGE_SCN_MEM_LOCKED                = 0x000040000
IMAGE_SCN_MEM_PRELOAD               = 0x000080000

IMAGE_SCN_ALIGN_1BYTES              = 0x000100000  #
IMAGE_SCN_ALIGN_2BYTES              = 0x000200000  #
IMAGE_SCN_ALIGN_4BYTES              = 0x000300000  #
IMAGE_SCN_ALIGN_8BYTES              = 0x000400000  #
IMAGE_SCN_ALIGN_16BYTES             = 0x000500000  # Default alignment if no others are specified.
IMAGE_SCN_ALIGN_32BYTES             = 0x000600000  #
IMAGE_SCN_ALIGN_64BYTES             = 0x000700000  #
IMAGE_SCN_ALIGN_128BYTES            = 0x000800000  #
IMAGE_SCN_ALIGN_256BYTES            = 0x000900000  #
IMAGE_SCN_ALIGN_512BYTES            = 0x000A00000  #
IMAGE_SCN_ALIGN_1024BYTES           = 0x000B00000  #
IMAGE_SCN_ALIGN_2048BYTES           = 0x000C00000  #
IMAGE_SCN_ALIGN_4096BYTES           = 0x000D00000  #
IMAGE_SCN_ALIGN_8192BYTES           = 0x000E00000  #
# Unused                                   = 0x000F00000
IMAGE_SCN_ALIGN_MASK                = 0x000F00000

IMAGE_SCN_LNK_NRELOC_OVFL           = 0x001000000  # Section contains extended relocations.
IMAGE_SCN_MEM_DISCARDABLE           = 0x002000000  # Section can be discarded.
IMAGE_SCN_MEM_NOT_CACHED            = 0x004000000  # Section is not cachable.
IMAGE_SCN_MEM_NOT_PAGED             = 0x008000000  # Section is not pageable.
IMAGE_SCN_MEM_SHARED                = 0x010000000  # Section is shareable.
IMAGE_SCN_MEM_EXECUTE               = 0x020000000  # Section is executable.
IMAGE_SCN_MEM_READ                  = 0x040000000  # Section is readable.
IMAGE_SCN_MEM_WRITE                 = 0x080000000  # Section is writeable.

#
# TLS Characteristic Flags
#
IMAGE_SCN_SCALE_INDEX               = 0x000000001  # Tls index is scaled

IMAGE_SIZEOF_SYMBOL = 18

#
# Section values.
#
# Symbols have a section number of the section in which they are
# defined. Otherwise, section numbers have the following meanings:
#

IMAGE_SYM_UNDEFINED = 0    # Symbol is undefined or is common.
IMAGE_SYM_ABSOLUTE  = -1   # Symbol is an absolute value.
IMAGE_SYM_DEBUG     = -2   # Symbol is a special debug item.

#
# Type (fundamental) values.
#

IMAGE_SYM_TYPE_NULL   = 0x000000000  # no type.
IMAGE_SYM_TYPE_VOID   = 0x000000001  #
IMAGE_SYM_TYPE_CHAR   = 0x000000002  # type character.
IMAGE_SYM_TYPE_SHORT  = 0x000000003  # type short integer.
IMAGE_SYM_TYPE_INT    = 0x000000004  #
IMAGE_SYM_TYPE_LONG   = 0x000000005  #
IMAGE_SYM_TYPE_FLOAT  = 0x000000006  #
IMAGE_SYM_TYPE_DOUBLE = 0x000000007  #
IMAGE_SYM_TYPE_STRUCT = 0x000000008  #
IMAGE_SYM_TYPE_UNION  = 0x000000009  #
IMAGE_SYM_TYPE_ENUM   = 0x00000000A  # enumeration.
IMAGE_SYM_TYPE_MOE    = 0x00000000B  # member of enumeration.
IMAGE_SYM_TYPE_BYTE   = 0x00000000C  #
IMAGE_SYM_TYPE_WORD   = 0x00000000D  #
IMAGE_SYM_TYPE_UINT   = 0x00000000E  #
IMAGE_SYM_TYPE_DWORD  = 0x00000000F  #
IMAGE_SYM_TYPE_PCODE  = 0x000008000  #
#
# Type (derived) values.
#

IMAGE_SYM_DTYPE_NULL     = 0       # no derived type.
IMAGE_SYM_DTYPE_POINTER  = 1       # pointer.
IMAGE_SYM_DTYPE_FUNCTION = 2       # function.
IMAGE_SYM_DTYPE_ARRAY    = 3       # array.

#
# Storage classes.
#
IMAGE_SYM_CLASS_END_OF_FUNCTION  = 0x0FF
IMAGE_SYM_CLASS_NULL             = 0x00000
IMAGE_SYM_CLASS_AUTOMATIC        = 0x00001
IMAGE_SYM_CLASS_EXTERNAL         = 0x00002
IMAGE_SYM_CLASS_STATIC           = 0x00003
IMAGE_SYM_CLASS_REGISTER         = 0x00004
IMAGE_SYM_CLASS_EXTERNAL_DEF     = 0x00005
IMAGE_SYM_CLASS_LABEL            = 0x00006
IMAGE_SYM_CLASS_UNDEFINED_LABEL  = 0x00007
IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 0x00008
IMAGE_SYM_CLASS_ARGUMENT         = 0x00009
IMAGE_SYM_CLASS_STRUCT_TAG       = 0x0000A
IMAGE_SYM_CLASS_MEMBER_OF_UNION  = 0x0000B
IMAGE_SYM_CLASS_UNION_TAG        = 0x0000C
IMAGE_SYM_CLASS_TYPE_DEFINITION  = 0x0000D
IMAGE_SYM_CLASS_UNDEFINED_STATIC = 0x0000E
IMAGE_SYM_CLASS_ENUM_TAG         = 0x0000F
IMAGE_SYM_CLASS_MEMBER_OF_ENUM   = 0x00010
IMAGE_SYM_CLASS_REGISTER_PARAM   = 0x00011
IMAGE_SYM_CLASS_BIT_FIELD        = 0x00012

IMAGE_SYM_CLASS_FAR_EXTERNAL     = 0x00044  #

IMAGE_SYM_CLASS_BLOCK            = 0x00064
IMAGE_SYM_CLASS_FUNCTION         = 0x00065
IMAGE_SYM_CLASS_END_OF_STRUCT    = 0x00066
IMAGE_SYM_CLASS_FILE             = 0x00067
# new
IMAGE_SYM_CLASS_SECTION          = 0x00068
IMAGE_SYM_CLASS_WEAK_EXTERNAL    = 0x00069

# type packing constants

N_BTMASK = 0x0000F
N_TMASK  = 0x00030
N_TMASK1 = 0x000C0
N_TMASK2 = 0x000F0
N_BTSHFT = 4
N_TSHIFT = 2

IMAGE_SIZEOF_AUX_SYMBOL           = 18

#
# Communal selection types.
#

IMAGE_COMDAT_SELECT_NODUPLICATES  = 1
IMAGE_COMDAT_SELECT_ANY           = 2
IMAGE_COMDAT_SELECT_SAME_SIZE     = 3
IMAGE_COMDAT_SELECT_EXACT_MATCH   = 4
IMAGE_COMDAT_SELECT_ASSOCIATIVE   = 5
IMAGE_COMDAT_SELECT_LARGEST       = 6
IMAGE_COMDAT_SELECT_NEWEST        = 7

IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1
IMAGE_WEAK_EXTERN_SEARCH_LIBRARY   = 2
IMAGE_WEAK_EXTERN_SEARCH_ALIAS     = 3

IMAGE_SIZEOF_RELOCATION = 10

#
# I386 relocation types.
#
IMAGE_REL_I386_ABSOLUTE = 0x00000  # Reference is absolute, no relocation is necessary
IMAGE_REL_I386_DIR16    = 0x00001  # Direct 16-bit reference to the symbols virtual address
IMAGE_REL_I386_REL16    = 0x00002  # PC-relative 16-bit reference to the symbols virtual address
IMAGE_REL_I386_DIR32    = 0x00006  # Direct 32-bit reference to the symbols virtual address
IMAGE_REL_I386_DIR32NB  = 0x00007  # Direct 32-bit reference to the symbols virtual address, base not included
IMAGE_REL_I386_SEG12    = 0x00009  # Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
IMAGE_REL_I386_SECTION  = 0x0000A
IMAGE_REL_I386_SECREL   = 0x0000B
IMAGE_REL_I386_REL32    = 0x00014  # PC-relative 32-bit reference to the symbols virtual address

#
# MIPS relocation types.
#

IMAGE_REL_MIPS_ABSOLUTE  = 0x00000  # Reference is absolute, no relocation is necessary
IMAGE_REL_MIPS_REFHALF   = 0x00001
IMAGE_REL_MIPS_REFWORD   = 0x00002
IMAGE_REL_MIPS_JMPADDR   = 0x00003
IMAGE_REL_MIPS_REFHI     = 0x00004
IMAGE_REL_MIPS_REFLO     = 0x00005
IMAGE_REL_MIPS_GPREL     = 0x00006
IMAGE_REL_MIPS_LITERAL   = 0x00007
IMAGE_REL_MIPS_SECTION   = 0x0000A
IMAGE_REL_MIPS_SECREL    = 0x0000B
IMAGE_REL_MIPS_SECRELLO  = 0x0000C  # Low 16-bit section relative referemce (used for >32k TLS)
IMAGE_REL_MIPS_SECRELHI  = 0x0000D  # High 16-bit section relative reference (used for >32k TLS)
IMAGE_REL_MIPS_JMPADDR16 = 0x00010
IMAGE_REL_MIPS_REFWORDNB = 0x00022
IMAGE_REL_MIPS_PAIR      = 0x00025

#
# Alpha Relocation types.
#

IMAGE_REL_ALPHA_ABSOLUTE       = 0x00000
IMAGE_REL_ALPHA_REFLONG        = 0x00001
IMAGE_REL_ALPHA_REFQUAD        = 0x00002
IMAGE_REL_ALPHA_GPREL32        = 0x00003
IMAGE_REL_ALPHA_LITERAL        = 0x00004
IMAGE_REL_ALPHA_LITUSE         = 0x00005
IMAGE_REL_ALPHA_GPDISP         = 0x00006
IMAGE_REL_ALPHA_BRADDR         = 0x00007
IMAGE_REL_ALPHA_HINT           = 0x00008
IMAGE_REL_ALPHA_INLINE_REFLONG = 0x00009
IMAGE_REL_ALPHA_REFHI          = 0x0000A
IMAGE_REL_ALPHA_REFLO          = 0x0000B
IMAGE_REL_ALPHA_PAIR           = 0x0000C
IMAGE_REL_ALPHA_MATCH          = 0x0000D
IMAGE_REL_ALPHA_SECTION        = 0x0000E
IMAGE_REL_ALPHA_SECREL         = 0x0000F
IMAGE_REL_ALPHA_REFLONGNB      = 0x00010
IMAGE_REL_ALPHA_SECRELLO       = 0x00011  # Low 16-bit section relative reference
IMAGE_REL_ALPHA_SECRELHI       = 0x00012  # High 16-bit section relative reference
IMAGE_REL_ALPHA_REFQ3          = 0x00013  # High 16 bits of 48 bit reference
IMAGE_REL_ALPHA_REFQ2          = 0x00014  # Middle 16 bits of 48 bit reference
IMAGE_REL_ALPHA_REFQ1          = 0x00015  # Low 16 bits of 48 bit reference
IMAGE_REL_ALPHA_GPRELLO        = 0x00016  # Low 16-bit GP relative reference
IMAGE_REL_ALPHA_GPRELHI        = 0x00017  # High 16-bit GP relative reference


#
# IBM PowerPC relocation types.
#

IMAGE_REL_PPC_ABSOLUTE = 0x00000  # NOP
IMAGE_REL_PPC_ADDR64   = 0x00001  # 64-bit address
IMAGE_REL_PPC_ADDR32   = 0x00002  # 32-bit address
IMAGE_REL_PPC_ADDR24   = 0x00003  # 26-bit address, shifted left 2 (branch absolute)
IMAGE_REL_PPC_ADDR16   = 0x00004  # 16-bit address
IMAGE_REL_PPC_ADDR14   = 0x00005  # 16-bit address, shifted left 2 (load doubleword)
IMAGE_REL_PPC_REL24    = 0x00006  # 26-bit PC-relative offset, shifted left 2 (branch relative)
IMAGE_REL_PPC_REL14    = 0x00007  # 16-bit PC-relative offset, shifted left 2 (br cond relative)
IMAGE_REL_PPC_TOCREL16 = 0x00008  # 16-bit offset from TOC base
IMAGE_REL_PPC_TOCREL14 = 0x00009  # 16-bit offset from TOC base, shifted left 2 (load doubleword)

IMAGE_REL_PPC_ADDR32NB = 0x0000A  # 32-bit addr w/o image base
IMAGE_REL_PPC_SECREL   = 0x0000B  # va of containing section (as in an image sectionhdr)
IMAGE_REL_PPC_SECTION  = 0x0000C  # sectionheader number
IMAGE_REL_PPC_IFGLUE   = 0x0000D  # substitute TOC restore instruction iff symbol is glue code
IMAGE_REL_PPC_IMGLUE   = 0x0000E  # symbol is glue code; virtual address is TOC restore instruction
IMAGE_REL_PPC_SECREL16 = 0x0000F  # va of containing section (limited to 16 bits)
IMAGE_REL_PPC_REFHI    = 0x00010
IMAGE_REL_PPC_REFLO    = 0x00011
IMAGE_REL_PPC_PAIR     = 0x00012
IMAGE_REL_PPC_SECRELLO = 0x00013  # Low 16-bit section relative reference (used for >32k TLS)
IMAGE_REL_PPC_SECRELHI = 0x00014  # High 16-bit section relative reference (used for >32k TLS)
IMAGE_REL_PPC_GPREL    = 0x00015

IMAGE_REL_PPC_TYPEMASK = 0x000FF  # mask to isolate above values in IMAGE_RELOCATION.Type

# Flag bits in IMAGE_RELOCATION.TYPE

IMAGE_REL_PPC_NEG      = 0x00100  # subtract reloc value rather than adding it
IMAGE_REL_PPC_BRTAKEN  = 0x00200  # fix branch prediction bit to predict branch taken
IMAGE_REL_PPC_BRNTAKEN = 0x00400  # fix branch prediction bit to predict branch not taken
IMAGE_REL_PPC_TOCDEFN  = 0x00800  # toc slot defined in file (or, data in toc)

#
# Hitachi SH3 relocation types.
#
IMAGE_REL_SH3_ABSOLUTE        = 0x00000  # No relocation
IMAGE_REL_SH3_DIRECT16        = 0x00001  # 16 bit direct
IMAGE_REL_SH3_DIRECT32        = 0x00002  # 32 bit direct
IMAGE_REL_SH3_DIRECT8         = 0x00003  # 8 bit direct, -128..255
IMAGE_REL_SH3_DIRECT8_WORD    = 0x00004  # 8 bit direct .W (0 ext.)
IMAGE_REL_SH3_DIRECT8_LONG    = 0x00005  # 8 bit direct .L (0 ext.)
IMAGE_REL_SH3_DIRECT4         = 0x00006  # 4 bit direct (0 ext.)
IMAGE_REL_SH3_DIRECT4_WORD    = 0x00007  # 4 bit direct .W (0 ext.)
IMAGE_REL_SH3_DIRECT4_LONG    = 0x00008  # 4 bit direct .L (0 ext.)
IMAGE_REL_SH3_PCREL8_WORD     = 0x00009  # 8 bit PC relative .W
IMAGE_REL_SH3_PCREL8_LONG     = 0x0000A  # 8 bit PC relative .L
IMAGE_REL_SH3_PCREL12_WORD    = 0x0000B  # 12 LSB PC relative .W
IMAGE_REL_SH3_STARTOF_SECTION = 0x0000C  # Start of EXE section
IMAGE_REL_SH3_SIZEOF_SECTION  = 0x0000D  # Size of EXE section
IMAGE_REL_SH3_SECTION         = 0x0000E  # Section table index
IMAGE_REL_SH3_SECREL          = 0x0000F  # Offset within section
IMAGE_REL_SH3_DIRECT32_NB     = 0x00010  # 32 bit direct not based

IMAGE_REL_ARM_ABSOLUTE        = 0x00000  # No relocation required
IMAGE_REL_ARM_ADDR32          = 0x00001  # 32 bit address
IMAGE_REL_ARM_ADDR32NB        = 0x00002  # 32 bit address w/o image base
IMAGE_REL_ARM_BRANCH24        = 0x00003  # 24 bit offset << 2  sign ext.
IMAGE_REL_ARM_BRANCH11        = 0x00004  # Thumb: 2 11 bit offsets
IMAGE_REL_ARM_GPREL12         = 0x00006  # GP-relative addressing (ARM)
IMAGE_REL_ARM_GPREL7          = 0x00007  # GP-relative addressing (Thumb)
IMAGE_REL_ARM_SECTION         = 0x0000E  # Section table index
IMAGE_REL_ARM_SECREL          = 0x0000F  # Offset within section

#
# IA64 relocation types.
#

IMAGE_REL_IA64_ABSOLUTE  = 0x00000
IMAGE_REL_IA64_IMM14     = 0x00001
IMAGE_REL_IA64_IMM22     = 0x00002
IMAGE_REL_IA64_IMM64     = 0x00003
IMAGE_REL_IA64_DIR32     = 0x00004
IMAGE_REL_IA64_DIR64     = 0x00005
IMAGE_REL_IA64_PCREL21B  = 0x00006
IMAGE_REL_IA64_PCREL21M  = 0x00007
IMAGE_REL_IA64_PCREL21F  = 0x00008
IMAGE_REL_IA64_GPREL22   = 0x00009
IMAGE_REL_IA64_LTOFF22   = 0x0000A
IMAGE_REL_IA64_SECTION   = 0x0000B
IMAGE_REL_IA64_SECREL22  = 0x0000C
IMAGE_REL_IA64_SECREL64I = 0x0000D
IMAGE_REL_IA64_SECREL32  = 0x0000E
IMAGE_REL_IA64_LTOFF64   = 0x0000F
IMAGE_REL_IA64_DIR32NB   = 0x00010
IMAGE_REL_IA64_ADDEND    = 0x0001F

# End of constants from winnt.h ===============================================

# Constants from winerror.h ===================================================

#  Values are 32 bit values layed out as follows:
#
#   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
#   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
#  +---+-+-+-----------------------+-------------------------------+
#  |Sev|C|R|     Facility          |               Code            |
#  +---+-+-+-----------------------+-------------------------------+
#
#  where
#
#      Sev - is the severity code
#
#          00 - Success
#          01 - Informational
#          10 - Warning
#          11 - Error
#
#      C - is the Customer code flag
#
#      R - is a reserved bit
#
#      Facility - is the facility code
#
#      Code - is the facility#s status code
#
#
# Define the facility codes
#
FACILITY_WINDOWS_CE       = 24
FACILITY_WINDOWS          = 8
FACILITY_URT              = 19
FACILITY_UMI              = 22
FACILITY_SXS              = 23
FACILITY_STORAGE          = 3
FACILITY_STATE_MANAGEMENT = 34
FACILITY_SSPI             = 9
FACILITY_SCARD            = 16
FACILITY_SETUPAPI         = 15
FACILITY_SECURITY         = 9
FACILITY_RPC              = 1
FACILITY_WIN32            = 7
FACILITY_CONTROL          = 10
FACILITY_NULL             = 0
FACILITY_MSMQ             = 14
FACILITY_MEDIASERVER      = 13
FACILITY_INTERNET         = 12
FACILITY_ITF              = 4
FACILITY_HTTP             = 25
FACILITY_DPLAY            = 21
FACILITY_DISPATCH         = 2
FACILITY_CONFIGURATION    = 33
FACILITY_COMPLUS          = 17
FACILITY_CERT             = 11
FACILITY_BACKGROUNDCOPY   = 32
FACILITY_ACS              = 20
FACILITY_AAF              = 18


#
# Define the severity codes
#


#
# MessageId: ERROR_SUCCESS
#
# MessageText:
#
#  The operation completed successfully.
#
ERROR_SUCCESS                  = 0

NO_ERROR = 0                                                # dderror
SEC_E_OK                       = 0x000000000

#
# MessageId: ERROR_INVALID_FUNCTION
#
# MessageText:
#
#  Incorrect function.
#
ERROR_INVALID_FUNCTION          = 1     # dderror

#
# MessageId: ERROR_FILE_NOT_FOUND
#
# MessageText:
#
#  The system cannot find the file specified.
#
ERROR_FILE_NOT_FOUND            = 2

#
# MessageId: ERROR_PATH_NOT_FOUND
#
# MessageText:
#
#  The system cannot find the path specified.
#
ERROR_PATH_NOT_FOUND            = 3

#
# MessageId: ERROR_TOO_MANY_OPEN_FILES
#
# MessageText:
#
#  The system cannot open the file.
#
ERROR_TOO_MANY_OPEN_FILES       = 4

#
# MessageId: ERROR_ACCESS_DENIED
#
# MessageText:
#
#  Access is denied.
#
ERROR_ACCESS_DENIED             = 5

#
# MessageId: ERROR_INVALID_HANDLE
#
# MessageText:
#
#  The handle is invalid.
#
ERROR_INVALID_HANDLE            = 6

#
# MessageId: ERROR_ARENA_TRASHED
#
# MessageText:
#
#  The storage control blocks were destroyed.
#
ERROR_ARENA_TRASHED             = 7

#
# MessageId: ERROR_NOT_ENOUGH_MEMORY
#
# MessageText:
#
#  Not enough storage is available to process this command.
#
ERROR_NOT_ENOUGH_MEMORY         = 8    # dderror

#
# MessageId: ERROR_INVALID_BLOCK
#
# MessageText:
#
#  The storage control block address is invalid.
#
ERROR_INVALID_BLOCK             = 9

#
# MessageId: ERROR_BAD_ENVIRONMENT
#
# MessageText:
#
#  The environment is incorrect.
#
ERROR_BAD_ENVIRONMENT           = 10

#
# MessageId: ERROR_BAD_FORMAT
#
# MessageText:
#
#  An attempt was made to load a program with an incorrect format.
#
ERROR_BAD_FORMAT                = 11

#
# MessageId: ERROR_INVALID_ACCESS
#
# MessageText:
#
#  The access code is invalid.
#
ERROR_INVALID_ACCESS            = 12

#
# MessageId: ERROR_INVALID_DATA
#
# MessageText:
#
#  The data is invalid.
#
ERROR_INVALID_DATA              = 13

#
# MessageId: ERROR_OUTOFMEMORY
#
# MessageText:
#
#  Not enough storage is available to complete this operation.
#
ERROR_OUTOFMEMORY               = 14

#
# MessageId: ERROR_INVALID_DRIVE
#
# MessageText:
#
#  The system cannot find the drive specified.
#
ERROR_INVALID_DRIVE             = 15

#
# MessageId: ERROR_CURRENT_DIRECTORY
#
# MessageText:
#
#  The directory cannot be removed.
#
ERROR_CURRENT_DIRECTORY         = 16

#
# MessageId: ERROR_NOT_SAME_DEVICE
#
# MessageText:
#
#  The system cannot move the file to a different disk drive.
#
ERROR_NOT_SAME_DEVICE           = 17

#
# MessageId: ERROR_NO_MORE_FILES
#
# MessageText:
#
#  There are no more files.
#
ERROR_NO_MORE_FILES             = 18

#
# MessageId: ERROR_WRITE_PROTECT
#
# MessageText:
#
#  The media is write protected.
#
ERROR_WRITE_PROTECT             = 19

#
# MessageId: ERROR_BAD_UNIT
#
# MessageText:
#
#  The system cannot find the device specified.
#
ERROR_BAD_UNIT                  = 20

#
# MessageId: ERROR_NOT_READY
#
# MessageText:
#
#  The device is not ready.
#
ERROR_NOT_READY                 = 21

#
# MessageId: ERROR_BAD_COMMAND
#
# MessageText:
#
#  The device does not recognize the command.
#
ERROR_BAD_COMMAND               = 22

#
# MessageId: ERROR_CRC
#
# MessageText:
#
#  Data error (cyclic redundancy check).
#
ERROR_CRC                       = 23

#
# MessageId: ERROR_BAD_LENGTH
#
# MessageText:
#
#  The program issued a command but the command length is incorrect.
#
ERROR_BAD_LENGTH                = 24

#
# MessageId: ERROR_SEEK
#
# MessageText:
#
#  The drive cannot locate a specific area or track on the disk.
#
ERROR_SEEK                      = 25

#
# MessageId: ERROR_NOT_DOS_DISK
#
# MessageText:
#
#  The specified disk or diskette cannot be accessed.
#
ERROR_NOT_DOS_DISK              = 26

#
# MessageId: ERROR_SECTOR_NOT_FOUND
#
# MessageText:
#
#  The drive cannot find the sector requested.
#
ERROR_SECTOR_NOT_FOUND          = 27

#
# MessageId: ERROR_OUT_OF_PAPER
#
# MessageText:
#
#  The printer is out of paper.
#
ERROR_OUT_OF_PAPER              = 28

#
# MessageId: ERROR_WRITE_FAULT
#
# MessageText:
#
#  The system cannot write to the specified device.
#
ERROR_WRITE_FAULT               = 29

#
# MessageId: ERROR_READ_FAULT
#
# MessageText:
#
#  The system cannot read from the specified device.
#
ERROR_READ_FAULT                = 30

#
# MessageId: ERROR_GEN_FAILURE
#
# MessageText:
#
#  A device attached to the system is not functioning.
#
ERROR_GEN_FAILURE               = 31

#
# MessageId: ERROR_SHARING_VIOLATION
#
# MessageText:
#
#  The process cannot access the file because it is being used by another process.
#
ERROR_SHARING_VIOLATION         = 32

#
# MessageId: ERROR_LOCK_VIOLATION
#
# MessageText:
#
#  The process cannot access the file because another process has locked a portion of the file.
#
ERROR_LOCK_VIOLATION            = 33

#
# MessageId: ERROR_WRONG_DISK
#
# MessageText:
#
#  The wrong diskette is in the drive.
#  Insert 2 (Volume Serial Number: 3) into drive 1.
#
ERROR_WRONG_DISK                = 34

#
# MessageId: ERROR_SHARING_BUFFER_EXCEEDED
#
# MessageText:
#
#  Too many files opened for sharing.
#
ERROR_SHARING_BUFFER_EXCEEDED   = 36

#
# MessageId: ERROR_HANDLE_EOF
#
# MessageText:
#
#  Reached the end of the file.
#
ERROR_HANDLE_EOF                = 38

#
# MessageId: ERROR_HANDLE_DISK_FULL
#
# MessageText:
#
#  The disk is full.
#
ERROR_HANDLE_DISK_FULL          = 39

#
# MessageId: ERROR_NOT_SUPPORTED
#
# MessageText:
#
#  The request is not supported.
#
ERROR_NOT_SUPPORTED             = 50

#
# MessageId: ERROR_REM_NOT_LIST
#
# MessageText:
#
#  Windows cannot find the network path. Verify that the network path is correct and the destination computer is not busy or turned off. If Windows still cannot find the network path, contact your network administrator.
#
ERROR_REM_NOT_LIST              = 51

#
# MessageId: ERROR_DUP_NAME
#
# MessageText:
#
#  You were not connected because a duplicate name exists on the network. Go to System in Control Panel to change the computer name and try again.
#
ERROR_DUP_NAME                  = 52

#
# MessageId: ERROR_BAD_NETPATH
#
# MessageText:
#
#  The network path was not found.
#
ERROR_BAD_NETPATH               = 53

#
# MessageId: ERROR_NETWORK_BUSY
#
# MessageText:
#
#  The network is busy.
#
ERROR_NETWORK_BUSY              = 54

#
# MessageId: ERROR_DEV_NOT_EXIST
#
# MessageText:
#
#  The specified network resource or device is no longer available.
#
ERROR_DEV_NOT_EXIST             = 55    # dderror

#
# MessageId: ERROR_TOO_MANY_CMDS
#
# MessageText:
#
#  The network BIOS command limit has been reached.
#
ERROR_TOO_MANY_CMDS             = 56

#
# MessageId: ERROR_ADAP_HDW_ERR
#
# MessageText:
#
#  A network adapter hardware error occurred.
#
ERROR_ADAP_HDW_ERR              = 57

#
# MessageId: ERROR_BAD_NET_RESP
#
# MessageText:
#
#  The specified server cannot perform the requested operation.
#
ERROR_BAD_NET_RESP              = 58

#
# MessageId: ERROR_UNEXP_NET_ERR
#
# MessageText:
#
#  An unexpected network error occurred.
#
ERROR_UNEXP_NET_ERR             = 59

#
# MessageId: ERROR_BAD_REM_ADAP
#
# MessageText:
#
#  The remote adapter is not compatible.
#
ERROR_BAD_REM_ADAP              = 60

#
# MessageId: ERROR_PRINTQ_FULL
#
# MessageText:
#
#  The printer queue is full.
#
ERROR_PRINTQ_FULL               = 61

#
# MessageId: ERROR_NO_SPOOL_SPACE
#
# MessageText:
#
#  Space to store the file waiting to be printed is not available on the server.
#
ERROR_NO_SPOOL_SPACE            = 62

#
# MessageId: ERROR_PRINT_CANCELLED
#
# MessageText:
#
#  Your file waiting to be printed was deleted.
#
ERROR_PRINT_CANCELLED           = 63

#
# MessageId: ERROR_NETNAME_DELETED
#
# MessageText:
#
#  The specified network name is no longer available.
#
ERROR_NETNAME_DELETED           = 64

#
# MessageId: ERROR_NETWORK_ACCESS_DENIED
#
# MessageText:
#
#  Network access is denied.
#
ERROR_NETWORK_ACCESS_DENIED     = 65

#
# MessageId: ERROR_BAD_DEV_TYPE
#
# MessageText:
#
#  The network resource type is not correct.
#
ERROR_BAD_DEV_TYPE              = 66

#
# MessageId: ERROR_BAD_NET_NAME
#
# MessageText:
#
#  The network name cannot be found.
#
ERROR_BAD_NET_NAME              = 67

#
# MessageId: ERROR_TOO_MANY_NAMES
#
# MessageText:
#
#  The name limit for the local computer network adapter card was exceeded.
#
ERROR_TOO_MANY_NAMES            = 68

#
# MessageId: ERROR_TOO_MANY_SESS
#
# MessageText:
#
#  The network BIOS session limit was exceeded.
#
ERROR_TOO_MANY_SESS             = 69

#
# MessageId: ERROR_SHARING_PAUSED
#
# MessageText:
#
#  The remote server has been paused or is in the process of being started.
#
ERROR_SHARING_PAUSED            = 70

#
# MessageId: ERROR_REQ_NOT_ACCEP
#
# MessageText:
#
#  No more connections can be made to this remote computer at this time because there are already as many connections as the computer can accept.
#
ERROR_REQ_NOT_ACCEP             = 71

#
# MessageId: ERROR_REDIR_PAUSED
#
# MessageText:
#
#  The specified printer or disk device has been paused.
#
ERROR_REDIR_PAUSED              = 72

#
# MessageId: ERROR_FILE_EXISTS
#
# MessageText:
#
#  The file exists.
#
ERROR_FILE_EXISTS               = 80

#
# MessageId: ERROR_CANNOT_MAKE
#
# MessageText:
#
#  The directory or file cannot be created.
#
ERROR_CANNOT_MAKE               = 82

#
# MessageId: ERROR_FAIL_I24
#
# MessageText:
#
#  Fail on INT 24.
#
ERROR_FAIL_I24                  = 83

#
# MessageId: ERROR_OUT_OF_STRUCTURES
#
# MessageText:
#
#  Storage to process this request is not available.
#
ERROR_OUT_OF_STRUCTURES         = 84

#
# MessageId: ERROR_ALREADY_ASSIGNED
#
# MessageText:
#
#  The local device name is already in use.
#
ERROR_ALREADY_ASSIGNED          = 85

#
# MessageId: ERROR_INVALID_PASSWORD
#
# MessageText:
#
#  The specified network password is not correct.
#
ERROR_INVALID_PASSWORD          = 86

#
# MessageId: ERROR_INVALID_PARAMETER
#
# MessageText:
#
#  The parameter is incorrect.
#
ERROR_INVALID_PARAMETER         = 87    # dderror

#
# MessageId: ERROR_NET_WRITE_FAULT
#
# MessageText:
#
#  A write fault occurred on the network.
#
ERROR_NET_WRITE_FAULT           = 88

#
# MessageId: ERROR_NO_PROC_SLOTS
#
# MessageText:
#
#  The system cannot start another process at this time.
#
ERROR_NO_PROC_SLOTS             = 89

#
# MessageId: ERROR_TOO_MANY_SEMAPHORES
#
# MessageText:
#
#  Cannot create another system semaphore.
#
ERROR_TOO_MANY_SEMAPHORES       = 100

#
# MessageId: ERROR_EXCL_SEM_ALREADY_OWNED
#
# MessageText:
#
#  The exclusive semaphore is owned by another process.
#
ERROR_EXCL_SEM_ALREADY_OWNED    = 101

#
# MessageId: ERROR_SEM_IS_SET
#
# MessageText:
#
#  The semaphore is set and cannot be closed.
#
ERROR_SEM_IS_SET                = 102

#
# MessageId: ERROR_TOO_MANY_SEM_REQUESTS
#
# MessageText:
#
#  The semaphore cannot be set again.
#
ERROR_TOO_MANY_SEM_REQUESTS     = 103

#
# MessageId: ERROR_INVALID_AT_INTERRUPT_TIME
#
# MessageText:
#
#  Cannot request exclusive semaphores at interrupt time.
#
ERROR_INVALID_AT_INTERRUPT_TIME = 104

#
# MessageId: ERROR_SEM_OWNER_DIED
#
# MessageText:
#
#  The previous ownership of this semaphore has ended.
#
ERROR_SEM_OWNER_DIED            = 105

#
# MessageId: ERROR_SEM_USER_LIMIT
#
# MessageText:
#
#  Insert the diskette for drive 1.
#
ERROR_SEM_USER_LIMIT            = 106

#
# MessageId: ERROR_DISK_CHANGE
#
# MessageText:
#
#  The program stopped because an alternate diskette was not inserted.
#
ERROR_DISK_CHANGE               = 107

#
# MessageId: ERROR_DRIVE_LOCKED
#
# MessageText:
#
#  The disk is in use or locked by another process.
#
ERROR_DRIVE_LOCKED              = 108

#
# MessageId: ERROR_BROKEN_PIPE
#
# MessageText:
#
#  The pipe has been ended.
#
ERROR_BROKEN_PIPE               = 109

#
# MessageId: ERROR_OPEN_FAILED
#
# MessageText:
#
#  The system cannot open the device or file specified.
#
ERROR_OPEN_FAILED               = 110

#
# MessageId: ERROR_BUFFER_OVERFLOW
#
# MessageText:
#
#  The file name is too long.
#
ERROR_BUFFER_OVERFLOW           = 111

#
# MessageId: ERROR_DISK_FULL
#
# MessageText:
#
#  There is not enough space on the disk.
#
ERROR_DISK_FULL                 = 112

#
# MessageId: ERROR_NO_MORE_SEARCH_HANDLES
#
# MessageText:
#
#  No more internal file identifiers available.
#
ERROR_NO_MORE_SEARCH_HANDLES    = 113

#
# MessageId: ERROR_INVALID_TARGET_HANDLE
#
# MessageText:
#
#  The target internal file identifier is incorrect.
#
ERROR_INVALID_TARGET_HANDLE     = 114

#
# MessageId: ERROR_INVALID_CATEGORY
#
# MessageText:
#
#  The IOCTL call made by the application program is not correct.
#
ERROR_INVALID_CATEGORY          = 117

#
# MessageId: ERROR_INVALID_VERIFY_SWITCH
#
# MessageText:
#
#  The verify-on-write switch parameter value is not correct.
#
ERROR_INVALID_VERIFY_SWITCH     = 118

#
# MessageId: ERROR_BAD_DRIVER_LEVEL
#
# MessageText:
#
#  The system does not support the command requested.
#
ERROR_BAD_DRIVER_LEVEL          = 119

#
# MessageId: ERROR_CALL_NOT_IMPLEMENTED
#
# MessageText:
#
#  This function is not supported on this system.
#
ERROR_CALL_NOT_IMPLEMENTED      = 120

#
# MessageId: ERROR_SEM_TIMEOUT
#
# MessageText:
#
#  The semaphore timeout period has expired.
#
ERROR_SEM_TIMEOUT               = 121

#
# MessageId: ERROR_INSUFFICIENT_BUFFER
#
# MessageText:
#
#  The data area passed to a system call is too small.
#
ERROR_INSUFFICIENT_BUFFER       = 122    # dderror

#
# MessageId: ERROR_INVALID_NAME
#
# MessageText:
#
#  The filename, directory name, or volume label syntax is incorrect.
#
ERROR_INVALID_NAME              = 123    # dderror

#
# MessageId: ERROR_INVALID_LEVEL
#
# MessageText:
#
#  The system call level is not correct.
#
ERROR_INVALID_LEVEL             = 124

#
# MessageId: ERROR_NO_VOLUME_LABEL
#
# MessageText:
#
#  The disk has no volume label.
#
ERROR_NO_VOLUME_LABEL           = 125

#
# MessageId: ERROR_MOD_NOT_FOUND
#
# MessageText:
#
#  The specified module could not be found.
#
ERROR_MOD_NOT_FOUND             = 126

#
# MessageId: ERROR_PROC_NOT_FOUND
#
# MessageText:
#
#  The specified procedure could not be found.
#
ERROR_PROC_NOT_FOUND            = 127

#
# MessageId: ERROR_WAIT_NO_CHILDREN
#
# MessageText:
#
#  There are no child processes to wait for.
#
ERROR_WAIT_NO_CHILDREN          = 128

#
# MessageId: ERROR_CHILD_NOT_COMPLETE
#
# MessageText:
#
#  The 1 application cannot be run in Win32 mode.
#
ERROR_CHILD_NOT_COMPLETE        = 129

#
# MessageId: ERROR_DIRECT_ACCESS_HANDLE
#
# MessageText:
#
#  Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O.
#
ERROR_DIRECT_ACCESS_HANDLE      = 130

#
# MessageId: ERROR_NEGATIVE_SEEK
#
# MessageText:
#
#  An attempt was made to move the file pointer before the beginning of the file.
#
ERROR_NEGATIVE_SEEK             = 131

#
# MessageId: ERROR_SEEK_ON_DEVICE
#
# MessageText:
#
#  The file pointer cannot be set on the specified device or file.
#
ERROR_SEEK_ON_DEVICE            = 132

#
# MessageId: ERROR_IS_JOIN_TARGET
#
# MessageText:
#
#  A JOIN or SUBST command cannot be used for a drive that contains previously joined drives.
#
ERROR_IS_JOIN_TARGET            = 133

#
# MessageId: ERROR_IS_JOINED
#
# MessageText:
#
#  An attempt was made to use a JOIN or SUBST command on a drive that has already been joined.
#
ERROR_IS_JOINED                 = 134

#
# MessageId: ERROR_IS_SUBSTED
#
# MessageText:
#
#  An attempt was made to use a JOIN or SUBST command on a drive that has already been substituted.
#
ERROR_IS_SUBSTED                = 135

#
# MessageId: ERROR_NOT_JOINED
#
# MessageText:
#
#  The system tried to delete the JOIN of a drive that is not joined.
#
ERROR_NOT_JOINED                = 136

#
# MessageId: ERROR_NOT_SUBSTED
#
# MessageText:
#
#  The system tried to delete the substitution of a drive that is not substituted.
#
ERROR_NOT_SUBSTED               = 137

#
# MessageId: ERROR_JOIN_TO_JOIN
#
# MessageText:
#
#  The system tried to join a drive to a directory on a joined drive.
#
ERROR_JOIN_TO_JOIN              = 138

#
# MessageId: ERROR_SUBST_TO_SUBST
#
# MessageText:
#
#  The system tried to substitute a drive to a directory on a substituted drive.
#
ERROR_SUBST_TO_SUBST            = 139

#
# MessageId: ERROR_JOIN_TO_SUBST
#
# MessageText:
#
#  The system tried to join a drive to a directory on a substituted drive.
#
ERROR_JOIN_TO_SUBST             = 140

#
# MessageId: ERROR_SUBST_TO_JOIN
#
# MessageText:
#
#  The system tried to SUBST a drive to a directory on a joined drive.
#
ERROR_SUBST_TO_JOIN             = 141

#
# MessageId: ERROR_BUSY_DRIVE
#
# MessageText:
#
#  The system cannot perform a JOIN or SUBST at this time.
#
ERROR_BUSY_DRIVE                = 142

#
# MessageId: ERROR_SAME_DRIVE
#
# MessageText:
#
#  The system cannot join or substitute a drive to or for a directory on the same drive.
#
ERROR_SAME_DRIVE                = 143

#
# MessageId: ERROR_DIR_NOT_ROOT
#
# MessageText:
#
#  The directory is not a subdirectory of the root directory.
#
ERROR_DIR_NOT_ROOT              = 144

#
# MessageId: ERROR_DIR_NOT_EMPTY
#
# MessageText:
#
#  The directory is not empty.
#
ERROR_DIR_NOT_EMPTY             = 145

#
# MessageId: ERROR_IS_SUBST_PATH
#
# MessageText:
#
#  The path specified is being used in a substitute.
#
ERROR_IS_SUBST_PATH             = 146

#
# MessageId: ERROR_IS_JOIN_PATH
#
# MessageText:
#
#  Not enough resources are available to process this command.
#
ERROR_IS_JOIN_PATH              = 147

#
# MessageId: ERROR_PATH_BUSY
#
# MessageText:
#
#  The path specified cannot be used at this time.
#
ERROR_PATH_BUSY                 = 148

#
# MessageId: ERROR_IS_SUBST_TARGET
#
# MessageText:
#
#  An attempt was made to join or substitute a drive for which a directory on the drive is the target of a previous substitute.
#
ERROR_IS_SUBST_TARGET           = 149

#
# MessageId: ERROR_SYSTEM_TRACE
#
# MessageText:
#
#  System trace information was not specified in your CONFIG.SYS file, or tracing is disallowed.
#
ERROR_SYSTEM_TRACE              = 150

#
# MessageId: ERROR_INVALID_EVENT_COUNT
#
# MessageText:
#
#  The number of specified semaphore events for DosMuxSemWait is not correct.
#
ERROR_INVALID_EVENT_COUNT       = 151

#
# MessageId: ERROR_TOO_MANY_MUXWAITERS
#
# MessageText:
#
#  DosMuxSemWait did not execute; too many semaphores are already set.
#
ERROR_TOO_MANY_MUXWAITERS       = 152

#
# MessageId: ERROR_INVALID_LIST_FORMAT
#
# MessageText:
#
#  The DosMuxSemWait list is not correct.
#
ERROR_INVALID_LIST_FORMAT       = 153

#
# MessageId: ERROR_LABEL_TOO_LONG
#
# MessageText:
#
#  The volume label you entered exceeds the label character limit of the target file system.
#
ERROR_LABEL_TOO_LONG            = 154

#
# MessageId: ERROR_TOO_MANY_TCBS
#
# MessageText:
#
#  Cannot create another thread.
#
ERROR_TOO_MANY_TCBS             = 155

#
# MessageId: ERROR_SIGNAL_REFUSED
#
# MessageText:
#
#  The recipient process has refused the signal.
#
ERROR_SIGNAL_REFUSED            = 156

#
# MessageId: ERROR_DISCARDED
#
# MessageText:
#
#  The segment is already discarded and cannot be locked.
#
ERROR_DISCARDED                 = 157

#
# MessageId: ERROR_NOT_LOCKED
#
# MessageText:
#
#  The segment is already unlocked.
#
ERROR_NOT_LOCKED                = 158

#
# MessageId: ERROR_BAD_THREADID_ADDR
#
# MessageText:
#
#  The address for the thread ID is not correct.
#
ERROR_BAD_THREADID_ADDR         = 159

#
# MessageId: ERROR_BAD_ARGUMENTS
#
# MessageText:
#
#  One or more arguments are not correct.
#
ERROR_BAD_ARGUMENTS             = 160

#
# MessageId: ERROR_BAD_PATHNAME
#
# MessageText:
#
#  The specified path is invalid.
#
ERROR_BAD_PATHNAME              = 161

#
# MessageId: ERROR_SIGNAL_PENDING
#
# MessageText:
#
#  A signal is already pending.
#
ERROR_SIGNAL_PENDING            = 162

#
# MessageId: ERROR_MAX_THRDS_REACHED
#
# MessageText:
#
#  No more threads can be created in the system.
#
ERROR_MAX_THRDS_REACHED         = 164

#
# MessageId: ERROR_LOCK_FAILED
#
# MessageText:
#
#  Unable to lock a region of a file.
#
ERROR_LOCK_FAILED               = 167

#
# MessageId: ERROR_BUSY
#
# MessageText:
#
#  The requested resource is in use.
#
ERROR_BUSY                      = 170    # dderror

#
# MessageId: ERROR_CANCEL_VIOLATION
#
# MessageText:
#
#  A lock request was not outstanding for the supplied cancel region.
#
ERROR_CANCEL_VIOLATION          = 173

#
# MessageId: ERROR_ATOMIC_LOCKS_NOT_SUPPORTED
#
# MessageText:
#
#  The file system does not support atomic changes to the lock type.
#
ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174

#
# MessageId: ERROR_INVALID_SEGMENT_NUMBER
#
# MessageText:
#
#  The system detected a segment number that was not correct.
#
ERROR_INVALID_SEGMENT_NUMBER    = 180

#
# MessageId: ERROR_INVALID_ORDINAL
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INVALID_ORDINAL           = 182

#
# MessageId: ERROR_ALREADY_EXISTS
#
# MessageText:
#
#  Cannot create a file when that file already exists.
#
ERROR_ALREADY_EXISTS            = 183

#
# MessageId: ERROR_INVALID_FLAG_NUMBER
#
# MessageText:
#
#  The flag passed is not correct.
#
ERROR_INVALID_FLAG_NUMBER       = 186

#
# MessageId: ERROR_SEM_NOT_FOUND
#
# MessageText:
#
#  The specified system semaphore name was not found.
#
ERROR_SEM_NOT_FOUND             = 187

#
# MessageId: ERROR_INVALID_STARTING_CODESEG
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INVALID_STARTING_CODESEG  = 188

#
# MessageId: ERROR_INVALID_STACKSEG
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INVALID_STACKSEG          = 189

#
# MessageId: ERROR_INVALID_MODULETYPE
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INVALID_MODULETYPE        = 190

#
# MessageId: ERROR_INVALID_EXE_SIGNATURE
#
# MessageText:
#
#  Cannot run 1 in Win32 mode.
#
ERROR_INVALID_EXE_SIGNATURE     = 191

#
# MessageId: ERROR_EXE_MARKED_INVALID
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_EXE_MARKED_INVALID        = 192

#
# MessageId: ERROR_BAD_EXE_FORMAT
#
# MessageText:
#
#  1 is not a valid Win32 application.
#
ERROR_BAD_EXE_FORMAT            = 193

#
# MessageId: ERROR_ITERATED_DATA_EXCEEDS_64k
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_ITERATED_DATA_EXCEEDS_64k = 194

#
# MessageId: ERROR_INVALID_MINALLOCSIZE
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INVALID_MINALLOCSIZE      = 195

#
# MessageId: ERROR_DYNLINK_FROM_INVALID_RING
#
# MessageText:
#
#  The operating system cannot run this application program.
#
ERROR_DYNLINK_FROM_INVALID_RING = 196

#
# MessageId: ERROR_IOPL_NOT_ENABLED
#
# MessageText:
#
#  The operating system is not presently configured to run this application.
#
ERROR_IOPL_NOT_ENABLED          = 197

#
# MessageId: ERROR_INVALID_SEGDPL
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INVALID_SEGDPL            = 198

#
# MessageId: ERROR_AUTODATASEG_EXCEEDS_64k
#
# MessageText:
#
#  The operating system cannot run this application program.
#
ERROR_AUTODATASEG_EXCEEDS_64k   = 199

#
# MessageId: ERROR_RING2SEG_MUST_BE_MOVABLE
#
# MessageText:
#
#  The code segment cannot be greater than or equal to 64K.
#
ERROR_RING2SEG_MUST_BE_MOVABLE  = 200

#
# MessageId: ERROR_RELOC_CHAIN_XEEDS_SEGLIM
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_RELOC_CHAIN_XEEDS_SEGLIM  = 201

#
# MessageId: ERROR_INFLOOP_IN_RELOC_CHAIN
#
# MessageText:
#
#  The operating system cannot run 1.
#
ERROR_INFLOOP_IN_RELOC_CHAIN    = 202

#
# MessageId: ERROR_ENVVAR_NOT_FOUND
#
# MessageText:
#
#  The system could not find the environment option that was entered.
#
ERROR_ENVVAR_NOT_FOUND          = 203

#
# MessageId: ERROR_NO_SIGNAL_SENT
#
# MessageText:
#
#  No process in the command subtree has a signal handler.
#
ERROR_NO_SIGNAL_SENT            = 205

#
# MessageId: ERROR_FILENAME_EXCED_RANGE
#
# MessageText:
#
#  The filename or extension is too long.
#
ERROR_FILENAME_EXCED_RANGE      = 206

#
# MessageId: ERROR_RING2_STACK_IN_USE
#
# MessageText:
#
#  The ring 2 stack is in use.
#
ERROR_RING2_STACK_IN_USE        = 207

#
# MessageId: ERROR_META_EXPANSION_TOO_LONG
#
# MessageText:
#
#  The global filename characters, * or , are entered incorrectly or too many global filename characters are specified.
#
ERROR_META_EXPANSION_TOO_LONG   = 208

#
# MessageId: ERROR_INVALID_SIGNAL_NUMBER
#
# MessageText:
#
#  The signal being posted is not correct.
#
ERROR_INVALID_SIGNAL_NUMBER     = 209

#
# MessageId: ERROR_THREAD_1_INACTIVE
#
# MessageText:
#
#  The signal handler cannot be set.
#
ERROR_THREAD_1_INACTIVE         = 210

#
# MessageId: ERROR_LOCKED
#
# MessageText:
#
#  The segment is locked and cannot be reallocated.
#
ERROR_LOCKED                    = 212

#
# MessageId: ERROR_TOO_MANY_MODULES
#
# MessageText:
#
#  Too many dynamic-link modules are attached to this program or dynamic-link module.
#
ERROR_TOO_MANY_MODULES          = 214

#
# MessageId: ERROR_NESTING_NOT_ALLOWED
#
# MessageText:
#
#  Cannot nest calls to LoadModule.
#
ERROR_NESTING_NOT_ALLOWED       = 215

#
# MessageId: ERROR_EXE_MACHINE_TYPE_MISMATCH
#
# MessageText:
#
#  The image file 1 is valid, but is for a machine type other than the current machine.
#
ERROR_EXE_MACHINE_TYPE_MISMATCH = 216

#
# MessageId: ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY
#
# MessageText:
#
#  The image file 1 is signed, unable to modify.
#
ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY = 217

#
# MessageId: ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY
#
# MessageText:
#
#  The image file 1 is strong signed, unable to modify.
#
ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY = 218

#
# MessageId: ERROR_BAD_PIPE
#
# MessageText:
#
#  The pipe state is invalid.
#
ERROR_BAD_PIPE                  = 230

#
# MessageId: ERROR_PIPE_BUSY
#
# MessageText:
#
#  All pipe instances are busy.
#
ERROR_PIPE_BUSY                 = 231

#
# MessageId: ERROR_NO_DATA
#
# MessageText:
#
#  The pipe is being closed.
#
ERROR_NO_DATA                   = 232

#
# MessageId: ERROR_PIPE_NOT_CONNECTED
#
# MessageText:
#
#  No process is on the other end of the pipe.
#
ERROR_PIPE_NOT_CONNECTED        = 233

#
# MessageId: ERROR_MORE_DATA
#
# MessageText:
#
#  More data is available.
#
ERROR_MORE_DATA                 = 234    # dderror

#
# MessageId: ERROR_VC_DISCONNECTED
#
# MessageText:
#
#  The session was canceled.
#
ERROR_VC_DISCONNECTED           = 240

#
# MessageId: ERROR_INVALID_EA_NAME
#
# MessageText:
#
#  The specified extended attribute name was invalid.
#
ERROR_INVALID_EA_NAME           = 254

#
# MessageId: ERROR_EA_LIST_INCONSISTENT
#
# MessageText:
#
#  The extended attributes are inconsistent.
#
ERROR_EA_LIST_INCONSISTENT      = 255

#
# MessageId: WAIT_TIMEOUT
#
# MessageText:
#
#  The wait operation timed out.
#
WAIT_TIMEOUT                    = 258    # dderror

#
# MessageId: ERROR_NO_MORE_ITEMS
#
# MessageText:
#
#  No more data is available.
#
ERROR_NO_MORE_ITEMS             = 259

#
# MessageId: ERROR_CANNOT_COPY
#
# MessageText:
#
#  The copy functions cannot be used.
#
ERROR_CANNOT_COPY               = 266

#
# MessageId: ERROR_DIRECTORY
#
# MessageText:
#
#  The directory name is invalid.
#
ERROR_DIRECTORY                 = 267

#
# MessageId: ERROR_EAS_DIDNT_FIT
#
# MessageText:
#
#  The extended attributes did not fit in the buffer.
#
ERROR_EAS_DIDNT_FIT             = 275

#
# MessageId: ERROR_EA_FILE_CORRUPT
#
# MessageText:
#
#  The extended attribute file on the mounted file system is corrupt.
#
ERROR_EA_FILE_CORRUPT           = 276

#
# MessageId: ERROR_EA_TABLE_FULL
#
# MessageText:
#
#  The extended attribute table file is full.
#
ERROR_EA_TABLE_FULL             = 277

#
# MessageId: ERROR_INVALID_EA_HANDLE
#
# MessageText:
#
#  The specified extended attribute handle is invalid.
#
ERROR_INVALID_EA_HANDLE         = 278

#
# MessageId: ERROR_EAS_NOT_SUPPORTED
#
# MessageText:
#
#  The mounted file system does not support extended attributes.
#
ERROR_EAS_NOT_SUPPORTED         = 282

#
# MessageId: ERROR_NOT_OWNER
#
# MessageText:
#
#  Attempt to release mutex not owned by caller.
#
ERROR_NOT_OWNER                 = 288

#
# MessageId: ERROR_TOO_MANY_POSTS
#
# MessageText:
#
#  Too many posts were made to a semaphore.
#
ERROR_TOO_MANY_POSTS            = 298

#
# MessageId: ERROR_PARTIAL_COPY
#
# MessageText:
#
#  Only part of a ReadProcessMemory or WriteProcessMemory request was completed.
#
ERROR_PARTIAL_COPY              = 299

#
# MessageId: ERROR_OPLOCK_NOT_GRANTED
#
# MessageText:
#
#  The oplock request is denied.
#
ERROR_OPLOCK_NOT_GRANTED        = 300

#
# MessageId: ERROR_INVALID_OPLOCK_PROTOCOL
#
# MessageText:
#
#  An invalid oplock acknowledgment was received by the system.
#
ERROR_INVALID_OPLOCK_PROTOCOL   = 301

#
# MessageId: ERROR_DISK_TOO_FRAGMENTED
#
# MessageText:
#
#  The volume is too fragmented to complete this operation.
#
ERROR_DISK_TOO_FRAGMENTED       = 302

#
# MessageId: ERROR_DELETE_PENDING
#
# MessageText:
#
#  The file cannot be opened because it is in the process of being deleted.
#
ERROR_DELETE_PENDING            = 303

#
# MessageId: ERROR_MR_MID_NOT_FOUND
#
# MessageText:
#
#  The system cannot find message text for message number= 0x01 in the message file for 2.
#
ERROR_MR_MID_NOT_FOUND          = 317

#
# MessageId: ERROR_SCOPE_NOT_FOUND
#
# MessageText:
#
#  The scope specified was not found.
#
ERROR_SCOPE_NOT_FOUND           = 318

#
# MessageId: ERROR_INVALID_ADDRESS
#
# MessageText:
#
#  Attempt to access invalid address.
#
ERROR_INVALID_ADDRESS           = 487

#
# MessageId: ERROR_ARITHMETIC_OVERFLOW
#
# MessageText:
#
#  Arithmetic result exceeded 32 bits.
#
ERROR_ARITHMETIC_OVERFLOW       = 534

#
# MessageId: ERROR_PIPE_CONNECTED
#
# MessageText:
#
#  There is a process on other end of the pipe.
#
ERROR_PIPE_CONNECTED            = 535

#
# MessageId: ERROR_PIPE_LISTENING
#
# MessageText:
#
#  Waiting for a process to open the other end of the pipe.
#
ERROR_PIPE_LISTENING            = 536

#
# MessageId: ERROR_EA_ACCESS_DENIED
#
# MessageText:
#
#  Access to the extended attribute was denied.
#
ERROR_EA_ACCESS_DENIED          = 994

#
# MessageId: ERROR_OPERATION_ABORTED
#
# MessageText:
#
#  The I/O operation has been aborted because of either a thread exit or an application request.
#
ERROR_OPERATION_ABORTED         = 995

#
# MessageId: ERROR_IO_INCOMPLETE
#
# MessageText:
#
#  Overlapped I/O event is not in a signaled state.
#
ERROR_IO_INCOMPLETE             = 996

#
# MessageId: ERROR_IO_PENDING
#
# MessageText:
#
#  Overlapped I/O operation is in progress.
#
ERROR_IO_PENDING                = 997    # dderror

#
# MessageId: ERROR_NOACCESS
#
# MessageText:
#
#  Invalid access to memory location.
#
ERROR_NOACCESS                  = 998

#
# MessageId: ERROR_SWAPERROR
#
# MessageText:
#
#  Error performing inpage operation.
#
ERROR_SWAPERROR                 = 999

#
# MessageId: ERROR_STACK_OVERFLOW
#
# MessageText:
#
#  Recursion too deep; the stack overflowed.
#
ERROR_STACK_OVERFLOW            = 1001

#
# MessageId: ERROR_INVALID_MESSAGE
#
# MessageText:
#
#  The window cannot act on the sent message.
#
ERROR_INVALID_MESSAGE           = 1002

#
# MessageId: ERROR_CAN_NOT_COMPLETE
#
# MessageText:
#
#  Cannot complete this function.
#
ERROR_CAN_NOT_COMPLETE          = 1003

#
# MessageId: ERROR_INVALID_FLAGS
#
# MessageText:
#
#  Invalid flags.
#
ERROR_INVALID_FLAGS             = 1004

#
# MessageId: ERROR_UNRECOGNIZED_VOLUME
#
# MessageText:
#
#  The volume does not contain a recognized file system.
#  Please make sure that all required file system drivers are loaded and that the volume is not corrupted.
#
ERROR_UNRECOGNIZED_VOLUME       = 1005

#
# MessageId: ERROR_FILE_INVALID
#
# MessageText:
#
#  The volume for a file has been externally altered so that the opened file is no longer valid.
#
ERROR_FILE_INVALID              = 1006

#
# MessageId: ERROR_FULLSCREEN_MODE
#
# MessageText:
#
#  The requested operation cannot be performed in full-screen mode.
#
ERROR_FULLSCREEN_MODE           = 1007

#
# MessageId: ERROR_NO_TOKEN
#
# MessageText:
#
#  An attempt was made to reference a token that does not exist.
#
ERROR_NO_TOKEN                  = 1008

#
# MessageId: ERROR_BADDB
#
# MessageText:
#
#  The configuration registry database is corrupt.
#
ERROR_BADDB                     = 1009

#
# MessageId: ERROR_BADKEY
#
# MessageText:
#
#  The configuration registry key is invalid.
#
ERROR_BADKEY                    = 1010

#
# MessageId: ERROR_CANTOPEN
#
# MessageText:
#
#  The configuration registry key could not be opened.
#
ERROR_CANTOPEN                  = 1011

#
# MessageId: ERROR_CANTREAD
#
# MessageText:
#
#  The configuration registry key could not be read.
#
ERROR_CANTREAD                  = 1012

#
# MessageId: ERROR_CANTWRITE
#
# MessageText:
#
#  The configuration registry key could not be written.
#
ERROR_CANTWRITE                 = 1013

#
# MessageId: ERROR_REGISTRY_RECOVERED
#
# MessageText:
#
#  One of the files in the registry database had to be recovered by use of a log or alternate copy. The recovery was successful.
#
ERROR_REGISTRY_RECOVERED        = 1014

#
# MessageId: ERROR_REGISTRY_CORRUPT
#
# MessageText:
#
#  The registry is corrupted. The structure of one of the files containing registry data is corrupted, or the system#s memory image of the file is corrupted, or the file could not be recovered because the alternate copy or log was absent or corrupted.
#
ERROR_REGISTRY_CORRUPT          = 1015

#
# MessageId:= ERROR_REGISTRY_IO_FAILED
#
# MessageText:
#
#  An I/O operation initiated by the registry failed unrecoverably. The registry could not read in, or write out, or flush, one of the files that contain the system#s image of the registry.
#
ERROR_REGISTRY_IO_FAILED        = 1016

#
# MessageId: ERROR_NOT_REGISTRY_FILE
#
# MessageText:
#
#  The system has attempted to load or restore a file into the registry, but the specified file is not in a registry file format.
#
ERROR_NOT_REGISTRY_FILE         = 1017

#
# MessageId: ERROR_KEY_DELETED
#
# MessageText:
#
#  Illegal operation attempted on a registry key that has been marked for deletion.
#
ERROR_KEY_DELETED               = 1018

#
# MessageId: ERROR_NO_LOG_SPACE
#
# MessageText:
#
#  System could not allocate the required space in a registry log.
#
ERROR_NO_LOG_SPACE              = 1019

#
# MessageId: ERROR_KEY_HAS_CHILDREN
#
# MessageText:
#
#  Cannot create a symbolic link in a registry key that already has subkeys or values.
#
ERROR_KEY_HAS_CHILDREN          = 1020

#
# MessageId: ERROR_CHILD_MUST_BE_VOLATILE
#
# MessageText:
#
#  Cannot create a stable subkey under a volatile parent key.
#
ERROR_CHILD_MUST_BE_VOLATILE    = 1021

#
# MessageId: ERROR_NOTIFY_ENUM_DIR
#
# MessageText:
#
#  A notify change request is being completed and the information is not being returned in the caller#s buffer. The caller now needs to enumerate the files to find the changes.
#
ERROR_NOTIFY_ENUM_DIR           = 1022

#
# MessageId: ERROR_DEPENDENT_SERVICES_RUNNING
#
# MessageText:
#
#  A stop control has been sent to a service that other running services are dependent on.
#
ERROR_DEPENDENT_SERVICES_RUNNING = 1051

#
# MessageId: ERROR_INVALID_SERVICE_CONTROL
#
# MessageText:
#
#  The requested control is not valid for this service.
#
ERROR_INVALID_SERVICE_CONTROL   = 1052

#
# MessageId: ERROR_SERVICE_REQUEST_TIMEOUT
#
# MessageText:
#
#  The service did not respond to the start or control request in a timely fashion.
#
ERROR_SERVICE_REQUEST_TIMEOUT   = 1053

#
# MessageId: ERROR_SERVICE_NO_THREAD
#
# MessageText:
#
#  A thread could not be created for the service.
#
ERROR_SERVICE_NO_THREAD         = 1054

#
# MessageId: ERROR_SERVICE_DATABASE_LOCKED
#
# MessageText:
#
#  The service database is locked.
#
ERROR_SERVICE_DATABASE_LOCKED   = 1055

#
# MessageId: ERROR_SERVICE_ALREADY_RUNNING
#
# MessageText:
#
#  An instance of the service is already running.
#
ERROR_SERVICE_ALREADY_RUNNING   = 1056

#
# MessageId: ERROR_INVALID_SERVICE_ACCOUNT
#
# MessageText:
#
#  The account name is invalid or does not exist, or the password is invalid for the account name specified.
#
ERROR_INVALID_SERVICE_ACCOUNT   = 1057

#
# MessageId: ERROR_SERVICE_DISABLED
#
# MessageText:
#
#  The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
#
ERROR_SERVICE_DISABLED          = 1058

#
# MessageId: ERROR_CIRCULAR_DEPENDENCY
#
# MessageText:
#
#  Circular service dependency was specified.
#
ERROR_CIRCULAR_DEPENDENCY       = 1059

#
# MessageId: ERROR_SERVICE_DOES_NOT_EXIST
#
# MessageText:
#
#  The specified service does not exist as an installed service.
#
ERROR_SERVICE_DOES_NOT_EXIST    = 1060

#
# MessageId: ERROR_SERVICE_CANNOT_ACCEPT_CTRL
#
# MessageText:
#
#  The service cannot accept control messages at this time.
#
ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061

#
# MessageId: ERROR_SERVICE_NOT_ACTIVE
#
# MessageText:
#
#  The service has not been started.
#
ERROR_SERVICE_NOT_ACTIVE        = 1062

#
# MessageId: ERROR_FAILED_SERVICE_CONTROLLER_CONNECT
#
# MessageText:
#
#  The service process could not connect to the service controller.
#
ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063

#
# MessageId: ERROR_EXCEPTION_IN_SERVICE
#
# MessageText:
#
#  An exception occurred in the service when handling the control request.
#
ERROR_EXCEPTION_IN_SERVICE      = 1064

#
# MessageId: ERROR_DATABASE_DOES_NOT_EXIST
#
# MessageText:
#
#  The database specified does not exist.
#
ERROR_DATABASE_DOES_NOT_EXIST   = 1065

#
# MessageId: ERROR_SERVICE_SPECIFIC_ERROR
#
# MessageText:
#
#  The service has returned a service-specific error code.
#
ERROR_SERVICE_SPECIFIC_ERROR    = 1066

#
# MessageId: ERROR_PROCESS_ABORTED
#
# MessageText:
#
#  The process terminated unexpectedly.
#
ERROR_PROCESS_ABORTED           = 1067

#
# MessageId: ERROR_SERVICE_DEPENDENCY_FAIL
#
# MessageText:
#
#  The dependency service or group failed to start.
#
ERROR_SERVICE_DEPENDENCY_FAIL   = 1068

#
# MessageId: ERROR_SERVICE_LOGON_FAILED
#
# MessageText:
#
#  The service did not start due to a logon failure.
#
ERROR_SERVICE_LOGON_FAILED      = 1069

#
# MessageId: ERROR_SERVICE_START_HANG
#
# MessageText:
#
#  After starting, the service hung in a start-pending state.
#
ERROR_SERVICE_START_HANG        = 1070

#
# MessageId: ERROR_INVALID_SERVICE_LOCK
#
# MessageText:
#
#  The specified service database lock is invalid.
#
ERROR_INVALID_SERVICE_LOCK      = 1071

#
# MessageId: ERROR_SERVICE_MARKED_FOR_DELETE
#
# MessageText:
#
#  The specified service has been marked for deletion.
#
ERROR_SERVICE_MARKED_FOR_DELETE = 1072

#
# MessageId: ERROR_SERVICE_EXISTS
#
# MessageText:
#
#  The specified service already exists.
#
ERROR_SERVICE_EXISTS            = 1073

#
# MessageId: ERROR_ALREADY_RUNNING_LKG
#
# MessageText:
#
#  The system is currently running with the last-known-good configuration.
#
ERROR_ALREADY_RUNNING_LKG       = 1074

#
# MessageId: ERROR_SERVICE_DEPENDENCY_DELETED
#
# MessageText:
#
#  The dependency service does not exist or has been marked for deletion.
#
ERROR_SERVICE_DEPENDENCY_DELETED = 1075

#
# MessageId: ERROR_BOOT_ALREADY_ACCEPTED
#
# MessageText:
#
#  The current boot has already been accepted for use as the last-known-good control set.
#
ERROR_BOOT_ALREADY_ACCEPTED     = 1076

#
# MessageId: ERROR_SERVICE_NEVER_STARTED
#
# MessageText:
#
#  No attempts to start the service have been made since the last boot.
#
ERROR_SERVICE_NEVER_STARTED     = 1077

#
# MessageId: ERROR_DUPLICATE_SERVICE_NAME
#
# MessageText:
#
#  The name is already in use as either a service name or a service display name.
#
ERROR_DUPLICATE_SERVICE_NAME    = 1078

#
# MessageId: ERROR_DIFFERENT_SERVICE_ACCOUNT
#
# MessageText:
#
#  The account specified for this service is different from the account specified for other services running in the same process.
#
ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079

#
# MessageId: ERROR_CANNOT_DETECT_DRIVER_FAILURE
#
# MessageText:
#
#  Failure actions can only be set for Win32 services, not for drivers.
#
ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080

#
# MessageId: ERROR_CANNOT_DETECT_PROCESS_ABORT
#
# MessageText:
#
#  This service runs in the same process as the service control manager.
#  Therefore, the service control manager cannot take action if this service#s process terminates unexpectedly.
#
ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081

#
# MessageId: ERROR_NO_RECOVERY_PROGRAM
#
# MessageText:
#
#  No recovery program has been configured for this service.
#
ERROR_NO_RECOVERY_PROGRAM       = 1082

#
# MessageId: ERROR_SERVICE_NOT_IN_EXE
#
# MessageText:
#
#  The executable program that this service is configured to run in does not implement the service.
#
ERROR_SERVICE_NOT_IN_EXE        = 1083

#
# MessageId: ERROR_NOT_SAFEBOOT_SERVICE
#
# MessageText:
#
#  This service cannot be started in Safe Mode
#
ERROR_NOT_SAFEBOOT_SERVICE      = 1084

#
# MessageId: ERROR_END_OF_MEDIA
#
# MessageText:
#
#  The physical end of the tape has been reached.
#
ERROR_END_OF_MEDIA              = 1100

#
# MessageId: ERROR_FILEMARK_DETECTED
#
# MessageText:
#
#  A tape access reached a filemark.
#
ERROR_FILEMARK_DETECTED         = 1101

#
# MessageId: ERROR_BEGINNING_OF_MEDIA
#
# MessageText:
#
#  The beginning of the tape or a partition was encountered.
#
ERROR_BEGINNING_OF_MEDIA        = 1102

#
# MessageId: ERROR_SETMARK_DETECTED
#
# MessageText:
#
#  A tape access reached the end of a set of files.
#
ERROR_SETMARK_DETECTED          = 1103

#
# MessageId: ERROR_NO_DATA_DETECTED
#
# MessageText:
#
#  No more data is on the tape.
#
ERROR_NO_DATA_DETECTED          = 1104

#
# MessageId: ERROR_PARTITION_FAILURE
#
# MessageText:
#
#  Tape could not be partitioned.
#
ERROR_PARTITION_FAILURE         = 1105

#
# MessageId: ERROR_INVALID_BLOCK_LENGTH
#
# MessageText:
#
#  When accessing a new tape of a multivolume partition, the current block size is incorrect.
#
ERROR_INVALID_BLOCK_LENGTH      = 1106

#
# MessageId: ERROR_DEVICE_NOT_PARTITIONED
#
# MessageText:
#
#  Tape partition information could not be found when loading a tape.
#
ERROR_DEVICE_NOT_PARTITIONED    = 1107

#
# MessageId: ERROR_UNABLE_TO_LOCK_MEDIA
#
# MessageText:
#
#  Unable to lock the media eject mechanism.
#
ERROR_UNABLE_TO_LOCK_MEDIA      = 1108

#
# MessageId: ERROR_UNABLE_TO_UNLOAD_MEDIA
#
# MessageText:
#
#  Unable to unload the media.
#
ERROR_UNABLE_TO_UNLOAD_MEDIA    = 1109

#
# MessageId: ERROR_MEDIA_CHANGED
#
# MessageText:
#
#  The media in the drive may have changed.
#
ERROR_MEDIA_CHANGED             = 1110

#
# MessageId: ERROR_BUS_RESET
#
# MessageText:
#
#  The I/O bus was reset.
#
ERROR_BUS_RESET                 = 1111

#
# MessageId: ERROR_NO_MEDIA_IN_DRIVE
#
# MessageText:
#
#  No media in drive.
#
ERROR_NO_MEDIA_IN_DRIVE         = 1112

#
# MessageId: ERROR_NO_UNICODE_TRANSLATION
#
# MessageText:
#
#  No mapping for the Unicode character exists in the target multi-byte code page.
#
ERROR_NO_UNICODE_TRANSLATION    = 1113

#
# MessageId: ERROR_DLL_INIT_FAILED
#
# MessageText:
#
#  A dynamic link library (DLL) initialization routine failed.
#
ERROR_DLL_INIT_FAILED           = 1114

#
# MessageId: ERROR_SHUTDOWN_IN_PROGRESS
#
# MessageText:
#
#  A system shutdown is in progress.
#
ERROR_SHUTDOWN_IN_PROGRESS      = 1115

#
# MessageId: ERROR_NO_SHUTDOWN_IN_PROGRESS
#
# MessageText:
#
#  Unable to abort the system shutdown because no shutdown was in progress.
#
ERROR_NO_SHUTDOWN_IN_PROGRESS   = 1116

#
# MessageId: ERROR_IO_DEVICE
#
# MessageText:
#
#  The request could not be performed because of an I/O device error.
#
ERROR_IO_DEVICE                 = 1117

#
# MessageId: ERROR_SERIAL_NO_DEVICE
#
# MessageText:
#
#  No serial device was successfully initialized. The serial driver will unload.
#
ERROR_SERIAL_NO_DEVICE          = 1118

#
# MessageId: ERROR_IRQ_BUSY
#
# MessageText:
#
#  Unable to open a device that was sharing an interrupt request (IRQ) with other devices. At least one other device that uses that IRQ was already opened.
#
ERROR_IRQ_BUSY                  = 1119

#
# MessageId: ERROR_MORE_WRITES
#
# MessageText:
#
#  A serial I/O operation was completed by another write to the serial port.
#  (The IOCTL_SERIAL_XOFF_COUNTER reached zero.)
#
ERROR_MORE_WRITES               = 1120

#
# MessageId: ERROR_COUNTER_TIMEOUT
#
# MessageText:
#
#  A serial I/O operation completed because the timeout period expired.
#  (The IOCTL_SERIAL_XOFF_COUNTER did not reach zero.)
#
ERROR_COUNTER_TIMEOUT           = 1121

#
# MessageId: ERROR_FLOPPY_ID_MARK_NOT_FOUND
#
# MessageText:
#
#  No ID address mark was found on the floppy disk.
#
ERROR_FLOPPY_ID_MARK_NOT_FOUND  = 1122

#
# MessageId: ERROR_FLOPPY_WRONG_CYLINDER
#
# MessageText:
#
#  Mismatch between the floppy disk sector ID field and the floppy disk controller track address.
#
ERROR_FLOPPY_WRONG_CYLINDER     = 1123

#
# MessageId: ERROR_FLOPPY_UNKNOWN_ERROR
#
# MessageText:
#
#  The floppy disk controller reported an error that is not recognized by the floppy disk driver.
#
ERROR_FLOPPY_UNKNOWN_ERROR      = 1124

#
# MessageId: ERROR_FLOPPY_BAD_REGISTERS
#
# MessageText:
#
#  The floppy disk controller returned inconsistent results in its registers.
#
ERROR_FLOPPY_BAD_REGISTERS      = 1125

#
# MessageId: ERROR_DISK_RECALIBRATE_FAILED
#
# MessageText:
#
#  While accessing the hard disk, a recalibrate operation failed, even after retries.
#
ERROR_DISK_RECALIBRATE_FAILED   = 1126

#
# MessageId: ERROR_DISK_OPERATION_FAILED
#
# MessageText:
#
#  While accessing the hard disk, a disk operation failed even after retries.
#
ERROR_DISK_OPERATION_FAILED     = 1127

#
# MessageId: ERROR_DISK_RESET_FAILED
#
# MessageText:
#
#  While accessing the hard disk, a disk controller reset was needed, but even that failed.
#
ERROR_DISK_RESET_FAILED         = 1128

#
# MessageId: ERROR_EOM_OVERFLOW
#
# MessageText:
#
#  Physical end of tape encountered.
#
ERROR_EOM_OVERFLOW              = 1129

#
# MessageId: ERROR_NOT_ENOUGH_SERVER_MEMORY
#
# MessageText:
#
#  Not enough server storage is available to process this command.
#
ERROR_NOT_ENOUGH_SERVER_MEMORY  = 1130

#
# MessageId: ERROR_POSSIBLE_DEADLOCK
#
# MessageText:
#
#  A potential deadlock condition has been detected.
#
ERROR_POSSIBLE_DEADLOCK         = 1131

#
# MessageId: ERROR_MAPPED_ALIGNMENT
#
# MessageText:
#
#  The base address or the file offset specified does not have the proper alignment.
#
ERROR_MAPPED_ALIGNMENT          = 1132

#
# MessageId: ERROR_SET_POWER_STATE_VETOED
#
# MessageText:
#
#  An attempt to change the system power state was vetoed by another application or driver.
#
ERROR_SET_POWER_STATE_VETOED    = 1140

#
# MessageId: ERROR_SET_POWER_STATE_FAILED
#
# MessageText:
#
#  The system BIOS failed an attempt to change the system power state.
#
ERROR_SET_POWER_STATE_FAILED    = 1141

#
# MessageId: ERROR_TOO_MANY_LINKS
#
# MessageText:
#
#  An attempt was made to create more links on a file than the file system supports.
#
ERROR_TOO_MANY_LINKS            = 1142

#
# MessageId: ERROR_OLD_WIN_VERSION
#
# MessageText:
#
#  The specified program requires a newer version of Windows.
#
ERROR_OLD_WIN_VERSION           = 1150

#
# MessageId: ERROR_APP_WRONG_OS
#
# MessageText:
#
#  The specified program is not a Windows or MS-DOS program.
#
ERROR_APP_WRONG_OS              = 1151

#
# MessageId: ERROR_SINGLE_INSTANCE_APP
#
# MessageText:
#
#  Cannot start more than one instance of the specified program.
#
ERROR_SINGLE_INSTANCE_APP       = 1152

#
# MessageId: ERROR_RMODE_APP
#
# MessageText:
#
#  The specified program was written for an earlier version of Windows.
#
ERROR_RMODE_APP                 = 1153

#
# MessageId: ERROR_INVALID_DLL
#
# MessageText:
#
#  One of the library files needed to run this application is damaged.
#
ERROR_INVALID_DLL               = 1154

#
# MessageId: ERROR_NO_ASSOCIATION
#
# MessageText:
#
#  No application is associated with the specified file for this operation.
#
ERROR_NO_ASSOCIATION            = 1155

#
# MessageId: ERROR_DDE_FAIL
#
# MessageText:
#
#  An error occurred in sending the command to the application.
#
ERROR_DDE_FAIL                  = 1156

#
# MessageId: ERROR_DLL_NOT_FOUND
#
# MessageText:
#
#  One of the library files needed to run this application cannot be found.
#
ERROR_DLL_NOT_FOUND             = 1157

#
# MessageId: ERROR_NO_MORE_USER_HANDLES
#
# MessageText:
#
#  The current process has used all of its system allowance of handles for Window Manager objects.
#
ERROR_NO_MORE_USER_HANDLES      = 1158

#
# MessageId: ERROR_MESSAGE_SYNC_ONLY
#
# MessageText:
#
#  The message can be used only with synchronous operations.
#
ERROR_MESSAGE_SYNC_ONLY         = 1159

#
# MessageId: ERROR_SOURCE_ELEMENT_EMPTY
#
# MessageText:
#
#  The indicated source element has no media.
#
ERROR_SOURCE_ELEMENT_EMPTY      = 1160

#
# MessageId: ERROR_DESTINATION_ELEMENT_FULL
#
# MessageText:
#
#  The indicated destination element already contains media.
#
ERROR_DESTINATION_ELEMENT_FULL  = 1161

#
# MessageId: ERROR_ILLEGAL_ELEMENT_ADDRESS
#
# MessageText:
#
#  The indicated element does not exist.
#
ERROR_ILLEGAL_ELEMENT_ADDRESS   = 1162

#
# MessageId: ERROR_MAGAZINE_NOT_PRESENT
#
# MessageText:
#
#  The indicated element is part of a magazine that is not present.
#
ERROR_MAGAZINE_NOT_PRESENT      = 1163

#
# MessageId: ERROR_DEVICE_REINITIALIZATION_NEEDED
#
# MessageText:
#
#  The indicated device requires reinitialization due to hardware errors.
#
ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164    # dderror

#
# MessageId: ERROR_DEVICE_REQUIRES_CLEANING
#
# MessageText:
#
#  The device has indicated that cleaning is required before further operations are attempted.
#
ERROR_DEVICE_REQUIRES_CLEANING  = 1165

#
# MessageId: ERROR_DEVICE_DOOR_OPEN
#
# MessageText:
#
#  The device has indicated that its door is open.
#
ERROR_DEVICE_DOOR_OPEN          = 1166

#
# MessageId: ERROR_DEVICE_NOT_CONNECTED
#
# MessageText:
#
#  The device is not connected.
#
ERROR_DEVICE_NOT_CONNECTED      = 1167

#
# MessageId: ERROR_NOT_FOUND
#
# MessageText:
#
#  Element not found.
#
ERROR_NOT_FOUND                 = 1168

#
# MessageId: ERROR_NO_MATCH
#
# MessageText:
#
#  There was no match for the specified key in the index.
#
ERROR_NO_MATCH                  = 1169

#
# MessageId: ERROR_SET_NOT_FOUND
#
# MessageText:
#
#  The property set specified does not exist on the object.
#
ERROR_SET_NOT_FOUND             = 1170

#
# MessageId: ERROR_POINT_NOT_FOUND
#
# MessageText:
#
#  The point passed to GetMouseMovePoints is not in the buffer.
#
ERROR_POINT_NOT_FOUND           = 1171

#
# MessageId: ERROR_NO_TRACKING_SERVICE
#
# MessageText:
#
#  The tracking (workstation) service is not running.
#
ERROR_NO_TRACKING_SERVICE       = 1172

#
# MessageId: ERROR_NO_VOLUME_ID
#
# MessageText:
#
#  The Volume ID could not be found.
#
ERROR_NO_VOLUME_ID              = 1173

#
# MessageId: ERROR_UNABLE_TO_REMOVE_REPLACED
#
# MessageText:
#
#  Unable to remove the file to be replaced.
#
ERROR_UNABLE_TO_REMOVE_REPLACED = 1175

#
# MessageId: ERROR_UNABLE_TO_MOVE_REPLACEMENT
#
# MessageText:
#
#  Unable to move the replacement file to the file to be replaced. The file to be replaced has retained its original name.
#
ERROR_UNABLE_TO_MOVE_REPLACEMENT= 1176

#
# MessageId: ERROR_UNABLE_TO_MOVE_REPLACEMENT_2
#
# MessageText:
#
#  Unable to move the replacement file to the file to be replaced. The file to be replaced has been renamed using the backup name.
#
ERROR_UNABLE_TO_MOVE_REPLACEMENT_2= 1177

#
# MessageId: ERROR_JOURNAL_DELETE_IN_PROGRESS
#
# MessageText:
#
#  The volume change journal is being deleted.
#
ERROR_JOURNAL_DELETE_IN_PROGRESS= 1178

#
# MessageId: ERROR_JOURNAL_NOT_ACTIVE
#
# MessageText:
#
#  The volume change journal is not active.
#
ERROR_JOURNAL_NOT_ACTIVE        = 1179

#
# MessageId: ERROR_POTENTIAL_FILE_FOUND
#
# MessageText:
#
#  A file was found, but it may not be the correct file.
#
ERROR_POTENTIAL_FILE_FOUND      = 1180

#
# MessageId: ERROR_JOURNAL_ENTRY_DELETED
#
# MessageText:
#
#  The journal entry has been deleted from the journal.
#
ERROR_JOURNAL_ENTRY_DELETED     = 1181

#
# MessageId: ERROR_BAD_DEVICE
#
# MessageText:
#
#  The specified device name is invalid.
#
ERROR_BAD_DEVICE                = 1200

#
# MessageId: ERROR_CONNECTION_UNAVAIL
#
# MessageText:
#
#  The device is not currently connected but it is a remembered connection.
#
ERROR_CONNECTION_UNAVAIL        = 1201

#
# MessageId: ERROR_DEVICE_ALREADY_REMEMBERED
#
# MessageText:
#
#  The local device name has a remembered connection to another network resource.
#
ERROR_DEVICE_ALREADY_REMEMBERED = 1202

#
# MessageId: ERROR_NO_NET_OR_BAD_PATH
#
# MessageText:
#
#  No network provider accepted the given network path.
#
ERROR_NO_NET_OR_BAD_PATH        = 1203

#
# MessageId: ERROR_BAD_PROVIDER
#
# MessageText:
#
#  The specified network provider name is invalid.
#
ERROR_BAD_PROVIDER              = 1204

#
# MessageId: ERROR_CANNOT_OPEN_PROFILE
#
# MessageText:
#
#  Unable to open the network connection profile.
#
ERROR_CANNOT_OPEN_PROFILE       = 1205

#
# MessageId: ERROR_BAD_PROFILE
#
# MessageText:
#
#  The network connection profile is corrupted.
#
ERROR_BAD_PROFILE               = 1206

#
# MessageId: ERROR_NOT_CONTAINER
#
# MessageText:
#
#  Cannot enumerate a noncontainer.
#
ERROR_NOT_CONTAINER             = 1207

#
# MessageId: ERROR_EXTENDED_ERROR
#
# MessageText:
#
#  An extended error has occurred.
#
ERROR_EXTENDED_ERROR            = 1208

#
# MessageId: ERROR_INVALID_GROUPNAME
#
# MessageText:
#
#  The format of the specified group name is invalid.
#
ERROR_INVALID_GROUPNAME         = 1209

#
# MessageId: ERROR_INVALID_COMPUTERNAME
#
# MessageText:
#
#  The format of the specified computer name is invalid.
#
ERROR_INVALID_COMPUTERNAME      = 1210

#
# MessageId: ERROR_INVALID_EVENTNAME
#
# MessageText:
#
#  The format of the specified event name is invalid.
#
ERROR_INVALID_EVENTNAME         = 1211

#
# MessageId: ERROR_INVALID_DOMAINNAME
#
# MessageText:
#
#  The format of the specified domain name is invalid.
#
ERROR_INVALID_DOMAINNAME        = 1212

#
# MessageId: ERROR_INVALID_SERVICENAME
#
# MessageText:
#
#  The format of the specified service name is invalid.
#
ERROR_INVALID_SERVICENAME       = 1213

#
# MessageId: ERROR_INVALID_NETNAME
#
# MessageText:
#
#  The format of the specified network name is invalid.
#
ERROR_INVALID_NETNAME           = 1214

#
# MessageId: ERROR_INVALID_SHARENAME
#
# MessageText:
#
#  The format of the specified share name is invalid.
#
ERROR_INVALID_SHARENAME         = 1215

#
# MessageId: ERROR_INVALID_PASSWORDNAME
#
# MessageText:
#
#  The format of the specified password is invalid.
#
ERROR_INVALID_PASSWORDNAME      = 1216

#
# MessageId: ERROR_INVALID_MESSAGENAME
#
# MessageText:
#
#  The format of the specified message name is invalid.
#
ERROR_INVALID_MESSAGENAME       = 1217

#
# MessageId: ERROR_INVALID_MESSAGEDEST
#
# MessageText:
#
#  The format of the specified message destination is invalid.
#
ERROR_INVALID_MESSAGEDEST       = 1218

#
# MessageId: ERROR_SESSION_CREDENTIAL_CONFLICT
#
# MessageText:
#
#  Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.
#
ERROR_SESSION_CREDENTIAL_CONFLICT= 1219

#
# MessageId: ERROR_REMOTE_SESSION_LIMIT_EXCEEDED
#
# MessageText:
#
#  An attempt was made to establish a session to a network server, but there are already too many sessions established to that server.
#
ERROR_REMOTE_SESSION_LIMIT_EXCEEDED= 1220

#
# MessageId: ERROR_DUP_DOMAINNAME
#
# MessageText:
#
#  The workgroup or domain name is already in use by another computer on the network.
#
ERROR_DUP_DOMAINNAME            = 1221

#
# MessageId: ERROR_NO_NETWORK
#
# MessageText:
#
#  The network is not present or not started.
#
ERROR_NO_NETWORK                = 1222

#
# MessageId: ERROR_CANCELLED
#
# MessageText:
#
#  The operation was canceled by the user.
#
ERROR_CANCELLED                 = 1223

#
# MessageId: ERROR_USER_MAPPED_FILE
#
# MessageText:
#
#  The requested operation cannot be performed on a file with a user-mapped section open.
#
ERROR_USER_MAPPED_FILE          = 1224

#
# MessageId: ERROR_CONNECTION_REFUSED
#
# MessageText:
#
#  The remote system refused the network connection.
#
ERROR_CONNECTION_REFUSED        = 1225

#
# MessageId: ERROR_GRACEFUL_DISCONNECT
#
# MessageText:
#
#  The network connection was gracefully closed.
#
ERROR_GRACEFUL_DISCONNECT       = 1226

#
# MessageId: ERROR_ADDRESS_ALREADY_ASSOCIATED
#
# MessageText:
#
#  The network transport endpoint already has an address associated with it.
#
ERROR_ADDRESS_ALREADY_ASSOCIATED= 1227

#
# MessageId: ERROR_ADDRESS_NOT_ASSOCIATED
#
# MessageText:
#
#  An address has not yet been associated with the network endpoint.
#
ERROR_ADDRESS_NOT_ASSOCIATED    = 1228

#
# MessageId: ERROR_CONNECTION_INVALID
#
# MessageText:
#
#  An operation was attempted on a nonexistent network connection.
#
ERROR_CONNECTION_INVALID        = 1229

#
# MessageId: ERROR_CONNECTION_ACTIVE
#
# MessageText:
#
#  An invalid operation was attempted on an active network connection.
#
ERROR_CONNECTION_ACTIVE         = 1230

#
# MessageId: ERROR_NETWORK_UNREACHABLE
#
# MessageText:
#
#  The network location cannot be reached. For information about network troubleshooting, see Windows Help.
#
ERROR_NETWORK_UNREACHABLE       = 1231

#
# MessageId: ERROR_HOST_UNREACHABLE
#
# MessageText:
#
#  The network location cannot be reached. For information about network troubleshooting, see Windows Help.
#
ERROR_HOST_UNREACHABLE          = 1232

#
# MessageId: ERROR_PROTOCOL_UNREACHABLE
#
# MessageText:
#
#  The network location cannot be reached. For information about network troubleshooting, see Windows Help.
#
ERROR_PROTOCOL_UNREACHABLE      = 1233

#
# MessageId: ERROR_PORT_UNREACHABLE
#
# MessageText:
#
#  No service is operating at the destination network endpoint on the remote system.
#
ERROR_PORT_UNREACHABLE          = 1234

#
# MessageId: ERROR_REQUEST_ABORTED
#
# MessageText:
#
#  The request was aborted.
#
ERROR_REQUEST_ABORTED           = 1235

#
# MessageId: ERROR_CONNECTION_ABORTED
#
# MessageText:
#
#  The network connection was aborted by the local system.
#
ERROR_CONNECTION_ABORTED        = 1236

#
# MessageId: ERROR_RETRY
#
# MessageText:
#
#  The operation could not be completed. A retry should be performed.
#
ERROR_RETRY                     = 1237

#
# MessageId: ERROR_CONNECTION_COUNT_LIMIT
#
# MessageText:
#
#  A connection to the server could not be made because the limit on the number of concurrent connections for this account has been reached.
#
ERROR_CONNECTION_COUNT_LIMIT    = 1238

#
# MessageId: ERROR_LOGIN_TIME_RESTRICTION
#
# MessageText:
#
#  Attempting to log in during an unauthorized time of day for this account.
#
ERROR_LOGIN_TIME_RESTRICTION    = 1239

#
# MessageId: ERROR_LOGIN_WKSTA_RESTRICTION
#
# MessageText:
#
#  The account is not authorized to log in from this station.
#
ERROR_LOGIN_WKSTA_RESTRICTION   = 1240

#
# MessageId: ERROR_INCORRECT_ADDRESS
#
# MessageText:
#
#  The network address could not be used for the operation requested.
#
ERROR_INCORRECT_ADDRESS         = 1241

#
# MessageId: ERROR_ALREADY_REGISTERED
#
# MessageText:
#
#  The service is already registered.
#
ERROR_ALREADY_REGISTERED        = 1242

#
# MessageId: ERROR_SERVICE_NOT_FOUND
#
# MessageText:
#
#  The specified service does not exist.
#
ERROR_SERVICE_NOT_FOUND         = 1243

#
# MessageId: ERROR_NOT_AUTHENTICATED
#
# MessageText:
#
#  The operation being requested was not performed because the user has not been authenticated.
#
ERROR_NOT_AUTHENTICATED         = 1244

#
# MessageId: ERROR_NOT_LOGGED_ON
#
# MessageText:
#
#  The operation being requested was not performed because the user has not logged on to the network.
#  The specified service does not exist.
#
ERROR_NOT_LOGGED_ON             = 1245

#
# MessageId: ERROR_CONTINUE
#
# MessageText:
#
#  Continue with work in progress.
#
ERROR_CONTINUE                  = 1246    # dderror

#
# MessageId: ERROR_ALREADY_INITIALIZED
#
# MessageText:
#
#  An attempt was made to perform an initialization operation when initialization has already been completed.
#
ERROR_ALREADY_INITIALIZED       = 1247

#
# MessageId: ERROR_NO_MORE_DEVICES
#
# MessageText:
#
#  No more local devices.
#
ERROR_NO_MORE_DEVICES           = 1248    # dderror

#
# MessageId: ERROR_NO_SUCH_SITE
#
# MessageText:
#
#  The specified site does not exist.
#
ERROR_NO_SUCH_SITE              = 1249

#
# MessageId: ERROR_DOMAIN_CONTROLLER_EXISTS
#
# MessageText:
#
#  A domain controller with the specified name already exists.
#
ERROR_DOMAIN_CONTROLLER_EXISTS  = 1250

#
# MessageId: ERROR_ONLY_IF_CONNECTED
#
# MessageText:
#
#  This operation is supported only when you are connected to the server.
#
ERROR_ONLY_IF_CONNECTED         = 1251

#
# MessageId: ERROR_OVERRIDE_NOCHANGES
#
# MessageText:
#
#  The group policy framework should call the extension even if there are no changes.
#
ERROR_OVERRIDE_NOCHANGES        = 1252

#
# MessageId: ERROR_BAD_USER_PROFILE
#
# MessageText:
#
#  The specified user does not have a valid profile.
#
ERROR_BAD_USER_PROFILE          = 1253

#
# MessageId: ERROR_NOT_SUPPORTED_ON_SBS
#
# MessageText:
#
#  This operation is not supported on a Microsoft Small Business Server
#
ERROR_NOT_SUPPORTED_ON_SBS      = 1254

#
# MessageId: ERROR_SERVER_SHUTDOWN_IN_PROGRESS
#
# MessageText:
#
#  The server machine is shutting down.
#
ERROR_SERVER_SHUTDOWN_IN_PROGRESS= 1255

#
# MessageId: ERROR_HOST_DOWN
#
# MessageText:
#
#  The remote system is not available. For information about network troubleshooting, see Windows Help.
#
ERROR_HOST_DOWN                 = 1256

#
# MessageId: ERROR_NON_ACCOUNT_SID
#
# MessageText:
#
#  The security identifier provided is not from an account domain.
#
ERROR_NON_ACCOUNT_SID           = 1257

#
# MessageId: ERROR_NON_DOMAIN_SID
#
# MessageText:
#
#  The security identifier provided does not have a domain component.
#
ERROR_NON_DOMAIN_SID            = 1258

#
# MessageId: ERROR_APPHELP_BLOCK
#
# MessageText:
#
#  AppHelp dialog canceled thus preventing the application from starting.
#
ERROR_APPHELP_BLOCK             = 1259

#
# MessageId: ERROR_ACCESS_DISABLED_BY_POLICY
#
# MessageText:
#
#  Windows cannot open this program because it has been prevented by a software restriction policy. For more information, open Event Viewer or contact your system administrator.
#
ERROR_ACCESS_DISABLED_BY_POLICY = 1260

#
# MessageId: ERROR_REG_NAT_CONSUMPTION
#
# MessageText:
#
#  A program attempt to use an invalid register value.  Normally caused by an uninitialized register. This error is Itanium specific.
#
ERROR_REG_NAT_CONSUMPTION       = 1261

#
# MessageId: ERROR_CSCSHARE_OFFLINE
#
# MessageText:
#
#  The share is currently offline or does not exist.
#
ERROR_CSCSHARE_OFFLINE          = 1262

#
# MessageId: ERROR_PKINIT_FAILURE
#
# MessageText:
#
#  The kerberos protocol encountered an error while validating the
#  KDC certificate during smartcard logon.
#
ERROR_PKINIT_FAILURE            = 1263

#
# MessageId: ERROR_SMARTCARD_SUBSYSTEM_FAILURE
#
# MessageText:
#
#  The kerberos protocol encountered an error while attempting to utilize
#  the smartcard subsystem.
#
ERROR_SMARTCARD_SUBSYSTEM_FAILURE= 1264

#
# MessageId: ERROR_DOWNGRADE_DETECTED
#
# MessageText:
#
#  The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you.
#
ERROR_DOWNGRADE_DETECTED        = 1265

#
# Do not use ID#s 1266 - 1270 as the symbolicNames have been moved to SEC_E_*
#
#
# MessageId: ERROR_MACHINE_LOCKED
#
# MessageText:
#
#  The machine is locked and can not be shut down without the force option.
#
ERROR_MACHINE_LOCKED            = 1271

#
# MessageId: ERROR_CALLBACK_SUPPLIED_INVALID_DATA
#
# MessageText:
#
#  An application-defined callback gave invalid data when called.
#
ERROR_CALLBACK_SUPPLIED_INVALID_DATA= 1273

#
# MessageId: ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED
#
# MessageText:
#
#  The group policy framework should call the extension in the synchronous foreground policy refresh.
#
ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED= 1274

#
# MessageId: ERROR_DRIVER_BLOCKED
#
# MessageText:
#
#  This driver has been blocked from loading
#
ERROR_DRIVER_BLOCKED            = 1275

#
# MessageId: ERROR_INVALID_IMPORT_OF_NON_DLL
#
# MessageText:
#
#  A dynamic link library (DLL) referenced a module that was neither a DLL nor the process#s executable image.
#
ERROR_INVALID_IMPORT_OF_NON_DLL = 1276

#
# MessageId: ERROR_ACCESS_DISABLED_WEBBLADE
#
# MessageText:
#
#  Windows cannot open this program since it has been disabled.
#
ERROR_ACCESS_DISABLED_WEBBLADE  = 1277

#
# MessageId: ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER
#
# MessageText:
#
#  Windows cannot open this program because the license enforcement system has been tampered with or become corrupted.
#
ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER= 1278

#
# MessageId: ERROR_RECOVERY_FAILURE
#
# MessageText:
#
#  A transaction recover failed.
#
ERROR_RECOVERY_FAILURE          = 1279

#
# MessageId: ERROR_ALREADY_FIBER
#
# MessageText:
#
#  The current thread has already been converted to a fiber.
#
ERROR_ALREADY_FIBER             = 1280

#
# MessageId: ERROR_ALREADY_THREAD
#
# MessageText:
#
#  The current thread has already been converted from a fiber.
#
ERROR_ALREADY_THREAD            = 1281

#
# MessageId: ERROR_STACK_BUFFER_OVERRUN
#
# MessageText:
#
#  The system detected an overrun of a stack-based buffer in this application.  This
#  overrun could potentially allow a malicious user to gain control of this application.
#
ERROR_STACK_BUFFER_OVERRUN      = 1282

#
# MessageId: ERROR_PARAMETER_QUOTA_EXCEEDED
#
# MessageText:
#
#  Data present in one of the parameters is more than the function can operate on.
#
ERROR_PARAMETER_QUOTA_EXCEEDED  = 1283

#
# MessageId: ERROR_DEBUGGER_INACTIVE
#
# MessageText:
#
#  An attempt to do an operation on a debug object failed because the object is in the process of being deleted.
#
ERROR_DEBUGGER_INACTIVE         = 1284

#
# MessageId: ERROR_DELAY_LOAD_FAILED
#
# MessageText:
#
#  An attempt to delay-load a .dll or get a function address in a delay-loaded .dll failed.
#
ERROR_DELAY_LOAD_FAILED         = 1285

#
# MessageId: ERROR_VDM_DISALLOWED
#
# MessageText:
#
#  1 is a 16-bit application. You do not have permissions to execute 16-bit applications. Check your permissions with your system administrator.
#
ERROR_VDM_DISALLOWED            = 1286


#
#
# Add new status codes before this point unless there is a component specific section below.
#
#


#
#
# Security Status Codes
#
#


#
# MessageId: ERROR_NOT_ALL_ASSIGNED
#
# MessageText:
#
#  Not all privileges referenced are assigned to the caller.
#
ERROR_NOT_ALL_ASSIGNED          = 1300

#
# MessageId: ERROR_SOME_NOT_MAPPED
#
# MessageText:
#
#  Some mapping between account names and security IDs was not done.
#
ERROR_SOME_NOT_MAPPED           = 1301

#
# MessageId: ERROR_NO_QUOTAS_FOR_ACCOUNT
#
# MessageText:
#
#  No system quota limits are specifically set for this account.
#
ERROR_NO_QUOTAS_FOR_ACCOUNT     = 1302

#
# MessageId: ERROR_LOCAL_USER_SESSION_KEY
#
# MessageText:
#
#  No encryption key is available. A well-known encryption key was returned.
#
ERROR_LOCAL_USER_SESSION_KEY    = 1303

#
# MessageId: ERROR_NULL_LM_PASSWORD
#
# MessageText:
#
#  The password is too complex to be converted to a LAN Manager password. The LAN Manager password returned is a NULL string.
#
ERROR_NULL_LM_PASSWORD          = 1304

#
# MessageId: ERROR_UNKNOWN_REVISION
#
# MessageText:
#
#  The revision level is unknown.
#
ERROR_UNKNOWN_REVISION          = 1305

#
# MessageId: ERROR_REVISION_MISMATCH
#
# MessageText:
#
#  Indicates two revision levels are incompatible.
#
ERROR_REVISION_MISMATCH         = 1306

#
# MessageId: ERROR_INVALID_OWNER
#
# MessageText:
#
#  This security ID may not be assigned as the owner of this object.
#
ERROR_INVALID_OWNER             = 1307

#
# MessageId: ERROR_INVALID_PRIMARY_GROUP
#
# MessageText:
#
#  This security ID may not be assigned as the primary group of an object.
#
ERROR_INVALID_PRIMARY_GROUP     = 1308

#
# MessageId: ERROR_NO_IMPERSONATION_TOKEN
#
# MessageText:
#
#  An attempt has been made to operate on an impersonation token by a thread that is not currently impersonating a client.
#
ERROR_NO_IMPERSONATION_TOKEN    = 1309

#
# MessageId: ERROR_CANT_DISABLE_MANDATORY
#
# MessageText:
#
#  The group may not be disabled.
#
ERROR_CANT_DISABLE_MANDATORY    = 1310

#
# MessageId: ERROR_NO_LOGON_SERVERS
#
# MessageText:
#
#  There are currently no logon servers available to service the logon request.
#
ERROR_NO_LOGON_SERVERS          = 1311

#
# MessageId: ERROR_NO_SUCH_LOGON_SESSION
#
# MessageText:
#
#  A specified logon session does not exist. It may already have been terminated.
#
ERROR_NO_SUCH_LOGON_SESSION     = 1312

#
# MessageId: ERROR_NO_SUCH_PRIVILEGE
#
# MessageText:
#
#  A specified privilege does not exist.
#
ERROR_NO_SUCH_PRIVILEGE         = 1313

#
# MessageId: ERROR_PRIVILEGE_NOT_HELD
#
# MessageText:
#
#  A required privilege is not held by the client.
#
ERROR_PRIVILEGE_NOT_HELD        = 1314

#
# MessageId: ERROR_INVALID_ACCOUNT_NAME
#
# MessageText:
#
#  The name provided is not a properly formed account name.
#
ERROR_INVALID_ACCOUNT_NAME      = 1315

#
# MessageId: ERROR_USER_EXISTS
#
# MessageText:
#
#  The specified user already exists.
#
ERROR_USER_EXISTS               = 1316

#
# MessageId: ERROR_NO_SUCH_USER
#
# MessageText:
#
#  The specified user does not exist.
#
ERROR_NO_SUCH_USER              = 1317

#
# MessageId: ERROR_GROUP_EXISTS
#
# MessageText:
#
#  The specified group already exists.
#
ERROR_GROUP_EXISTS              = 1318

#
# MessageId: ERROR_NO_SUCH_GROUP
#
# MessageText:
#
#  The specified group does not exist.
#
ERROR_NO_SUCH_GROUP             = 1319

#
# MessageId: ERROR_MEMBER_IN_GROUP
#
# MessageText:
#
#  Either the specified user account is already a member of the specified group, or the specified group cannot be deleted because it contains a member.
#
ERROR_MEMBER_IN_GROUP           = 1320

#
# MessageId: ERROR_MEMBER_NOT_IN_GROUP
#
# MessageText:
#
#  The specified user account is not a member of the specified group account.
#
ERROR_MEMBER_NOT_IN_GROUP       = 1321

#
# MessageId: ERROR_LAST_ADMIN
#
# MessageText:
#
#  The last remaining administration account cannot be disabled or deleted.
#
ERROR_LAST_ADMIN                = 1322

#
# MessageId: ERROR_WRONG_PASSWORD
#
# MessageText:
#
#  Unable to update the password. The value provided as the current password is incorrect.
#
ERROR_WRONG_PASSWORD            = 1323

#
# MessageId: ERROR_ILL_FORMED_PASSWORD
#
# MessageText:
#
#  Unable to update the password. The value provided for the new password contains values that are not allowed in passwords.
#
ERROR_ILL_FORMED_PASSWORD       = 1324

#
# MessageId: ERROR_PASSWORD_RESTRICTION
#
# MessageText:
#
#  Unable to update the password. The value provided for the new password does not meet the length, complexity, or history requirement of the domain.
#
ERROR_PASSWORD_RESTRICTION      = 1325

#
# MessageId: ERROR_LOGON_FAILURE
#
# MessageText:
#
#  Logon failure: unknown user name or bad password.
#
ERROR_LOGON_FAILURE             = 1326

#
# MessageId: ERROR_ACCOUNT_RESTRICTION
#
# MessageText:
#
#  Logon failure: user account restriction.  Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced.
#
ERROR_ACCOUNT_RESTRICTION       = 1327

#
# MessageId: ERROR_INVALID_LOGON_HOURS
#
# MessageText:
#
#  Logon failure: account logon time restriction violation.
#
ERROR_INVALID_LOGON_HOURS       = 1328

#
# MessageId: ERROR_INVALID_WORKSTATION
#
# MessageText:
#
#  Logon failure: user not allowed to log on to this computer.
#
ERROR_INVALID_WORKSTATION       = 1329

#
# MessageId: ERROR_PASSWORD_EXPIRED
#
# MessageText:
#
#  Logon failure: the specified account password has expired.
#
ERROR_PASSWORD_EXPIRED          = 1330

#
# MessageId: ERROR_ACCOUNT_DISABLED
#
# MessageText:
#
#  Logon failure: account currently disabled.
#
ERROR_ACCOUNT_DISABLED          = 1331

#
# MessageId: ERROR_NONE_MAPPED
#
# MessageText:
#
#  No mapping between account names and security IDs was done.
#
ERROR_NONE_MAPPED               = 1332

#
# MessageId: ERROR_TOO_MANY_LUIDS_REQUESTED
#
# MessageText:
#
#  Too many local user identifiers (LUIDs) were requested at one time.
#
ERROR_TOO_MANY_LUIDS_REQUESTED  = 1333

#
# MessageId: ERROR_LUIDS_EXHAUSTED
#
# MessageText:
#
#  No more local user identifiers (LUIDs) are available.
#
ERROR_LUIDS_EXHAUSTED           = 1334

#
# MessageId: ERROR_INVALID_SUB_AUTHORITY
#
# MessageText:
#
#  The subauthority part of a security ID is invalid for this particular use.
#
ERROR_INVALID_SUB_AUTHORITY     = 1335

#
# MessageId: ERROR_INVALID_ACL
#
# MessageText:
#
#  The access control list (ACL) structure is invalid.
#
ERROR_INVALID_ACL               = 1336

#
# MessageId: ERROR_INVALID_SID
#
# MessageText:
#
#  The security ID structure is invalid.
#
ERROR_INVALID_SID               = 1337

#
# MessageId: ERROR_INVALID_SECURITY_DESCR
#
# MessageText:
#
#  The security descriptor structure is invalid.
#
ERROR_INVALID_SECURITY_DESCR    = 1338

#
# MessageId: ERROR_BAD_INHERITANCE_ACL
#
# MessageText:
#
#  The inherited access control list (ACL) or access control entry (ACE) could not be built.
#
ERROR_BAD_INHERITANCE_ACL       = 1340

#
# MessageId: ERROR_SERVER_DISABLED
#
# MessageText:
#
#  The server is currently disabled.
#
ERROR_SERVER_DISABLED           = 1341

#
# MessageId: ERROR_SERVER_NOT_DISABLED
#
# MessageText:
#
#  The server is currently enabled.
#
ERROR_SERVER_NOT_DISABLED       = 1342

#
# MessageId: ERROR_INVALID_ID_AUTHORITY
#
# MessageText:
#
#  The value provided was an invalid value for an identifier authority.
#
ERROR_INVALID_ID_AUTHORITY      = 1343

#
# MessageId: ERROR_ALLOTTED_SPACE_EXCEEDED
#
# MessageText:
#
#  No more memory is available for security information updates.
#
ERROR_ALLOTTED_SPACE_EXCEEDED   = 1344

#
# MessageId: ERROR_INVALID_GROUP_ATTRIBUTES
#
# MessageText:
#
#  The specified attributes are invalid, or incompatible with the attributes for the group as a whole.
#
ERROR_INVALID_GROUP_ATTRIBUTES  = 1345

#
# MessageId: ERROR_BAD_IMPERSONATION_LEVEL
#
# MessageText:
#
#  Either a required impersonation level was not provided, or the provided impersonation level is invalid.
#
ERROR_BAD_IMPERSONATION_LEVEL   = 1346

#
# MessageId: ERROR_CANT_OPEN_ANONYMOUS
#
# MessageText:
#
#  Cannot open an anonymous level security token.
#
ERROR_CANT_OPEN_ANONYMOUS       = 1347

#
# MessageId: ERROR_BAD_VALIDATION_CLASS
#
# MessageText:
#
#  The validation information class requested was invalid.
#
ERROR_BAD_VALIDATION_CLASS      = 1348

#
# MessageId: ERROR_BAD_TOKEN_TYPE
#
# MessageText:
#
#  The type of the token is inappropriate for its attempted use.
#
ERROR_BAD_TOKEN_TYPE            = 1349

#
# MessageId: ERROR_NO_SECURITY_ON_OBJECT
#
# MessageText:
#
#  Unable to perform a security operation on an object that has no associated security.
#
ERROR_NO_SECURITY_ON_OBJECT     = 1350

#
# MessageId: ERROR_CANT_ACCESS_DOMAIN_INFO
#
# MessageText:
#
#  Configuration information could not be read from the domain controller, either because the machine is unavailable, or access has been denied.
#
ERROR_CANT_ACCESS_DOMAIN_INFO   = 1351

#
# MessageId: ERROR_INVALID_SERVER_STATE
#
# MessageText:
#
#  The security account manager (SAM) or local security authority (LSA) server was in the wrong state to perform the security operation.
#
ERROR_INVALID_SERVER_STATE      = 1352

#
# MessageId: ERROR_INVALID_DOMAIN_STATE
#
# MessageText:
#
#  The domain was in the wrong state to perform the security operation.
#
ERROR_INVALID_DOMAIN_STATE      = 1353

#
# MessageId: ERROR_INVALID_DOMAIN_ROLE
#
# MessageText:
#
#  This operation is only allowed for the Primary Domain Controller of the domain.
#
ERROR_INVALID_DOMAIN_ROLE       = 1354

#
# MessageId: ERROR_NO_SUCH_DOMAIN
#
# MessageText:
#
#  The specified domain either does not exist or could not be contacted.
#
ERROR_NO_SUCH_DOMAIN            = 1355

#
# MessageId: ERROR_DOMAIN_EXISTS
#
# MessageText:
#
#  The specified domain already exists.
#
ERROR_DOMAIN_EXISTS             = 1356

#
# MessageId: ERROR_DOMAIN_LIMIT_EXCEEDED
#
# MessageText:
#
#  An attempt was made to exceed the limit on the number of domains per server.
#
ERROR_DOMAIN_LIMIT_EXCEEDED     = 1357

#
# MessageId: ERROR_INTERNAL_DB_CORRUPTION
#
# MessageText:
#
#  Unable to complete the requested operation because of either a catastrophic media failure or a data structure corruption on the disk.
#
ERROR_INTERNAL_DB_CORRUPTION    = 1358

#
# MessageId: ERROR_INTERNAL_ERROR
#
# MessageText:
#
#  An internal error occurred.
#
ERROR_INTERNAL_ERROR            = 1359

#
# MessageId: ERROR_GENERIC_NOT_MAPPED
#
# MessageText:
#
#  Generic access types were contained in an access mask which should already be mapped to nongeneric types.
#
ERROR_GENERIC_NOT_MAPPED        = 1360

#
# MessageId: ERROR_BAD_DESCRIPTOR_FORMAT
#
# MessageText:
#
#  A security descriptor is not in the right format (absolute or self-relative).
#
ERROR_BAD_DESCRIPTOR_FORMAT     = 1361

#
# MessageId: ERROR_NOT_LOGON_PROCESS
#
# MessageText:
#
#  The requested action is restricted for use by logon processes only. The calling process has not registered as a logon process.
#
ERROR_NOT_LOGON_PROCESS         = 1362

#
# MessageId: ERROR_LOGON_SESSION_EXISTS
#
# MessageText:
#
#  Cannot start a new logon session with an ID that is already in use.
#
ERROR_LOGON_SESSION_EXISTS      = 1363

#
# MessageId: ERROR_NO_SUCH_PACKAGE
#
# MessageText:
#
#  A specified authentication package is unknown.
#
ERROR_NO_SUCH_PACKAGE           = 1364

#
# MessageId: ERROR_BAD_LOGON_SESSION_STATE
#
# MessageText:
#
#  The logon session is not in a state that is consistent with the requested operation.
#
ERROR_BAD_LOGON_SESSION_STATE   = 1365

#
# MessageId: ERROR_LOGON_SESSION_COLLISION
#
# MessageText:
#
#  The logon session ID is already in use.
#
ERROR_LOGON_SESSION_COLLISION   = 1366

#
# MessageId: ERROR_INVALID_LOGON_TYPE
#
# MessageText:
#
#  A logon request contained an invalid logon type value.
#
ERROR_INVALID_LOGON_TYPE        = 1367

#
# MessageId: ERROR_CANNOT_IMPERSONATE
#
# MessageText:
#
#  Unable to impersonate using a named pipe until data has been read from that pipe.
#
ERROR_CANNOT_IMPERSONATE        = 1368

#
# MessageId: ERROR_RXACT_INVALID_STATE
#
# MessageText:
#
#  The transaction state of a registry subtree is incompatible with the requested operation.
#
ERROR_RXACT_INVALID_STATE       = 1369

#
# MessageId: ERROR_RXACT_COMMIT_FAILURE
#
# MessageText:
#
#  An internal security database corruption has been encountered.
#
ERROR_RXACT_COMMIT_FAILURE      = 1370

#
# MessageId: ERROR_SPECIAL_ACCOUNT
#
# MessageText:
#
#  Cannot perform this operation on built-in accounts.
#
ERROR_SPECIAL_ACCOUNT           = 1371

#
# MessageId: ERROR_SPECIAL_GROUP
#
# MessageText:
#
#  Cannot perform this operation on this built-in special group.
#
ERROR_SPECIAL_GROUP             = 1372

#
# MessageId: ERROR_SPECIAL_USER
#
# MessageText:
#
#  Cannot perform this operation on this built-in special user.
#
ERROR_SPECIAL_USER              = 1373

#
# MessageId: ERROR_MEMBERS_PRIMARY_GROUP
#
# MessageText:
#
#  The user cannot be removed from a group because the group is currently the user#s primary group.
#
ERROR_MEMBERS_PRIMARY_GROUP     = 1374

#
# MessageId: ERROR_TOKEN_ALREADY_IN_USE
#
# MessageText:
#
#  The token is already in use as a primary token.
#
ERROR_TOKEN_ALREADY_IN_USE      = 1375

#
# MessageId: ERROR_NO_SUCH_ALIAS
#
# MessageText:
#
#  The specified local group does not exist.
#
ERROR_NO_SUCH_ALIAS             = 1376

#
# MessageId: ERROR_MEMBER_NOT_IN_ALIAS
#
# MessageText:
#
#  The specified account name is not a member of the local group.
#
ERROR_MEMBER_NOT_IN_ALIAS       = 1377

#
# MessageId: ERROR_MEMBER_IN_ALIAS
#
# MessageText:
#
#  The specified account name is already a member of the local group.
#
ERROR_MEMBER_IN_ALIAS           = 1378

#
# MessageId: ERROR_ALIAS_EXISTS
#
# MessageText:
#
#  The specified local group already exists.
#
ERROR_ALIAS_EXISTS              = 1379

#
# MessageId: ERROR_LOGON_NOT_GRANTED
#
# MessageText:
#
#  Logon failure: the user has not been granted the requested logon type at this computer.
#
ERROR_LOGON_NOT_GRANTED         = 1380

#
# MessageId: ERROR_TOO_MANY_SECRETS
#
# MessageText:
#
#  The maximum number of secrets that may be stored in a single system has been exceeded.
#
ERROR_TOO_MANY_SECRETS          = 1381

#
# MessageId: ERROR_SECRET_TOO_LONG
#
# MessageText:
#
#  The length of a secret exceeds the maximum length allowed.
#
ERROR_SECRET_TOO_LONG           = 1382

#
# MessageId: ERROR_INTERNAL_DB_ERROR
#
# MessageText:
#
#  The local security authority database contains an internal inconsistency.
#
ERROR_INTERNAL_DB_ERROR         = 1383

#
# MessageId: ERROR_TOO_MANY_CONTEXT_IDS
#
# MessageText:
#
#  During a logon attempt, the user#s security context accumulated too many security IDs.
#
ERROR_TOO_MANY_CONTEXT_IDS      = 1384

#
# MessageId: ERROR_LOGON_TYPE_NOT_GRANTED
#
# MessageText:
#
#  Logon failure: the user has not been granted the requested logon type at this computer.
#
ERROR_LOGON_TYPE_NOT_GRANTED    = 1385

#
# MessageId: ERROR_NT_CROSS_ENCRYPTION_REQUIRED
#
# MessageText:
#
#  A cross-encrypted password is necessary to change a user password.
#
ERROR_NT_CROSS_ENCRYPTION_REQUIRED= 1386

#
# MessageId: ERROR_NO_SUCH_MEMBER
#
# MessageText:
#
#  A member could not be added to or removed from the local group because the member does not exist.
#
ERROR_NO_SUCH_MEMBER            = 1387

#
# MessageId: ERROR_INVALID_MEMBER
#
# MessageText:
#
#  A new member could not be added to a local group because the member has the wrong account type.
#
ERROR_INVALID_MEMBER            = 1388

#
# MessageId: ERROR_TOO_MANY_SIDS
#
# MessageText:
#
#  Too many security IDs have been specified.
#
ERROR_TOO_MANY_SIDS             = 1389

#
# MessageId: ERROR_LM_CROSS_ENCRYPTION_REQUIRED
#
# MessageText:
#
#  A cross-encrypted password is necessary to change this user password.
#
ERROR_LM_CROSS_ENCRYPTION_REQUIRED= 1390

#
# MessageId: ERROR_NO_INHERITANCE
#
# MessageText:
#
#  Indicates an ACL contains no inheritable components.
#
ERROR_NO_INHERITANCE            = 1391

#
# MessageId: ERROR_FILE_CORRUPT
#
# MessageText:
#
#  The file or directory is corrupted and unreadable.
#
ERROR_FILE_CORRUPT              = 1392

#
# MessageId: ERROR_DISK_CORRUPT
#
# MessageText:
#
#  The disk structure is corrupted and unreadable.
#
ERROR_DISK_CORRUPT              = 1393

#
# MessageId: ERROR_NO_USER_SESSION_KEY
#
# MessageText:
#
#  There is no user session key for the specified logon session.
#
ERROR_NO_USER_SESSION_KEY       = 1394

#
# MessageId: ERROR_LICENSE_QUOTA_EXCEEDED
#
# MessageText:
#
#  The service being accessed is licensed for a particular number of connections.
#  No more connections can be made to the service at this time because there are already as many connections as the service can accept.
#
ERROR_LICENSE_QUOTA_EXCEEDED    = 1395

#
# MessageId: ERROR_WRONG_TARGET_NAME
#
# MessageText:
#
#  Logon Failure: The target account name is incorrect.
#
ERROR_WRONG_TARGET_NAME         = 1396

#
# MessageId: ERROR_MUTUAL_AUTH_FAILED
#
# MessageText:
#
#  Mutual Authentication failed. The server#s password is out of date at the domain controller.
#
ERROR_MUTUAL_AUTH_FAILED        = 1397

#
# MessageId: ERROR_TIME_SKEW
#
# MessageText:
#
#  There is a time and/or date difference between the client and server.
#
ERROR_TIME_SKEW                 = 1398

#
# MessageId: ERROR_CURRENT_DOMAIN_NOT_ALLOWED
#
# MessageText:
#
#  This operation can not be performed on the current domain.
#
ERROR_CURRENT_DOMAIN_NOT_ALLOWED= 1399

# End of security error codes



#
#
# WinUser Error Codes
#
#


#
# MessageId: ERROR_INVALID_WINDOW_HANDLE
#
# MessageText:
#
#  Invalid window handle.
#
ERROR_INVALID_WINDOW_HANDLE     = 1400

#
# MessageId: ERROR_INVALID_MENU_HANDLE
#
# MessageText:
#
#  Invalid menu handle.
#
ERROR_INVALID_MENU_HANDLE       = 1401

#
# MessageId: ERROR_INVALID_CURSOR_HANDLE
#
# MessageText:
#
#  Invalid cursor handle.
#
ERROR_INVALID_CURSOR_HANDLE     = 1402

#
# MessageId: ERROR_INVALID_ACCEL_HANDLE
#
# MessageText:
#
#  Invalid accelerator table handle.
#
ERROR_INVALID_ACCEL_HANDLE      = 1403

#
# MessageId: ERROR_INVALID_HOOK_HANDLE
#
# MessageText:
#
#  Invalid hook handle.
#
ERROR_INVALID_HOOK_HANDLE       = 1404

#
# MessageId: ERROR_INVALID_DWP_HANDLE
#
# MessageText:
#
#  Invalid handle to a multiple-window position structure.
#
ERROR_INVALID_DWP_HANDLE        = 1405

#
# MessageId: ERROR_TLW_WITH_WSCHILD
#
# MessageText:
#
#  Cannot create a top-level child window.
#
ERROR_TLW_WITH_WSCHILD          = 1406

#
# MessageId: ERROR_CANNOT_FIND_WND_CLASS
#
# MessageText:
#
#  Cannot find window class.
#
ERROR_CANNOT_FIND_WND_CLASS     = 1407

#
# MessageId: ERROR_WINDOW_OF_OTHER_THREAD
#
# MessageText:
#
#  Invalid window; it belongs to other thread.
#
ERROR_WINDOW_OF_OTHER_THREAD    = 1408

#
# MessageId: ERROR_HOTKEY_ALREADY_REGISTERED
#
# MessageText:
#
#  Hot key is already registered.
#
ERROR_HOTKEY_ALREADY_REGISTERED = 1409

#
# MessageId: ERROR_CLASS_ALREADY_EXISTS
#
# MessageText:
#
#  Class already exists.
#
ERROR_CLASS_ALREADY_EXISTS      = 1410

#
# MessageId: ERROR_CLASS_DOES_NOT_EXIST
#
# MessageText:
#
#  Class does not exist.
#
ERROR_CLASS_DOES_NOT_EXIST      = 1411

#
# MessageId: ERROR_CLASS_HAS_WINDOWS
#
# MessageText:
#
#  Class still has open windows.
#
ERROR_CLASS_HAS_WINDOWS         = 1412

#
# MessageId: ERROR_INVALID_INDEX
#
# MessageText:
#
#  Invalid index.
#
ERROR_INVALID_INDEX             = 1413

#
# MessageId: ERROR_INVALID_ICON_HANDLE
#
# MessageText:
#
#  Invalid icon handle.
#
ERROR_INVALID_ICON_HANDLE       = 1414

#
# MessageId: ERROR_PRIVATE_DIALOG_INDEX
#
# MessageText:
#
#  Using private DIALOG window words.
#
ERROR_PRIVATE_DIALOG_INDEX      = 1415

#
# MessageId: ERROR_LISTBOX_ID_NOT_FOUND
#
# MessageText:
#
#  The list box identifier was not found.
#
ERROR_LISTBOX_ID_NOT_FOUND      = 1416

#
# MessageId: ERROR_NO_WILDCARD_CHARACTERS
#
# MessageText:
#
#  No wildcards were found.
#
ERROR_NO_WILDCARD_CHARACTERS    = 1417

#
# MessageId: ERROR_CLIPBOARD_NOT_OPEN
#
# MessageText:
#
#  Thread does not have a clipboard open.
#
ERROR_CLIPBOARD_NOT_OPEN        = 1418

#
# MessageId: ERROR_HOTKEY_NOT_REGISTERED
#
# MessageText:
#
#  Hot key is not registered.
#
ERROR_HOTKEY_NOT_REGISTERED     = 1419

#
# MessageId: ERROR_WINDOW_NOT_DIALOG
#
# MessageText:
#
#  The window is not a valid dialog window.
#
ERROR_WINDOW_NOT_DIALOG         = 1420

#
# MessageId: ERROR_CONTROL_ID_NOT_FOUND
#
# MessageText:
#
#  Control ID not found.
#
ERROR_CONTROL_ID_NOT_FOUND      = 1421

#
# MessageId: ERROR_INVALID_COMBOBOX_MESSAGE
#
# MessageText:
#
#  Invalid message for a combo box because it does not have an edit control.
#
ERROR_INVALID_COMBOBOX_MESSAGE  = 1422

#
# MessageId: ERROR_WINDOW_NOT_COMBOBOX
#
# MessageText:
#
#  The window is not a combo box.
#
ERROR_WINDOW_NOT_COMBOBOX       = 1423

#
# MessageId: ERROR_INVALID_EDIT_HEIGHT
#
# MessageText:
#
#  Height must be less than 256.
#
ERROR_INVALID_EDIT_HEIGHT       = 1424

#
# MessageId: ERROR_DC_NOT_FOUND
#
# MessageText:
#
#  Invalid device context (DC) handle.
#
ERROR_DC_NOT_FOUND              = 1425

#
# MessageId: ERROR_INVALID_HOOK_FILTER
#
# MessageText:
#
#  Invalid hook procedure type.
#
ERROR_INVALID_HOOK_FILTER       = 1426

#
# MessageId: ERROR_INVALID_FILTER_PROC
#
# MessageText:
#
#  Invalid hook procedure.
#
ERROR_INVALID_FILTER_PROC       = 1427

#
# MessageId: ERROR_HOOK_NEEDS_HMOD
#
# MessageText:
#
#  Cannot set nonlocal hook without a module handle.
#
ERROR_HOOK_NEEDS_HMOD           = 1428

#
# MessageId: ERROR_GLOBAL_ONLY_HOOK
#
# MessageText:
#
#  This hook procedure can only be set globally.
#
ERROR_GLOBAL_ONLY_HOOK          = 1429

#
# MessageId: ERROR_JOURNAL_HOOK_SET
#
# MessageText:
#
#  The journal hook procedure is already installed.
#
ERROR_JOURNAL_HOOK_SET          = 1430

#
# MessageId: ERROR_HOOK_NOT_INSTALLED
#
# MessageText:
#
#  The hook procedure is not installed.
#
ERROR_HOOK_NOT_INSTALLED        = 1431

#
# MessageId: ERROR_INVALID_LB_MESSAGE
#
# MessageText:
#
#  Invalid message for single-selection list box.
#
ERROR_INVALID_LB_MESSAGE        = 1432

#
# MessageId: ERROR_SETCOUNT_ON_BAD_LB
#
# MessageText:
#
#  LB_SETCOUNT sent to non-lazy list box.
#
ERROR_SETCOUNT_ON_BAD_LB        = 1433

#
# MessageId: ERROR_LB_WITHOUT_TABSTOPS
#
# MessageText:
#
#  This list box does not support tab stops.
#
ERROR_LB_WITHOUT_TABSTOPS       = 1434

#
# MessageId: ERROR_DESTROY_OBJECT_OF_OTHER_THREAD
#
# MessageText:
#
#  Cannot destroy object created by another thread.
#
ERROR_DESTROY_OBJECT_OF_OTHER_THREAD= 1435

#
# MessageId: ERROR_CHILD_WINDOW_MENU
#
# MessageText:
#
#  Child windows cannot have menus.
#
ERROR_CHILD_WINDOW_MENU         = 1436

#
# MessageId: ERROR_NO_SYSTEM_MENU
#
# MessageText:
#
#  The window does not have a system menu.
#
ERROR_NO_SYSTEM_MENU            = 1437

#
# MessageId: ERROR_INVALID_MSGBOX_STYLE
#
# MessageText:
#
#  Invalid message box style.
#
ERROR_INVALID_MSGBOX_STYLE      = 1438

#
# MessageId: ERROR_INVALID_SPI_VALUE
#
# MessageText:
#
#  Invalid system-wide (SPI_*) parameter.
#
ERROR_INVALID_SPI_VALUE         = 1439

#
# MessageId: ERROR_SCREEN_ALREADY_LOCKED
#
# MessageText:
#
#  Screen already locked.
#
ERROR_SCREEN_ALREADY_LOCKED     = 1440

#
# MessageId: ERROR_HWNDS_HAVE_DIFF_PARENT
#
# MessageText:
#
#  All handles to windows in a multiple-window position structure must have the same parent.
#
ERROR_HWNDS_HAVE_DIFF_PARENT    = 1441

#
# MessageId: ERROR_NOT_CHILD_WINDOW
#
# MessageText:
#
#  The window is not a child window.
#
ERROR_NOT_CHILD_WINDOW          = 1442

#
# MessageId: ERROR_INVALID_GW_COMMAND
#
# MessageText:
#
#  Invalid GW_* command.
#
ERROR_INVALID_GW_COMMAND        = 1443

#
# MessageId: ERROR_INVALID_THREAD_ID
#
# MessageText:
#
#  Invalid thread identifier.
#
ERROR_INVALID_THREAD_ID         = 1444

#
# MessageId: ERROR_NON_MDICHILD_WINDOW
#
# MessageText:
#
#  Cannot process a message from a window that is not a multiple document interface (MDI) window.
#
ERROR_NON_MDICHILD_WINDOW       = 1445

#
# MessageId: ERROR_POPUP_ALREADY_ACTIVE
#
# MessageText:
#
#  Popup menu already active.
#
ERROR_POPUP_ALREADY_ACTIVE      = 1446

#
# MessageId: ERROR_NO_SCROLLBARS
#
# MessageText:
#
#  The window does not have scroll bars.
#
ERROR_NO_SCROLLBARS             = 1447

#
# MessageId: ERROR_INVALID_SCROLLBAR_RANGE
#
# MessageText:
#
#  Scroll bar range cannot be greater than MAXLONG.
#
ERROR_INVALID_SCROLLBAR_RANGE   = 1448

#
# MessageId: ERROR_INVALID_SHOWWIN_COMMAND
#
# MessageText:
#
#  Cannot show or remove the window in the way specified.
#
ERROR_INVALID_SHOWWIN_COMMAND   = 1449

#
# MessageId: ERROR_NO_SYSTEM_RESOURCES
#
# MessageText:
#
#  Insufficient system resources exist to complete the requested service.
#
ERROR_NO_SYSTEM_RESOURCES       = 1450

#
# MessageId: ERROR_NONPAGED_SYSTEM_RESOURCES
#
# MessageText:
#
#  Insufficient system resources exist to complete the requested service.
#
ERROR_NONPAGED_SYSTEM_RESOURCES = 1451

#
# MessageId: ERROR_PAGED_SYSTEM_RESOURCES
#
# MessageText:
#
#  Insufficient system resources exist to complete the requested service.
#
ERROR_PAGED_SYSTEM_RESOURCES    = 1452

#
# MessageId: ERROR_WORKING_SET_QUOTA
#
# MessageText:
#
#  Insufficient quota to complete the requested service.
#
ERROR_WORKING_SET_QUOTA         = 1453

#
# MessageId: ERROR_PAGEFILE_QUOTA
#
# MessageText:
#
#  Insufficient quota to complete the requested service.
#
ERROR_PAGEFILE_QUOTA            = 1454

#
# MessageId: ERROR_COMMITMENT_LIMIT
#
# MessageText:
#
#  The paging file is too small for this operation to complete.
#
ERROR_COMMITMENT_LIMIT          = 1455

#
# MessageId: ERROR_MENU_ITEM_NOT_FOUND
#
# MessageText:
#
#  A menu item was not found.
#
ERROR_MENU_ITEM_NOT_FOUND       = 1456

#
# MessageId: ERROR_INVALID_KEYBOARD_HANDLE
#
# MessageText:
#
#  Invalid keyboard layout handle.
#
ERROR_INVALID_KEYBOARD_HANDLE   = 1457

#
# MessageId: ERROR_HOOK_TYPE_NOT_ALLOWED
#
# MessageText:
#
#  Hook type not allowed.
#
ERROR_HOOK_TYPE_NOT_ALLOWED     = 1458

#
# MessageId: ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION
#
# MessageText:
#
#  This operation requires an interactive window station.
#
ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION= 1459

#
# MessageId: ERROR_TIMEOUT
#
# MessageText:
#
#  This operation returned because the timeout period expired.
#
ERROR_TIMEOUT                   = 1460

#
# MessageId: ERROR_INVALID_MONITOR_HANDLE
#
# MessageText:
#
#  Invalid monitor handle.
#
ERROR_INVALID_MONITOR_HANDLE    = 1461

# End of WinUser error codes



#
#
# Eventlog Status Codes
#
#


#
# MessageId: ERROR_EVENTLOG_FILE_CORRUPT
#
# MessageText:
#
#  The event log file is corrupted.
#
ERROR_EVENTLOG_FILE_CORRUPT     = 1500

#
# MessageId: ERROR_EVENTLOG_CANT_START
#
# MessageText:
#
#  No event log file could be opened, so the event logging service did not start.
#
ERROR_EVENTLOG_CANT_START       = 1501

#
# MessageId: ERROR_LOG_FILE_FULL
#
# MessageText:
#
#  The event log file is full.
#
ERROR_LOG_FILE_FULL             = 1502

#
# MessageId: ERROR_EVENTLOG_FILE_CHANGED
#
# MessageText:
#
#  The event log file has changed between read operations.
#
ERROR_EVENTLOG_FILE_CHANGED     = 1503

# End of eventlog error codes



#
#
# MSI Error Codes
#
#


#
# MessageId: ERROR_INSTALL_SERVICE_FAILURE
#
# MessageText:
#
#  The Windows Installer Service could not be accessed. This can occur if you are running Windows in safe mode, or if the Windows Installer is not correctly installed. Contact your support personnel for assistance.
#
ERROR_INSTALL_SERVICE_FAILURE   = 1601

#
# MessageId: ERROR_INSTALL_USEREXIT
#
# MessageText:
#
#  User cancelled installation.
#
ERROR_INSTALL_USEREXIT          = 1602

#
# MessageId: ERROR_INSTALL_FAILURE
#
# MessageText:
#
#  Fatal error during installation.
#
ERROR_INSTALL_FAILURE           = 1603

#
# MessageId: ERROR_INSTALL_SUSPEND
#
# MessageText:
#
#  Installation suspended, incomplete.
#
ERROR_INSTALL_SUSPEND           = 1604

#
# MessageId: ERROR_UNKNOWN_PRODUCT
#
# MessageText:
#
#  This action is only valid for products that are currently installed.
#
ERROR_UNKNOWN_PRODUCT           = 1605

#
# MessageId: ERROR_UNKNOWN_FEATURE
#
# MessageText:
#
#  Feature ID not registered.
#
ERROR_UNKNOWN_FEATURE           = 1606

#
# MessageId: ERROR_UNKNOWN_COMPONENT
#
# MessageText:
#
#  Component ID not registered.
#
ERROR_UNKNOWN_COMPONENT         = 1607

#
# MessageId: ERROR_UNKNOWN_PROPERTY
#
# MessageText:
#
#  Unknown property.
#
ERROR_UNKNOWN_PROPERTY          = 1608

#
# MessageId: ERROR_INVALID_HANDLE_STATE
#
# MessageText:
#
#  Handle is in an invalid state.
#
ERROR_INVALID_HANDLE_STATE      = 1609

#
# MessageId: ERROR_BAD_CONFIGURATION
#
# MessageText:
#
#  The configuration data for this product is corrupt.  Contact your support personnel.
#
ERROR_BAD_CONFIGURATION         = 1610

#
# MessageId: ERROR_INDEX_ABSENT
#
# MessageText:
#
#  Component qualifier not present.
#
ERROR_INDEX_ABSENT              = 1611

#
# MessageId: ERROR_INSTALL_SOURCE_ABSENT
#
# MessageText:
#
#  The installation source for this product is not available.  Verify that the source exists and that you can access it.
#
ERROR_INSTALL_SOURCE_ABSENT     = 1612

#
# MessageId: ERROR_INSTALL_PACKAGE_VERSION
#
# MessageText:
#
#  This installation package cannot be installed by the Windows Installer service.  You must install a Windows service pack that contains a newer version of the Windows Installer service.
#
ERROR_INSTALL_PACKAGE_VERSION   = 1613

#
# MessageId: ERROR_PRODUCT_UNINSTALLED
#
# MessageText:
#
#  Product is uninstalled.
#
ERROR_PRODUCT_UNINSTALLED       = 1614

#
# MessageId: ERROR_BAD_QUERY_SYNTAX
#
# MessageText:
#
#  SQL query syntax invalid or unsupported.
#
ERROR_BAD_QUERY_SYNTAX          = 1615

#
# MessageId: ERROR_INVALID_FIELD
#
# MessageText:
#
#  Record field does not exist.
#
ERROR_INVALID_FIELD             = 1616

#
# MessageId: ERROR_DEVICE_REMOVED
#
# MessageText:
#
#  The device has been removed.
#
ERROR_DEVICE_REMOVED            = 1617

#
# MessageId: ERROR_INSTALL_ALREADY_RUNNING
#
# MessageText:
#
#  Another installation is already in progress.  Complete that installation before proceeding with this install.
#
ERROR_INSTALL_ALREADY_RUNNING   = 1618

#
# MessageId: ERROR_INSTALL_PACKAGE_OPEN_FAILED
#
# MessageText:
#
#  This installation package could not be opened.  Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.
#
ERROR_INSTALL_PACKAGE_OPEN_FAILED= 1619

#
# MessageId: ERROR_INSTALL_PACKAGE_INVALID
#
# MessageText:
#
#  This installation package could not be opened.  Contact the application vendor to verify that this is a valid Windows Installer package.
#
ERROR_INSTALL_PACKAGE_INVALID   = 1620

#
# MessageId: ERROR_INSTALL_UI_FAILURE
#
# MessageText:
#
#  There was an error starting the Windows Installer service user interface.  Contact your support personnel.
#
ERROR_INSTALL_UI_FAILURE        = 1621

#
# MessageId: ERROR_INSTALL_LOG_FAILURE
#
# MessageText:
#
#  Error opening installation log file. Verify that the specified log file location exists and that you can write to it.
#
ERROR_INSTALL_LOG_FAILURE       = 1622

#
# MessageId: ERROR_INSTALL_LANGUAGE_UNSUPPORTED
#
# MessageText:
#
#  The language of this installation package is not supported by your system.
#
ERROR_INSTALL_LANGUAGE_UNSUPPORTED= 1623

#
# MessageId: ERROR_INSTALL_TRANSFORM_FAILURE
#
# MessageText:
#
#  Error applying transforms.  Verify that the specified transform paths are valid.
#
ERROR_INSTALL_TRANSFORM_FAILURE = 1624

#
# MessageId: ERROR_INSTALL_PACKAGE_REJECTED
#
# MessageText:
#
#  This installation is forbidden by system policy.  Contact your system administrator.
#
ERROR_INSTALL_PACKAGE_REJECTED  = 1625

#
# MessageId: ERROR_FUNCTION_NOT_CALLED
#
# MessageText:
#
#  Function could not be executed.
#
ERROR_FUNCTION_NOT_CALLED       = 1626

#
# MessageId: ERROR_FUNCTION_FAILED
#
# MessageText:
#
#  Function failed during execution.
#
ERROR_FUNCTION_FAILED           = 1627

#
# MessageId: ERROR_INVALID_TABLE
#
# MessageText:
#
#  Invalid or unknown table specified.
#
ERROR_INVALID_TABLE             = 1628

#
# MessageId: ERROR_DATATYPE_MISMATCH
#
# MessageText:
#
#  Data supplied is of wrong type.
#
ERROR_DATATYPE_MISMATCH         = 1629

#
# MessageId: ERROR_UNSUPPORTED_TYPE
#
# MessageText:
#
#  Data of this type is not supported.
#
ERROR_UNSUPPORTED_TYPE          = 1630

#
# MessageId: ERROR_CREATE_FAILED
#
# MessageText:
#
#  The Windows Installer service failed to start.  Contact your support personnel.
#
ERROR_CREATE_FAILED             = 1631

#
# MessageId: ERROR_INSTALL_TEMP_UNWRITABLE
#
# MessageText:
#
#  The Temp folder is on a drive that is full or is inaccessible. Free up space on the drive or verify that you have write permission on the Temp folder.
#
ERROR_INSTALL_TEMP_UNWRITABLE   = 1632

#
# MessageId: ERROR_INSTALL_PLATFORM_UNSUPPORTED
#
# MessageText:
#
#  This installation package is not supported by this processor type. Contact your product vendor.
#
ERROR_INSTALL_PLATFORM_UNSUPPORTED= 1633

#
# MessageId: ERROR_INSTALL_NOTUSED
#
# MessageText:
#
#  Component not used on this computer.
#
ERROR_INSTALL_NOTUSED           = 1634

#
# MessageId: ERROR_PATCH_PACKAGE_OPEN_FAILED
#
# MessageText:
#
#  This patch package could not be opened.  Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.
#
ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635

#
# MessageId: ERROR_PATCH_PACKAGE_INVALID
#
# MessageText:
#
#  This patch package could not be opened.  Contact the application vendor to verify that this is a valid Windows Installer patch package.
#
ERROR_PATCH_PACKAGE_INVALID     = 1636

#
# MessageId: ERROR_PATCH_PACKAGE_UNSUPPORTED
#
# MessageText:
#
#  This patch package cannot be processed by the Windows Installer service.  You must install a Windows service pack that contains a newer version of the Windows Installer service.
#
ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637

#
# MessageId: ERROR_PRODUCT_VERSION
#
# MessageText:
#
#  Another version of this product is already installed.  Installation of this version cannot continue.  To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.
#
ERROR_PRODUCT_VERSION           = 1638

#
# MessageId: ERROR_INVALID_COMMAND_LINE
#
# MessageText:
#
#  Invalid command line argument.  Consult the Windows Installer SDK for detailed command line help.
#
ERROR_INVALID_COMMAND_LINE      = 1639

#
# MessageId: ERROR_INSTALL_REMOTE_DISALLOWED
#
# MessageText:
#
#  Only administrators have permission to add, remove, or configure server software during a Terminal services remote session. If you want to install or configure software on the server, contact your network administrator.
#
ERROR_INSTALL_REMOTE_DISALLOWED = 1640

#
# MessageId: ERROR_SUCCESS_REBOOT_INITIATED
#
# MessageText:
#
#  The requested operation completed successfully.  The system will be restarted so the changes can take effect.
#
ERROR_SUCCESS_REBOOT_INITIATED  = 1641

#
# MessageId: ERROR_PATCH_TARGET_NOT_FOUND
#
# MessageText:
#
#  The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program.
#  Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch.
#
ERROR_PATCH_TARGET_NOT_FOUND    = 1642

#
# MessageId: ERROR_PATCH_PACKAGE_REJECTED
#
# MessageText:
#
#  The patch package is not permitted by software restriction policy.
#
ERROR_PATCH_PACKAGE_REJECTED    = 1643

#
# MessageId: ERROR_INSTALL_TRANSFORM_REJECTED
#
# MessageText:
#
#  One or more customizations are not permitted by software restriction policy.
#
ERROR_INSTALL_TRANSFORM_REJECTED= 1644

#
# MessageId: ERROR_INSTALL_REMOTE_PROHIBITED
#
# MessageText:
#
#  The Windows Installer does not permit installation from a Remote Desktop Connection.
#
ERROR_INSTALL_REMOTE_PROHIBITED = 1645

# End of MSI error codes



#
#
#   RPC Status Codes
#
#


#
# MessageId: RPC_S_INVALID_STRING_BINDING
#
# MessageText:
#
#  The string binding is invalid.
#
RPC_S_INVALID_STRING_BINDING    = 1700

#
# MessageId: RPC_S_WRONG_KIND_OF_BINDING
#
# MessageText:
#
#  The binding handle is not the correct type.
#
RPC_S_WRONG_KIND_OF_BINDING     = 1701

#
# MessageId: RPC_S_INVALID_BINDING
#
# MessageText:
#
#  The binding handle is invalid.
#
RPC_S_INVALID_BINDING           = 1702

#
# MessageId: RPC_S_PROTSEQ_NOT_SUPPORTED
#
# MessageText:
#
#  The RPC protocol sequence is not supported.
#
RPC_S_PROTSEQ_NOT_SUPPORTED     = 1703

#
# MessageId: RPC_S_INVALID_RPC_PROTSEQ
#
# MessageText:
#
#  The RPC protocol sequence is invalid.
#
RPC_S_INVALID_RPC_PROTSEQ       = 1704

#
# MessageId: RPC_S_INVALID_STRING_UUID
#
# MessageText:
#
#  The string universal unique identifier (UUID) is invalid.
#
RPC_S_INVALID_STRING_UUID       = 1705

#
# MessageId: RPC_S_INVALID_ENDPOINT_FORMAT
#
# MessageText:
#
#  The endpoint format is invalid.
#
RPC_S_INVALID_ENDPOINT_FORMAT   = 1706

#
# MessageId: RPC_S_INVALID_NET_ADDR
#
# MessageText:
#
#  The network address is invalid.
#
RPC_S_INVALID_NET_ADDR          = 1707

#
# MessageId: RPC_S_NO_ENDPOINT_FOUND
#
# MessageText:
#
#  No endpoint was found.
#
RPC_S_NO_ENDPOINT_FOUND         = 1708

#
# MessageId: RPC_S_INVALID_TIMEOUT
#
# MessageText:
#
#  The timeout value is invalid.
#
RPC_S_INVALID_TIMEOUT           = 1709

#
# MessageId: RPC_S_OBJECT_NOT_FOUND
#
# MessageText:
#
#  The object universal unique identifier (UUID) was not found.
#
RPC_S_OBJECT_NOT_FOUND          = 1710

#
# MessageId: RPC_S_ALREADY_REGISTERED
#
# MessageText:
#
#  The object universal unique identifier (UUID) has already been registered.
#
RPC_S_ALREADY_REGISTERED        = 1711

#
# MessageId: RPC_S_TYPE_ALREADY_REGISTERED
#
# MessageText:
#
#  The type universal unique identifier (UUID) has already been registered.
#
RPC_S_TYPE_ALREADY_REGISTERED   = 1712

#
# MessageId: RPC_S_ALREADY_LISTENING
#
# MessageText:
#
#  The RPC server is already listening.
#
RPC_S_ALREADY_LISTENING         = 1713

#
# MessageId: RPC_S_NO_PROTSEQS_REGISTERED
#
# MessageText:
#
#  No protocol sequences have been registered.
#
RPC_S_NO_PROTSEQS_REGISTERED    = 1714

#
# MessageId: RPC_S_NOT_LISTENING
#
# MessageText:
#
#  The RPC server is not listening.
#
RPC_S_NOT_LISTENING             = 1715

#
# MessageId: RPC_S_UNKNOWN_MGR_TYPE
#
# MessageText:
#
#  The manager type is unknown.
#
RPC_S_UNKNOWN_MGR_TYPE          = 1716

#
# MessageId: RPC_S_UNKNOWN_IF
#
# MessageText:
#
#  The interface is unknown.
#
RPC_S_UNKNOWN_IF                = 1717

#
# MessageId: RPC_S_NO_BINDINGS
#
# MessageText:
#
#  There are no bindings.
#
RPC_S_NO_BINDINGS               = 1718

#
# MessageId: RPC_S_NO_PROTSEQS
#
# MessageText:
#
#  There are no protocol sequences.
#
RPC_S_NO_PROTSEQS               = 1719

#
# MessageId: RPC_S_CANT_CREATE_ENDPOINT
#
# MessageText:
#
#  The endpoint cannot be created.
#
RPC_S_CANT_CREATE_ENDPOINT      = 1720

#
# MessageId: RPC_S_OUT_OF_RESOURCES
#
# MessageText:
#
#  Not enough resources are available to complete this operation.
#
RPC_S_OUT_OF_RESOURCES          = 1721

#
# MessageId: RPC_S_SERVER_UNAVAILABLE
#
# MessageText:
#
#  The RPC server is unavailable.
#
RPC_S_SERVER_UNAVAILABLE        = 1722

#
# MessageId: RPC_S_SERVER_TOO_BUSY
#
# MessageText:
#
#  The RPC server is too busy to complete this operation.
#
RPC_S_SERVER_TOO_BUSY           = 1723

#
# MessageId: RPC_S_INVALID_NETWORK_OPTIONS
#
# MessageText:
#
#  The network options are invalid.
#
RPC_S_INVALID_NETWORK_OPTIONS   = 1724

#
# MessageId: RPC_S_NO_CALL_ACTIVE
#
# MessageText:
#
#  There are no remote procedure calls active on this thread.
#
RPC_S_NO_CALL_ACTIVE            = 1725

#
# MessageId: RPC_S_CALL_FAILED
#
# MessageText:
#
#  The remote procedure call failed.
#
RPC_S_CALL_FAILED               = 1726

#
# MessageId: RPC_S_CALL_FAILED_DNE
#
# MessageText:
#
#  The remote procedure call failed and did not execute.
#
RPC_S_CALL_FAILED_DNE           = 1727

#
# MessageId: RPC_S_PROTOCOL_ERROR
#
# MessageText:
#
#  A remote procedure call (RPC) protocol error occurred.
#
RPC_S_PROTOCOL_ERROR            = 1728

#
# MessageId: RPC_S_UNSUPPORTED_TRANS_SYN
#
# MessageText:
#
#  The transfer syntax is not supported by the RPC server.
#
RPC_S_UNSUPPORTED_TRANS_SYN     = 1730

#
# MessageId: RPC_S_UNSUPPORTED_TYPE
#
# MessageText:
#
#  The universal unique identifier (UUID) type is not supported.
#
RPC_S_UNSUPPORTED_TYPE          = 1732

#
# MessageId: RPC_S_INVALID_TAG
#
# MessageText:
#
#  The tag is invalid.
#
RPC_S_INVALID_TAG               = 1733

#
# MessageId: RPC_S_INVALID_BOUND
#
# MessageText:
#
#  The array bounds are invalid.
#
RPC_S_INVALID_BOUND             = 1734

#
# MessageId: RPC_S_NO_ENTRY_NAME
#
# MessageText:
#
#  The binding does not contain an entry name.
#
RPC_S_NO_ENTRY_NAME             = 1735

#
# MessageId: RPC_S_INVALID_NAME_SYNTAX
#
# MessageText:
#
#  The name syntax is invalid.
#
RPC_S_INVALID_NAME_SYNTAX       = 1736

#
# MessageId: RPC_S_UNSUPPORTED_NAME_SYNTAX
#
# MessageText:
#
#  The name syntax is not supported.
#
RPC_S_UNSUPPORTED_NAME_SYNTAX   = 1737

#
# MessageId: RPC_S_UUID_NO_ADDRESS
#
# MessageText:
#
#  No network address is available to use to construct a universal unique identifier (UUID).
#
RPC_S_UUID_NO_ADDRESS           = 1739

#
# MessageId: RPC_S_DUPLICATE_ENDPOINT
#
# MessageText:
#
#  The endpoint is a duplicate.
#
RPC_S_DUPLICATE_ENDPOINT        = 1740

#
# MessageId: RPC_S_UNKNOWN_AUTHN_TYPE
#
# MessageText:
#
#  The authentication type is unknown.
#
RPC_S_UNKNOWN_AUTHN_TYPE        = 1741

#
# MessageId: RPC_S_MAX_CALLS_TOO_SMALL
#
# MessageText:
#
#  The maximum number of calls is too small.
#
RPC_S_MAX_CALLS_TOO_SMALL       = 1742

#
# MessageId: RPC_S_STRING_TOO_LONG
#
# MessageText:
#
#  The string is too long.
#
RPC_S_STRING_TOO_LONG           = 1743

#
# MessageId: RPC_S_PROTSEQ_NOT_FOUND
#
# MessageText:
#
#  The RPC protocol sequence was not found.
#
RPC_S_PROTSEQ_NOT_FOUND         = 1744

#
# MessageId: RPC_S_PROCNUM_OUT_OF_RANGE
#
# MessageText:
#
#  The procedure number is out of range.
#
RPC_S_PROCNUM_OUT_OF_RANGE      = 1745

#
# MessageId: RPC_S_BINDING_HAS_NO_AUTH
#
# MessageText:
#
#  The binding does not contain any authentication information.
#
RPC_S_BINDING_HAS_NO_AUTH       = 1746

#
# MessageId: RPC_S_UNKNOWN_AUTHN_SERVICE
#
# MessageText:
#
#  The authentication service is unknown.
#
RPC_S_UNKNOWN_AUTHN_SERVICE     = 1747

#
# MessageId: RPC_S_UNKNOWN_AUTHN_LEVEL
#
# MessageText:
#
#  The authentication level is unknown.
#
RPC_S_UNKNOWN_AUTHN_LEVEL       = 1748

#
# MessageId: RPC_S_INVALID_AUTH_IDENTITY
#
# MessageText:
#
#  The security context is invalid.
#
RPC_S_INVALID_AUTH_IDENTITY     = 1749

#
# MessageId: RPC_S_UNKNOWN_AUTHZ_SERVICE
#
# MessageText:
#
#  The authorization service is unknown.
#
RPC_S_UNKNOWN_AUTHZ_SERVICE     = 1750

#
# MessageId: EPT_S_INVALID_ENTRY
#
# MessageText:
#
#  The entry is invalid.
#
EPT_S_INVALID_ENTRY             = 1751

#
# MessageId: EPT_S_CANT_PERFORM_OP
#
# MessageText:
#
#  The server endpoint cannot perform the operation.
#
EPT_S_CANT_PERFORM_OP           = 1752

#
# MessageId: EPT_S_NOT_REGISTERED
#
# MessageText:
#
#  There are no more endpoints available from the endpoint mapper.
#
EPT_S_NOT_REGISTERED            = 1753

#
# MessageId: RPC_S_NOTHING_TO_EXPORT
#
# MessageText:
#
#  No interfaces have been exported.
#
RPC_S_NOTHING_TO_EXPORT         = 1754

#
# MessageId: RPC_S_INCOMPLETE_NAME
#
# MessageText:
#
#  The entry name is incomplete.
#
RPC_S_INCOMPLETE_NAME           = 1755

#
# MessageId: RPC_S_INVALID_VERS_OPTION
#
# MessageText:
#
#  The version option is invalid.
#
RPC_S_INVALID_VERS_OPTION       = 1756

#
# MessageId: RPC_S_NO_MORE_MEMBERS
#
# MessageText:
#
#  There are no more members.
#
RPC_S_NO_MORE_MEMBERS           = 1757

#
# MessageId: RPC_S_NOT_ALL_OBJS_UNEXPORTED
#
# MessageText:
#
#  There is nothing to unexport.
#
RPC_S_NOT_ALL_OBJS_UNEXPORTED   = 1758

#
# MessageId: RPC_S_INTERFACE_NOT_FOUND
#
# MessageText:
#
#  The interface was not found.
#
RPC_S_INTERFACE_NOT_FOUND       = 1759

#
# MessageId: RPC_S_ENTRY_ALREADY_EXISTS
#
# MessageText:
#
#  The entry already exists.
#
RPC_S_ENTRY_ALREADY_EXISTS      = 1760

#
# MessageId: RPC_S_ENTRY_NOT_FOUND
#
# MessageText:
#
#  The entry is not found.
#
RPC_S_ENTRY_NOT_FOUND           = 1761

#
# MessageId: RPC_S_NAME_SERVICE_UNAVAILABLE
#
# MessageText:
#
#  The name service is unavailable.
#
RPC_S_NAME_SERVICE_UNAVAILABLE  = 1762

#
# MessageId: RPC_S_INVALID_NAF_ID
#
# MessageText:
#
#  The network address family is invalid.
#
RPC_S_INVALID_NAF_ID            = 1763

#
# MessageId: RPC_S_CANNOT_SUPPORT
#
# MessageText:
#
#  The requested operation is not supported.
#
RPC_S_CANNOT_SUPPORT            = 1764

#
# MessageId: RPC_S_NO_CONTEXT_AVAILABLE
#
# MessageText:
#
#  No security context is available to allow impersonation.
#
RPC_S_NO_CONTEXT_AVAILABLE      = 1765

#
# MessageId: RPC_S_INTERNAL_ERROR
#
# MessageText:
#
#  An internal error occurred in a remote procedure call (RPC).
#
RPC_S_INTERNAL_ERROR            = 1766

#
# MessageId: RPC_S_ZERO_DIVIDE
#
# MessageText:
#
#  The RPC server attempted an integer division by zero.
#
RPC_S_ZERO_DIVIDE               = 1767

#
# MessageId: RPC_S_ADDRESS_ERROR
#
# MessageText:
#
#  An addressing error occurred in the RPC server.
#
RPC_S_ADDRESS_ERROR             = 1768

#
# MessageId: RPC_S_FP_DIV_ZERO
#
# MessageText:
#
#  A floating-point operation at the RPC server caused a division by zero.
#
RPC_S_FP_DIV_ZERO               = 1769

#
# MessageId: RPC_S_FP_UNDERFLOW
#
# MessageText:
#
#  A floating-point underflow occurred at the RPC server.
#
RPC_S_FP_UNDERFLOW              = 1770

#
# MessageId: RPC_S_FP_OVERFLOW
#
# MessageText:
#
#  A floating-point overflow occurred at the RPC server.
#
RPC_S_FP_OVERFLOW               = 1771

#
# MessageId: RPC_X_NO_MORE_ENTRIES
#
# MessageText:
#
#  The list of RPC servers available for the binding of auto handles has been exhausted.
#
RPC_X_NO_MORE_ENTRIES           = 1772

#
# MessageId: RPC_X_SS_CHAR_TRANS_OPEN_FAIL
#
# MessageText:
#
#  Unable to open the character translation table file.
#
RPC_X_SS_CHAR_TRANS_OPEN_FAIL   = 1773

#
# MessageId: RPC_X_SS_CHAR_TRANS_SHORT_FILE
#
# MessageText:
#
#  The file containing the character translation table has fewer than 512 bytes.
#
RPC_X_SS_CHAR_TRANS_SHORT_FILE  = 1774

#
# MessageId: RPC_X_SS_IN_NULL_CONTEXT
#
# MessageText:
#
#  A null context handle was passed from the client to the host during a remote procedure call.
#
RPC_X_SS_IN_NULL_CONTEXT        = 1775

#
# MessageId: RPC_X_SS_CONTEXT_DAMAGED
#
# MessageText:
#
#  The context handle changed during a remote procedure call.
#
RPC_X_SS_CONTEXT_DAMAGED        = 1777

#
# MessageId: RPC_X_SS_HANDLES_MISMATCH
#
# MessageText:
#
#  The binding handles passed to a remote procedure call do not match.
#
RPC_X_SS_HANDLES_MISMATCH       = 1778

#
# MessageId: RPC_X_SS_CANNOT_GET_CALL_HANDLE
#
# MessageText:
#
#  The stub is unable to get the remote procedure call handle.
#
RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779

#
# MessageId: RPC_X_NULL_REF_POINTER
#
# MessageText:
#
#  A null reference pointer was passed to the stub.
#
RPC_X_NULL_REF_POINTER          = 1780

#
# MessageId: RPC_X_ENUM_VALUE_OUT_OF_RANGE
#
# MessageText:
#
#  The enumeration value is out of range.
#
RPC_X_ENUM_VALUE_OUT_OF_RANGE   = 1781

#
# MessageId: RPC_X_BYTE_COUNT_TOO_SMALL
#
# MessageText:
#
#  The byte count is too small.
#
RPC_X_BYTE_COUNT_TOO_SMALL      = 1782

#
# MessageId: RPC_X_BAD_STUB_DATA
#
# MessageText:
#
#  The stub received bad data.
#
RPC_X_BAD_STUB_DATA             = 1783

#
# MessageId: ERROR_INVALID_USER_BUFFER
#
# MessageText:
#
#  The supplied user buffer is not valid for the requested operation.
#
ERROR_INVALID_USER_BUFFER       = 1784

#
# MessageId: ERROR_UNRECOGNIZED_MEDIA
#
# MessageText:
#
#  The disk media is not recognized. It may not be formatted.
#
ERROR_UNRECOGNIZED_MEDIA        = 1785

#
# MessageId: ERROR_NO_TRUST_LSA_SECRET
#
# MessageText:
#
#  The workstation does not have a trust secret.
#
ERROR_NO_TRUST_LSA_SECRET       = 1786

#
# MessageId: ERROR_NO_TRUST_SAM_ACCOUNT
#
# MessageText:
#
#  The security database on the server does not have a computer account for this workstation trust relationship.
#
ERROR_NO_TRUST_SAM_ACCOUNT      = 1787

#
# MessageId: ERROR_TRUSTED_DOMAIN_FAILURE
#
# MessageText:
#
#  The trust relationship between the primary domain and the trusted domain failed.
#
ERROR_TRUSTED_DOMAIN_FAILURE    = 1788

#
# MessageId: ERROR_TRUSTED_RELATIONSHIP_FAILURE
#
# MessageText:
#
#  The trust relationship between this workstation and the primary domain failed.
#
ERROR_TRUSTED_RELATIONSHIP_FAILURE= 1789

#
# MessageId: ERROR_TRUST_FAILURE
#
# MessageText:
#
#  The network logon failed.
#
ERROR_TRUST_FAILURE             = 1790

#
# MessageId: RPC_S_CALL_IN_PROGRESS
#
# MessageText:
#
#  A remote procedure call is already in progress for this thread.
#
RPC_S_CALL_IN_PROGRESS          = 1791

#
# MessageId: ERROR_NETLOGON_NOT_STARTED
#
# MessageText:
#
#  An attempt was made to logon, but the network logon service was not started.
#
ERROR_NETLOGON_NOT_STARTED      = 1792

#
# MessageId: ERROR_ACCOUNT_EXPIRED
#
# MessageText:
#
#  The user#s account has expired.
#
ERROR_ACCOUNT_EXPIRED           = 1793

#
# MessageId: ERROR_REDIRECTOR_HAS_OPEN_HANDLES
#
# MessageText:
#
#  The redirector is in use and cannot be unloaded.
#
ERROR_REDIRECTOR_HAS_OPEN_HANDLES= 1794

#
# MessageId: ERROR_PRINTER_DRIVER_ALREADY_INSTALLED
#
# MessageText:
#
#  The specified printer driver is already installed.
#
ERROR_PRINTER_DRIVER_ALREADY_INSTALLED= 1795

#
# MessageId: ERROR_UNKNOWN_PORT
#
# MessageText:
#
#  The specified port is unknown.
#
ERROR_UNKNOWN_PORT              = 1796

#
# MessageId: ERROR_UNKNOWN_PRINTER_DRIVER
#
# MessageText:
#
#  The printer driver is unknown.
#
ERROR_UNKNOWN_PRINTER_DRIVER    = 1797

#
# MessageId: ERROR_UNKNOWN_PRINTPROCESSOR
#
# MessageText:
#
#  The print processor is unknown.
#
ERROR_UNKNOWN_PRINTPROCESSOR    = 1798

#
# MessageId: ERROR_INVALID_SEPARATOR_FILE
#
# MessageText:
#
#  The specified separator file is invalid.
#
ERROR_INVALID_SEPARATOR_FILE    = 1799

#
# MessageId: ERROR_INVALID_PRIORITY
#
# MessageText:
#
#  The specified priority is invalid.
#
ERROR_INVALID_PRIORITY          = 1800

#
# MessageId: ERROR_INVALID_PRINTER_NAME
#
# MessageText:
#
#  The printer name is invalid.
#
ERROR_INVALID_PRINTER_NAME      = 1801

#
# MessageId: ERROR_PRINTER_ALREADY_EXISTS
#
# MessageText:
#
#  The printer already exists.
#
ERROR_PRINTER_ALREADY_EXISTS    = 1802

#
# MessageId: ERROR_INVALID_PRINTER_COMMAND
#
# MessageText:
#
#  The printer command is invalid.
#
ERROR_INVALID_PRINTER_COMMAND   = 1803

#
# MessageId: ERROR_INVALID_DATATYPE
#
# MessageText:
#
#  The specified datatype is invalid.
#
ERROR_INVALID_DATATYPE          = 1804

#
# MessageId: ERROR_INVALID_ENVIRONMENT
#
# MessageText:
#
#  The environment specified is invalid.
#
ERROR_INVALID_ENVIRONMENT       = 1805

#
# MessageId: RPC_S_NO_MORE_BINDINGS
#
# MessageText:
#
#  There are no more bindings.
#
RPC_S_NO_MORE_BINDINGS          = 1806

#
# MessageId: ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT
#
# MessageText:
#
#  The account used is an interdomain trust account. Use your global user account or local user account to access this server.
#
ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT= 1807

#
# MessageId: ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT
#
# MessageText:
#
#  The account used is a computer account. Use your global user account or local user account to access this server.
#
ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT= 1808

#
# MessageId: ERROR_NOLOGON_SERVER_TRUST_ACCOUNT
#
# MessageText:
#
#  The account used is a server trust account. Use your global user account or local user account to access this server.
#
ERROR_NOLOGON_SERVER_TRUST_ACCOUNT= 1809

#
# MessageId: ERROR_DOMAIN_TRUST_INCONSISTENT
#
# MessageText:
#
#  The name or security ID (SID) of the domain specified is inconsistent with the trust information for that domain.
#
ERROR_DOMAIN_TRUST_INCONSISTENT = 1810

#
# MessageId: ERROR_SERVER_HAS_OPEN_HANDLES
#
# MessageText:
#
#  The server is in use and cannot be unloaded.
#
ERROR_SERVER_HAS_OPEN_HANDLES   = 1811

#
# MessageId: ERROR_RESOURCE_DATA_NOT_FOUND
#
# MessageText:
#
#  The specified image file did not contain a resource section.
#
ERROR_RESOURCE_DATA_NOT_FOUND   = 1812

#
# MessageId: ERROR_RESOURCE_TYPE_NOT_FOUND
#
# MessageText:
#
#  The specified resource type cannot be found in the image file.
#
ERROR_RESOURCE_TYPE_NOT_FOUND   = 1813

#
# MessageId: ERROR_RESOURCE_NAME_NOT_FOUND
#
# MessageText:
#
#  The specified resource name cannot be found in the image file.
#
ERROR_RESOURCE_NAME_NOT_FOUND   = 1814

#
# MessageId: ERROR_RESOURCE_LANG_NOT_FOUND
#
# MessageText:
#
#  The specified resource language ID cannot be found in the image file.
#
ERROR_RESOURCE_LANG_NOT_FOUND   = 1815

#
# MessageId: ERROR_NOT_ENOUGH_QUOTA
#
# MessageText:
#
#  Not enough quota is available to process this command.
#
ERROR_NOT_ENOUGH_QUOTA          = 1816

#
# MessageId: RPC_S_NO_INTERFACES
#
# MessageText:
#
#  No interfaces have been registered.
#
RPC_S_NO_INTERFACES             = 1817

#
# MessageId: RPC_S_CALL_CANCELLED
#
# MessageText:
#
#  The remote procedure call was cancelled.
#
RPC_S_CALL_CANCELLED            = 1818

#
# MessageId: RPC_S_BINDING_INCOMPLETE
#
# MessageText:
#
#  The binding handle does not contain all required information.
#
RPC_S_BINDING_INCOMPLETE        = 1819

#
# MessageId: RPC_S_COMM_FAILURE
#
# MessageText:
#
#  A communications failure occurred during a remote procedure call.
#
RPC_S_COMM_FAILURE              = 1820

#
# MessageId: RPC_S_UNSUPPORTED_AUTHN_LEVEL
#
# MessageText:
#
#  The requested authentication level is not supported.
#
RPC_S_UNSUPPORTED_AUTHN_LEVEL   = 1821

#
# MessageId: RPC_S_NO_PRINC_NAME
#
# MessageText:
#
#  No principal name registered.
#
RPC_S_NO_PRINC_NAME             = 1822

#
# MessageId: RPC_S_NOT_RPC_ERROR
#
# MessageText:
#
#  The error specified is not a valid Windows RPC error code.
#
RPC_S_NOT_RPC_ERROR             = 1823

#
# MessageId: RPC_S_UUID_LOCAL_ONLY
#
# MessageText:
#
#  A UUID that is valid only on this computer has been allocated.
#
RPC_S_UUID_LOCAL_ONLY           = 1824

#
# MessageId: RPC_S_SEC_PKG_ERROR
#
# MessageText:
#
#  A security package specific error occurred.
#
RPC_S_SEC_PKG_ERROR             = 1825

#
# MessageId: RPC_S_NOT_CANCELLED
#
# MessageText:
#
#  Thread is not canceled.
#
RPC_S_NOT_CANCELLED             = 1826

#
# MessageId: RPC_X_INVALID_ES_ACTION
#
# MessageText:
#
#  Invalid operation on the encoding/decoding handle.
#
RPC_X_INVALID_ES_ACTION         = 1827

#
# MessageId: RPC_X_WRONG_ES_VERSION
#
# MessageText:
#
#  Incompatible version of the serializing package.
#
RPC_X_WRONG_ES_VERSION          = 1828

#
# MessageId: RPC_X_WRONG_STUB_VERSION
#
# MessageText:
#
#  Incompatible version of the RPC stub.
#
RPC_X_WRONG_STUB_VERSION        = 1829

#
# MessageId: RPC_X_INVALID_PIPE_OBJECT
#
# MessageText:
#
#  The RPC pipe object is invalid or corrupted.
#
RPC_X_INVALID_PIPE_OBJECT       = 1830

#
# MessageId: RPC_X_WRONG_PIPE_ORDER
#
# MessageText:
#
#  An invalid operation was attempted on an RPC pipe object.
#
RPC_X_WRONG_PIPE_ORDER          = 1831

#
# MessageId: RPC_X_WRONG_PIPE_VERSION
#
# MessageText:
#
#  Unsupported RPC pipe version.
#
RPC_X_WRONG_PIPE_VERSION        = 1832

#
# MessageId: RPC_S_GROUP_MEMBER_NOT_FOUND
#
# MessageText:
#
#  The group member was not found.
#
RPC_S_GROUP_MEMBER_NOT_FOUND    = 1898

#
# MessageId: EPT_S_CANT_CREATE
#
# MessageText:
#
#  The endpoint mapper database entry could not be created.
#
EPT_S_CANT_CREATE               = 1899

#
# MessageId: RPC_S_INVALID_OBJECT
#
# MessageText:
#
#  The object universal unique identifier (UUID) is the nil UUID.
#
RPC_S_INVALID_OBJECT            = 1900

#
# MessageId: ERROR_INVALID_TIME
#
# MessageText:
#
#  The specified time is invalid.
#
ERROR_INVALID_TIME              = 1901

#
# MessageId: ERROR_INVALID_FORM_NAME
#
# MessageText:
#
#  The specified form name is invalid.
#
ERROR_INVALID_FORM_NAME         = 1902

#
# MessageId: ERROR_INVALID_FORM_SIZE
#
# MessageText:
#
#  The specified form size is invalid.
#
ERROR_INVALID_FORM_SIZE         = 1903

#
# MessageId: ERROR_ALREADY_WAITING
#
# MessageText:
#
#  The specified printer handle is already being waited on
#
ERROR_ALREADY_WAITING           = 1904

#
# MessageId: ERROR_PRINTER_DELETED
#
# MessageText:
#
#  The specified printer has been deleted.
#
ERROR_PRINTER_DELETED           = 1905

#
# MessageId: ERROR_INVALID_PRINTER_STATE
#
# MessageText:
#
#  The state of the printer is invalid.
#
ERROR_INVALID_PRINTER_STATE     = 1906

#
# MessageId: ERROR_PASSWORD_MUST_CHANGE
#
# MessageText:
#
#  The user#s password must be changed before logging on the first time.
#
ERROR_PASSWORD_MUST_CHANGE      = 1907

#
# MessageId: ERROR_DOMAIN_CONTROLLER_NOT_FOUND
#
# MessageText:
#
#  Could not find the domain controller for this domain.
#
ERROR_DOMAIN_CONTROLLER_NOT_FOUND= 1908

#
# MessageId: ERROR_ACCOUNT_LOCKED_OUT
#
# MessageText:
#
#  The referenced account is currently locked out and may not be logged on to.
#
ERROR_ACCOUNT_LOCKED_OUT        = 1909

#
# MessageId: OR_INVALID_OXID
#
# MessageText:
#
#  The object exporter specified was not found.
#
OR_INVALID_OXID                 = 1910

#
# MessageId: OR_INVALID_OID
#
# MessageText:
#
#  The object specified was not found.
#
OR_INVALID_OID                  = 1911

#
# MessageId: OR_INVALID_SET
#
# MessageText:
#
#  The object resolver set specified was not found.
#
OR_INVALID_SET                  = 1912

#
# MessageId: RPC_S_SEND_INCOMPLETE
#
# MessageText:
#
#  Some data remains to be sent in the request buffer.
#
RPC_S_SEND_INCOMPLETE           = 1913

#
# MessageId: RPC_S_INVALID_ASYNC_HANDLE
#
# MessageText:
#
#  Invalid asynchronous remote procedure call handle.
#
RPC_S_INVALID_ASYNC_HANDLE      = 1914

#
# MessageId: RPC_S_INVALID_ASYNC_CALL
#
# MessageText:
#
#  Invalid asynchronous RPC call handle for this operation.
#
RPC_S_INVALID_ASYNC_CALL        = 1915

#
# MessageId: RPC_X_PIPE_CLOSED
#
# MessageText:
#
#  The RPC pipe object has already been closed.
#
RPC_X_PIPE_CLOSED               = 1916

#
# MessageId: RPC_X_PIPE_DISCIPLINE_ERROR
#
# MessageText:
#
#  The RPC call completed before all pipes were processed.
#
RPC_X_PIPE_DISCIPLINE_ERROR     = 1917

#
# MessageId: RPC_X_PIPE_EMPTY
#
# MessageText:
#
#  No more data is available from the RPC pipe.
#
RPC_X_PIPE_EMPTY                = 1918

#
# MessageId: ERROR_NO_SITENAME
#
# MessageText:
#
#  No site name is available for this machine.
#
ERROR_NO_SITENAME               = 1919

#
# MessageId: ERROR_CANT_ACCESS_FILE
#
# MessageText:
#
#  The file can not be accessed by the system.
#
ERROR_CANT_ACCESS_FILE          = 1920

#
# MessageId: ERROR_CANT_RESOLVE_FILENAME
#
# MessageText:
#
#  The name of the file cannot be resolved by the system.
#
ERROR_CANT_RESOLVE_FILENAME     = 1921

#
# MessageId: RPC_S_ENTRY_TYPE_MISMATCH
#
# MessageText:
#
#  The entry is not of the expected type.
#
RPC_S_ENTRY_TYPE_MISMATCH       = 1922

#
# MessageId: RPC_S_NOT_ALL_OBJS_EXPORTED
#
# MessageText:
#
#  Not all object UUIDs could be exported to the specified entry.
#
RPC_S_NOT_ALL_OBJS_EXPORTED     = 1923

#
# MessageId: RPC_S_INTERFACE_NOT_EXPORTED
#
# MessageText:
#
#  Interface could not be exported to the specified entry.
#
RPC_S_INTERFACE_NOT_EXPORTED    = 1924

#
# MessageId: RPC_S_PROFILE_NOT_ADDED
#
# MessageText:
#
#  The specified profile entry could not be added.
#
RPC_S_PROFILE_NOT_ADDED         = 1925

#
# MessageId: RPC_S_PRF_ELT_NOT_ADDED
#
# MessageText:
#
#  The specified profile element could not be added.
#
RPC_S_PRF_ELT_NOT_ADDED         = 1926

#
# MessageId: RPC_S_PRF_ELT_NOT_REMOVED
#
# MessageText:
#
#  The specified profile element could not be removed.
#
RPC_S_PRF_ELT_NOT_REMOVED       = 1927

#
# MessageId: RPC_S_GRP_ELT_NOT_ADDED
#
# MessageText:
#
#  The group element could not be added.
#
RPC_S_GRP_ELT_NOT_ADDED         = 1928

#
# MessageId: RPC_S_GRP_ELT_NOT_REMOVED
#
# MessageText:
#
#  The group element could not be removed.
#
RPC_S_GRP_ELT_NOT_REMOVED       = 1929

#
# MessageId: ERROR_KM_DRIVER_BLOCKED
#
# MessageText:
#
#  The printer driver is not compatible with a policy enabled on your computer that blocks NT 4.0 drivers.
#
ERROR_KM_DRIVER_BLOCKED         = 1930

#
# MessageId: ERROR_CONTEXT_EXPIRED
#
# MessageText:
#
#  The context has expired and can no longer be used.
#
ERROR_CONTEXT_EXPIRED           = 1931

#
# MessageId: ERROR_PER_USER_TRUST_QUOTA_EXCEEDED
#
# MessageText:
#
#  The current user#s delegated trust creation quota has been exceeded.
#
ERROR_PER_USER_TRUST_QUOTA_EXCEEDED= 1932

#
# MessageId: ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED
#
# MessageText:
#
#  The total delegated trust creation quota has been exceeded.
#
ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED= 1933

#
# MessageId: ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED
#
# MessageText:
#
#  The current user#s delegated trust deletion quota has been exceeded.
#
ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED= 1934

#
# MessageId: ERROR_AUTHENTICATION_FIREWALL_FAILED
#
# MessageText:
#
#  Logon Failure: The machine you are logging onto is protected by an authentication firewall.  The specified account is not allowed to authenticate to the machine.
#
ERROR_AUTHENTICATION_FIREWALL_FAILED= 1935

#
# MessageId: ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED
#
# MessageText:
#
#  Remote connections to the Print Spooler are blocked by a policy set on your machine.
#
ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED= 1936




#
#
#   OpenGL Error Code
#
#


#
# MessageId: ERROR_INVALID_PIXEL_FORMAT
#
# MessageText:
#
#  The pixel format is invalid.
#
ERROR_INVALID_PIXEL_FORMAT      = 2000

#
# MessageId: ERROR_BAD_DRIVER
#
# MessageText:
#
#  The specified driver is invalid.
#
ERROR_BAD_DRIVER                = 2001

#
# MessageId: ERROR_INVALID_WINDOW_STYLE
#
# MessageText:
#
#  The window style or class attribute is invalid for this operation.
#
ERROR_INVALID_WINDOW_STYLE      = 2002

#
# MessageId: ERROR_METAFILE_NOT_SUPPORTED
#
# MessageText:
#
#  The requested metafile operation is not supported.
#
ERROR_METAFILE_NOT_SUPPORTED    = 2003

#
# MessageId: ERROR_TRANSFORM_NOT_SUPPORTED
#
# MessageText:
#
#  The requested transformation operation is not supported.
#
ERROR_TRANSFORM_NOT_SUPPORTED   = 2004

#
# MessageId: ERROR_CLIPPING_NOT_SUPPORTED
#
# MessageText:
#
#  The requested clipping operation is not supported.
#
ERROR_CLIPPING_NOT_SUPPORTED    = 2005

# End of OpenGL error codes



#
#
#   Image Color Management Error Code
#
#


#
# MessageId: ERROR_INVALID_CMM
#
# MessageText:
#
#  The specified color management module is invalid.
#
ERROR_INVALID_CMM               = 2010

#
# MessageId: ERROR_INVALID_PROFILE
#
# MessageText:
#
#  The specified color profile is invalid.
#
ERROR_INVALID_PROFILE           = 2011

#
# MessageId: ERROR_TAG_NOT_FOUND
#
# MessageText:
#
#  The specified tag was not found.
#
ERROR_TAG_NOT_FOUND             = 2012

#
# MessageId: ERROR_TAG_NOT_PRESENT
#
# MessageText:
#
#  A required tag is not present.
#
ERROR_TAG_NOT_PRESENT           = 2013

#
# MessageId: ERROR_DUPLICATE_TAG
#
# MessageText:
#
#  The specified tag is already present.
#
ERROR_DUPLICATE_TAG             = 2014

#
# MessageId: ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE
#
# MessageText:
#
#  The specified color profile is not associated with any device.
#
ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE= 2015

#
# MessageId: ERROR_PROFILE_NOT_FOUND
#
# MessageText:
#
#  The specified color profile was not found.
#
ERROR_PROFILE_NOT_FOUND         = 2016

#
# MessageId: ERROR_INVALID_COLORSPACE
#
# MessageText:
#
#  The specified color space is invalid.
#
ERROR_INVALID_COLORSPACE        = 2017

#
# MessageId: ERROR_ICM_NOT_ENABLED
#
# MessageText:
#
#  Image Color Management is not enabled.
#
ERROR_ICM_NOT_ENABLED           = 2018

#
# MessageId: ERROR_DELETING_ICM_XFORM
#
# MessageText:
#
#  There was an error while deleting the color transform.
#
ERROR_DELETING_ICM_XFORM        = 2019

#
# MessageId: ERROR_INVALID_TRANSFORM
#
# MessageText:
#
#  The specified color transform is invalid.
#
ERROR_INVALID_TRANSFORM         = 2020

#
# MessageId: ERROR_COLORSPACE_MISMATCH
#
# MessageText:
#
#  The specified transform does not match the bitmap#s color space.
#
ERROR_COLORSPACE_MISMATCH       = 2021

#
# MessageId: ERROR_INVALID_COLORINDEX
#
# MessageText:
#
#  The specified named color index is not present in the profile.
#
ERROR_INVALID_COLORINDEX        = 2022




#
#
# Winnet32 Status Codes
#
# The range 2100 through 2999 is reserved for network status codes.
# See lmerr.h for a complete listing
#


#
# MessageId: ERROR_CONNECTED_OTHER_PASSWORD
#
# MessageText:
#
#  The network connection was made successfully, but the user had to be prompted for a password other than the one originally specified.
#
ERROR_CONNECTED_OTHER_PASSWORD  = 2108

#
# MessageId: ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT
#
# MessageText:
#
#  The network connection was made successfully using default credentials.
#
ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT= 2109

#
# MessageId: ERROR_BAD_USERNAME
#
# MessageText:
#
#  The specified username is invalid.
#
ERROR_BAD_USERNAME              = 2202

#
# MessageId: ERROR_NOT_CONNECTED
#
# MessageText:
#
#  This network connection does not exist.
#
ERROR_NOT_CONNECTED             = 2250

#
# MessageId: ERROR_OPEN_FILES
#
# MessageText:
#
#  This network connection has files open or requests pending.
#
ERROR_OPEN_FILES                = 2401

#
# MessageId: ERROR_ACTIVE_CONNECTIONS
#
# MessageText:
#
#  Active connections still exist.
#
ERROR_ACTIVE_CONNECTIONS        = 2402

#
# MessageId: ERROR_DEVICE_IN_USE
#
# MessageText:
#
#  The device is in use by an active process and cannot be disconnected.
#
ERROR_DEVICE_IN_USE             = 2404


#
#
#     Win32 Spooler Error Codes
#
#
#
# MessageId: ERROR_UNKNOWN_PRINT_MONITOR
#
# MessageText:
#
#  The specified print monitor is unknown.
#
ERROR_UNKNOWN_PRINT_MONITOR     = 3000

#
# MessageId: ERROR_PRINTER_DRIVER_IN_USE
#
# MessageText:
#
#  The specified printer driver is currently in use.
#
ERROR_PRINTER_DRIVER_IN_USE     = 3001

#
# MessageId: ERROR_SPOOL_FILE_NOT_FOUND
#
# MessageText:
#
#  The spool file was not found.
#
ERROR_SPOOL_FILE_NOT_FOUND      = 3002

#
# MessageId: ERROR_SPL_NO_STARTDOC
#
# MessageText:
#
#  A StartDocPrinter call was not issued.
#
ERROR_SPL_NO_STARTDOC           = 3003

#
# MessageId: ERROR_SPL_NO_ADDJOB
#
# MessageText:
#
#  An AddJob call was not issued.
#
ERROR_SPL_NO_ADDJOB             = 3004

#
# MessageId: ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED
#
# MessageText:
#
#  The specified print processor has already been installed.
#
ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED= 3005

#
# MessageId: ERROR_PRINT_MONITOR_ALREADY_INSTALLED
#
# MessageText:
#
#  The specified print monitor has already been installed.
#
ERROR_PRINT_MONITOR_ALREADY_INSTALLED= 3006

#
# MessageId: ERROR_INVALID_PRINT_MONITOR
#
# MessageText:
#
#  The specified print monitor does not have the required functions.
#
ERROR_INVALID_PRINT_MONITOR     = 3007

#
# MessageId: ERROR_PRINT_MONITOR_IN_USE
#
# MessageText:
#
#  The specified print monitor is currently in use.
#
ERROR_PRINT_MONITOR_IN_USE      = 3008

#
# MessageId: ERROR_PRINTER_HAS_JOBS_QUEUED
#
# MessageText:
#
#  The requested operation is not allowed when there are jobs queued to the printer.
#
ERROR_PRINTER_HAS_JOBS_QUEUED   = 3009

#
# MessageId: ERROR_SUCCESS_REBOOT_REQUIRED
#
# MessageText:
#
#  The requested operation is successful. Changes will not be effective until the system is rebooted.
#
ERROR_SUCCESS_REBOOT_REQUIRED   = 3010

#
# MessageId: ERROR_SUCCESS_RESTART_REQUIRED
#
# MessageText:
#
#  The requested operation is successful. Changes will not be effective until the service is restarted.
#
ERROR_SUCCESS_RESTART_REQUIRED  = 3011

#
# MessageId: ERROR_PRINTER_NOT_FOUND
#
# MessageText:
#
#  No printers were found.
#
ERROR_PRINTER_NOT_FOUND         = 3012

#
# MessageId: ERROR_PRINTER_DRIVER_WARNED
#
# MessageText:
#
#  The printer driver is known to be unreliable.
#
ERROR_PRINTER_DRIVER_WARNED     = 3013

#
# MessageId: ERROR_PRINTER_DRIVER_BLOCKED
#
# MessageText:
#
#  The printer driver is known to harm the system.
#
ERROR_PRINTER_DRIVER_BLOCKED    = 3014

#
#
#     Wins Error Codes
#
#
#
# MessageId: ERROR_WINS_INTERNAL
#
# MessageText:
#
#  WINS encountered an error while processing the command.
#
ERROR_WINS_INTERNAL             = 4000

#
# MessageId: ERROR_CAN_NOT_DEL_LOCAL_WINS
#
# MessageText:
#
#  The local WINS can not be deleted.
#
ERROR_CAN_NOT_DEL_LOCAL_WINS    = 4001

#
# MessageId: ERROR_STATIC_INIT
#
# MessageText:
#
#  The importation from the file failed.
#
ERROR_STATIC_INIT               = 4002

#
# MessageId: ERROR_INC_BACKUP
#
# MessageText:
#
#  The backup failed. Was a full backup done before
#
ERROR_INC_BACKUP                = 4003

#
# MessageId: ERROR_FULL_BACKUP
#
# MessageText:
#
#  The backup failed. Check the directory to which you are backing the database.
#
ERROR_FULL_BACKUP               = 4004

#
# MessageId: ERROR_REC_NON_EXISTENT
#
# MessageText:
#
#  The name does not exist in the WINS database.
#
ERROR_REC_NON_EXISTENT          = 4005

#
# MessageId: ERROR_RPL_NOT_ALLOWED
#
# MessageText:
#
#  Replication with a nonconfigured partner is not allowed.
#
ERROR_RPL_NOT_ALLOWED           = 4006

#
#
#     DHCP Error Codes
#
#
#
# MessageId: ERROR_DHCP_ADDRESS_CONFLICT
#
# MessageText:
#
#  The DHCP client has obtained an IP address that is already in use on the network. The local interface will be disabled until the DHCP client can obtain a new address.
#
ERROR_DHCP_ADDRESS_CONFLICT     = 4100

#
#
#     WMI Error Codes
#
#
#
# MessageId: ERROR_WMI_GUID_NOT_FOUND
#
# MessageText:
#
#  The GUID passed was not recognized as valid by a WMI data provider.
#
ERROR_WMI_GUID_NOT_FOUND        = 4200

#
# MessageId: ERROR_WMI_INSTANCE_NOT_FOUND
#
# MessageText:
#
#  The instance name passed was not recognized as valid by a WMI data provider.
#
ERROR_WMI_INSTANCE_NOT_FOUND    = 4201

#
# MessageId: ERROR_WMI_ITEMID_NOT_FOUND
#
# MessageText:
#
#  The data item ID passed was not recognized as valid by a WMI data provider.
#
ERROR_WMI_ITEMID_NOT_FOUND      = 4202

#
# MessageId: ERROR_WMI_TRY_AGAIN
#
# MessageText:
#
#  The WMI request could not be completed and should be retried.
#
ERROR_WMI_TRY_AGAIN             = 4203

#
# MessageId: ERROR_WMI_DP_NOT_FOUND
#
# MessageText:
#
#  The WMI data provider could not be located.
#
ERROR_WMI_DP_NOT_FOUND          = 4204

#
# MessageId: ERROR_WMI_UNRESOLVED_INSTANCE_REF
#
# MessageText:
#
#  The WMI data provider references an instance set that has not been registered.
#
ERROR_WMI_UNRESOLVED_INSTANCE_REF= 4205

#
# MessageId: ERROR_WMI_ALREADY_ENABLED
#
# MessageText:
#
#  The WMI data block or event notification has already been enabled.
#
ERROR_WMI_ALREADY_ENABLED       = 4206

#
# MessageId: ERROR_WMI_GUID_DISCONNECTED
#
# MessageText:
#
#  The WMI data block is no longer available.
#
ERROR_WMI_GUID_DISCONNECTED     = 4207

#
# MessageId: ERROR_WMI_SERVER_UNAVAILABLE
#
# MessageText:
#
#  The WMI data service is not available.
#
ERROR_WMI_SERVER_UNAVAILABLE    = 4208

#
# MessageId: ERROR_WMI_DP_FAILED
#
# MessageText:
#
#  The WMI data provider failed to carry out the request.
#
ERROR_WMI_DP_FAILED             = 4209

#
# MessageId: ERROR_WMI_INVALID_MOF
#
# MessageText:
#
#  The WMI MOF information is not valid.
#
ERROR_WMI_INVALID_MOF           = 4210

#
# MessageId: ERROR_WMI_INVALID_REGINFO
#
# MessageText:
#
#  The WMI registration information is not valid.
#
ERROR_WMI_INVALID_REGINFO       = 4211

#
# MessageId: ERROR_WMI_ALREADY_DISABLED
#
# MessageText:
#
#  The WMI data block or event notification has already been disabled.
#
ERROR_WMI_ALREADY_DISABLED      = 4212

#
# MessageId: ERROR_WMI_READ_ONLY
#
# MessageText:
#
#  The WMI data item or data block is read only.
#
ERROR_WMI_READ_ONLY             = 4213

#
# MessageId: ERROR_WMI_SET_FAILURE
#
# MessageText:
#
#  The WMI data item or data block could not be changed.
#
ERROR_WMI_SET_FAILURE           = 4214

#
#
# NT Media Services (RSM) Error Codes
#
#
#
# MessageId: ERROR_INVALID_MEDIA
#
# MessageText:
#
#  The media identifier does not represent a valid medium.
#
ERROR_INVALID_MEDIA             = 4300

#
# MessageId: ERROR_INVALID_LIBRARY
#
# MessageText:
#
#  The library identifier does not represent a valid library.
#
ERROR_INVALID_LIBRARY           = 4301

#
# MessageId: ERROR_INVALID_MEDIA_POOL
#
# MessageText:
#
#  The media pool identifier does not represent a valid media pool.
#
ERROR_INVALID_MEDIA_POOL        = 4302

#
# MessageId: ERROR_DRIVE_MEDIA_MISMATCH
#
# MessageText:
#
#  The drive and medium are not compatible or exist in different libraries.
#
ERROR_DRIVE_MEDIA_MISMATCH      = 4303

#
# MessageId: ERROR_MEDIA_OFFLINE
#
# MessageText:
#
#  The medium currently exists in an offline library and must be online to perform this operation.
#
ERROR_MEDIA_OFFLINE             = 4304

#
# MessageId: ERROR_LIBRARY_OFFLINE
#
# MessageText:
#
#  The operation cannot be performed on an offline library.
#
ERROR_LIBRARY_OFFLINE           = 4305

#
# MessageId: ERROR_EMPTY
#
# MessageText:
#
#  The library, drive, or media pool is empty.
#
ERROR_EMPTY                     = 4306

#
# MessageId: ERROR_NOT_EMPTY
#
# MessageText:
#
#  The library, drive, or media pool must be empty to perform this operation.
#
ERROR_NOT_EMPTY                 = 4307

#
# MessageId: ERROR_MEDIA_UNAVAILABLE
#
# MessageText:
#
#  No media is currently available in this media pool or library.
#
ERROR_MEDIA_UNAVAILABLE         = 4308

#
# MessageId: ERROR_RESOURCE_DISABLED
#
# MessageText:
#
#  A resource required for this operation is disabled.
#
ERROR_RESOURCE_DISABLED         = 4309

#
# MessageId: ERROR_INVALID_CLEANER
#
# MessageText:
#
#  The media identifier does not represent a valid cleaner.
#
ERROR_INVALID_CLEANER           = 4310

#
# MessageId: ERROR_UNABLE_TO_CLEAN
#
# MessageText:
#
#  The drive cannot be cleaned or does not support cleaning.
#
ERROR_UNABLE_TO_CLEAN           = 4311

#
# MessageId: ERROR_OBJECT_NOT_FOUND
#
# MessageText:
#
#  The object identifier does not represent a valid object.
#
ERROR_OBJECT_NOT_FOUND          = 4312

#
# MessageId: ERROR_DATABASE_FAILURE
#
# MessageText:
#
#  Unable to read from or write to the database.
#
ERROR_DATABASE_FAILURE          = 4313

#
# MessageId: ERROR_DATABASE_FULL
#
# MessageText:
#
#  The database is full.
#
ERROR_DATABASE_FULL             = 4314

#
# MessageId: ERROR_MEDIA_INCOMPATIBLE
#
# MessageText:
#
#  The medium is not compatible with the device or media pool.
#
ERROR_MEDIA_INCOMPATIBLE        = 4315

#
# MessageId: ERROR_RESOURCE_NOT_PRESENT
#
# MessageText:
#
#  The resource required for this operation does not exist.
#
ERROR_RESOURCE_NOT_PRESENT      = 4316

#
# MessageId: ERROR_INVALID_OPERATION
#
# MessageText:
#
#  The operation identifier is not valid.
#
ERROR_INVALID_OPERATION         = 4317

#
# MessageId: ERROR_MEDIA_NOT_AVAILABLE
#
# MessageText:
#
#  The media is not mounted or ready for use.
#
ERROR_MEDIA_NOT_AVAILABLE       = 4318

#
# MessageId: ERROR_DEVICE_NOT_AVAILABLE
#
# MessageText:
#
#  The device is not ready for use.
#
ERROR_DEVICE_NOT_AVAILABLE      = 4319

#
# MessageId: ERROR_REQUEST_REFUSED
#
# MessageText:
#
#  The operator or administrator has refused the request.
#
ERROR_REQUEST_REFUSED           = 4320

#
# MessageId: ERROR_INVALID_DRIVE_OBJECT
#
# MessageText:
#
#  The drive identifier does not represent a valid drive.
#
ERROR_INVALID_DRIVE_OBJECT      = 4321

#
# MessageId: ERROR_LIBRARY_FULL
#
# MessageText:
#
#  Library is full.  No slot is available for use.
#
ERROR_LIBRARY_FULL              = 4322

#
# MessageId: ERROR_MEDIUM_NOT_ACCESSIBLE
#
# MessageText:
#
#  The transport cannot access the medium.
#
ERROR_MEDIUM_NOT_ACCESSIBLE     = 4323

#
# MessageId: ERROR_UNABLE_TO_LOAD_MEDIUM
#
# MessageText:
#
#  Unable to load the medium into the drive.
#
ERROR_UNABLE_TO_LOAD_MEDIUM     = 4324

#
# MessageId: ERROR_UNABLE_TO_INVENTORY_DRIVE
#
# MessageText:
#
#  Unable to retrieve the drive status.
#
ERROR_UNABLE_TO_INVENTORY_DRIVE = 4325

#
# MessageId: ERROR_UNABLE_TO_INVENTORY_SLOT
#
# MessageText:
#
#  Unable to retrieve the slot status.
#
ERROR_UNABLE_TO_INVENTORY_SLOT  = 4326

#
# MessageId: ERROR_UNABLE_TO_INVENTORY_TRANSPORT
#
# MessageText:
#
#  Unable to retrieve status about the transport.
#
ERROR_UNABLE_TO_INVENTORY_TRANSPORT= 4327

#
# MessageId: ERROR_TRANSPORT_FULL
#
# MessageText:
#
#  Cannot use the transport because it is already in use.
#
ERROR_TRANSPORT_FULL            = 4328

#
# MessageId: ERROR_CONTROLLING_IEPORT
#
# MessageText:
#
#  Unable to open or close the inject/eject port.
#
ERROR_CONTROLLING_IEPORT        = 4329

#
# MessageId: ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA
#
# MessageText:
#
#  Unable to eject the medium because it is in a drive.
#
ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA= 4330

#
# MessageId: ERROR_CLEANER_SLOT_SET
#
# MessageText:
#
#  A cleaner slot is already reserved.
#
ERROR_CLEANER_SLOT_SET          = 4331

#
# MessageId: ERROR_CLEANER_SLOT_NOT_SET
#
# MessageText:
#
#  A cleaner slot is not reserved.
#
ERROR_CLEANER_SLOT_NOT_SET      = 4332

#
# MessageId: ERROR_CLEANER_CARTRIDGE_SPENT
#
# MessageText:
#
#  The cleaner cartridge has performed the maximum number of drive cleanings.
#
ERROR_CLEANER_CARTRIDGE_SPENT   = 4333

#
# MessageId: ERROR_UNEXPECTED_OMID
#
# MessageText:
#
#  Unexpected on-medium identifier.
#
ERROR_UNEXPECTED_OMID           = 4334

#
# MessageId: ERROR_CANT_DELETE_LAST_ITEM
#
# MessageText:
#
#  The last remaining item in this group or resource cannot be deleted.
#
ERROR_CANT_DELETE_LAST_ITEM     = 4335

#
# MessageId: ERROR_MESSAGE_EXCEEDS_MAX_SIZE
#
# MessageText:
#
#  The message provided exceeds the maximum size allowed for this parameter.
#
ERROR_MESSAGE_EXCEEDS_MAX_SIZE  = 4336

#
# MessageId: ERROR_VOLUME_CONTAINS_SYS_FILES
#
# MessageText:
#
#  The volume contains system or paging files.
#
ERROR_VOLUME_CONTAINS_SYS_FILES = 4337

#
# MessageId: ERROR_INDIGENOUS_TYPE
#
# MessageText:
#
#  The media type cannot be removed from this library since at least one drive in the library reports it can support this media type.
#
ERROR_INDIGENOUS_TYPE           = 4338

#
# MessageId: ERROR_NO_SUPPORTING_DRIVES
#
# MessageText:
#
#  This offline media cannot be mounted on this system since no enabled drives are present which can be used.
#
ERROR_NO_SUPPORTING_DRIVES      = 4339

#
# MessageId: ERROR_CLEANER_CARTRIDGE_INSTALLED
#
# MessageText:
#
#  A cleaner cartridge is present in the tape library.
#
ERROR_CLEANER_CARTRIDGE_INSTALLED= 4340

#
#
# NT Remote Storage Service Error Codes
#
#
#
# MessageId: ERROR_FILE_OFFLINE
#
# MessageText:
#
#  The remote storage service was not able to recall the file.
#
ERROR_FILE_OFFLINE              = 4350

#
# MessageId: ERROR_REMOTE_STORAGE_NOT_ACTIVE
#
# MessageText:
#
#  The remote storage service is not operational at this time.
#
ERROR_REMOTE_STORAGE_NOT_ACTIVE = 4351

#
# MessageId: ERROR_REMOTE_STORAGE_MEDIA_ERROR
#
# MessageText:
#
#  The remote storage service encountered a media error.
#
ERROR_REMOTE_STORAGE_MEDIA_ERROR= 4352

#
#
# NT Reparse Points Error Codes
#
#
#
# MessageId: ERROR_NOT_A_REPARSE_POINT
#
# MessageText:
#
#  The file or directory is not a reparse point.
#
ERROR_NOT_A_REPARSE_POINT       = 4390

#
# MessageId: ERROR_REPARSE_ATTRIBUTE_CONFLICT
#
# MessageText:
#
#  The reparse point attribute cannot be set because it conflicts with an existing attribute.
#
ERROR_REPARSE_ATTRIBUTE_CONFLICT= 4391

#
# MessageId: ERROR_INVALID_REPARSE_DATA
#
# MessageText:
#
#  The data present in the reparse point buffer is invalid.
#
ERROR_INVALID_REPARSE_DATA      = 4392

#
# MessageId: ERROR_REPARSE_TAG_INVALID
#
# MessageText:
#
#  The tag present in the reparse point buffer is invalid.
#
ERROR_REPARSE_TAG_INVALID       = 4393

#
# MessageId: ERROR_REPARSE_TAG_MISMATCH
#
# MessageText:
#
#  There is a mismatch between the tag specified in the request and the tag present in the reparse point.
#
#
ERROR_REPARSE_TAG_MISMATCH      = 4394

#
#
# NT Single Instance Store Error Codes
#
#
#
# MessageId: ERROR_VOLUME_NOT_SIS_ENABLED
#
# MessageText:
#
#  Single Instance Storage is not available on this volume.
#
ERROR_VOLUME_NOT_SIS_ENABLED    = 4500

#
#
#     Cluster Error Codes
#
#
#
# MessageId: ERROR_DEPENDENT_RESOURCE_EXISTS
#
# MessageText:
#
#  The cluster resource cannot be moved to another group because other resources are dependent on it.
#
ERROR_DEPENDENT_RESOURCE_EXISTS = 5001

#
# MessageId: ERROR_DEPENDENCY_NOT_FOUND
#
# MessageText:
#
#  The cluster resource dependency cannot be found.
#
ERROR_DEPENDENCY_NOT_FOUND      = 5002

#
# MessageId: ERROR_DEPENDENCY_ALREADY_EXISTS
#
# MessageText:
#
#  The cluster resource cannot be made dependent on the specified resource because it is already dependent.
#
ERROR_DEPENDENCY_ALREADY_EXISTS = 5003

#
# MessageId: ERROR_RESOURCE_NOT_ONLINE
#
# MessageText:
#
#  The cluster resource is not online.
#
ERROR_RESOURCE_NOT_ONLINE       = 5004

#
# MessageId: ERROR_HOST_NODE_NOT_AVAILABLE
#
# MessageText:
#
#  A cluster node is not available for this operation.
#
ERROR_HOST_NODE_NOT_AVAILABLE   = 5005

#
# MessageId: ERROR_RESOURCE_NOT_AVAILABLE
#
# MessageText:
#
#  The cluster resource is not available.
#
ERROR_RESOURCE_NOT_AVAILABLE    = 5006

#
# MessageId: ERROR_RESOURCE_NOT_FOUND
#
# MessageText:
#
#  The cluster resource could not be found.
#
ERROR_RESOURCE_NOT_FOUND        = 5007

#
# MessageId: ERROR_SHUTDOWN_CLUSTER
#
# MessageText:
#
#  The cluster is being shut down.
#
ERROR_SHUTDOWN_CLUSTER          = 5008

#
# MessageId: ERROR_CANT_EVICT_ACTIVE_NODE
#
# MessageText:
#
#  A cluster node cannot be evicted from the cluster unless the node is down or it is the last node.
#
ERROR_CANT_EVICT_ACTIVE_NODE    = 5009

#
# MessageId: ERROR_OBJECT_ALREADY_EXISTS
#
# MessageText:
#
#  The object already exists.
#
ERROR_OBJECT_ALREADY_EXISTS     = 5010

#
# MessageId: ERROR_OBJECT_IN_LIST
#
# MessageText:
#
#  The object is already in the list.
#
ERROR_OBJECT_IN_LIST            = 5011

#
# MessageId: ERROR_GROUP_NOT_AVAILABLE
#
# MessageText:
#
#  The cluster group is not available for any new requests.
#
ERROR_GROUP_NOT_AVAILABLE       = 5012

#
# MessageId: ERROR_GROUP_NOT_FOUND
#
# MessageText:
#
#  The cluster group could not be found.
#
ERROR_GROUP_NOT_FOUND           = 5013

#
# MessageId: ERROR_GROUP_NOT_ONLINE
#
# MessageText:
#
#  The operation could not be completed because the cluster group is not online.
#
ERROR_GROUP_NOT_ONLINE          = 5014

#
# MessageId: ERROR_HOST_NODE_NOT_RESOURCE_OWNER
#
# MessageText:
#
#  The cluster node is not the owner of the resource.
#
ERROR_HOST_NODE_NOT_RESOURCE_OWNER= 5015

#
# MessageId: ERROR_HOST_NODE_NOT_GROUP_OWNER
#
# MessageText:
#
#  The cluster node is not the owner of the group.
#
ERROR_HOST_NODE_NOT_GROUP_OWNER = 5016

#
# MessageId: ERROR_RESMON_CREATE_FAILED
#
# MessageText:
#
#  The cluster resource could not be created in the specified resource monitor.
#
ERROR_RESMON_CREATE_FAILED      = 5017

#
# MessageId: ERROR_RESMON_ONLINE_FAILED
#
# MessageText:
#
#  The cluster resource could not be brought online by the resource monitor.
#
ERROR_RESMON_ONLINE_FAILED      = 5018

#
# MessageId: ERROR_RESOURCE_ONLINE
#
# MessageText:
#
#  The operation could not be completed because the cluster resource is online.
#
ERROR_RESOURCE_ONLINE           = 5019

#
# MessageId: ERROR_QUORUM_RESOURCE
#
# MessageText:
#
#  The cluster resource could not be deleted or brought offline because it is the quorum resource.
#
ERROR_QUORUM_RESOURCE           = 5020

#
# MessageId: ERROR_NOT_QUORUM_CAPABLE
#
# MessageText:
#
#  The cluster could not make the specified resource a quorum resource because it is not capable of being a quorum resource.
#
ERROR_NOT_QUORUM_CAPABLE        = 5021

#
# MessageId: ERROR_CLUSTER_SHUTTING_DOWN
#
# MessageText:
#
#  The cluster software is shutting down.
#
ERROR_CLUSTER_SHUTTING_DOWN     = 5022

#
# MessageId: ERROR_INVALID_STATE
#
# MessageText:
#
#  The group or resource is not in the correct state to perform the requested operation.
#
ERROR_INVALID_STATE             = 5023

#
# MessageId: ERROR_RESOURCE_PROPERTIES_STORED
#
# MessageText:
#
#  The properties were stored but not all changes will take effect until the next time the resource is brought online.
#
ERROR_RESOURCE_PROPERTIES_STORED= 5024

#
# MessageId: ERROR_NOT_QUORUM_CLASS
#
# MessageText:
#
#  The cluster could not make the specified resource a quorum resource because it does not belong to a shared storage class.
#
ERROR_NOT_QUORUM_CLASS          = 5025

#
# MessageId: ERROR_CORE_RESOURCE
#
# MessageText:
#
#  The cluster resource could not be deleted since it is a core resource.
#
ERROR_CORE_RESOURCE             = 5026

#
# MessageId: ERROR_QUORUM_RESOURCE_ONLINE_FAILED
#
# MessageText:
#
#  The quorum resource failed to come online.
#
ERROR_QUORUM_RESOURCE_ONLINE_FAILED= 5027

#
# MessageId: ERROR_QUORUMLOG_OPEN_FAILED
#
# MessageText:
#
#  The quorum log could not be created or mounted successfully.
#
ERROR_QUORUMLOG_OPEN_FAILED     = 5028

#
# MessageId: ERROR_CLUSTERLOG_CORRUPT
#
# MessageText:
#
#  The cluster log is corrupt.
#
ERROR_CLUSTERLOG_CORRUPT        = 5029

#
# MessageId: ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE
#
# MessageText:
#
#  The record could not be written to the cluster log since it exceeds the maximum size.
#
ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE= 5030

#
# MessageId: ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE
#
# MessageText:
#
#  The cluster log exceeds its maximum size.
#
ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE= 5031

#
# MessageId: ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND
#
# MessageText:
#
#  No checkpoint record was found in the cluster log.
#
ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND= 5032

#
# MessageId: ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE
#
# MessageText:
#
#  The minimum required disk space needed for logging is not available.
#
ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE= 5033

#
# MessageId: ERROR_QUORUM_OWNER_ALIVE
#
# MessageText:
#
#  The cluster node failed to take control of the quorum resource because the resource is owned by another active node.
#
ERROR_QUORUM_OWNER_ALIVE        = 5034

#
# MessageId: ERROR_NETWORK_NOT_AVAILABLE
#
# MessageText:
#
#  A cluster network is not available for this operation.
#
ERROR_NETWORK_NOT_AVAILABLE     = 5035

#
# MessageId: ERROR_NODE_NOT_AVAILABLE
#
# MessageText:
#
#  A cluster node is not available for this operation.
#
ERROR_NODE_NOT_AVAILABLE        = 5036

#
# MessageId: ERROR_ALL_NODES_NOT_AVAILABLE
#
# MessageText:
#
#  All cluster nodes must be running to perform this operation.
#
ERROR_ALL_NODES_NOT_AVAILABLE   = 5037

#
# MessageId: ERROR_RESOURCE_FAILED
#
# MessageText:
#
#  A cluster resource failed.
#
ERROR_RESOURCE_FAILED           = 5038

#
# MessageId: ERROR_CLUSTER_INVALID_NODE
#
# MessageText:
#
#  The cluster node is not valid.
#
ERROR_CLUSTER_INVALID_NODE      = 5039

#
# MessageId: ERROR_CLUSTER_NODE_EXISTS
#
# MessageText:
#
#  The cluster node already exists.
#
ERROR_CLUSTER_NODE_EXISTS       = 5040

#
# MessageId: ERROR_CLUSTER_JOIN_IN_PROGRESS
#
# MessageText:
#
#  A node is in the process of joining the cluster.
#
ERROR_CLUSTER_JOIN_IN_PROGRESS  = 5041

#
# MessageId: ERROR_CLUSTER_NODE_NOT_FOUND
#
# MessageText:
#
#  The cluster node was not found.
#
ERROR_CLUSTER_NODE_NOT_FOUND    = 5042

#
# MessageId: ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND
#
# MessageText:
#
#  The cluster local node information was not found.
#
ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND= 5043

#
# MessageId: ERROR_CLUSTER_NETWORK_EXISTS
#
# MessageText:
#
#  The cluster network already exists.
#
ERROR_CLUSTER_NETWORK_EXISTS    = 5044

#
# MessageId: ERROR_CLUSTER_NETWORK_NOT_FOUND
#
# MessageText:
#
#  The cluster network was not found.
#
ERROR_CLUSTER_NETWORK_NOT_FOUND = 5045

#
# MessageId: ERROR_CLUSTER_NETINTERFACE_EXISTS
#
# MessageText:
#
#  The cluster network interface already exists.
#
ERROR_CLUSTER_NETINTERFACE_EXISTS= 5046

#
# MessageId: ERROR_CLUSTER_NETINTERFACE_NOT_FOUND
#
# MessageText:
#
#  The cluster network interface was not found.
#
ERROR_CLUSTER_NETINTERFACE_NOT_FOUND= 5047

#
# MessageId: ERROR_CLUSTER_INVALID_REQUEST
#
# MessageText:
#
#  The cluster request is not valid for this object.
#
ERROR_CLUSTER_INVALID_REQUEST   = 5048

#
# MessageId: ERROR_CLUSTER_INVALID_NETWORK_PROVIDER
#
# MessageText:
#
#  The cluster network provider is not valid.
#
ERROR_CLUSTER_INVALID_NETWORK_PROVIDER= 5049

#
# MessageId: ERROR_CLUSTER_NODE_DOWN
#
# MessageText:
#
#  The cluster node is down.
#
ERROR_CLUSTER_NODE_DOWN         = 5050

#
# MessageId: ERROR_CLUSTER_NODE_UNREACHABLE
#
# MessageText:
#
#  The cluster node is not reachable.
#
ERROR_CLUSTER_NODE_UNREACHABLE  = 5051

#
# MessageId: ERROR_CLUSTER_NODE_NOT_MEMBER
#
# MessageText:
#
#  The cluster node is not a member of the cluster.
#
ERROR_CLUSTER_NODE_NOT_MEMBER   = 5052

#
# MessageId: ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS
#
# MessageText:
#
#  A cluster join operation is not in progress.
#
ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS= 5053

#
# MessageId: ERROR_CLUSTER_INVALID_NETWORK
#
# MessageText:
#
#  The cluster network is not valid.
#
ERROR_CLUSTER_INVALID_NETWORK   = 5054

#
# MessageId: ERROR_CLUSTER_NODE_UP
#
# MessageText:
#
#  The cluster node is up.
#
ERROR_CLUSTER_NODE_UP           = 5056

#
# MessageId: ERROR_CLUSTER_IPADDR_IN_USE
#
# MessageText:
#
#  The cluster IP address is already in use.
#
ERROR_CLUSTER_IPADDR_IN_USE     = 5057

#
# MessageId: ERROR_CLUSTER_NODE_NOT_PAUSED
#
# MessageText:
#
#  The cluster node is not paused.
#
ERROR_CLUSTER_NODE_NOT_PAUSED   = 5058

#
# MessageId: ERROR_CLUSTER_NO_SECURITY_CONTEXT
#
# MessageText:
#
#  No cluster security context is available.
#
ERROR_CLUSTER_NO_SECURITY_CONTEXT= 5059

#
# MessageId: ERROR_CLUSTER_NETWORK_NOT_INTERNAL
#
# MessageText:
#
#  The cluster network is not configured for internal cluster communication.
#
ERROR_CLUSTER_NETWORK_NOT_INTERNAL= 5060

#
# MessageId: ERROR_CLUSTER_NODE_ALREADY_UP
#
# MessageText:
#
#  The cluster node is already up.
#
ERROR_CLUSTER_NODE_ALREADY_UP   = 5061

#
# MessageId: ERROR_CLUSTER_NODE_ALREADY_DOWN
#
# MessageText:
#
#  The cluster node is already down.
#
ERROR_CLUSTER_NODE_ALREADY_DOWN = 5062

#
# MessageId: ERROR_CLUSTER_NETWORK_ALREADY_ONLINE
#
# MessageText:
#
#  The cluster network is already online.
#
ERROR_CLUSTER_NETWORK_ALREADY_ONLINE= 5063

#
# MessageId: ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE
#
# MessageText:
#
#  The cluster network is already offline.
#
ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE= 5064

#
# MessageId: ERROR_CLUSTER_NODE_ALREADY_MEMBER
#
# MessageText:
#
#  The cluster node is already a member of the cluster.
#
ERROR_CLUSTER_NODE_ALREADY_MEMBER= 5065

#
# MessageId: ERROR_CLUSTER_LAST_INTERNAL_NETWORK
#
# MessageText:
#
#  The cluster network is the only one configured for internal cluster communication between two or more active cluster nodes. The internal communication capability cannot be removed from the network.
#
ERROR_CLUSTER_LAST_INTERNAL_NETWORK= 5066

#
# MessageId: ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS
#
# MessageText:
#
#  One or more cluster resources depend on the network to provide service to clients. The client access capability cannot be removed from the network.
#
ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS= 5067

#
# MessageId: ERROR_INVALID_OPERATION_ON_QUORUM
#
# MessageText:
#
#  This operation cannot be performed on the cluster resource as it the quorum resource. You may not bring the quorum resource offline or modify its possible owners list.
#
ERROR_INVALID_OPERATION_ON_QUORUM= 5068

#
# MessageId: ERROR_DEPENDENCY_NOT_ALLOWED
#
# MessageText:
#
#  The cluster quorum resource is not allowed to have any dependencies.
#
ERROR_DEPENDENCY_NOT_ALLOWED    = 5069

#
# MessageId: ERROR_CLUSTER_NODE_PAUSED
#
# MessageText:
#
#  The cluster node is paused.
#
ERROR_CLUSTER_NODE_PAUSED       = 5070

#
# MessageId: ERROR_NODE_CANT_HOST_RESOURCE
#
# MessageText:
#
#  The cluster resource cannot be brought online. The owner node cannot run this resource.
#
ERROR_NODE_CANT_HOST_RESOURCE   = 5071

#
# MessageId: ERROR_CLUSTER_NODE_NOT_READY
#
# MessageText:
#
#  The cluster node is not ready to perform the requested operation.
#
ERROR_CLUSTER_NODE_NOT_READY    = 5072

#
# MessageId: ERROR_CLUSTER_NODE_SHUTTING_DOWN
#
# MessageText:
#
#  The cluster node is shutting down.
#
ERROR_CLUSTER_NODE_SHUTTING_DOWN= 5073

#
# MessageId: ERROR_CLUSTER_JOIN_ABORTED
#
# MessageText:
#
#  The cluster join operation was aborted.
#
ERROR_CLUSTER_JOIN_ABORTED      = 5074

#
# MessageId: ERROR_CLUSTER_INCOMPATIBLE_VERSIONS
#
# MessageText:
#
#  The cluster join operation failed due to incompatible software versions between the joining node and its sponsor.
#
ERROR_CLUSTER_INCOMPATIBLE_VERSIONS= 5075

#
# MessageId: ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED
#
# MessageText:
#
#  This resource cannot be created because the cluster has reached the limit on the number of resources it can monitor.
#
ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED= 5076

#
# MessageId: ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED
#
# MessageText:
#
#  The system configuration changed during the cluster join or form operation. The join or form operation was aborted.
#
ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED= 5077

#
# MessageId: ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND
#
# MessageText:
#
#  The specified resource type was not found.
#
ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND= 5078

#
# MessageId: ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED
#
# MessageText:
#
#  The specified node does not support a resource of this type.  This may be due to version inconsistencies or due to the absence of the resource DLL on this node.
#
ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED= 5079

#
# MessageId: ERROR_CLUSTER_RESNAME_NOT_FOUND
#
# MessageText:
#
#  The specified resource name is not supported by this resource DLL. This may be due to a bad (or changed) name supplied to the resource DLL.
#
ERROR_CLUSTER_RESNAME_NOT_FOUND = 5080

#
# MessageId: ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED
#
# MessageText:
#
#  No authentication package could be registered with the RPC server.
#
ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED= 5081

#
# MessageId: ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST
#
# MessageText:
#
#  You cannot bring the group online because the owner of the group is not in the preferred list for the group. To change the owner node for the group, move the group.
#
ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST= 5082

#
# MessageId: ERROR_CLUSTER_DATABASE_SEQMISMATCH
#
# MessageText:
#
#  The join operation failed because the cluster database sequence number has changed or is incompatible with the locker node. This may happen during a join operation if the cluster database was changing during the join.
#
ERROR_CLUSTER_DATABASE_SEQMISMATCH= 5083

#
# MessageId: ERROR_RESMON_INVALID_STATE
#
# MessageText:
#
#  The resource monitor will not allow the fail operation to be performed while the resource is in its current state. This may happen if the resource is in a pending state.
#
ERROR_RESMON_INVALID_STATE      = 5084

#
# MessageId: ERROR_CLUSTER_GUM_NOT_LOCKER
#
# MessageText:
#
#  A non locker code got a request to reserve the lock for making global updates.
#
ERROR_CLUSTER_GUM_NOT_LOCKER    = 5085

#
# MessageId: ERROR_QUORUM_DISK_NOT_FOUND
#
# MessageText:
#
#  The quorum disk could not be located by the cluster service.
#
ERROR_QUORUM_DISK_NOT_FOUND     = 5086

#
# MessageId: ERROR_DATABASE_BACKUP_CORRUPT
#
# MessageText:
#
#  The backed up cluster database is possibly corrupt.
#
ERROR_DATABASE_BACKUP_CORRUPT   = 5087

#
# MessageId: ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT
#
# MessageText:
#
#  A DFS root already exists in this cluster node.
#
ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT= 5088

#
# MessageId: ERROR_RESOURCE_PROPERTY_UNCHANGEABLE
#
# MessageText:
#
#  An attempt to modify a resource property failed because it conflicts with another existing property.
#
ERROR_RESOURCE_PROPERTY_UNCHANGEABLE= 5089

# Codes from 4300 through 5889 overlap with codes in ds\published\inc\apperr2.w.
# Do not add any more error codes in that range.

#
# MessageId: ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE
#
# MessageText:
#
#  An operation was attempted that is incompatible with the current membership state of the node.
#
ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE= 5890

#
# MessageId: ERROR_CLUSTER_QUORUMLOG_NOT_FOUND
#
# MessageText:
#
#  The quorum resource does not contain the quorum log.
#
ERROR_CLUSTER_QUORUMLOG_NOT_FOUND= 5891

#
# MessageId: ERROR_CLUSTER_MEMBERSHIP_HALT
#
# MessageText:
#
#  The membership engine requested shutdown of the cluster service on this node.
#
ERROR_CLUSTER_MEMBERSHIP_HALT   = 5892

#
# MessageId: ERROR_CLUSTER_INSTANCE_ID_MISMATCH
#
# MessageText:
#
#  The join operation failed because the cluster instance ID of the joining node does not match the cluster instance ID of the sponsor node.
#
ERROR_CLUSTER_INSTANCE_ID_MISMATCH= 5893

#
# MessageId: ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP
#
# MessageText:
#
#  A matching network for the specified IP address could not be found. Please also specify a subnet mask and a cluster network.
#
ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP= 5894

#
# MessageId: ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH
#
# MessageText:
#
#  The actual data type of the property did not match the expected data type of the property.
#
ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH= 5895

#
# MessageId: ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP
#
# MessageText:
#
#  The cluster node was evicted from the cluster successfully, but the node was not cleaned up.  Extended status information explaining why the node was not cleaned up is available.
#
ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP= 5896

#
# MessageId: ERROR_CLUSTER_PARAMETER_MISMATCH
#
# MessageText:
#
#  Two or more parameter values specified for a resource#s properties are in conflict.
#
ERROR_CLUSTER_PARAMETER_MISMATCH= 5897

#
# MessageId: ERROR_NODE_CANNOT_BE_CLUSTERED
#
# MessageText:
#
#  This computer cannot be made a member of a cluster.
#
ERROR_NODE_CANNOT_BE_CLUSTERED  = 5898

#
# MessageId: ERROR_CLUSTER_WRONG_OS_VERSION
#
# MessageText:
#
#  This computer cannot be made a member of a cluster because it does not have the correct version of Windows installed.
#
ERROR_CLUSTER_WRONG_OS_VERSION  = 5899

#
# MessageId: ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME
#
# MessageText:
#
#  A cluster cannot be created with the specified cluster name because that cluster name is already in use. Specify a different name for the cluster.
#
ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME= 5900

#
# MessageId: ERROR_CLUSCFG_ALREADY_COMMITTED
#
# MessageText:
#
#  The cluster configuration action has already been committed.
#
ERROR_CLUSCFG_ALREADY_COMMITTED = 5901

#
# MessageId: ERROR_CLUSCFG_ROLLBACK_FAILED
#
# MessageText:
#
#  The cluster configuration action could not be rolled back.
#
ERROR_CLUSCFG_ROLLBACK_FAILED   = 5902

#
# MessageId: ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT
#
# MessageText:
#
#  The drive letter assigned to a system disk on one node conflicted with the drive letter assigned to a disk on another node.
#
ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT= 5903

#
# MessageId: ERROR_CLUSTER_OLD_VERSION
#
# MessageText:
#
#  One or more nodes in the cluster are running a version of Windows that does not support this operation.
#
ERROR_CLUSTER_OLD_VERSION       = 5904

#
# MessageId: ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME
#
# MessageText:
#
#  The name of the corresponding computer account doesn#t match the Network Name for this resource.
#
ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME= 5905

#
#
#     EFS Error Codes
#
#
#
# MessageId: ERROR_ENCRYPTION_FAILED
#
# MessageText:
#
#  The specified file could not be encrypted.
#
ERROR_ENCRYPTION_FAILED         = 6000

#
# MessageId: ERROR_DECRYPTION_FAILED
#
# MessageText:
#
#  The specified file could not be decrypted.
#
ERROR_DECRYPTION_FAILED         = 6001

#
# MessageId: ERROR_FILE_ENCRYPTED
#
# MessageText:
#
#  The specified file is encrypted and the user does not have the ability to decrypt it.
#
ERROR_FILE_ENCRYPTED            = 6002

#
# MessageId: ERROR_NO_RECOVERY_POLICY
#
# MessageText:
#
#  There is no valid encryption recovery policy configured for this system.
#
ERROR_NO_RECOVERY_POLICY        = 6003

#
# MessageId: ERROR_NO_EFS
#
# MessageText:
#
#  The required encryption driver is not loaded for this system.
#
ERROR_NO_EFS                    = 6004

#
# MessageId: ERROR_WRONG_EFS
#
# MessageText:
#
#  The file was encrypted with a different encryption driver than is currently loaded.
#
ERROR_WRONG_EFS                 = 6005

#
# MessageId: ERROR_NO_USER_KEYS
#
# MessageText:
#
#  There are no EFS keys defined for the user.
#
ERROR_NO_USER_KEYS              = 6006

#
# MessageId: ERROR_FILE_NOT_ENCRYPTED
#
# MessageText:
#
#  The specified file is not encrypted.
#
ERROR_FILE_NOT_ENCRYPTED        = 6007

#
# MessageId: ERROR_NOT_EXPORT_FORMAT
#
# MessageText:
#
#  The specified file is not in the defined EFS export format.
#
ERROR_NOT_EXPORT_FORMAT         = 6008

#
# MessageId: ERROR_FILE_READ_ONLY
#
# MessageText:
#
#  The specified file is read only.
#
ERROR_FILE_READ_ONLY            = 6009

#
# MessageId: ERROR_DIR_EFS_DISALLOWED
#
# MessageText:
#
#  The directory has been disabled for encryption.
#
ERROR_DIR_EFS_DISALLOWED        = 6010

#
# MessageId: ERROR_EFS_SERVER_NOT_TRUSTED
#
# MessageText:
#
#  The server is not trusted for remote encryption operation.
#
ERROR_EFS_SERVER_NOT_TRUSTED    = 6011

#
# MessageId: ERROR_BAD_RECOVERY_POLICY
#
# MessageText:
#
#  Recovery policy configured for this system contains invalid recovery certificate.
#
ERROR_BAD_RECOVERY_POLICY       = 6012

#
# MessageId: ERROR_EFS_ALG_BLOB_TOO_BIG
#
# MessageText:
#
#  The encryption algorithm used on the source file needs a bigger key buffer than the one on the destination file.
#
ERROR_EFS_ALG_BLOB_TOO_BIG      = 6013

#
# MessageId: ERROR_VOLUME_NOT_SUPPORT_EFS
#
# MessageText:
#
#  The disk partition does not support file encryption.
#
ERROR_VOLUME_NOT_SUPPORT_EFS    = 6014

#
# MessageId: ERROR_EFS_DISABLED
#
# MessageText:
#
#  This machine is disabled for file encryption.
#
ERROR_EFS_DISABLED              = 6015

#
# MessageId: ERROR_EFS_VERSION_NOT_SUPPORT
#
# MessageText:
#
#  A newer system is required to decrypt this encrypted file.
#
ERROR_EFS_VERSION_NOT_SUPPORT   = 6016

# This message number is for historical purposes and cannot be changed or re-used.
#
# MessageId: ERROR_NO_BROWSER_SERVERS_FOUND
#
# MessageText:
#
#  The list of servers for this workgroup is not currently available
#
ERROR_NO_BROWSER_SERVERS_FOUND  = 6118

#
#
# Task Scheduler Error Codes that NET START must understand
#
#
#
# MessageId: SCHED_E_SERVICE_NOT_LOCALSYSTEM
#
# MessageText:
#
#  The Task Scheduler service must be configured to run in the System account to function properly.  Individual tasks may be configured to run in other accounts.
#
SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200

#
#
# Terminal Server Error Codes
#
#
#
# MessageId: ERROR_CTX_WINSTATION_NAME_INVALID
#
# MessageText:
#
#  The specified session name is invalid.
#
ERROR_CTX_WINSTATION_NAME_INVALID= 7001

#
# MessageId: ERROR_CTX_INVALID_PD
#
# MessageText:
#
#  The specified protocol driver is invalid.
#
ERROR_CTX_INVALID_PD            = 7002

#
# MessageId: ERROR_CTX_PD_NOT_FOUND
#
# MessageText:
#
#  The specified protocol driver was not found in the system path.
#
ERROR_CTX_PD_NOT_FOUND          = 7003

#
# MessageId: ERROR_CTX_WD_NOT_FOUND
#
# MessageText:
#
#  The specified terminal connection driver was not found in the system path.
#
ERROR_CTX_WD_NOT_FOUND          = 7004

#
# MessageId: ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY
#
# MessageText:
#
#  A registry key for event logging could not be created for this session.
#
ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY= 7005

#
# MessageId: ERROR_CTX_SERVICE_NAME_COLLISION
#
# MessageText:
#
#  A service with the same name already exists on the system.
#
ERROR_CTX_SERVICE_NAME_COLLISION= 7006

#
# MessageId: ERROR_CTX_CLOSE_PENDING
#
# MessageText:
#
#  A close operation is pending on the session.
#
ERROR_CTX_CLOSE_PENDING         = 7007

#
# MessageId: ERROR_CTX_NO_OUTBUF
#
# MessageText:
#
#  There are no free output buffers available.
#
ERROR_CTX_NO_OUTBUF             = 7008

#
# MessageId: ERROR_CTX_MODEM_INF_NOT_FOUND
#
# MessageText:
#
#  The MODEM.INF file was not found.
#
ERROR_CTX_MODEM_INF_NOT_FOUND   = 7009

#
# MessageId: ERROR_CTX_INVALID_MODEMNAME
#
# MessageText:
#
#  The modem name was not found in MODEM.INF.
#
ERROR_CTX_INVALID_MODEMNAME     = 7010

#
# MessageId: ERROR_CTX_MODEM_RESPONSE_ERROR
#
# MessageText:
#
#  The modem did not accept the command sent to it. Verify that the configured modem name matches the attached modem.
#
ERROR_CTX_MODEM_RESPONSE_ERROR  = 7011

#
# MessageId: ERROR_CTX_MODEM_RESPONSE_TIMEOUT
#
# MessageText:
#
#  The modem did not respond to the command sent to it. Verify that the modem is properly cabled and powered on.
#
ERROR_CTX_MODEM_RESPONSE_TIMEOUT= 7012

#
# MessageId: ERROR_CTX_MODEM_RESPONSE_NO_CARRIER
#
# MessageText:
#
#  Carrier detect has failed or carrier has been dropped due to disconnect.
#
ERROR_CTX_MODEM_RESPONSE_NO_CARRIER= 7013

#
# MessageId: ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE
#
# MessageText:
#
#  Dial tone not detected within the required time. Verify that the phone cable is properly attached and functional.
#
ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE= 7014

#
# MessageId: ERROR_CTX_MODEM_RESPONSE_BUSY
#
# MessageText:
#
#  Busy signal detected at remote site on callback.
#
ERROR_CTX_MODEM_RESPONSE_BUSY   = 7015

#
# MessageId: ERROR_CTX_MODEM_RESPONSE_VOICE
#
# MessageText:
#
#  Voice detected at remote site on callback.
#
ERROR_CTX_MODEM_RESPONSE_VOICE  = 7016

#
# MessageId: ERROR_CTX_TD_ERROR
#
# MessageText:
#
#  Transport driver error
#
ERROR_CTX_TD_ERROR              = 7017

#
# MessageId: ERROR_CTX_WINSTATION_NOT_FOUND
#
# MessageText:
#
#  The specified session cannot be found.
#
ERROR_CTX_WINSTATION_NOT_FOUND  = 7022

#
# MessageId: ERROR_CTX_WINSTATION_ALREADY_EXISTS
#
# MessageText:
#
#  The specified session name is already in use.
#
ERROR_CTX_WINSTATION_ALREADY_EXISTS= 7023

#
# MessageId: ERROR_CTX_WINSTATION_BUSY
#
# MessageText:
#
#  The requested operation cannot be completed because the terminal connection is currently busy processing a connect, disconnect, reset, or delete operation.
#
ERROR_CTX_WINSTATION_BUSY       = 7024

#
# MessageId: ERROR_CTX_BAD_VIDEO_MODE
#
# MessageText:
#
#  An attempt has been made to connect to a session whose video mode is not supported by the current client.
#
ERROR_CTX_BAD_VIDEO_MODE        = 7025

#
# MessageId: ERROR_CTX_GRAPHICS_INVALID
#
# MessageText:
#
#  The application attempted to enable DOS graphics mode.
#  DOS graphics mode is not supported.
#
ERROR_CTX_GRAPHICS_INVALID      = 7035

#
# MessageId: ERROR_CTX_LOGON_DISABLED
#
# MessageText:
#
#  Your interactive logon privilege has been disabled.
#  Please contact your administrator.
#
ERROR_CTX_LOGON_DISABLED        = 7037

#
# MessageId: ERROR_CTX_NOT_CONSOLE
#
# MessageText:
#
#  The requested operation can be performed only on the system console.
#  This is most often the result of a driver or system DLL requiring direct console access.
#
ERROR_CTX_NOT_CONSOLE           = 7038

#
# MessageId: ERROR_CTX_CLIENT_QUERY_TIMEOUT
#
# MessageText:
#
#  The client failed to respond to the server connect message.
#
ERROR_CTX_CLIENT_QUERY_TIMEOUT  = 7040

#
# MessageId: ERROR_CTX_CONSOLE_DISCONNECT
#
# MessageText:
#
#  Disconnecting the console session is not supported.
#
ERROR_CTX_CONSOLE_DISCONNECT    = 7041

#
# MessageId: ERROR_CTX_CONSOLE_CONNECT
#
# MessageText:
#
#  Reconnecting a disconnected session to the console is not supported.
#
ERROR_CTX_CONSOLE_CONNECT       = 7042

#
# MessageId: ERROR_CTX_SHADOW_DENIED
#
# MessageText:
#
#  The request to control another session remotely was denied.
#
ERROR_CTX_SHADOW_DENIED         = 7044

#
# MessageId: ERROR_CTX_WINSTATION_ACCESS_DENIED
#
# MessageText:
#
#  The requested session access is denied.
#
ERROR_CTX_WINSTATION_ACCESS_DENIED= 7045

#
# MessageId: ERROR_CTX_INVALID_WD
#
# MessageText:
#
#  The specified terminal connection driver is invalid.
#
ERROR_CTX_INVALID_WD            = 7049

#
# MessageId: ERROR_CTX_SHADOW_INVALID
#
# MessageText:
#
#  The requested session cannot be controlled remotely.
#  This may be because the session is disconnected or does not currently have a user logged on.
#
ERROR_CTX_SHADOW_INVALID        = 7050

#
# MessageId: ERROR_CTX_SHADOW_DISABLED
#
# MessageText:
#
#  The requested session is not configured to allow remote control.
#
ERROR_CTX_SHADOW_DISABLED       = 7051

#
# MessageId: ERROR_CTX_CLIENT_LICENSE_IN_USE
#
# MessageText:
#
#  Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number is currently being used by another user.
#  Please call your system administrator to obtain a unique license number.
#
ERROR_CTX_CLIENT_LICENSE_IN_USE = 7052

#
# MessageId: ERROR_CTX_CLIENT_LICENSE_NOT_SET
#
# MessageText:
#
#  Your request to connect to this Terminal Server has been rejected. Your Terminal Server client license number has not been entered for this copy of the Terminal Server client.
#  Please contact your system administrator.
#
ERROR_CTX_CLIENT_LICENSE_NOT_SET= 7053

#
# MessageId: ERROR_CTX_LICENSE_NOT_AVAILABLE
#
# MessageText:
#
#  The system has reached its licensed logon limit.
#  Please try again later.
#
ERROR_CTX_LICENSE_NOT_AVAILABLE = 7054

#
# MessageId: ERROR_CTX_LICENSE_CLIENT_INVALID
#
# MessageText:
#
#  The client you are using is not licensed to use this system.  Your logon request is denied.
#
ERROR_CTX_LICENSE_CLIENT_INVALID= 7055

#
# MessageId: ERROR_CTX_LICENSE_EXPIRED
#
# MessageText:
#
#  The system license has expired.  Your logon request is denied.
#
ERROR_CTX_LICENSE_EXPIRED       = 7056

#
# MessageId: ERROR_CTX_SHADOW_NOT_RUNNING
#
# MessageText:
#
#  Remote control could not be terminated because the specified session is not currently being remotely controlled.
#
ERROR_CTX_SHADOW_NOT_RUNNING    = 7057

#
# MessageId: ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE
#
# MessageText:
#
#  The remote control of the console was terminated because the display mode was changed. Changing the display mode in a remote control session is not supported.
#
ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE= 7058

#
# MessageId: ERROR_ACTIVATION_COUNT_EXCEEDED
#
# MessageText:
#
#  Activation has already been reset the maximum number of times for this installation. Your activation timer will not be cleared.
#
ERROR_ACTIVATION_COUNT_EXCEEDED = 7059

#
#
#             Traffic Control Error Codes
#
#                  7500 to  7999
#
#         defined in: tcerror.h
#
#
#
#             Active Directory Error Codes
#
#                  8000 to  8999
#
# *****************
# FACILITY_FILE_REPLICATION_SERVICE
# *****************
#
# MessageId: FRS_ERR_INVALID_API_SEQUENCE
#
# MessageText:
#
#  The file replication service API was called incorrectly.
#
FRS_ERR_INVALID_API_SEQUENCE    = 8001

#
# MessageId: FRS_ERR_STARTING_SERVICE
#
# MessageText:
#
#  The file replication service cannot be started.
#
FRS_ERR_STARTING_SERVICE        = 8002

#
# MessageId: FRS_ERR_STOPPING_SERVICE
#
# MessageText:
#
#  The file replication service cannot be stopped.
#
FRS_ERR_STOPPING_SERVICE        = 8003

#
# MessageId: FRS_ERR_INTERNAL_API
#
# MessageText:
#
#  The file replication service API terminated the request.
#  The event log may have more information.
#
FRS_ERR_INTERNAL_API            = 8004

#
# MessageId: FRS_ERR_INTERNAL
#
# MessageText:
#
#  The file replication service terminated the request.
#  The event log may have more information.
#
FRS_ERR_INTERNAL                = 8005

#
# MessageId: FRS_ERR_SERVICE_COMM
#
# MessageText:
#
#  The file replication service cannot be contacted.
#  The event log may have more information.
#
FRS_ERR_SERVICE_COMM            = 8006

#
# MessageId: FRS_ERR_INSUFFICIENT_PRIV
#
# MessageText:
#
#  The file replication service cannot satisfy the request because the user has insufficient privileges.
#  The event log may have more information.
#
FRS_ERR_INSUFFICIENT_PRIV       = 8007

#
# MessageId: FRS_ERR_AUTHENTICATION
#
# MessageText:
#
#  The file replication service cannot satisfy the request because authenticated RPC is not available.
#  The event log may have more information.
#
FRS_ERR_AUTHENTICATION          = 8008

#
# MessageId: FRS_ERR_PARENT_INSUFFICIENT_PRIV
#
# MessageText:
#
#  The file replication service cannot satisfy the request because the user has insufficient privileges on the domain controller.
#  The event log may have more information.
#
FRS_ERR_PARENT_INSUFFICIENT_PRIV= 8009

#
# MessageId: FRS_ERR_PARENT_AUTHENTICATION
#
# MessageText:
#
#  The file replication service cannot satisfy the request because authenticated RPC is not available on the domain controller.
#  The event log may have more information.
#
FRS_ERR_PARENT_AUTHENTICATION   = 8010

#
# MessageId: FRS_ERR_CHILD_TO_PARENT_COMM
#
# MessageText:
#
#  The file replication service cannot communicate with the file replication service on the domain controller.
#  The event log may have more information.
#
FRS_ERR_CHILD_TO_PARENT_COMM    = 8011

#
# MessageId: FRS_ERR_PARENT_TO_CHILD_COMM
#
# MessageText:
#
#  The file replication service on the domain controller cannot communicate with the file replication service on this computer.
#  The event log may have more information.
#
FRS_ERR_PARENT_TO_CHILD_COMM    = 8012

#
# MessageId: FRS_ERR_SYSVOL_POPULATE
#
# MessageText:
#
#  The file replication service cannot populate the system volume because of an internal error.
#  The event log may have more information.
#
FRS_ERR_SYSVOL_POPULATE         = 8013

#
# MessageId: FRS_ERR_SYSVOL_POPULATE_TIMEOUT
#
# MessageText:
#
#  The file replication service cannot populate the system volume because of an internal timeout.
#  The event log may have more information.
#
FRS_ERR_SYSVOL_POPULATE_TIMEOUT = 8014

#
# MessageId: FRS_ERR_SYSVOL_IS_BUSY
#
# MessageText:
#
#  The file replication service cannot process the request. The system volume is busy with a previous request.
#
FRS_ERR_SYSVOL_IS_BUSY          = 8015

#
# MessageId: FRS_ERR_SYSVOL_DEMOTE
#
# MessageText:
#
#  The file replication service cannot stop replicating the system volume because of an internal error.
#  The event log may have more information.
#
FRS_ERR_SYSVOL_DEMOTE           = 8016

#
# MessageId: FRS_ERR_INVALID_SERVICE_PARAMETER
#
# MessageText:
#
#  The file replication service detected an invalid parameter.
#
FRS_ERR_INVALID_SERVICE_PARAMETER= 8017

# *****************
# FACILITY DIRECTORY SERVICE
# *****************
DS_S_SUCCESS = NO_ERROR
#
# MessageId: ERROR_DS_NOT_INSTALLED
#
# MessageText:
#
#  An error occurred while installing the directory service. For more information, see the event log.
#
ERROR_DS_NOT_INSTALLED          = 8200

#
# MessageId: ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY
#
# MessageText:
#
#  The directory service evaluated group memberships locally.
#
ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY= 8201

#
# MessageId: ERROR_DS_NO_ATTRIBUTE_OR_VALUE
#
# MessageText:
#
#  The specified directory service attribute or value does not exist.
#
ERROR_DS_NO_ATTRIBUTE_OR_VALUE  = 8202

#
# MessageId: ERROR_DS_INVALID_ATTRIBUTE_SYNTAX
#
# MessageText:
#
#  The attribute syntax specified to the directory service is invalid.
#
ERROR_DS_INVALID_ATTRIBUTE_SYNTAX= 8203

#
# MessageId: ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED
#
# MessageText:
#
#  The attribute type specified to the directory service is not defined.
#
ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED= 8204

#
# MessageId: ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS
#
# MessageText:
#
#  The specified directory service attribute or value already exists.
#
ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS= 8205

#
# MessageId: ERROR_DS_BUSY
#
# MessageText:
#
#  The directory service is busy.
#
ERROR_DS_BUSY                   = 8206

#
# MessageId: ERROR_DS_UNAVAILABLE
#
# MessageText:
#
#  The directory service is unavailable.
#
ERROR_DS_UNAVAILABLE            = 8207

#
# MessageId: ERROR_DS_NO_RIDS_ALLOCATED
#
# MessageText:
#
#  The directory service was unable to allocate a relative identifier.
#
ERROR_DS_NO_RIDS_ALLOCATED      = 8208

#
# MessageId: ERROR_DS_NO_MORE_RIDS
#
# MessageText:
#
#  The directory service has exhausted the pool of relative identifiers.
#
ERROR_DS_NO_MORE_RIDS           = 8209

#
# MessageId: ERROR_DS_INCORRECT_ROLE_OWNER
#
# MessageText:
#
#  The requested operation could not be performed because the directory service is not the master for that type of operation.
#
ERROR_DS_INCORRECT_ROLE_OWNER   = 8210

#
# MessageId: ERROR_DS_RIDMGR_INIT_ERROR
#
# MessageText:
#
#  The directory service was unable to initialize the subsystem that allocates relative identifiers.
#
ERROR_DS_RIDMGR_INIT_ERROR      = 8211

#
# MessageId: ERROR_DS_OBJ_CLASS_VIOLATION
#
# MessageText:
#
#  The requested operation did not satisfy one or more constraints associated with the class of the object.
#
ERROR_DS_OBJ_CLASS_VIOLATION    = 8212

#
# MessageId: ERROR_DS_CANT_ON_NON_LEAF
#
# MessageText:
#
#  The directory service can perform the requested operation only on a leaf object.
#
ERROR_DS_CANT_ON_NON_LEAF       = 8213

#
# MessageId: ERROR_DS_CANT_ON_RDN
#
# MessageText:
#
#  The directory service cannot perform the requested operation on the RDN attribute of an object.
#
ERROR_DS_CANT_ON_RDN            = 8214

#
# MessageId: ERROR_DS_CANT_MOD_OBJ_CLASS
#
# MessageText:
#
#  The directory service detected an attempt to modify the object class of an object.
#
ERROR_DS_CANT_MOD_OBJ_CLASS     = 8215

#
# MessageId: ERROR_DS_CROSS_DOM_MOVE_ERROR
#
# MessageText:
#
#  The requested cross-domain move operation could not be performed.
#
ERROR_DS_CROSS_DOM_MOVE_ERROR   = 8216

#
# MessageId: ERROR_DS_GC_NOT_AVAILABLE
#
# MessageText:
#
#  Unable to contact the global catalog server.
#
ERROR_DS_GC_NOT_AVAILABLE       = 8217

#
# MessageId: ERROR_SHARED_POLICY
#
# MessageText:
#
#  The policy object is shared and can only be modified at the root.
#
ERROR_SHARED_POLICY             = 8218

#
# MessageId: ERROR_POLICY_OBJECT_NOT_FOUND
#
# MessageText:
#
#  The policy object does not exist.
#
ERROR_POLICY_OBJECT_NOT_FOUND   = 8219

#
# MessageId: ERROR_POLICY_ONLY_IN_DS
#
# MessageText:
#
#  The requested policy information is only in the directory service.
#
ERROR_POLICY_ONLY_IN_DS         = 8220

#
# MessageId: ERROR_PROMOTION_ACTIVE
#
# MessageText:
#
#  A domain controller promotion is currently active.
#
ERROR_PROMOTION_ACTIVE          = 8221

#
# MessageId: ERROR_NO_PROMOTION_ACTIVE
#
# MessageText:
#
#  A domain controller promotion is not currently active
#
ERROR_NO_PROMOTION_ACTIVE       = 8222

# 8223 unused
#
# MessageId: ERROR_DS_OPERATIONS_ERROR
#
# MessageText:
#
#  An operations error occurred.
#
ERROR_DS_OPERATIONS_ERROR       = 8224

#
# MessageId: ERROR_DS_PROTOCOL_ERROR
#
# MessageText:
#
#  A protocol error occurred.
#
ERROR_DS_PROTOCOL_ERROR         = 8225

#
# MessageId: ERROR_DS_TIMELIMIT_EXCEEDED
#
# MessageText:
#
#  The time limit for this request was exceeded.
#
ERROR_DS_TIMELIMIT_EXCEEDED     = 8226

#
# MessageId: ERROR_DS_SIZELIMIT_EXCEEDED
#
# MessageText:
#
#  The size limit for this request was exceeded.
#
ERROR_DS_SIZELIMIT_EXCEEDED     = 8227

#
# MessageId: ERROR_DS_ADMIN_LIMIT_EXCEEDED
#
# MessageText:
#
#  The administrative limit for this request was exceeded.
#
ERROR_DS_ADMIN_LIMIT_EXCEEDED   = 8228

#
# MessageId: ERROR_DS_COMPARE_FALSE
#
# MessageText:
#
#  The compare response was false.
#
ERROR_DS_COMPARE_FALSE          = 8229

#
# MessageId: ERROR_DS_COMPARE_TRUE
#
# MessageText:
#
#  The compare response was true.
#
ERROR_DS_COMPARE_TRUE           = 8230

#
# MessageId: ERROR_DS_AUTH_METHOD_NOT_SUPPORTED
#
# MessageText:
#
#  The requested authentication method is not supported by the server.
#
ERROR_DS_AUTH_METHOD_NOT_SUPPORTED= 8231

#
# MessageId: ERROR_DS_STRONG_AUTH_REQUIRED
#
# MessageText:
#
#  A more secure authentication method is required for this server.
#
ERROR_DS_STRONG_AUTH_REQUIRED   = 8232

#
# MessageId: ERROR_DS_INAPPROPRIATE_AUTH
#
# MessageText:
#
#  Inappropriate authentication.
#
ERROR_DS_INAPPROPRIATE_AUTH     = 8233

#
# MessageId: ERROR_DS_AUTH_UNKNOWN
#
# MessageText:
#
#  The authentication mechanism is unknown.
#
ERROR_DS_AUTH_UNKNOWN           = 8234

#
# MessageId: ERROR_DS_REFERRAL
#
# MessageText:
#
#  A referral was returned from the server.
#
ERROR_DS_REFERRAL               = 8235

#
# MessageId: ERROR_DS_UNAVAILABLE_CRIT_EXTENSION
#
# MessageText:
#
#  The server does not support the requested critical extension.
#
ERROR_DS_UNAVAILABLE_CRIT_EXTENSION= 8236

#
# MessageId: ERROR_DS_CONFIDENTIALITY_REQUIRED
#
# MessageText:
#
#  This request requires a secure connection.
#
ERROR_DS_CONFIDENTIALITY_REQUIRED= 8237

#
# MessageId: ERROR_DS_INAPPROPRIATE_MATCHING
#
# MessageText:
#
#  Inappropriate matching.
#
ERROR_DS_INAPPROPRIATE_MATCHING = 8238

#
# MessageId: ERROR_DS_CONSTRAINT_VIOLATION
#
# MessageText:
#
#  A constraint violation occurred.
#
ERROR_DS_CONSTRAINT_VIOLATION   = 8239

#
# MessageId: ERROR_DS_NO_SUCH_OBJECT
#
# MessageText:
#
#  There is no such object on the server.
#
ERROR_DS_NO_SUCH_OBJECT         = 8240

#
# MessageId: ERROR_DS_ALIAS_PROBLEM
#
# MessageText:
#
#  There is an alias problem.
#
ERROR_DS_ALIAS_PROBLEM          = 8241

#
# MessageId: ERROR_DS_INVALID_DN_SYNTAX
#
# MessageText:
#
#  An invalid dn syntax has been specified.
#
ERROR_DS_INVALID_DN_SYNTAX      = 8242

#
# MessageId: ERROR_DS_IS_LEAF
#
# MessageText:
#
#  The object is a leaf object.
#
ERROR_DS_IS_LEAF                = 8243

#
# MessageId: ERROR_DS_ALIAS_DEREF_PROBLEM
#
# MessageText:
#
#  There is an alias dereferencing problem.
#
ERROR_DS_ALIAS_DEREF_PROBLEM    = 8244

#
# MessageId: ERROR_DS_UNWILLING_TO_PERFORM
#
# MessageText:
#
#  The server is unwilling to process the request.
#
ERROR_DS_UNWILLING_TO_PERFORM   = 8245

#
# MessageId: ERROR_DS_LOOP_DETECT
#
# MessageText:
#
#  A loop has been detected.
#
ERROR_DS_LOOP_DETECT            = 8246

#
# MessageId: ERROR_DS_NAMING_VIOLATION
#
# MessageText:
#
#  There is a naming violation.
#
ERROR_DS_NAMING_VIOLATION       = 8247

#
# MessageId: ERROR_DS_OBJECT_RESULTS_TOO_LARGE
#
# MessageText:
#
#  The result set is too large.
#
ERROR_DS_OBJECT_RESULTS_TOO_LARGE= 8248

#
# MessageId: ERROR_DS_AFFECTS_MULTIPLE_DSAS
#
# MessageText:
#
#  The operation affects multiple DSAs
#
ERROR_DS_AFFECTS_MULTIPLE_DSAS  = 8249

#
# MessageId: ERROR_DS_SERVER_DOWN
#
# MessageText:
#
#  The server is not operational.
#
ERROR_DS_SERVER_DOWN            = 8250

#
# MessageId: ERROR_DS_LOCAL_ERROR
#
# MessageText:
#
#  A local error has occurred.
#
ERROR_DS_LOCAL_ERROR            = 8251

#
# MessageId: ERROR_DS_ENCODING_ERROR
#
# MessageText:
#
#  An encoding error has occurred.
#
ERROR_DS_ENCODING_ERROR         = 8252

#
# MessageId: ERROR_DS_DECODING_ERROR
#
# MessageText:
#
#  A decoding error has occurred.
#
ERROR_DS_DECODING_ERROR         = 8253

#
# MessageId: ERROR_DS_FILTER_UNKNOWN
#
# MessageText:
#
#  The search filter cannot be recognized.
#
ERROR_DS_FILTER_UNKNOWN         = 8254

#
# MessageId: ERROR_DS_PARAM_ERROR
#
# MessageText:
#
#  One or more parameters are illegal.
#
ERROR_DS_PARAM_ERROR            = 8255

#
# MessageId: ERROR_DS_NOT_SUPPORTED
#
# MessageText:
#
#  The specified method is not supported.
#
ERROR_DS_NOT_SUPPORTED          = 8256

#
# MessageId: ERROR_DS_NO_RESULTS_RETURNED
#
# MessageText:
#
#  No results were returned.
#
ERROR_DS_NO_RESULTS_RETURNED    = 8257

#
# MessageId: ERROR_DS_CONTROL_NOT_FOUND
#
# MessageText:
#
#  The specified control is not supported by the server.
#
ERROR_DS_CONTROL_NOT_FOUND      = 8258

#
# MessageId: ERROR_DS_CLIENT_LOOP
#
# MessageText:
#
#  A referral loop was detected by the client.
#
ERROR_DS_CLIENT_LOOP            = 8259

#
# MessageId: ERROR_DS_REFERRAL_LIMIT_EXCEEDED
#
# MessageText:
#
#  The preset referral limit was exceeded.
#
ERROR_DS_REFERRAL_LIMIT_EXCEEDED= 8260

#
# MessageId: ERROR_DS_SORT_CONTROL_MISSING
#
# MessageText:
#
#  The search requires a SORT control.
#
ERROR_DS_SORT_CONTROL_MISSING   = 8261

#
# MessageId: ERROR_DS_OFFSET_RANGE_ERROR
#
# MessageText:
#
#  The search results exceed the offset range specified.
#
ERROR_DS_OFFSET_RANGE_ERROR     = 8262

#
# MessageId: ERROR_DS_ROOT_MUST_BE_NC
#
# MessageText:
#
#  The root object must be the head of a naming context. The root object cannot have an instantiated parent.
#
ERROR_DS_ROOT_MUST_BE_NC        = 8301

#
# MessageId: ERROR_DS_ADD_REPLICA_INHIBITED
#
# MessageText:
#
#  The add replica operation cannot be performed. The naming context must be writeable in order to create the replica.
#
ERROR_DS_ADD_REPLICA_INHIBITED  = 8302

#
# MessageId: ERROR_DS_ATT_NOT_DEF_IN_SCHEMA
#
# MessageText:
#
#  A reference to an attribute that is not defined in the schema occurred.
#
ERROR_DS_ATT_NOT_DEF_IN_SCHEMA  = 8303

#
# MessageId: ERROR_DS_MAX_OBJ_SIZE_EXCEEDED
#
# MessageText:
#
#  The maximum size of an object has been exceeded.
#
ERROR_DS_MAX_OBJ_SIZE_EXCEEDED  = 8304

#
# MessageId: ERROR_DS_OBJ_STRING_NAME_EXISTS
#
# MessageText:
#
#  An attempt was made to add an object to the directory with a name that is already in use.
#
ERROR_DS_OBJ_STRING_NAME_EXISTS = 8305

#
# MessageId: ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA
#
# MessageText:
#
#  An attempt was made to add an object of a class that does not have an RDN defined in the schema.
#
ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA= 8306

#
# MessageId: ERROR_DS_RDN_DOESNT_MATCH_SCHEMA
#
# MessageText:
#
#  An attempt was made to add an object using an RDN that is not the RDN defined in the schema.
#
ERROR_DS_RDN_DOESNT_MATCH_SCHEMA= 8307

#
# MessageId: ERROR_DS_NO_REQUESTED_ATTS_FOUND
#
# MessageText:
#
#  None of the requested attributes were found on the objects.
#
ERROR_DS_NO_REQUESTED_ATTS_FOUND= 8308

#
# MessageId: ERROR_DS_USER_BUFFER_TO_SMALL
#
# MessageText:
#
#  The user buffer is too small.
#
ERROR_DS_USER_BUFFER_TO_SMALL   = 8309

#
# MessageId: ERROR_DS_ATT_IS_NOT_ON_OBJ
#
# MessageText:
#
#  The attribute specified in the operation is not present on the object.
#
ERROR_DS_ATT_IS_NOT_ON_OBJ      = 8310

#
# MessageId: ERROR_DS_ILLEGAL_MOD_OPERATION
#
# MessageText:
#
#  Illegal modify operation. Some aspect of the modification is not permitted.
#
ERROR_DS_ILLEGAL_MOD_OPERATION  = 8311

#
# MessageId: ERROR_DS_OBJ_TOO_LARGE
#
# MessageText:
#
#  The specified object is too large.
#
ERROR_DS_OBJ_TOO_LARGE          = 8312

#
# MessageId: ERROR_DS_BAD_INSTANCE_TYPE
#
# MessageText:
#
#  The specified instance type is not valid.
#
ERROR_DS_BAD_INSTANCE_TYPE      = 8313

#
# MessageId: ERROR_DS_MASTERDSA_REQUIRED
#
# MessageText:
#
#  The operation must be performed at a master DSA.
#
ERROR_DS_MASTERDSA_REQUIRED     = 8314

#
# MessageId: ERROR_DS_OBJECT_CLASS_REQUIRED
#
# MessageText:
#
#  The object class attribute must be specified.
#
ERROR_DS_OBJECT_CLASS_REQUIRED  = 8315

#
# MessageId: ERROR_DS_MISSING_REQUIRED_ATT
#
# MessageText:
#
#  A required attribute is missing.
#
ERROR_DS_MISSING_REQUIRED_ATT   = 8316

#
# MessageId: ERROR_DS_ATT_NOT_DEF_FOR_CLASS
#
# MessageText:
#
#  An attempt was made to modify an object to include an attribute that is not legal for its class.
#
ERROR_DS_ATT_NOT_DEF_FOR_CLASS  = 8317

#
# MessageId: ERROR_DS_ATT_ALREADY_EXISTS
#
# MessageText:
#
#  The specified attribute is already present on the object.
#
ERROR_DS_ATT_ALREADY_EXISTS     = 8318

# 8319 unused
#
# MessageId: ERROR_DS_CANT_ADD_ATT_VALUES
#
# MessageText:
#
#  The specified attribute is not present, or has no values.
#
ERROR_DS_CANT_ADD_ATT_VAUES     = 8320

#
# MessageId: ERROR_DS_SINGLE_VALUE_CONSTRAINT
#
# MessageText:
#
#  Multiple values were specified for an attribute that can have only one value.
#
ERROR_DS_SINGLE_VALUE_CONSTRAINT= 8321

#
# MessageId: ERROR_DS_RANGE_CONSTRAINT
#
# MessageText:
#
#  A value for the attribute was not in the acceptable range of values.
#
ERROR_DS_RANGE_CONSTRAINT       = 8322

#
# MessageId: ERROR_DS_ATT_VAL_ALREADY_EXISTS
#
# MessageText:
#
#  The specified value already exists.
#
ERROR_DS_ATT_VAL_ALREADY_EXISTS = 8323

#
# MessageId: ERROR_DS_CANT_REM_MISSING_ATT
#
# MessageText:
#
#  The attribute cannot be removed because it is not present on the object.
#
ERROR_DS_CANT_REM_MISSING_ATT   = 8324

#
# MessageId: ERROR_DS_CANT_REM_MISSING_ATT_VAL
#
# MessageText:
#
#  The attribute value cannot be removed because it is not present on the object.
#
ERROR_DS_CANT_REM_MISSING_ATT_VAL= 8325

#
# MessageId: ERROR_DS_ROOT_CANT_BE_SUBREF
#
# MessageText:
#
#  The specified root object cannot be a subref.
#
ERROR_DS_ROOT_CANT_BE_SUBREF    = 8326

#
# MessageId: ERROR_DS_NO_CHAINING
#
# MessageText:
#
#  Chaining is not permitted.
#
ERROR_DS_NO_CHAINING            = 8327

#
# MessageId: ERROR_DS_NO_CHAINED_EVAL
#
# MessageText:
#
#  Chained evaluation is not permitted.
#
ERROR_DS_NO_CHAINED_EVAL        = 8328

#
# MessageId: ERROR_DS_NO_PARENT_OBJECT
#
# MessageText:
#
#  The operation could not be performed because the object#s parent is either uninstantiated or deleted.
#
ERROR_DS_NO_PARENT_OBJECT       = 8329

#
# MessageId: ERROR_DS_PARENT_IS_AN_ALIAS
#
# MessageText:
#
#  Having a parent that is an alias is not permitted. Aliases are leaf objects.
#
ERROR_DS_PARENT_IS_AN_ALIAS     = 8330

#
# MessageId: ERROR_DS_CANT_MIX_MASTER_AND_REPS
#
# MessageText:
#
#  The object and parent must be of the same type, either both masters or both replicas.
#
ERROR_DS_CANT_MIX_MASTER_AND_REPS= 8331

#
# MessageId: ERROR_DS_CHILDREN_EXIST
#
# MessageText:
#
#  The operation cannot be performed because child objects exist. This operation can only be performed on a leaf object.
#
ERROR_DS_CHILDREN_EXIST         = 8332

#
# MessageId: ERROR_DS_OBJ_NOT_FOUND
#
# MessageText:
#
#  Directory object not found.
#
ERROR_DS_OBJ_NOT_FOUND          = 8333

#
# MessageId: ERROR_DS_ALIASED_OBJ_MISSING
#
# MessageText:
#
#  The aliased object is missing.
#
ERROR_DS_ALIASED_OBJ_MISSING    = 8334

#
# MessageId: ERROR_DS_BAD_NAME_SYNTAX
#
# MessageText:
#
#  The object name has bad syntax.
#
ERROR_DS_BAD_NAME_SYNTAX        = 8335

#
# MessageId: ERROR_DS_ALIAS_POINTS_TO_ALIAS
#
# MessageText:
#
#  It is not permitted for an alias to refer to another alias.
#
ERROR_DS_ALIAS_POINTS_TO_ALIAS  = 8336

#
# MessageId: ERROR_DS_CANT_DEREF_ALIAS
#
# MessageText:
#
#  The alias cannot be dereferenced.
#
ERROR_DS_CANT_DEREF_ALIAS       = 8337

#
# MessageId: ERROR_DS_OUT_OF_SCOPE
#
# MessageText:
#
#  The operation is out of scope.
#
ERROR_DS_OUT_OF_SCOPE           = 8338

#
# MessageId: ERROR_DS_OBJECT_BEING_REMOVED
#
# MessageText:
#
#  The operation cannot continue because the object is in the process of being removed.
#
ERROR_DS_OBJECT_BEING_REMOVED   = 8339

#
# MessageId: ERROR_DS_CANT_DELETE_DSA_OBJ
#
# MessageText:
#
#  The DSA object cannot be deleted.
#
ERROR_DS_CANT_DELETE_DSA_OBJ    = 8340

#
# MessageId: ERROR_DS_GENERIC_ERROR
#
# MessageText:
#
#  A directory service error has occurred.
#
ERROR_DS_GENERIC_ERROR          = 8341

#
# MessageId: ERROR_DS_DSA_MUST_BE_INT_MASTER
#
# MessageText:
#
#  The operation can only be performed on an internal master DSA object.
#
ERROR_DS_DSA_MUST_BE_INT_MASTER = 8342

#
# MessageId: ERROR_DS_CLASS_NOT_DSA
#
# MessageText:
#
#  The object must be of class DSA.
#
ERROR_DS_CLASS_NOT_DSA          = 8343

#
# MessageId: ERROR_DS_INSUFF_ACCESS_RIGHTS
#
# MessageText:
#
#  Insufficient access rights to perform the operation.
#
ERROR_DS_INSUFF_ACCESS_RIGHTS   = 8344

#
# MessageId: ERROR_DS_ILLEGAL_SUPERIOR
#
# MessageText:
#
#  The object cannot be added because the parent is not on the list of possible superiors.
#
ERROR_DS_ILLEGAL_SUPERIOR       = 8345

#
# MessageId: ERROR_DS_ATTRIBUTE_OWNED_BY_SAM
#
# MessageText:
#
#  Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM).
#
ERROR_DS_ATTRIBUTE_OWNED_BY_SAM = 8346

#
# MessageId: ERROR_DS_NAME_TOO_MANY_PARTS
#
# MessageText:
#
#  The name has too many parts.
#
ERROR_DS_NAME_TOO_MANY_PARTS    = 8347

#
# MessageId: ERROR_DS_NAME_TOO_LONG
#
# MessageText:
#
#  The name is too long.
#
ERROR_DS_NAME_TOO_LONG          = 8348

#
# MessageId: ERROR_DS_NAME_VALUE_TOO_LONG
#
# MessageText:
#
#  The name value is too long.
#
ERROR_DS_NAME_VALUE_TOO_LONG    = 8349

#
# MessageId: ERROR_DS_NAME_UNPARSEABLE
#
# MessageText:
#
#  The directory service encountered an error parsing a name.
#
ERROR_DS_NAME_UNPARSEABLE       = 8350

#
# MessageId: ERROR_DS_NAME_TYPE_UNKNOWN
#
# MessageText:
#
#  The directory service cannot get the attribute type for a name.
#
ERROR_DS_NAME_TYPE_UNKNOWN      = 8351

#
# MessageId: ERROR_DS_NOT_AN_OBJECT
#
# MessageText:
#
#  The name does not identify an object; the name identifies a phantom.
#
ERROR_DS_NOT_AN_OBJECT          = 8352

#
# MessageId: ERROR_DS_SEC_DESC_TOO_SHORT
#
# MessageText:
#
#  The security descriptor is too short.
#
ERROR_DS_SEC_DESC_TOO_SHORT     = 8353

#
# MessageId: ERROR_DS_SEC_DESC_INVALID
#
# MessageText:
#
#  The security descriptor is invalid.
#
ERROR_DS_SEC_DESC_INVALID       = 8354

#
# MessageId: ERROR_DS_NO_DELETED_NAME
#
# MessageText:
#
#  Failed to create name for deleted object.
#
ERROR_DS_NO_DELETED_NAME        = 8355

#
# MessageId: ERROR_DS_SUBREF_MUST_HAVE_PARENT
#
# MessageText:
#
#  The parent of a new subref must exist.
#
ERROR_DS_SUBREF_MUST_HAVE_PARENT= 8356

#
# MessageId: ERROR_DS_NCNAME_MUST_BE_NC
#
# MessageText:
#
#  The object must be a naming context.
#
ERROR_DS_NCNAME_MUST_BE_NC      = 8357

#
# MessageId: ERROR_DS_CANT_ADD_SYSTEM_ONLY
#
# MessageText:
#
#  It is not permitted to add an attribute which is owned by the system.
#
ERROR_DS_CANT_ADD_SYSTEM_ONLY   = 8358

#
# MessageId: ERROR_DS_CLASS_MUST_BE_CONCRETE
#
# MessageText:
#
#  The class of the object must be structural; you cannot instantiate an abstract class.
#
ERROR_DS_CLASS_MUST_BE_CONCRETE = 8359

#
# MessageId: ERROR_DS_INVALID_DMD
#
# MessageText:
#
#  The schema object could not be found.
#
ERROR_DS_INVALID_DMD            = 8360

#
# MessageId: ERROR_DS_OBJ_GUID_EXISTS
#
# MessageText:
#
#  A local object with this GUID (dead or alive) already exists.
#
ERROR_DS_OBJ_GUID_EXISTS        = 8361

#
# MessageId: ERROR_DS_NOT_ON_BACKLINK
#
# MessageText:
#
#  The operation cannot be performed on a back link.
#
ERROR_DS_NOT_ON_BACKLINK        = 8362

#
# MessageId: ERROR_DS_NO_CROSSREF_FOR_NC
#
# MessageText:
#
#  The cross reference for the specified naming context could not be found.
#
ERROR_DS_NO_CROSSREF_FOR_NC     = 8363

#
# MessageId: ERROR_DS_SHUTTING_DOWN
#
# MessageText:
#
#  The operation could not be performed because the directory service is shutting down.
#
ERROR_DS_SHUTTING_DOWN          = 8364

#
# MessageId: ERROR_DS_UNKNOWN_OPERATION
#
# MessageText:
#
#  The directory service request is invalid.
#
ERROR_DS_UNKNOWN_OPERATION      = 8365

#
# MessageId: ERROR_DS_INVALID_ROLE_OWNER
#
# MessageText:
#
#  The role owner attribute could not be read.
#
ERROR_DS_INVALID_ROLE_OWNER     = 8366

#
# MessageId: ERROR_DS_COULDNT_CONTACT_FSMO
#
# MessageText:
#
#  The requested FSMO operation failed. The current FSMO holder could not be contacted.
#
ERROR_DS_COULDNT_CONTACT_FSMO   = 8367

#
# MessageId: ERROR_DS_CROSS_NC_DN_RENAME
#
# MessageText:
#
#  Modification of a DN across a naming context is not permitted.
#
ERROR_DS_CROSS_NC_DN_RENAME     = 8368

#
# MessageId: ERROR_DS_CANT_MOD_SYSTEM_ONLY
#
# MessageText:
#
#  The attribute cannot be modified because it is owned by the system.
#
ERROR_DS_CANT_MOD_SYSTEM_ONLY   = 8369

#
# MessageId: ERROR_DS_REPLICATOR_ONLY
#
# MessageText:
#
#  Only the replicator can perform this function.
#
ERROR_DS_REPLICATOR_ONLY        = 8370

#
# MessageId: ERROR_DS_OBJ_CLASS_NOT_DEFINED
#
# MessageText:
#
#  The specified class is not defined.
#
ERROR_DS_OBJ_CLASS_NOT_DEFINED  = 8371

#
# MessageId: ERROR_DS_OBJ_CLASS_NOT_SUBCLASS
#
# MessageText:
#
#  The specified class is not a subclass.
#
ERROR_DS_OBJ_CLASS_NOT_SUBCLASS = 8372

#
# MessageId: ERROR_DS_NAME_REFERENCE_INVALID
#
# MessageText:
#
#  The name reference is invalid.
#
ERROR_DS_NAME_REFERENCE_INVALID = 8373

#
# MessageId: ERROR_DS_CROSS_REF_EXISTS
#
# MessageText:
#
#  A cross reference already exists.
#
ERROR_DS_CROSS_REF_EXISTS       = 8374

#
# MessageId: ERROR_DS_CANT_DEL_MASTER_CROSSREF
#
# MessageText:
#
#  It is not permitted to delete a master cross reference.
#
ERROR_DS_CANT_DEL_MASTER_CROSSREF= 8375

#
# MessageId: ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD
#
# MessageText:
#
#  Subtree notifications are only supported on NC heads.
#
ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD= 8376

#
# MessageId: ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX
#
# MessageText:
#
#  Notification filter is too complex.
#
ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX= 8377

#
# MessageId: ERROR_DS_DUP_RDN
#
# MessageText:
#
#  Schema update failed: duplicate RDN.
#
ERROR_DS_DUP_RDN                = 8378

#
# MessageId: ERROR_DS_DUP_OID
#
# MessageText:
#
#  Schema update failed: duplicate OID.
#
ERROR_DS_DUP_OID                = 8379

#
# MessageId: ERROR_DS_DUP_MAPI_ID
#
# MessageText:
#
#  Schema update failed: duplicate MAPI identifier.
#
ERROR_DS_DUP_MAPI_ID            = 8380

#
# MessageId: ERROR_DS_DUP_SCHEMA_ID_GUID
#
# MessageText:
#
#  Schema update failed: duplicate schema-id GUID.
#
ERROR_DS_DUP_SCHEMA_ID_GUID     = 8381

#
# MessageId: ERROR_DS_DUP_LDAP_DISPLAY_NAME
#
# MessageText:
#
#  Schema update failed: duplicate LDAP display name.
#
ERROR_DS_DUP_LDAP_DISPLAY_NAME  = 8382

#
# MessageId: ERROR_DS_SEMANTIC_ATT_TEST
#
# MessageText:
#
#  Schema update failed: range-lower less than range upper.
#
ERROR_DS_SEMANTIC_ATT_TEST      = 8383

#
# MessageId: ERROR_DS_SYNTAX_MISMATCH
#
# MessageText:
#
#  Schema update failed: syntax mismatch.
#
ERROR_DS_SYNTAX_MISMATCH        = 8384

#
# MessageId: ERROR_DS_EXISTS_IN_MUST_HAVE
#
# MessageText:
#
#  Schema deletion failed: attribute is used in must-contain.
#
ERROR_DS_EXISTS_IN_MUST_HAVE    = 8385

#
# MessageId: ERROR_DS_EXISTS_IN_MAY_HAVE
#
# MessageText:
#
#  Schema deletion failed: attribute is used in may-contain.
#
ERROR_DS_EXISTS_IN_MAY_HAVE     = 8386

#
# MessageId: ERROR_DS_NONEXISTENT_MAY_HAVE
#
# MessageText:
#
#  Schema update failed: attribute in may-contain does not exist.
#
ERROR_DS_NONEXISTENT_MAY_HAVE   = 8387

#
# MessageId: ERROR_DS_NONEXISTENT_MUST_HAVE
#
# MessageText:
#
#  Schema update failed: attribute in must-contain does not exist.
#
ERROR_DS_NONEXISTENT_MUST_HAVE  = 8388

#
# MessageId: ERROR_DS_AUX_CLS_TEST_FAIL
#
# MessageText:
#
#  Schema update failed: class in aux-class list does not exist or is not an auxiliary class.
#
ERROR_DS_AUX_CLS_TEST_FAIL      = 8389

#
# MessageId: ERROR_DS_NONEXISTENT_POSS_SUP
#
# MessageText:
#
#  Schema update failed: class in poss-superiors does not exist.
#
ERROR_DS_NONEXISTENT_POSS_SUP   = 8390

#
# MessageId: ERROR_DS_SUB_CLS_TEST_FAIL
#
# MessageText:
#
#  Schema update failed: class in subclassof list does not exist or does not satisfy hierarchy rules.
#
ERROR_DS_SUB_CLS_TEST_FAIL      = 8391

#
# MessageId: ERROR_DS_BAD_RDN_ATT_ID_SYNTAX
#
# MessageText:
#
#  Schema update failed: Rdn-Att-Id has wrong syntax.
#
ERROR_DS_BAD_RDN_ATT_ID_SYNTAX  = 8392

#
# MessageId: ERROR_DS_EXISTS_IN_AUX_CLS
#
# MessageText:
#
#  Schema deletion failed: class is used as auxiliary class.
#
ERROR_DS_EXISTS_IN_AUX_CLS      = 8393

#
# MessageId: ERROR_DS_EXISTS_IN_SUB_CLS
#
# MessageText:
#
#  Schema deletion failed: class is used as sub class.
#
ERROR_DS_EXISTS_IN_SUB_CLS      = 8394

#
# MessageId: ERROR_DS_EXISTS_IN_POSS_SUP
#
# MessageText:
#
#  Schema deletion failed: class is used as poss superior.
#
ERROR_DS_EXISTS_IN_POSS_SUP     = 8395

#
# MessageId: ERROR_DS_RECALCSCHEMA_FAILED
#
# MessageText:
#
#  Schema update failed in recalculating validation cache.
#
ERROR_DS_RECALCSCHEMA_FAILED    = 8396

#
# MessageId: ERROR_DS_TREE_DELETE_NOT_FINISHED
#
# MessageText:
#
#  The tree deletion is not finished.  The request must be made again to continue deleting the tree.
#
ERROR_DS_TREE_DELETE_NOT_FINISHED= 8397

#
# MessageId: ERROR_DS_CANT_DELETE
#
# MessageText:
#
#  The requested delete operation could not be performed.
#
ERROR_DS_CANT_DELETE            = 8398

#
# MessageId: ERROR_DS_ATT_SCHEMA_REQ_ID
#
# MessageText:
#
#  Cannot read the governs class identifier for the schema record.
#
ERROR_DS_ATT_SCHEMA_REQ_ID      = 8399

#
# MessageId: ERROR_DS_BAD_ATT_SCHEMA_SYNTAX
#
# MessageText:
#
#  The attribute schema has bad syntax.
#
ERROR_DS_BAD_ATT_SCHEMA_SYNTAX  = 8400

#
# MessageId: ERROR_DS_CANT_CACHE_ATT
#
# MessageText:
#
#  The attribute could not be cached.
#
ERROR_DS_CANT_CACHE_ATT         = 8401

#
# MessageId: ERROR_DS_CANT_CACHE_CLASS
#
# MessageText:
#
#  The class could not be cached.
#
ERROR_DS_CANT_CACHE_CLASS       = 8402

#
# MessageId: ERROR_DS_CANT_REMOVE_ATT_CACHE
#
# MessageText:
#
#  The attribute could not be removed from the cache.
#
ERROR_DS_CANT_REMOVE_ATT_CACHE  = 8403

#
# MessageId: ERROR_DS_CANT_REMOVE_CLASS_CACHE
#
# MessageText:
#
#  The class could not be removed from the cache.
#
ERROR_DS_CANT_REMOVE_CLASS_CACHE= 8404

#
# MessageId: ERROR_DS_CANT_RETRIEVE_DN
#
# MessageText:
#
#  The distinguished name attribute could not be read.
#
ERROR_DS_CANT_RETRIEVE_DN       = 8405

#
# MessageId: ERROR_DS_MISSING_SUPREF
#
# MessageText:
#
#  No superior reference has been configured for the directory service. The directory service is therefore unable to issue referrals to objects outside this forest.
#
ERROR_DS_MISSING_SUPREF         = 8406

#
# MessageId: ERROR_DS_CANT_RETRIEVE_INSTANCE
#
# MessageText:
#
#  The instance type attribute could not be retrieved.
#
ERROR_DS_CANT_RETRIEVE_INSTANCE = 8407

#
# MessageId: ERROR_DS_CODE_INCONSISTENCY
#
# MessageText:
#
#  An internal error has occurred.
#
ERROR_DS_CODE_INCONSISTENCY     = 8408

#
# MessageId: ERROR_DS_DATABASE_ERROR
#
# MessageText:
#
#  A database error has occurred.
#
ERROR_DS_DATABASE_ERROR         = 8409

#
# MessageId: ERROR_DS_GOVERNSID_MISSING
#
# MessageText:
#
#  The attribute GOVERNSID is missing.
#
ERROR_DS_GOVERNSID_MISSING      = 8410

#
# MessageId: ERROR_DS_MISSING_EXPECTED_ATT
#
# MessageText:
#
#  An expected attribute is missing.
#
ERROR_DS_MISSING_EXPECTED_ATT   = 8411

#
# MessageId: ERROR_DS_NCNAME_MISSING_CR_REF
#
# MessageText:
#
#  The specified naming context is missing a cross reference.
#
ERROR_DS_NCNAME_MISSING_CR_REF  = 8412

#
# MessageId: ERROR_DS_SECURITY_CHECKING_ERROR
#
# MessageText:
#
#  A security checking error has occurred.
#
ERROR_DS_SECURITY_CHECKING_ERROR= 8413

#
# MessageId: ERROR_DS_SCHEMA_NOT_LOADED
#
# MessageText:
#
#  The schema is not loaded.
#
ERROR_DS_SCHEMA_NOT_LOADED      = 8414

#
# MessageId: ERROR_DS_SCHEMA_ALLOC_FAILED
#
# MessageText:
#
#  Schema allocation failed. Please check if the machine is running low on memory.
#
ERROR_DS_SCHEMA_ALLOC_FAILED    = 8415

#
# MessageId: ERROR_DS_ATT_SCHEMA_REQ_SYNTAX
#
# MessageText:
#
#  Failed to obtain the required syntax for the attribute schema.
#
ERROR_DS_ATT_SCHEMA_REQ_SYNTAX  = 8416

#
# MessageId: ERROR_DS_GCVERIFY_ERROR
#
# MessageText:
#
#  The global catalog verification failed. The global catalog is not available or does not support the operation. Some part of the directory is currently not available.
#
ERROR_DS_GCVERIFY_ERROR         = 8417

#
# MessageId: ERROR_DS_DRA_SCHEMA_MISMATCH
#
# MessageText:
#
#  The replication operation failed because of a schema mismatch between the servers involved.
#
ERROR_DS_DRA_SCHEMA_MISMATCH    = 8418

#
# MessageId: ERROR_DS_CANT_FIND_DSA_OBJ
#
# MessageText:
#
#  The DSA object could not be found.
#
ERROR_DS_CANT_FIND_DSA_OBJ      = 8419

#
# MessageId: ERROR_DS_CANT_FIND_EXPECTED_NC
#
# MessageText:
#
#  The naming context could not be found.
#
ERROR_DS_CANT_FIND_EXPECTED_NC  = 8420

#
# MessageId: ERROR_DS_CANT_FIND_NC_IN_CACHE
#
# MessageText:
#
#  The naming context could not be found in the cache.
#
ERROR_DS_CANT_FIND_NC_IN_CACHE  = 8421

#
# MessageId: ERROR_DS_CANT_RETRIEVE_CHILD
#
# MessageText:
#
#  The child object could not be retrieved.
#
ERROR_DS_CANT_RETRIEVE_CHILD    = 8422

#
# MessageId: ERROR_DS_SECURITY_ILLEGAL_MODIFY
#
# MessageText:
#
#  The modification was not permitted for security reasons.
#
ERROR_DS_SECURITY_ILLEGAL_MODIFY= 8423

#
# MessageId: ERROR_DS_CANT_REPLACE_HIDDEN_REC
#
# MessageText:
#
#  The operation cannot replace the hidden record.
#
ERROR_DS_CANT_REPLACE_HIDDEN_REC= 8424

#
# MessageId: ERROR_DS_BAD_HIERARCHY_FILE
#
# MessageText:
#
#  The hierarchy file is invalid.
#
ERROR_DS_BAD_HIERARCHY_FILE     = 8425

#
# MessageId: ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED
#
# MessageText:
#
#  The attempt to build the hierarchy table failed.
#
ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED= 8426

#
# MessageId: ERROR_DS_CONFIG_PARAM_MISSING
#
# MessageText:
#
#  The directory configuration parameter is missing from the registry.
#
ERROR_DS_CONFIG_PARAM_MISSING   = 8427

#
# MessageId: ERROR_DS_COUNTING_AB_INDICES_FAILED
#
# MessageText:
#
#  The attempt to count the address book indices failed.
#
ERROR_DS_COUNTING_AB_INDICES_FAILED= 8428

#
# MessageId: ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED
#
# MessageText:
#
#  The allocation of the hierarchy table failed.
#
ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED= 8429

#
# MessageId: ERROR_DS_INTERNAL_FAILURE
#
# MessageText:
#
#  The directory service encountered an internal failure.
#
ERROR_DS_INTERNAL_FAILURE       = 8430

#
# MessageId: ERROR_DS_UNKNOWN_ERROR
#
# MessageText:
#
#  The directory service encountered an unknown failure.
#
ERROR_DS_UNKNOWN_ERROR          = 8431

#
# MessageId: ERROR_DS_ROOT_REQUIRES_CLASS_TOP
#
# MessageText:
#
#  A root object requires a class of #top#.
#
ERROR_DS_ROOT_REQUIRES_CLASS_TOP= 8432

#
# MessageId: ERROR_DS_REFUSING_FSMO_ROLES
#
# MessageText:
#
#  This directory server is shutting down, and cannot take ownership of new floating single-master operation roles.
#
ERROR_DS_REFUSING_FSMO_ROLES    = 8433

#
# MessageId: ERROR_DS_MISSING_FSMO_SETTINGS
#
# MessageText:
#
#  The directory service is missing mandatory configuration information, and is unable to determine the ownership of floating single-master operation roles.
#
ERROR_DS_MISSING_FSMO_SETTINGS  = 8434

#
# MessageId: ERROR_DS_UNABLE_TO_SURRENDER_ROLES
#
# MessageText:
#
#  The directory service was unable to transfer ownership of one or more floating single-master operation roles to other servers.
#
ERROR_DS_UNABLE_TO_SURRENDER_ROLES= 8435

#
# MessageId: ERROR_DS_DRA_GENERIC
#
# MessageText:
#
#  The replication operation failed.
#
ERROR_DS_DRA_GENERIC            = 8436

#
# MessageId: ERROR_DS_DRA_INVALID_PARAMETER
#
# MessageText:
#
#  An invalid parameter was specified for this replication operation.
#
ERROR_DS_DRA_INVALID_PARAMETER  = 8437

#
# MessageId: ERROR_DS_DRA_BUSY
#
# MessageText:
#
#  The directory service is too busy to complete the replication operation at this time.
#
ERROR_DS_DRA_BUSY               = 8438

#
# MessageId: ERROR_DS_DRA_BAD_DN
#
# MessageText:
#
#  The distinguished name specified for this replication operation is invalid.
#
ERROR_DS_DRA_BAD_DN             = 8439

#
# MessageId: ERROR_DS_DRA_BAD_NC
#
# MessageText:
#
#  The naming context specified for this replication operation is invalid.
#
ERROR_DS_DRA_BAD_NC             = 8440

#
# MessageId: ERROR_DS_DRA_DN_EXISTS
#
# MessageText:
#
#  The distinguished name specified for this replication operation already exists.
#
ERROR_DS_DRA_DN_EXISTS          = 8441

#
# MessageId: ERROR_DS_DRA_INTERNAL_ERROR
#
# MessageText:
#
#  The replication system encountered an internal error.
#
ERROR_DS_DRA_INTERNAL_ERROR     = 8442

#
# MessageId: ERROR_DS_DRA_INCONSISTENT_DIT
#
# MessageText:
#
#  The replication operation encountered a database inconsistency.
#
ERROR_DS_DRA_INCONSISTENT_DIT   = 8443

#
# MessageId: ERROR_DS_DRA_CONNECTION_FAILED
#
# MessageText:
#
#  The server specified for this replication operation could not be contacted.
#
ERROR_DS_DRA_CONNECTION_FAILED  = 8444

#
# MessageId: ERROR_DS_DRA_BAD_INSTANCE_TYPE
#
# MessageText:
#
#  The replication operation encountered an object with an invalid instance type.
#
ERROR_DS_DRA_BAD_INSTANCE_TYPE  = 8445

#
# MessageId: ERROR_DS_DRA_OUT_OF_MEM
#
# MessageText:
#
#  The replication operation failed to allocate memory.
#
ERROR_DS_DRA_OUT_OF_MEM         = 8446

#
# MessageId: ERROR_DS_DRA_MAIL_PROBLEM
#
# MessageText:
#
#  The replication operation encountered an error with the mail system.
#
ERROR_DS_DRA_MAIL_PROBLEM       = 8447

#
# MessageId: ERROR_DS_DRA_REF_ALREADY_EXISTS
#
# MessageText:
#
#  The replication reference information for the target server already exists.
#
ERROR_DS_DRA_REF_ALREADY_EXISTS = 8448

#
# MessageId: ERROR_DS_DRA_REF_NOT_FOUND
#
# MessageText:
#
#  The replication reference information for the target server does not exist.
#
ERROR_DS_DRA_REF_NOT_FOUND      = 8449

#
# MessageId: ERROR_DS_DRA_OBJ_IS_REP_SOURCE
#
# MessageText:
#
#  The naming context cannot be removed because it is replicated to another server.
#
ERROR_DS_DRA_OBJ_IS_REP_SOURCE  = 8450

#
# MessageId: ERROR_DS_DRA_DB_ERROR
#
# MessageText:
#
#  The replication operation encountered a database error.
#
ERROR_DS_DRA_DB_ERROR           = 8451

#
# MessageId: ERROR_DS_DRA_NO_REPLICA
#
# MessageText:
#
#  The naming context is in the process of being removed or is not replicated from the specified server.
#
ERROR_DS_DRA_NO_REPLICA         = 8452

#
# MessageId: ERROR_DS_DRA_ACCESS_DENIED
#
# MessageText:
#
#  Replication access was denied.
#
ERROR_DS_DRA_ACCESS_DENIED      = 8453

#
# MessageId: ERROR_DS_DRA_NOT_SUPPORTED
#
# MessageText:
#
#  The requested operation is not supported by this version of the directory service.
#
ERROR_DS_DRA_NOT_SUPPORTED      = 8454

#
# MessageId: ERROR_DS_DRA_RPC_CANCELLED
#
# MessageText:
#
#  The replication remote procedure call was cancelled.
#
ERROR_DS_DRA_RPC_CANCELLED      = 8455

#
# MessageId: ERROR_DS_DRA_SOURCE_DISABLED
#
# MessageText:
#
#  The source server is currently rejecting replication requests.
#
ERROR_DS_DRA_SOURCE_DISABLED    = 8456

#
# MessageId: ERROR_DS_DRA_SINK_DISABLED
#
# MessageText:
#
#  The destination server is currently rejecting replication requests.
#
ERROR_DS_DRA_SINK_DISABLED      = 8457

#
# MessageId: ERROR_DS_DRA_NAME_COLLISION
#
# MessageText:
#
#  The replication operation failed due to a collision of object names.
#
ERROR_DS_DRA_NAME_COLLISION     = 8458

#
# MessageId: ERROR_DS_DRA_SOURCE_REINSTALLED
#
# MessageText:
#
#  The replication source has been reinstalled.
#
ERROR_DS_DRA_SOURCE_REINSTALLED = 8459

#
# MessageId: ERROR_DS_DRA_MISSING_PARENT
#
# MessageText:
#
#  The replication operation failed because a required parent object is missing.
#
ERROR_DS_DRA_MISSING_PARENT     = 8460

#
# MessageId: ERROR_DS_DRA_PREEMPTED
#
# MessageText:
#
#  The replication operation was preempted.
#
ERROR_DS_DRA_PREEMPTED          = 8461

#
# MessageId: ERROR_DS_DRA_ABANDON_SYNC
#
# MessageText:
#
#  The replication synchronization attempt was abandoned because of a lack of updates.
#
ERROR_DS_DRA_ABANDON_SYNC       = 8462

#
# MessageId: ERROR_DS_DRA_SHUTDOWN
#
# MessageText:
#
#  The replication operation was terminated because the system is shutting down.
#
ERROR_DS_DRA_SHUTDOWN           = 8463

#
# MessageId: ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET
#
# MessageText:
#
#  The replication synchronization attempt failed as the destination partial attribute set is not a subset of source partial attribute set.
#
ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET= 8464

#
# MessageId: ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA
#
# MessageText:
#
#  The replication synchronization attempt failed because a master replica attempted to sync from a partial replica.
#
ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA= 8465

#
# MessageId: ERROR_DS_DRA_EXTN_CONNECTION_FAILED
#
# MessageText:
#
#  The server specified for this replication operation was contacted, but that server was unable to contact an additional server needed to complete the operation.
#
ERROR_DS_DRA_EXTN_CONNECTION_FAILED= 8466

#
# MessageId: ERROR_DS_INSTALL_SCHEMA_MISMATCH
#
# MessageText:
#
#  The version of the Active Directory schema of the source forest is not compatible with the version of Active Directory on this computer.
#
ERROR_DS_INSTALL_SCHEMA_MISMATCH= 8467

#
# MessageId: ERROR_DS_DUP_LINK_ID
#
# MessageText:
#
#  Schema update failed: An attribute with the same link identifier already exists.
#
ERROR_DS_DUP_LINK_ID            = 8468

#
# MessageId: ERROR_DS_NAME_ERROR_RESOLVING
#
# MessageText:
#
#  Name translation: Generic processing error.
#
ERROR_DS_NAME_ERROR_RESOLVING   = 8469

#
# MessageId: ERROR_DS_NAME_ERROR_NOT_FOUND
#
# MessageText:
#
#  Name translation: Could not find the name or insufficient right to see name.
#
ERROR_DS_NAME_ERROR_NOT_FOUND   = 8470

#
# MessageId: ERROR_DS_NAME_ERROR_NOT_UNIQUE
#
# MessageText:
#
#  Name translation: Input name mapped to more than one output name.
#
ERROR_DS_NAME_ERROR_NOT_UNIQUE  = 8471

#
# MessageId: ERROR_DS_NAME_ERROR_NO_MAPPING
#
# MessageText:
#
#  Name translation: Input name found, but not the associated output format.
#
ERROR_DS_NAME_ERROR_NO_MAPPING  = 8472

#
# MessageId: ERROR_DS_NAME_ERROR_DOMAIN_ONLY
#
# MessageText:
#
#  Name translation: Unable to resolve completely, only the domain was found.
#
ERROR_DS_NAME_ERROR_DOMAIN_ONLY = 8473

#
# MessageId: ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING
#
# MessageText:
#
#  Name translation: Unable to perform purely syntactical mapping at the client without going out to the wire.
#
ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING= 8474

#
# MessageId: ERROR_DS_CONSTRUCTED_ATT_MOD
#
# MessageText:
#
#  Modification of a constructed attribute is not allowed.
#
ERROR_DS_CONSTRUCTED_ATT_MOD    = 8475

#
# MessageId: ERROR_DS_WRONG_OM_OBJ_CLASS
#
# MessageText:
#
#  The OM-Object-Class specified is incorrect for an attribute with the specified syntax.
#
ERROR_DS_WRONG_OM_OBJ_CLASS     = 8476

#
# MessageId: ERROR_DS_DRA_REPL_PENDING
#
# MessageText:
#
#  The replication request has been posted; waiting for reply.
#
ERROR_DS_DRA_REPL_PENDING       = 8477

#
# MessageId: ERROR_DS_DS_REQUIRED
#
# MessageText:
#
#  The requested operation requires a directory service, and none was available.
#
ERROR_DS_DS_REQUIRED            = 8478

#
# MessageId: ERROR_DS_INVALID_LDAP_DISPLAY_NAME
#
# MessageText:
#
#  The LDAP display name of the class or attribute contains non-ASCII characters.
#
ERROR_DS_INVALID_LDAP_DISPLAY_NAME= 8479

#
# MessageId: ERROR_DS_NON_BASE_SEARCH
#
# MessageText:
#
#  The requested search operation is only supported for base searches.
#
ERROR_DS_NON_BASE_SEARCH        = 8480

#
# MessageId: ERROR_DS_CANT_RETRIEVE_ATTS
#
# MessageText:
#
#  The search failed to retrieve attributes from the database.
#
ERROR_DS_CANT_RETRIEVE_ATTS     = 8481

#
# MessageId: ERROR_DS_BACKLINK_WITHOUT_LINK
#
# MessageText:
#
#  The schema update operation tried to add a backward link attribute that has no corresponding forward link.
#
ERROR_DS_BACKLINK_WITHOUT_LINK  = 8482

#
# MessageId: ERROR_DS_EPOCH_MISMATCH
#
# MessageText:
#
#  Source and destination of a cross-domain move do not agree on the object#s epoch number.  Either source or destination does not have the latest version of the object.
#
ERROR_DS_EPOCH_MISMATCH         = 8483

#
# MessageId: ERROR_DS_SRC_NAME_MISMATCH
#
# MessageText:
#
#  Source and destination of a cross-domain move do not agree on the object#s current name.  Either source or destination does not have the latest version of the object.
#
ERROR_DS_SRC_NAME_MISMATCH      = 8484

#
# MessageId: ERROR_DS_SRC_AND_DST_NC_IDENTICAL
#
# MessageText:
#
#  Source and destination for the cross-domain move operation are identical.  Caller should use local move operation instead of cross-domain move operation.
#
ERROR_DS_SRC_AND_DST_NC_IDENTICAL= 8485

#
# MessageId: ERROR_DS_DST_NC_MISMATCH
#
# MessageText:
#
#  Source and destination for a cross-domain move are not in agreement on the naming contexts in the forest.  Either source or destination does not have the latest version of the Partitions container.
#
ERROR_DS_DST_NC_MISMATCH        = 8486

#
# MessageId: ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC
#
# MessageText:
#
#  Destination of a cross-domain move is not authoritative for the destination naming context.
#
ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC= 8487

#
# MessageId: ERROR_DS_SRC_GUID_MISMATCH
#
# MessageText:
#
#  Source and destination of a cross-domain move do not agree on the identity of the source object.  Either source or destination does not have the latest version of the source object.
#
ERROR_DS_SRC_GUID_MISMATCH      = 8488

#
# MessageId: ERROR_DS_CANT_MOVE_DELETED_OBJECT
#
# MessageText:
#
#  Object being moved across-domains is already known to be deleted by the destination server.  The source server does not have the latest version of the source object.
#
ERROR_DS_CANT_MOVE_DELETED_OBJECT= 8489

#
# MessageId: ERROR_DS_PDC_OPERATION_IN_PROGRESS
#
# MessageText:
#
#  Another operation which requires exclusive access to the PDC FSMO is already in progress.
#
ERROR_DS_PDC_OPERATION_IN_PROGRESS= 8490

#
# MessageId: ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD
#
# MessageText:
#
#  A cross-domain move operation failed such that two versions of the moved object exist - one each in the source and destination domains.  The destination object needs to be removed to restore the system to a consistent state.
#
ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD= 8491

#
# MessageId: ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION
#
# MessageText:
#
#  This object may not be moved across domain boundaries either because cross-domain moves for this class are disallowed, or the object has some special characteristics, e.g.: trust account or restricted RID, which prevent its move.
#
ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION= 8492

#
# MessageId: ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS
#
# MessageText:
#
#  Can#t move objects with memberships across domain boundaries as once moved, this would violate the membership conditions of the account group.  Remove the object from any account group memberships and retry.
#
ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS= 8493

#
# MessageId: ERROR_DS_NC_MUST_HAVE_NC_PARENT
#
# MessageText:
#
#  A naming context head must be the immediate child of another naming context head, not of an interior node.
#
ERROR_DS_NC_MUST_HAVE_NC_PARENT = 8494

#
# MessageId: ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE
#
# MessageText:
#
#  The directory cannot validate the proposed naming context name because it does not hold
#  replica of the naming context above the proposed naming context.  Please ensure that the
#  domain naming master role is held by a server that is configured as a global catalog
#  server, and that the server is up to date with its replication partners. (Applies only
#  to Windows 2000 Domain Naming masters)
#
ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE= 8495

#
# MessageId: ERROR_DS_DST_DOMAIN_NOT_NATIVE
#
# MessageText:
#
#  Destination domain must be in native mode.
#
ERROR_DS_DST_DOMAIN_NOT_NATIVE  = 8496

#
# MessageId: ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER
#
# MessageText:
#
#  The operation can not be performed because the server does not have an infrastructure container in the domain of interest.
#
ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER= 8497

#
# MessageId: ERROR_DS_CANT_MOVE_ACCOUNT_GROUP
#
# MessageText:
#
#  Cross-domain move of non-empty account groups is not allowed.
#
ERROR_DS_CANT_MOVE_ACCOUNT_GROUP= 8498

#
# MessageId: ERROR_DS_CANT_MOVE_RESOURCE_GROUP
#
# MessageText:
#
#  Cross-domain move of non-empty resource groups is not allowed.
#
ERROR_DS_CANT_MOVE_RESOURCE_GROUP= 8499

#
# MessageId: ERROR_DS_INVALID_SEARCH_FLAG
#
# MessageText:
#
#  The search flags for the attribute are invalid. The ANR bit is valid only on attributes of Unicode or Teletex strings.
#
ERROR_DS_INVALID_SEARCH_FLAG    = 8500

#
# MessageId: ERROR_DS_NO_TREE_DELETE_ABOVE_NC
#
# MessageText:
#
#  Tree deletions starting at an object which has an NC head as a descendant are not allowed.
#
ERROR_DS_NO_TREE_DELETE_ABOVE_NC= 8501

#
# MessageId: ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE
#
# MessageText:
#
#  The directory service failed to lock a tree in preparation for a tree deletion because the tree was in use.
#
ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE= 8502

#
# MessageId: ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE
#
# MessageText:
#
#  The directory service failed to identify the list of objects to delete while attempting a tree deletion.
#
ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE= 8503

#
# MessageId: ERROR_DS_SAM_INIT_FAILURE
#
# MessageText:
#
#  Security Accounts Manager initialization failed because of the following error: 1.
#  Error Status:= 0x02. Click OK to shut down the system and reboot into Directory Services Restore Mode. Check the event log for detailed information.
#
ERROR_DS_SAM_INIT_FAILURE       = 8504

#
# MessageId: ERROR_DS_SENSITIVE_GROUP_VIOLATION
#
# MessageText:
#
#  Only an administrator can modify the membership list of an administrative group.
#
ERROR_DS_SENSITIVE_GROUP_VIOLATION= 8505

#
# MessageId: ERROR_DS_CANT_MOD_PRIMARYGROUPID
#
# MessageText:
#
#  Cannot change the primary group ID of a domain controller account.
#
ERROR_DS_CANT_MOD_PRIMARYGROUPID= 8506

#
# MessageId: ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD
#
# MessageText:
#
#  An attempt is made to modify the base schema.
#
ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD= 8507

#
# MessageId: ERROR_DS_NONSAFE_SCHEMA_CHANGE
#
# MessageText:
#
#  Adding a new mandatory attribute to an existing class, deleting a mandatory attribute
#  from an existing class, or adding an optional attribute to the special class Top that
#  is not a backlink attribute (directly or through inheritance, for example, by adding
#  or deleting an auxiliary class) is not allowed.
#
ERROR_DS_NONSAFE_SCHEMA_CHANGE  = 8508

#
# MessageId: ERROR_DS_SCHEMA_UPDATE_DISALLOWED
#
# MessageText:
#
#  Schema update is not allowed on this DC because the DC is not the schema FSMO Role Owner.
#
ERROR_DS_SCHEMA_UPDATE_DISALLOWED= 8509

#
# MessageId: ERROR_DS_CANT_CREATE_UNDER_SCHEMA
#
# MessageText:
#
#  An object of this class cannot be created under the schema container. You can only create attribute-schema and class-schema objects under the schema container.
#
ERROR_DS_CANT_CREATE_UNDER_SCHEMA= 8510

#
# MessageId: ERROR_DS_INSTALL_NO_SRC_SCH_VERSION
#
# MessageText:
#
#  The replica/child install failed to get the objectVersion attribute on the schema container on the source DC. Either the attribute is missing on the schema container or the credentials supplied do not have permission to read it.
#
ERROR_DS_INSTALL_NO_SRC_SCH_VERSION= 8511

#
# MessageId: ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE
#
# MessageText:
#
#  The replica/child install failed to read the objectVersion attribute in the SCHEMA section of the file schema.ini in the system32 directory.
#
ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE= 8512

#
# MessageId: ERROR_DS_INVALID_GROUP_TYPE
#
# MessageText:
#
#  The specified group type is invalid.
#
ERROR_DS_INVALID_GROUP_TYPE     = 8513

#
# MessageId: ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN
#
# MessageText:
#
#  You cannot nest global groups in a mixed domain if the group is security-enabled.
#
ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN= 8514

#
# MessageId: ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN
#
# MessageText:
#
#  You cannot nest local groups in a mixed domain if the group is security-enabled.
#
ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN= 8515

#
# MessageId: ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER
#
# MessageText:
#
#  A global group cannot have a local group as a member.
#
ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER= 8516

#
# MessageId: ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER
#
# MessageText:
#
#  A global group cannot have a universal group as a member.
#
ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER= 8517

#
# MessageId: ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER
#
# MessageText:
#
#  A universal group cannot have a local group as a member.
#
ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER= 8518

#
# MessageId: ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER
#
# MessageText:
#
#  A global group cannot have a cross-domain member.
#
ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER= 8519

#
# MessageId: ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER
#
# MessageText:
#
#  A local group cannot have another cross domain local group as a member.
#
ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER= 8520

#
# MessageId: ERROR_DS_HAVE_PRIMARY_MEMBERS
#
# MessageText:
#
#  A group with primary members cannot change to a security-disabled group.
#
ERROR_DS_HAVE_PRIMARY_MEMBERS   = 8521

#
# MessageId: ERROR_DS_STRING_SD_CONVERSION_FAILED
#
# MessageText:
#
#  The schema cache load failed to convert the string default SD on a class-schema object.
#
ERROR_DS_STRING_SD_CONVERSION_FAILED= 8522

#
# MessageId: ERROR_DS_NAMING_MASTER_GC
#
# MessageText:
#
#  Only DSAs configured to be Global Catalog servers should be allowed to hold the Domain Naming Master FSMO role. (Applies only to Windows 2000 servers)
#
ERROR_DS_NAMING_MASTER_GC       = 8523

#
# MessageId: ERROR_DS_DNS_LOOKUP_FAILURE
#
# MessageText:
#
#  The DSA operation is unable to proceed because of a DNS lookup failure.
#
ERROR_DS_DNS_LOOKUP_FAILURE     = 8524

#
# MessageId: ERROR_DS_COULDNT_UPDATE_SPNS
#
# MessageText:
#
#  While processing a change to the DNS Host Name for an object, the Service Principal Name values could not be kept in sync.
#
ERROR_DS_COULDNT_UPDATE_SPNS    = 8525

#
# MessageId: ERROR_DS_CANT_RETRIEVE_SD
#
# MessageText:
#
#  The Security Descriptor attribute could not be read.
#
ERROR_DS_CANT_RETRIEVE_SD       = 8526

#
# MessageId: ERROR_DS_KEY_NOT_UNIQUE
#
# MessageText:
#
#  The object requested was not found, but an object with that key was found.
#
ERROR_DS_KEY_NOT_UNIQUE         = 8527

#
# MessageId: ERROR_DS_WRONG_LINKED_ATT_SYNTAX
#
# MessageText:
#
#  The syntax of the linked attribute being added is incorrect. Forward links can only have syntax 2.5.5.1, 2.5.5.7, and 2.5.5.14, and backlinks can only have syntax 2.5.5.1
#
ERROR_DS_WRONG_LINKED_ATT_SYNTAX= 8528

#
# MessageId: ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD
#
# MessageText:
#
#  Security Account Manager needs to get the boot password.
#
ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD= 8529

#
# MessageId: ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY
#
# MessageText:
#
#  Security Account Manager needs to get the boot key from floppy disk.
#
ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY= 8530

#
# MessageId: ERROR_DS_CANT_START
#
# MessageText:
#
#  Directory Service cannot start.
#
ERROR_DS_CANT_START             = 8531

#
# MessageId: ERROR_DS_INIT_FAILURE
#
# MessageText:
#
#  Directory Services could not start.
#
ERROR_DS_INIT_FAILURE           = 8532

#
# MessageId: ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION
#
# MessageText:
#
#  The connection between client and server requires packet privacy or better.
#
ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION= 8533

#
# MessageId: ERROR_DS_SOURCE_DOMAIN_IN_FOREST
#
# MessageText:
#
#  The source domain may not be in the same forest as destination.
#
ERROR_DS_SOURCE_DOMAIN_IN_FOREST= 8534

#
# MessageId: ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST
#
# MessageText:
#
#  The destination domain must be in the forest.
#
ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST= 8535

#
# MessageId: ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED
#
# MessageText:
#
#  The operation requires that destination domain auditing be enabled.
#
ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED= 8536

#
# MessageId: ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN
#
# MessageText:
#
#  The operation couldn#t locate a DC for the source domain.
#
ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN= 8537

#
# MessageId: ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER
#
# MessageText:
#
#  The source object must be a group or user.
#
ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER= 8538

#
# MessageId: ERROR_DS_SRC_SID_EXISTS_IN_FOREST
#
# MessageText:
#
#  The source object#s SID already exists in destination forest.
#
ERROR_DS_SRC_SID_EXISTS_IN_FOREST= 8539

#
# MessageId: ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH
#
# MessageText:
#
#  The source and destination object must be of the same type.
#
ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH= 8540

#
# MessageId: ERROR_SAM_INIT_FAILURE
#
# MessageText:
#
#  Security Accounts Manager initialization failed because of the following error: 1.
#  Error Status:= 0x02. Click OK to shut down the system and reboot into Safe Mode. Check the event log for detailed information.
#
ERROR_SAM_INIT_FAILURE          = 8541

#
# MessageId: ERROR_DS_DRA_SCHEMA_INFO_SHIP
#
# MessageText:
#
#  Schema information could not be included in the replication request.
#
ERROR_DS_DRA_SCHEMA_INFO_SHIP   = 8542

#
# MessageId: ERROR_DS_DRA_SCHEMA_CONFLICT
#
# MessageText:
#
#  The replication operation could not be completed due to a schema incompatibility.
#
ERROR_DS_DRA_SCHEMA_CONFLICT    = 8543

#
# MessageId: ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT
#
# MessageText:
#
#  The replication operation could not be completed due to a previous schema incompatibility.
#
ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT= 8544

#
# MessageId: ERROR_DS_DRA_OBJ_NC_MISMATCH
#
# MessageText:
#
#  The replication update could not be applied because either the source or the destination has not yet received information regarding a recent cross-domain move operation.
#
ERROR_DS_DRA_OBJ_NC_MISMATCH    = 8545

#
# MessageId: ERROR_DS_NC_STILL_HAS_DSAS
#
# MessageText:
#
#  The requested domain could not be deleted because there exist domain controllers that still host this domain.
#
ERROR_DS_NC_STILL_HAS_DSAS      = 8546

#
# MessageId: ERROR_DS_GC_REQUIRED
#
# MessageText:
#
#  The requested operation can be performed only on a global catalog server.
#
ERROR_DS_GC_REQUIRED            = 8547

#
# MessageId: ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY
#
# MessageText:
#
#  A local group can only be a member of other local groups in the same domain.
#
ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY= 8548

#
# MessageId: ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS
#
# MessageText:
#
#  Foreign security principals cannot be members of universal groups.
#
ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS= 8549

#
# MessageId: ERROR_DS_CANT_ADD_TO_GC
#
# MessageText:
#
#  The attribute is not allowed to be replicated to the GC because of security reasons.
#
ERROR_DS_CANT_ADD_TO_GC         = 8550

#
# MessageId: ERROR_DS_NO_CHECKPOINT_WITH_PDC
#
# MessageText:
#
#  The checkpoint with the PDC could not be taken because there too many modifications being processed currently.
#
ERROR_DS_NO_CHECKPOINT_WITH_PDC = 8551

#
# MessageId: ERROR_DS_SOURCE_AUDITING_NOT_ENABLED
#
# MessageText:
#
#  The operation requires that source domain auditing be enabled.
#
ERROR_DS_SOURCE_AUDITING_NOT_ENABLED= 8552

#
# MessageId: ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC
#
# MessageText:
#
#  Security principal objects can only be created inside domain naming contexts.
#
ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC= 8553

#
# MessageId: ERROR_DS_INVALID_NAME_FOR_SPN
#
# MessageText:
#
#  A Service Principal Name (SPN) could not be constructed because the provided hostname is not in the necessary format.
#
ERROR_DS_INVALID_NAME_FOR_SPN   = 8554

#
# MessageId: ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS
#
# MessageText:
#
#  A Filter was passed that uses constructed attributes.
#
ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS= 8555

#
# MessageId: ERROR_DS_UNICODEPWD_NOT_IN_QUOTES
#
# MessageText:
#
#  The unicodePwd attribute value must be enclosed in double quotes.
#
ERROR_DS_UNICODEPWD_NOT_IN_QUOTES= 8556

#
# MessageId: ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED
#
# MessageText:
#
#  Your computer could not be joined to the domain. You have exceeded the maximum number of computer accounts you are allowed to create in this domain. Contact your system administrator to have this limit reset or increased.
#
ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED= 8557

#
# MessageId: ERROR_DS_MUST_BE_RUN_ON_DST_DC
#
# MessageText:
#
#  For security reasons, the operation must be run on the destination DC.
#
ERROR_DS_MUST_BE_RUN_ON_DST_DC  = 8558

#
# MessageId: ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER
#
# MessageText:
#
#  For security reasons, the source DC must be NT4SP4 or greater.
#
ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER= 8559

#
# MessageId: ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ
#
# MessageText:
#
#  Critical Directory Service System objects cannot be deleted during tree delete operations.  The tree delete may have been partially performed.
#
ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ= 8560

#
# MessageId: ERROR_DS_INIT_FAILURE_CONSOLE
#
# MessageText:
#
#  Directory Services could not start because of the following error: 1.
#  Error Status:= 0x02. Please click OK to shutdown the system. You can use the recovery console to diagnose the system further.
#
ERROR_DS_INIT_FAILURE_CONSOLE   = 8561

#
# MessageId: ERROR_DS_SAM_INIT_FAILURE_CONSOLE
#
# MessageText:
#
#  Security Accounts Manager initialization failed because of the following error: 1.
#  Error Status:= 0x02. Please click OK to shutdown the system. You can use the recovery console to diagnose the system further.
#
ERROR_DS_SAM_INIT_FAILURE_CONSOLE= 8562

#
# MessageId: ERROR_DS_FOREST_VERSION_TOO_HIGH
#
# MessageText:
#
#  The version of the operating system installed is incompatible with the current forest functional level. You must upgrade to a new version of the operating system before this server can become a domain controller in this forest.
#
ERROR_DS_FOREST_VERSION_TOO_HIGH= 8563

#
# MessageId: ERROR_DS_DOMAIN_VERSION_TOO_HIGH
#
# MessageText:
#
#  The version of the operating system installed is incompatible with the current domain functional level. You must upgrade to a new version of the operating system before this server can become a domain controller in this domain.
#
ERROR_DS_DOMAIN_VERSION_TOO_HIGH= 8564

#
# MessageId: ERROR_DS_FOREST_VERSION_TOO_LOW
#
# MessageText:
#
#  The version of the operating system installed on this server no longer supports the current forest functional level. You must raise the forest functional level before this server can become a domain controller in this forest.
#
ERROR_DS_FOREST_VERSION_TOO_LOW = 8565

#
# MessageId: ERROR_DS_DOMAIN_VERSION_TOO_LOW
#
# MessageText:
#
#  The version of the operating system installed on this server no longer supports the current domain functional level. You must raise the domain functional level before this server can become a domain controller in this domain.
#
ERROR_DS_DOMAIN_VERSION_TOO_LOW = 8566

#
# MessageId: ERROR_DS_INCOMPATIBLE_VERSION
#
# MessageText:
#
#  The version of the operating system installed on this server is incompatible with the functional level of the domain or forest.
#
ERROR_DS_INCOMPATIBLE_VERSION   = 8567

#
# MessageId: ERROR_DS_LOW_DSA_VERSION
#
# MessageText:
#
#  The functional level of the domain (or forest) cannot be raised to the requested value, because there exist one or more domain controllers in the domain (or forest) that are at a lower incompatible functional level.
#
ERROR_DS_LOW_DSA_VERSION        = 8568

#
# MessageId: ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN
#
# MessageText:
#
#  The forest functional level cannot be raised to the requested value since one or more domains are still in mixed domain mode. All domains in the forest must be in native mode, for you to raise the forest functional level.
#
ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN= 8569

#
# MessageId: ERROR_DS_NOT_SUPPORTED_SORT_ORDER
#
# MessageText:
#
#  The sort order requested is not supported.
#
ERROR_DS_NOT_SUPPORTED_SORT_ORDER= 8570

#
# MessageId: ERROR_DS_NAME_NOT_UNIQUE
#
# MessageText:
#
#  The requested name already exists as a unique identifier.
#
ERROR_DS_NAME_NOT_UNIQUE        = 8571

#
# MessageId: ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4
#
# MessageText:
#
#  The machine account was created pre-NT4.  The account needs to be recreated.
#
ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4= 8572

#
# MessageId: ERROR_DS_OUT_OF_VERSION_STORE
#
# MessageText:
#
#  The database is out of version store.
#
ERROR_DS_OUT_OF_VERSION_STORE   = 8573

#
# MessageId: ERROR_DS_INCOMPATIBLE_CONTROLS_USED
#
# MessageText:
#
#  Unable to continue operation because multiple conflicting controls were used.
#
ERROR_DS_INCOMPATIBLE_CONTROLS_USED= 8574

#
# MessageId: ERROR_DS_NO_REF_DOMAIN
#
# MessageText:
#
#  Unable to find a valid security descriptor reference domain for this partition.
#
ERROR_DS_NO_REF_DOMAIN          = 8575

#
# MessageId: ERROR_DS_RESERVED_LINK_ID
#
# MessageText:
#
#  Schema update failed: The link identifier is reserved.
#
ERROR_DS_RESERVED_LINK_ID       = 8576

#
# MessageId: ERROR_DS_LINK_ID_NOT_AVAILABLE
#
# MessageText:
#
#  Schema update failed: There are no link identifiers available.
#
ERROR_DS_LINK_ID_NOT_AVAILABLE  = 8577

#
# MessageId: ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER
#
# MessageText:
#
#  An account group can not have a universal group as a member.
#
ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER= 8578

#
# MessageId: ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE
#
# MessageText:
#
#  Rename or move operations on naming context heads or read-only objects are not allowed.
#
ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE= 8579

#
# MessageId: ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC
#
# MessageText:
#
#  Move operations on objects in the schema naming context are not allowed.
#
ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC= 8580

#
# MessageId: ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG
#
# MessageText:
#
#  A system flag has been set on the object and does not allow the object to be moved or renamed.
#
ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG= 8581

#
# MessageId: ERROR_DS_MODIFYDN_WRONG_GRANDPARENT
#
# MessageText:
#
#  This object is not allowed to change its grandparent container. Moves are not forbidden on this object, but are restricted to sibling containers.
#
ERROR_DS_MODIFYDN_WRONG_GRANDPARENT= 8582

#
# MessageId: ERROR_DS_NAME_ERROR_TRUST_REFERRAL
#
# MessageText:
#
#  Unable to resolve completely, a referral to another forest is generated.
#
ERROR_DS_NAME_ERROR_TRUST_REFERRAL= 8583

#
# MessageId: ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER
#
# MessageText:
#
#  The requested action is not supported on standard server.
#
ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER= 8584

#
# MessageId: ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD
#
# MessageText:
#
#  Could not access a partition of the Active Directory located on a remote server.  Make sure at least one server is running for the partition in question.
#
ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD= 8585

#
# MessageId: ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2
#
# MessageText:
#
#  The directory cannot validate the proposed naming context (or partition) name because
#  it does not hold a replica nor can it contact a replica of the naming context above
#  the proposed naming context.  Please ensure that the parent naming context is properly
#  registered in DNS, and at least one replica of this naming context is reachable by the
#  Domain Naming master.
#
ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2= 8586

#
# MessageId: ERROR_DS_THREAD_LIMIT_EXCEEDED
#
# MessageText:
#
#  The thread limit for this request was exceeded.
#
ERROR_DS_THREAD_LIMIT_EXCEEDED  = 8587

#
# MessageId: ERROR_DS_NOT_CLOSEST
#
# MessageText:
#
#  The Global catalog server is not in the closest site.
#
ERROR_DS_NOT_CLOSEST            = 8588

#
# MessageId: ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF
#
# MessageText:
#
#  The DS cannot derive a service principal name (SPN) with which to mutually authenticate the target server because the corresponding server object in the local DS database has no serverReference attribute.
#
ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF= 8589

#
# MessageId: ERROR_DS_SINGLE_USER_MODE_FAILED
#
# MessageText:
#
#  The Directory Service failed to enter single user mode.
#
ERROR_DS_SINGLE_USER_MODE_FAILED= 8590

#
# MessageId: ERROR_DS_NTDSCRIPT_SYNTAX_ERROR
#
# MessageText:
#
#  The Directory Service cannot parse the script because of a syntax error.
#
ERROR_DS_NTDSCRIPT_SYNTAX_ERROR = 8591

#
# MessageId: ERROR_DS_NTDSCRIPT_PROCESS_ERROR
#
# MessageText:
#
#  The Directory Service cannot process the script because of an error.
#
ERROR_DS_NTDSCRIPT_PROCESS_ERROR= 8592

#
# MessageId: ERROR_DS_DIFFERENT_REPL_EPOCHS
#
# MessageText:
#
#  The directory service cannot perform the requested operation because the servers
#  involved are of different replication epochs (which is usually related to a
#  domain rename that is in progress).
#
ERROR_DS_DIFFERENT_REPL_EPOCHS  = 8593

#
# MessageId: ERROR_DS_DRS_EXTENSIONS_CHANGED
#
# MessageText:
#
#  The directory service binding must be renegotiated due to a change in the server
#  extensions information.
#
ERROR_DS_DRS_EXTENSIONS_CHANGED = 8594

#
# MessageId: ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR
#
# MessageText:
#
#  Operation not allowed on a disabled cross ref.
#
ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR= 8595

#
# MessageId: ERROR_DS_NO_MSDS_INTID
#
# MessageText:
#
#  Schema update failed: No values for msDS-IntId are available.
#
ERROR_DS_NO_MSDS_INTID          = 8596

#
# MessageId: ERROR_DS_DUP_MSDS_INTID
#
# MessageText:
#
#  Schema update failed: Duplicate msDS-INtId. Retry the operation.
#
ERROR_DS_DUP_MSDS_INTID         = 8597

#
# MessageId: ERROR_DS_EXISTS_IN_RDNATTID
#
# MessageText:
#
#  Schema deletion failed: attribute is used in rDNAttID.
#
ERROR_DS_EXISTS_IN_RDNATTID     = 8598

#
# MessageId: ERROR_DS_AUTHORIZATION_FAILED
#
# MessageText:
#
#  The directory service failed to authorize the request.
#
ERROR_DS_AUTHORIZATION_FAILED   = 8599

#
# MessageId: ERROR_DS_INVALID_SCRIPT
#
# MessageText:
#
#  The Directory Service cannot process the script because it is invalid.
#
ERROR_DS_INVALID_SCRIPT         = 8600

#
# MessageId: ERROR_DS_REMOTE_CROSSREF_OP_FAILED
#
# MessageText:
#
#  The remote create cross reference operation failed on the Domain Naming Master FSMO.  The operation#s error is in the extended data.
#
ERROR_DS_REMOTE_CROSSREF_OP_FAILED= 8601

#
# MessageId: ERROR_DS_CROSS_REF_BUSY
#
# MessageText:
#
#  A cross reference is in use locally with the same name.
#
ERROR_DS_CROSS_REF_BUSY         = 8602

#
# MessageId: ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN
#
# MessageText:
#
#  The DS cannot derive a service principal name (SPN) with which to mutually authenticate the target server because the server#s domain has been deleted from the forest.
#
ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN= 8603

#
# MessageId: ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC
#
# MessageText:
#
#  Writeable NCs prevent this DC from demoting.
#
ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC= 8604

#
# MessageId: ERROR_DS_DUPLICATE_ID_FOUND
#
# MessageText:
#
#  The requested object has a non-unique identifier and cannot be retrieved.
#
ERROR_DS_DUPLICATE_ID_FOUND     = 8605

#
# MessageId: ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT
#
# MessageText:
#
#  Insufficient attributes were given to create an object.  This object may not exist because it may have been deleted and already garbage collected.
#
ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT= 8606

#
# MessageId: ERROR_DS_GROUP_CONVERSION_ERROR
#
# MessageText:
#
#  The group cannot be converted due to attribute restrictions on the requested group type.
#
ERROR_DS_GROUP_CONVERSION_ERROR = 8607

#
# MessageId: ERROR_DS_CANT_MOVE_APP_BASIC_GROUP
#
# MessageText:
#
#  Cross-domain move of non-empty basic application groups is not allowed.
#
ERROR_DS_CANT_MOVE_APP_BASIC_GROUP= 8608

#
# MessageId: ERROR_DS_CANT_MOVE_APP_QUERY_GROUP
#
# MessageText:
#
#  Cross-domain move of non-empty query based application groups is not allowed.
#
ERROR_DS_CANT_MOVE_APP_QUERY_GROUP= 8609

#
# MessageId: ERROR_DS_ROLE_NOT_VERIFIED
#
# MessageText:
#
#  The FSMO role ownership could not be verified because its directory partition has not replicated successfully with atleast one replication partner.
#
ERROR_DS_ROLE_NOT_VERIFIED      = 8610

#
# MessageId: ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL
#
# MessageText:
#
#  The target container for a redirection of a well known object container cannot already be a special container.
#
ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL= 8611

#
# MessageId: ERROR_DS_DOMAIN_RENAME_IN_PROGRESS
#
# MessageText:
#
#  The Directory Service cannot perform the requested operation because a domain rename operation is in progress.
#
ERROR_DS_DOMAIN_RENAME_IN_PROGRESS= 8612

#
# MessageId: ERROR_DS_EXISTING_AD_CHILD_NC
#
# MessageText:
#
#  The Active Directory detected an Active Directory child partition below the
#  requested new partition name.  The Active Directory#s partition heiarchy must
#  be created in a top down method.
#
ERROR_DS_EXISTING_AD_CHILD_NC   = 8613

#
# MessageId: ERROR_DS_REPL_LIFETIME_EXCEEDED
#
# MessageText:
#
#  The Active Directory cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime.
#
ERROR_DS_REPL_LIFETIME_EXCEEDED = 8614

#
# MessageId: ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER
#
# MessageText:
#
#  The requested operation is not allowed on an object under the system container.
#
ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER= 8615

#
#
#     End of Active Directory Error Codes
#
#                  8000 to  8999
#


#
#
#                  DNS Error Codes
#
#                   9000 to 9999
#

# =============================
# Facility DNS Error Messages
# =============================

#
#  DNS response codes.
#

DNS_ERROR_RESPONSE_CODES_BASE = 9000

DNS_ERROR_RCODE_NO_ERROR = NO_ERROR

DNS_ERROR_MASK= 0x000002328 # 9000 or DNS_ERROR_RESPONSE_CODES_BASE

# DNS_ERROR_RCODE_FORMAT_ERROR         = 0x000002329
#
# MessageId: DNS_ERROR_RCODE_FORMAT_ERROR
#
# MessageText:
#
#  DNS server unable to interpret format.
#
DNS_ERROR_RCODE_FORMAT_ERROR     = 9001

# DNS_ERROR_RCODE_SERVER_FAILURE       = 0x00000232a
#
# MessageId: DNS_ERROR_RCODE_SERVER_FAILURE
#
# MessageText:
#
#  DNS server failure.
#
DNS_ERROR_RCODE_SERVER_FAILURE   = 9002

# DNS_ERROR_RCODE_NAME_ERROR           = 0x00000232b
#
# MessageId: DNS_ERROR_RCODE_NAME_ERROR
#
# MessageText:
#
#  DNS name does not exist.
#
DNS_ERROR_RCODE_NAME_ERROR       = 9003

# DNS_ERROR_RCODE_NOT_IMPLEMENTED      = 0x00000232c
#
# MessageId: DNS_ERROR_RCODE_NOT_IMPLEMENTED
#
# MessageText:
#
#  DNS request not supported by name server.
#
DNS_ERROR_RCODE_NOT_IMPLEMENTED  = 9004

# DNS_ERROR_RCODE_REFUSED              = 0x00000232d
#
# MessageId: DNS_ERROR_RCODE_REFUSED
#
# MessageText:
#
#  DNS operation refused.
#
DNS_ERROR_RCODE_REFUSED          = 9005

# DNS_ERROR_RCODE_YXDOMAIN             = 0x00000232e
#
# MessageId: DNS_ERROR_RCODE_YXDOMAIN
#
# MessageText:
#
#  DNS name that ought not exist, does exist.
#
DNS_ERROR_RCODE_YXDOMAIN         = 9006

# DNS_ERROR_RCODE_YXRRSET              = 0x00000232f
#
# MessageId: DNS_ERROR_RCODE_YXRRSET
#
# MessageText:
#
#  DNS RR set that ought not exist, does exist.
#
DNS_ERROR_RCODE_YXRRSET          = 9007

# DNS_ERROR_RCODE_NXRRSET              = 0x000002330
#
# MessageId: DNS_ERROR_RCODE_NXRRSET
#
# MessageText:
#
#  DNS RR set that ought to exist, does not exist.
#
DNS_ERROR_RCODE_NXRRSET          = 9008

# DNS_ERROR_RCODE_NOTAUTH              = 0x000002331
#
# MessageId: DNS_ERROR_RCODE_NOTAUTH
#
# MessageText:
#
#  DNS server not authoritative for zone.
#
DNS_ERROR_RCODE_NOTAUTH          = 9009

# DNS_ERROR_RCODE_NOTZONE              = 0x000002332
#
# MessageId: DNS_ERROR_RCODE_NOTZONE
#
# MessageText:
#
#  DNS name in update or prereq is not in zone.
#
DNS_ERROR_RCODE_NOTZONE          = 9010

# DNS_ERROR_RCODE_BADSIG               = 0x000002338
#
# MessageId: DNS_ERROR_RCODE_BADSIG
#
# MessageText:
#
#  DNS signature failed to verify.
#
DNS_ERROR_RCODE_BADSIG           = 9016

# DNS_ERROR_RCODE_BADKEY               = 0x000002339
#
# MessageId: DNS_ERROR_RCODE_BADKEY
#
# MessageText:
#
#  DNS bad key.
#
DNS_ERROR_RCODE_BADKEY           = 9017

# DNS_ERROR_RCODE_BADTIME              = 0x00000233a
#
# MessageId: DNS_ERROR_RCODE_BADTIME
#
# MessageText:
#
#  DNS signature validity expired.
#
DNS_ERROR_RCODE_BADTIME          = 9018

DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME


#
#  Packet format
#

DNS_ERROR_PACKET_FMT_BASE = 9500

# DNS_INFO_NO_RECORDS                  = 0x00000251d
#
# MessageId: DNS_INFO_NO_RECORDS
#
# MessageText:
#
#  No records found for given DNS query.
#
DNS_INFO_NO_RECORDS              = 9501

# DNS_ERROR_BAD_PACKET                 = 0x00000251e
#
# MessageId: DNS_ERROR_BAD_PACKET
#
# MessageText:
#
#  Bad DNS packet.
#
DNS_ERROR_BAD_PACKET             = 9502

# DNS_ERROR_NO_PACKET                  = 0x00000251f
#
# MessageId: DNS_ERROR_NO_PACKET
#
# MessageText:
#
#  No DNS packet.
#
DNS_ERROR_NO_PACKET              = 9503

# DNS_ERROR_RCODE                      = 0x000002520
#
# MessageId: DNS_ERROR_RCODE
#
# MessageText:
#
#  DNS error, check rcode.
#
DNS_ERROR_RCODE                  = 9504

# DNS_ERROR_UNSECURE_PACKET            = 0x000002521
#
# MessageId: DNS_ERROR_UNSECURE_PACKET
#
# MessageText:
#
#  Unsecured DNS packet.
#
DNS_ERROR_UNSECURE_PACKET        = 9505

DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET


#
#  General API errors
#

DNS_ERROR_NO_MEMORY           = ERROR_OUTOFMEMORY
DNS_ERROR_INVALID_NAME        = ERROR_INVALID_NAME
DNS_ERROR_INVALID_DATA        = ERROR_INVALID_DATA

DNS_ERROR_GENERAL_API_BASE = 9550

# DNS_ERROR_INVALID_TYPE               = 0x00000254f
#
# MessageId: DNS_ERROR_INVALID_TYPE
#
# MessageText:
#
#  Invalid DNS type.
#
DNS_ERROR_INVALID_TYPE           = 9551

# DNS_ERROR_INVALID_IP_ADDRESS         = 0x000002550
#
# MessageId: DNS_ERROR_INVALID_IP_ADDRESS
#
# MessageText:
#
#  Invalid IP address.
#
DNS_ERROR_INVALID_IP_ADDRESS     = 9552

# DNS_ERROR_INVALID_PROPERTY           = 0x000002551
#
# MessageId: DNS_ERROR_INVALID_PROPERTY
#
# MessageText:
#
#  Invalid property.
#
DNS_ERROR_INVALID_PROPERTY       = 9553

# DNS_ERROR_TRY_AGAIN_LATER            = 0x000002552
#
# MessageId: DNS_ERROR_TRY_AGAIN_LATER
#
# MessageText:
#
#  Try DNS operation again later.
#
DNS_ERROR_TRY_AGAIN_LATER        = 9554

# DNS_ERROR_NOT_UNIQUE                 = 0x000002553
#
# MessageId: DNS_ERROR_NOT_UNIQUE
#
# MessageText:
#
#  Record for given name and type is not unique.
#
DNS_ERROR_NOT_UNIQUE             = 9555

# DNS_ERROR_NON_RFC_NAME               = 0x000002554
#
# MessageId: DNS_ERROR_NON_RFC_NAME
#
# MessageText:
#
#  DNS name does not comply with RFC specifications.
#
DNS_ERROR_NON_RFC_NAME           = 9556

# DNS_STATUS_FQDN                      = 0x000002555
#
# MessageId: DNS_STATUS_FQDN
#
# MessageText:
#
#  DNS name is a fully-qualified DNS name.
#
DNS_STATUS_FQDN                  = 9557

# DNS_STATUS_DOTTED_NAME               = 0x000002556
#
# MessageId: DNS_STATUS_DOTTED_NAME
#
# MessageText:
#
#  DNS name is dotted (multi-label).
#
DNS_STATUS_DOTTED_NAME           = 9558

# DNS_STATUS_SINGLE_PART_NAME          = 0x000002557
#
# MessageId: DNS_STATUS_SINGLE_PART_NAME
#
# MessageText:
#
#  DNS name is a single-part name.
#
DNS_STATUS_SINGLE_PART_NAME      = 9559

# DNS_ERROR_INVALID_NAME_CHAR          = 0x000002558
#
# MessageId: DNS_ERROR_INVALID_NAME_CHAR
#
# MessageText:
#
#  DNS name contains an invalid character.
#
DNS_ERROR_INVALID_NAME_CHAR      = 9560

# DNS_ERROR_NUMERIC_NAME               = 0x000002559
#
# MessageId: DNS_ERROR_NUMERIC_NAME
#
# MessageText:
#
#  DNS name is entirely numeric.
#
DNS_ERROR_NUMERIC_NAME           = 9561

# DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 0x00000255A
#
# MessageId: DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER
#
# MessageText:
#
#  The operation requested is not permitted on a DNS root server.
#
DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 9562

# DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION = 0x00000255B
#
# MessageId: DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION
#
# MessageText:
#
#  The record could not be created because this part of the DNS namespace has
#  been delegated to another server.
#
DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION = 9563

# DNS_ERROR_CANNOT_FIND_ROOT_HINTS = 0x00000255C
#
# MessageId: DNS_ERROR_CANNOT_FIND_ROOT_HINTS
#
# MessageText:
#
#  The DNS server could not find a set of root hints.
#
DNS_ERROR_CANNOT_FIND_ROOT_HINTS = 9564

# DNS_ERROR_INCONSISTENT_ROOT_HINTS = 0x00000255D
#
# MessageId: DNS_ERROR_INCONSISTENT_ROOT_HINTS
#
# MessageText:
#
#  The DNS server found root hints but they were not consistent across
#  all adapters.
#
DNS_ERROR_INCONSISTENT_ROOT_HINTS = 9565


#
#  Zone errors
#

DNS_ERROR_ZONE_BASE = 9600

# DNS_ERROR_ZONE_DOES_NOT_EXIST        = 0x000002581
#
# MessageId: DNS_ERROR_ZONE_DOES_NOT_EXIST
#
# MessageText:
#
#  DNS zone does not exist.
#
DNS_ERROR_ZONE_DOES_NOT_EXIST    = 9601

# DNS_ERROR_NO_ZONE_INFO               = 0x000002582
#
# MessageId: DNS_ERROR_NO_ZONE_INFO
#
# MessageText:
#
#  DNS zone information not available.
#
DNS_ERROR_NO_ZONE_INFO           = 9602

# DNS_ERROR_INVALID_ZONE_OPERATION     = 0x000002583
#
# MessageId: DNS_ERROR_INVALID_ZONE_OPERATION
#
# MessageText:
#
#  Invalid operation for DNS zone.
#
DNS_ERROR_INVALID_ZONE_OPERATION = 9603

# DNS_ERROR_ZONE_CONFIGURATION_ERROR   = 0x000002584
#
# MessageId: DNS_ERROR_ZONE_CONFIGURATION_ERROR
#
# MessageText:
#
#  Invalid DNS zone configuration.
#
DNS_ERROR_ZONE_CONFIGURATION_ERROR = 9604

# DNS_ERROR_ZONE_HAS_NO_SOA_RECORD     = 0x000002585
#
# MessageId: DNS_ERROR_ZONE_HAS_NO_SOA_RECORD
#
# MessageText:
#
#  DNS zone has no start of authority (SOA) record.
#
DNS_ERROR_ZONE_HAS_NO_SOA_RECORD = 9605

# DNS_ERROR_ZONE_HAS_NO_NS_RECORDS     = 0x000002586
#
# MessageId: DNS_ERROR_ZONE_HAS_NO_NS_RECORDS
#
# MessageText:
#
#  DNS zone has no Name Server (NS) record.
#
DNS_ERROR_ZONE_HAS_NO_NS_RECORDS = 9606

# DNS_ERROR_ZONE_LOCKED                = 0x000002587
#
# MessageId: DNS_ERROR_ZONE_LOCKED
#
# MessageText:
#
#  DNS zone is locked.
#
DNS_ERROR_ZONE_LOCKED            = 9607

# DNS_ERROR_ZONE_CREATION_FAILED       = 0x000002588
#
# MessageId: DNS_ERROR_ZONE_CREATION_FAILED
#
# MessageText:
#
#  DNS zone creation failed.
#
DNS_ERROR_ZONE_CREATION_FAILED   = 9608

# DNS_ERROR_ZONE_ALREADY_EXISTS        = 0x000002589
#
# MessageId: DNS_ERROR_ZONE_ALREADY_EXISTS
#
# MessageText:
#
#  DNS zone already exists.
#
DNS_ERROR_ZONE_ALREADY_EXISTS    = 9609

# DNS_ERROR_AUTOZONE_ALREADY_EXISTS    = 0x00000258a
#
# MessageId: DNS_ERROR_AUTOZONE_ALREADY_EXISTS
#
# MessageText:
#
#  DNS automatic zone already exists.
#
DNS_ERROR_AUTOZONE_ALREADY_EXISTS = 9610

# DNS_ERROR_INVALID_ZONE_TYPE          = 0x00000258b
#
# MessageId: DNS_ERROR_INVALID_ZONE_TYPE
#
# MessageText:
#
#  Invalid DNS zone type.
#
DNS_ERROR_INVALID_ZONE_TYPE      = 9611

# DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP= 0x00000258c
#
# MessageId: DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP
#
# MessageText:
#
#  Secondary DNS zone requires master IP address.
#
DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP = 9612

# DNS_ERROR_ZONE_NOT_SECONDARY         = 0x00000258d
#
# MessageId: DNS_ERROR_ZONE_NOT_SECONDARY
#
# MessageText:
#
#  DNS zone not secondary.
#
DNS_ERROR_ZONE_NOT_SECONDARY     = 9613

# DNS_ERROR_NEED_SECONDARY_ADDRESSES   = 0x00000258e
#
# MessageId: DNS_ERROR_NEED_SECONDARY_ADDRESSES
#
# MessageText:
#
#  Need secondary IP address.
#
DNS_ERROR_NEED_SECONDARY_ADDRESSES = 9614

# DNS_ERROR_WINS_INIT_FAILED           = 0x00000258f
#
# MessageId: DNS_ERROR_WINS_INIT_FAILED
#
# MessageText:
#
#  WINS initialization failed.
#
DNS_ERROR_WINS_INIT_FAILED       = 9615

# DNS_ERROR_NEED_WINS_SERVERS          = 0x000002590
#
# MessageId: DNS_ERROR_NEED_WINS_SERVERS
#
# MessageText:
#
#  Need WINS servers.
#
DNS_ERROR_NEED_WINS_SERVERS      = 9616

# DNS_ERROR_NBSTAT_INIT_FAILED         = 0x000002591
#
# MessageId: DNS_ERROR_NBSTAT_INIT_FAILED
#
# MessageText:
#
#  NBTSTAT initialization call failed.
#
DNS_ERROR_NBSTAT_INIT_FAILED     = 9617

# DNS_ERROR_SOA_DELETE_INVALID         = 0x000002592
#
# MessageId: DNS_ERROR_SOA_DELETE_INVALID
#
# MessageText:
#
#  Invalid delete of start of authority (SOA)
#
DNS_ERROR_SOA_DELETE_INVALID     = 9618

# DNS_ERROR_FORWARDER_ALREADY_EXISTS   = 0x000002593
#
# MessageId: DNS_ERROR_FORWARDER_ALREADY_EXISTS
#
# MessageText:
#
#  A conditional forwarding zone already exists for that name.
#
DNS_ERROR_FORWARDER_ALREADY_EXISTS = 9619

# DNS_ERROR_ZONE_REQUIRES_MASTER_IP    = 0x000002594
#
# MessageId: DNS_ERROR_ZONE_REQUIRES_MASTER_IP
#
# MessageText:
#
#  This zone must be configured with one or more master DNS server IP addresses.
#
DNS_ERROR_ZONE_REQUIRES_MASTER_IP = 9620

# DNS_ERROR_ZONE_IS_SHUTDOWN           = 0x000002595
#
# MessageId: DNS_ERROR_ZONE_IS_SHUTDOWN
#
# MessageText:
#
#  The operation cannot be performed because this zone is shutdown.
#
DNS_ERROR_ZONE_IS_SHUTDOWN       = 9621


#
#  Datafile errors
#

DNS_ERROR_DATAFILE_BASE = 9650

# DNS                                  = 0x0000025b3
#
# MessageId: DNS_ERROR_PRIMARY_REQUIRES_DATAFILE
#
# MessageText:
#
#  Primary DNS zone requires datafile.
#
DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651

# DNS                                  = 0x0000025b4
#
# MessageId: DNS_ERROR_INVALID_DATAFILE_NAME
#
# MessageText:
#
#  Invalid datafile name for DNS zone.
#
DNS_ERROR_INVALID_DATAFILE_NAME  = 9652

# DNS                                  = 0x0000025b5
#
# MessageId: DNS_ERROR_DATAFILE_OPEN_FAILURE
#
# MessageText:
#
#  Failed to open datafile for DNS zone.
#
DNS_ERROR_DATAFILE_OPEN_FAILURE  = 9653

# DNS                                  = 0x0000025b6
#
# MessageId: DNS_ERROR_FILE_WRITEBACK_FAILED
#
# MessageText:
#
#  Failed to write datafile for DNS zone.
#
DNS_ERROR_FILE_WRITEBACK_FAILED  = 9654

# DNS                                  = 0x0000025b7
#
# MessageId: DNS_ERROR_DATAFILE_PARSING
#
# MessageText:
#
#  Failure while reading datafile for DNS zone.
#
DNS_ERROR_DATAFILE_PARSING       = 9655


#
#  Database errors
#

DNS_ERROR_DATABASE_BASE = 9700

# DNS_ERROR_RECORD_DOES_NOT_EXIST      = 0x0000025e5
#
# MessageId: DNS_ERROR_RECORD_DOES_NOT_EXIST
#
# MessageText:
#
#  DNS record does not exist.
#
DNS_ERROR_RECORD_DOES_NOT_EXIST  = 9701

# DNS_ERROR_RECORD_FORMAT              = 0x0000025e6
#
# MessageId: DNS_ERROR_RECORD_FORMAT
#
# MessageText:
#
#  DNS record format error.
#
DNS_ERROR_RECORD_FORMAT          = 9702

# DNS_ERROR_NODE_CREATION_FAILED       = 0x0000025e7
#
# MessageId: DNS_ERROR_NODE_CREATION_FAILED
#
# MessageText:
#
#  Node creation failure in DNS.
#
DNS_ERROR_NODE_CREATION_FAILED   = 9703

# DNS_ERROR_UNKNOWN_RECORD_TYPE        = 0x0000025e8
#
# MessageId: DNS_ERROR_UNKNOWN_RECORD_TYPE
#
# MessageText:
#
#  Unknown DNS record type.
#
DNS_ERROR_UNKNOWN_RECORD_TYPE    = 9704

# DNS_ERROR_RECORD_TIMED_OUT           = 0x0000025e9
#
# MessageId: DNS_ERROR_RECORD_TIMED_OUT
#
# MessageText:
#
#  DNS record timed out.
#
DNS_ERROR_RECORD_TIMED_OUT       = 9705

# DNS_ERROR_NAME_NOT_IN_ZONE           = 0x0000025ea
#
# MessageId: DNS_ERROR_NAME_NOT_IN_ZONE
#
# MessageText:
#
#  Name not in DNS zone.
#
DNS_ERROR_NAME_NOT_IN_ZONE       = 9706

# DNS_ERROR_CNAME_LOOP                 = 0x0000025eb
#
# MessageId: DNS_ERROR_CNAME_LOOP
#
# MessageText:
#
#  CNAME loop detected.
#
DNS_ERROR_CNAME_LOOP             = 9707

# DNS_ERROR_NODE_IS_CNAME              = 0x0000025ec
#
# MessageId: DNS_ERROR_NODE_IS_CNAME
#
# MessageText:
#
#  Node is a CNAME DNS record.
#
DNS_ERROR_NODE_IS_CNAME          = 9708

# DNS_ERROR_CNAME_COLLISION            = 0x0000025ed
#
# MessageId: DNS_ERROR_CNAME_COLLISION
#
# MessageText:
#
#  A CNAME record already exists for given name.
#
DNS_ERROR_CNAME_COLLISION        = 9709

# DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT   = 0x0000025ee
#
# MessageId: DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT
#
# MessageText:
#
#  Record only at DNS zone root.
#
DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT = 9710

# DNS_ERROR_RECORD_ALREADY_EXISTS      = 0x0000025ef
#
# MessageId: DNS_ERROR_RECORD_ALREADY_EXISTS
#
# MessageText:
#
#  DNS record already exists.
#
DNS_ERROR_RECORD_ALREADY_EXISTS  = 9711

# DNS_ERROR_SECONDARY_DATA             = 0x0000025f0
#
# MessageId: DNS_ERROR_SECONDARY_DATA
#
# MessageText:
#
#  Secondary DNS zone data error.
#
DNS_ERROR_SECONDARY_DATA         = 9712

# DNS_ERROR_NO_CREATE_CACHE_DATA       = 0x0000025f1
#
# MessageId: DNS_ERROR_NO_CREATE_CACHE_DATA
#
# MessageText:
#
#  Could not create DNS cache data.
#
DNS_ERROR_NO_CREATE_CACHE_DATA   = 9713

# DNS_ERROR_NAME_DOES_NOT_EXIST        = 0x0000025f2
#
# MessageId: DNS_ERROR_NAME_DOES_NOT_EXIST
#
# MessageText:
#
#  DNS name does not exist.
#
DNS_ERROR_NAME_DOES_NOT_EXIST    = 9714

# DNS_WARNING_PTR_CREATE_FAILED        = 0x0000025f3
#
# MessageId: DNS_WARNING_PTR_CREATE_FAILED
#
# MessageText:
#
#  Could not create pointer (PTR) record.
#
DNS_WARNING_PTR_CREATE_FAILED    = 9715

# DNS_WARNING_DOMAIN_UNDELETED         = 0x0000025f4
#
# MessageId: DNS_WARNING_DOMAIN_UNDELETED
#
# MessageText:
#
#  DNS domain was undeleted.
#
DNS_WARNING_DOMAIN_UNDELETED     = 9716

# DNS_ERROR_DS_UNAVAILABLE             = 0x0000025f5
#
# MessageId: DNS_ERROR_DS_UNAVAILABLE
#
# MessageText:
#
#  The directory service is unavailable.
#
DNS_ERROR_DS_UNAVAILABLE         = 9717

# DNS_ERROR_DS_ZONE_ALREADY_EXISTS     = 0x0000025f6
#
# MessageId: DNS_ERROR_DS_ZONE_ALREADY_EXISTS
#
# MessageText:
#
#  DNS zone already exists in the directory service.
#
DNS_ERROR_DS_ZONE_ALREADY_EXISTS = 9718

# DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE     = 0x0000025f7
#
# MessageId: DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE
#
# MessageText:
#
#  DNS server not creating or reading the boot file for the directory service integrated DNS zone.
#
DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE = 9719


#
#  Operation errors
#

DNS_ERROR_OPERATION_BASE = 9750

# DNS_INFO_AXFR_COMPLETE               = 0x000002617
#
# MessageId: DNS_INFO_AXFR_COMPLETE
#
# MessageText:
#
#  DNS AXFR (zone transfer) complete.
#
DNS_INFO_AXFR_COMPLETE           = 9751

# DNS_ERROR_AXFR                       = 0x000002618
#
# MessageId: DNS_ERROR_AXFR
#
# MessageText:
#
#  DNS zone transfer failed.
#
DNS_ERROR_AXFR                   = 9752

# DNS_INFO_ADDED_LOCAL_WINS            = 0x000002619
#
# MessageId: DNS_INFO_ADDED_LOCAL_WINS
#
# MessageText:
#
#  Added local WINS server.
#
DNS_INFO_ADDED_LOCAL_WINS        = 9753


#
#  Secure update
#

DNS_ERROR_SECURE_BASE = 9800

# DNS_STATUS_CONTINUE_NEEDED           = 0x000002649
#
# MessageId: DNS_STATUS_CONTINUE_NEEDED
#
# MessageText:
#
#  Secure update call needs to continue update request.
#
DNS_STATUS_CONTINUE_NEEDED       = 9801


#
#  Setup errors
#

DNS_ERROR_SETUP_BASE = 9850

# DNS_ERROR_NO_TCPIP                   = 0x00000267b
#
# MessageId: DNS_ERROR_NO_TCPIP
#
# MessageText:
#
#  TCP/IP network protocol not installed.
#
DNS_ERROR_NO_TCPIP               = 9851

# DNS_ERROR_NO_DNS_SERVERS             = 0x00000267c
#
# MessageId: DNS_ERROR_NO_DNS_SERVERS
#
# MessageText:
#
#  No DNS servers configured for local system.
#
DNS_ERROR_NO_DNS_SERVERS         = 9852


#
#  Directory partition (DP) errors
#

DNS_ERROR_DP_BASE = 9900

# DNS_ERROR_DP_DOES_NOT_EXIST          = 0x0000026ad
#
# MessageId: DNS_ERROR_DP_DOES_NOT_EXIST
#
# MessageText:
#
#  The specified directory partition does not exist.
#
DNS_ERROR_DP_DOES_NOT_EXIST      = 9901

# DNS_ERROR_DP_ALREADY_EXISTS          = 0x0000026ae
#
# MessageId: DNS_ERROR_DP_ALREADY_EXISTS
#
# MessageText:
#
#  The specified directory partition already exists.
#
DNS_ERROR_DP_ALREADY_EXISTS      = 9902

# DNS_ERROR_DP_NOT_ENLISTED            = 0x0000026af
#
# MessageId: DNS_ERROR_DP_NOT_ENLISTED
#
# MessageText:
#
#  This DNS server is not enlisted in the specified directory partition.
#
DNS_ERROR_DP_NOT_ENLISTED        = 9903

# DNS_ERROR_DP_ALREADY_ENLISTED        = 0x0000026b0
#
# MessageId: DNS_ERROR_DP_ALREADY_ENLISTED
#
# MessageText:
#
#  This DNS server is already enlisted in the specified directory partition.
#
DNS_ERROR_DP_ALREADY_ENLISTED    = 9904

# DNS_ERROR_DP_NOT_AVAILABLE           = 0x0000026b1
#
# MessageId: DNS_ERROR_DP_NOT_AVAILABLE
#
# MessageText:
#
#  The directory partition is not available at this time. Please wait
#  a few minutes and try again.
#
DNS_ERROR_DP_NOT_AVAILABLE       = 9905

#
#
#             End of DNS Error Codes
#
#                  9000 to 9999
#


#
#
#               WinSock Error Codes
#
#                 10000 to 11999
#

#
# WinSock error codes are also defined in WinSock.h
# and WinSock2.h, hence the IFDEF
#

WSABASEERR = 10000
#
# MessageId: WSAEINTR
#
# MessageText:
#
#  A blocking operation was interrupted by a call to WSACancelBlockingCall.
#
WSAEINTR                         = 10004

#
# MessageId: WSAEBADF
#
# MessageText:
#
#  The file handle supplied is not valid.
#
WSAEBADF                         = 10009

#
# MessageId: WSAEACCES
#
# MessageText:
#
#  An attempt was made to access a socket in a way forbidden by its access permissions.
#
WSAEACCES                        = 10013

#
# MessageId: WSAEFAULT
#
# MessageText:
#
#  The system detected an invalid pointer address in attempting to use a pointer argument in a call.
#
WSAEFAULT                        = 10014

#
# MessageId: WSAEINVAL
#
# MessageText:
#
#  An invalid argument was supplied.
#
WSAEINVAL                        = 10022

#
# MessageId: WSAEMFILE
#
# MessageText:
#
#  Too many open sockets.
#
WSAEMFILE                        = 10024

#
# MessageId: WSAEWOULDBLOCK
#
# MessageText:
#
#  A non-blocking socket operation could not be completed immediately.
#
WSAEWOULDBLOCK                   = 10035

#
# MessageId: WSAEINPROGRESS
#
# MessageText:
#
#  A blocking operation is currently executing.
#
WSAEINPROGRESS                   = 10036

#
# MessageId: WSAEALREADY
#
# MessageText:
#
#  An operation was attempted on a non-blocking socket that already had an operation in progress.
#
WSAEALREADY                      = 10037

#
# MessageId: WSAENOTSOCK
#
# MessageText:
#
#  An operation was attempted on something that is not a socket.
#
WSAENOTSOCK                      = 10038

#
# MessageId: WSAEDESTADDRREQ
#
# MessageText:
#
#  A required address was omitted from an operation on a socket.
#
WSAEDESTADDRREQ                  = 10039

#
# MessageId: WSAEMSGSIZE
#
# MessageText:
#
#  A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.
#
WSAEMSGSIZE                      = 10040

#
# MessageId: WSAEPROTOTYPE
#
# MessageText:
#
#  A protocol was specified in the socket function call that does not support the semantics of the socket type requested.
#
WSAEPROTOTYPE                    = 10041

#
# MessageId: WSAENOPROTOOPT
#
# MessageText:
#
#  An unknown, invalid, or unsupported option or level was specified in a getsockopt or setsockopt call.
#
WSAENOPROTOOPT                   = 10042

#
# MessageId: WSAEPROTONOSUPPORT
#
# MessageText:
#
#  The requested protocol has not been configured into the system, or no implementation for it exists.
#
WSAEPROTONOSUPPORT               = 10043

#
# MessageId: WSAESOCKTNOSUPPORT
#
# MessageText:
#
#  The support for the specified socket type does not exist in this address family.
#
WSAESOCKTNOSUPPORT               = 10044

#
# MessageId: WSAEOPNOTSUPP
#
# MessageText:
#
#  The attempted operation is not supported for the type of object referenced.
#
WSAEOPNOTSUPP                    = 10045

#
# MessageId: WSAEPFNOSUPPORT
#
# MessageText:
#
#  The protocol family has not been configured into the system or no implementation for it exists.
#
WSAEPFNOSUPPORT                  = 10046

#
# MessageId: WSAEAFNOSUPPORT
#
# MessageText:
#
#  An address incompatible with the requested protocol was used.
#
WSAEAFNOSUPPORT                  = 10047

#
# MessageId: WSAEADDRINUSE
#
# MessageText:
#
#  Only one usage of each socket address (protocol/network address/port) is normally permitted.
#
WSAEADDRINUSE                    = 10048

#
# MessageId: WSAEADDRNOTAVAIL
#
# MessageText:
#
#  The requested address is not valid in its context.
#
WSAEADDRNOTAVAIL                 = 10049

#
# MessageId: WSAENETDOWN
#
# MessageText:
#
#  A socket operation encountered a dead network.
#
WSAENETDOWN                      = 10050

#
# MessageId: WSAENETUNREACH
#
# MessageText:
#
#  A socket operation was attempted to an unreachable network.
#
WSAENETUNREACH                   = 10051

#
# MessageId: WSAENETRESET
#
# MessageText:
#
#  The connection has been broken due to keep-alive activity detecting a failure while the operation was in progress.
#
WSAENETRESET                     = 10052

#
# MessageId: WSAECONNABORTED
#
# MessageText:
#
#  An established connection was aborted by the software in your host machine.
#
WSAECONNABORTED                  = 10053

#
# MessageId: WSAECONNRESET
#
# MessageText:
#
#  An existing connection was forcibly closed by the remote host.
#
WSAECONNRESET                    = 10054

#
# MessageId: WSAENOBUFS
#
# MessageText:
#
#  An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
#
WSAENOBUFS                       = 10055

#
# MessageId: WSAEISCONN
#
# MessageText:
#
#  A connect request was made on an already connected socket.
#
WSAEISCONN                       = 10056

#
# MessageId: WSAENOTCONN
#
# MessageText:
#
#  A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.
#
WSAENOTCONN                      = 10057

#
# MessageId: WSAESHUTDOWN
#
# MessageText:
#
#  A request to send or receive data was disallowed because the socket had already been shut down in that direction with a previous shutdown call.
#
WSAESHUTDOWN                     = 10058

#
# MessageId: WSAETOOMANYREFS
#
# MessageText:
#
#  Too many references to some kernel object.
#
WSAETOOMANYREFS                  = 10059

#
# MessageId: WSAETIMEDOUT
#
# MessageText:
#
#  A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
#
WSAETIMEDOUT                     = 10060

#
# MessageId: WSAECONNREFUSED
#
# MessageText:
#
#  No connection could be made because the target machine actively refused it.
#
WSAECONNREFUSED                  = 10061

#
# MessageId: WSAELOOP
#
# MessageText:
#
#  Cannot translate name.
#
WSAELOOP                         = 10062

#
# MessageId: WSAENAMETOOLONG
#
# MessageText:
#
#  Name component or name was too long.
#
WSAENAMETOOLONG                  = 10063

#
# MessageId: WSAEHOSTDOWN
#
# MessageText:
#
#  A socket operation failed because the destination host was down.
#
WSAEHOSTDOWN                     = 10064

#
# MessageId: WSAEHOSTUNREACH
#
# MessageText:
#
#  A socket operation was attempted to an unreachable host.
#
WSAEHOSTUNREACH                  = 10065

#
# MessageId: WSAENOTEMPTY
#
# MessageText:
#
#  Cannot remove a directory that is not empty.
#
WSAENOTEMPTY                     = 10066

#
# MessageId: WSAEPROCLIM
#
# MessageText:
#
#  A Windows Sockets implementation may have a limit on the number of applications that may use it simultaneously.
#
WSAEPROCLIM                      = 10067

#
# MessageId: WSAEUSERS
#
# MessageText:
#
#  Ran out of quota.
#
WSAEUSERS                        = 10068

#
# MessageId: WSAEDQUOT
#
# MessageText:
#
#  Ran out of disk quota.
#
WSAEDQUOT                        = 10069

#
# MessageId: WSAESTALE
#
# MessageText:
#
#  File handle reference is no longer available.
#
WSAESTALE                        = 10070

#
# MessageId: WSAEREMOTE
#
# MessageText:
#
#  Item is not available locally.
#
WSAEREMOTE                       = 10071

#
# MessageId: WSASYSNOTREADY
#
# MessageText:
#
#  WSAStartup cannot function at this time because the underlying system it uses to provide network services is currently unavailable.
#
WSASYSNOTREADY                   = 10091

#
# MessageId: WSAVERNOTSUPPORTED
#
# MessageText:
#
#  The Windows Sockets version requested is not supported.
#
WSAVERNOTSUPPORTED               = 10092

#
# MessageId: WSANOTINITIALISED
#
# MessageText:
#
#  Either the application has not called WSAStartup, or WSAStartup failed.
#
WSANOTINITIALISED                = 10093

#
# MessageId: WSAEDISCON
#
# MessageText:
#
#  Returned by WSARecv or WSARecvFrom to indicate the remote party has initiated a graceful shutdown sequence.
#
WSAEDISCON                       = 10101

#
# MessageId: WSAENOMORE
#
# MessageText:
#
#  No more results can be returned by WSALookupServiceNext.
#
WSAENOMORE                       = 10102

#
# MessageId: WSAECANCELLED
#
# MessageText:
#
#  A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled.
#
WSAECANCELLED                    = 10103

#
# MessageId: WSAEINVALIDPROCTABLE
#
# MessageText:
#
#  The procedure call table is invalid.
#
WSAEINVALIDPROCTABLE             = 10104

#
# MessageId: WSAEINVALIDPROVIDER
#
# MessageText:
#
#  The requested service provider is invalid.
#
WSAEINVALIDPROVIDER              = 10105

#
# MessageId: WSAEPROVIDERFAILEDINIT
#
# MessageText:
#
#  The requested service provider could not be loaded or initialized.
#
WSAEPROVIDERFAILEDINIT           = 10106

#
# MessageId: WSASYSCALLFAILURE
#
# MessageText:
#
#  A system call that should never fail has failed.
#
WSASYSCALLFAILURE                = 10107

#
# MessageId: WSASERVICE_NOT_FOUND
#
# MessageText:
#
#  No such service is known. The service cannot be found in the specified name space.
#
WSASERVICE_NOT_FOUND             = 10108

#
# MessageId: WSATYPE_NOT_FOUND
#
# MessageText:
#
#  The specified class was not found.
#
WSATYPE_NOT_FOUND                = 10109

#
# MessageId: WSA_E_NO_MORE
#
# MessageText:
#
#  No more results can be returned by WSALookupServiceNext.
#
WSA_E_NO_MORE                    = 10110

#
# MessageId: WSA_E_CANCELLED
#
# MessageText:
#
#  A call to WSALookupServiceEnd was made while this call was still processing. The call has been canceled.
#
WSA_E_CANCELLED                  = 10111

#
# MessageId: WSAEREFUSED
#
# MessageText:
#
#  A database query failed because it was actively refused.
#
WSAEREFUSED                      = 10112

#
# MessageId: WSAHOST_NOT_FOUND
#
# MessageText:
#
#  No such host is known.
#
WSAHOST_NOT_FOUND                = 11001

#
# MessageId: WSATRY_AGAIN
#
# MessageText:
#
#  This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server.
#
WSATRY_AGAIN                     = 11002

#
# MessageId: WSANO_RECOVERY
#
# MessageText:
#
#  A non-recoverable error occurred during a database lookup.
#
WSANO_RECOVERY                   = 11003

#
# MessageId: WSANO_DATA
#
# MessageText:
#
#  The requested name is valid, but no data of the requested type was found.
#
WSANO_DATA                       = 11004

#
# MessageId: WSA_QOS_RECEIVERS
#
# MessageText:
#
#  At least one reserve has arrived.
#
WSA_QOS_RECEIVERS                = 11005

#
# MessageId: WSA_QOS_SENDERS
#
# MessageText:
#
#  At least one path has arrived.
#
WSA_QOS_SENDERS                  = 11006

#
# MessageId: WSA_QOS_NO_SENDERS
#
# MessageText:
#
#  There are no senders.
#
WSA_QOS_NO_SENDERS               = 11007

#
# MessageId: WSA_QOS_NO_RECEIVERS
#
# MessageText:
#
#  There are no receivers.
#
WSA_QOS_NO_RECEIVERS             = 11008

#
# MessageId: WSA_QOS_REQUEST_CONFIRMED
#
# MessageText:
#
#  Reserve has been confirmed.
#
WSA_QOS_REQUEST_CONFIRMED        = 11009

#
# MessageId: WSA_QOS_ADMISSION_FAILURE
#
# MessageText:
#
#  Error due to lack of resources.
#
WSA_QOS_ADMISSION_FAILURE        = 11010

#
# MessageId: WSA_QOS_POLICY_FAILURE
#
# MessageText:
#
#  Rejected for administrative reasons - bad credentials.
#
WSA_QOS_POLICY_FAILURE           = 11011

#
# MessageId: WSA_QOS_BAD_STYLE
#
# MessageText:
#
#  Unknown or conflicting style.
#
WSA_QOS_BAD_STYLE                = 11012

#
# MessageId: WSA_QOS_BAD_OBJECT
#
# MessageText:
#
#  Problem with some part of the filterspec or providerspecific buffer in general.
#
WSA_QOS_BAD_OBJECT               = 11013

#
# MessageId: WSA_QOS_TRAFFIC_CTRL_ERROR
#
# MessageText:
#
#  Problem with some part of the flowspec.
#
WSA_QOS_TRAFFIC_CTRL_ERROR       = 11014

#
# MessageId: WSA_QOS_GENERIC_ERROR
#
# MessageText:
#
#  General QOS error.
#
WSA_QOS_GENERIC_ERROR            = 11015

#
# MessageId: WSA_QOS_ESERVICETYPE
#
# MessageText:
#
#  An invalid or unrecognized service type was found in the flowspec.
#
WSA_QOS_ESERVICETYPE             = 11016

#
# MessageId: WSA_QOS_EFLOWSPEC
#
# MessageText:
#
#  An invalid or inconsistent flowspec was found in the QOS structure.
#
WSA_QOS_EFLOWSPEC                = 11017

#
# MessageId: WSA_QOS_EPROVSPECBUF
#
# MessageText:
#
#  Invalid QOS provider-specific buffer.
#
WSA_QOS_EPROVSPECBUF             = 11018

#
# MessageId: WSA_QOS_EFILTERSTYLE
#
# MessageText:
#
#  An invalid QOS filter style was used.
#
WSA_QOS_EFILTERSTYLE             = 11019

#
# MessageId: WSA_QOS_EFILTERTYPE
#
# MessageText:
#
#  An invalid QOS filter type was used.
#
WSA_QOS_EFILTERTYPE              = 11020

#
# MessageId: WSA_QOS_EFILTERCOUNT
#
# MessageText:
#
#  An incorrect number of QOS FILTERSPECs were specified in the FLOWDESCRIPTOR.
#
WSA_QOS_EFILTERCOUNT             = 11021

#
# MessageId: WSA_QOS_EOBJLENGTH
#
# MessageText:
#
#  An object with an invalid ObjectLength field was specified in the QOS provider-specific buffer.
#
WSA_QOS_EOBJLENGTH               = 11022

#
# MessageId: WSA_QOS_EFLOWCOUNT
#
# MessageText:
#
#  An incorrect number of flow descriptors was specified in the QOS structure.
#
WSA_QOS_EFLOWCOUNT               = 11023

#
# MessageId: WSA_QOS_EUNKOWNPSOBJ
#
# MessageText:
#
#  An unrecognized object was found in the QOS provider-specific buffer.
#
WSA_QOS_EUNKOWNPSOBJ             = 11024

#
# MessageId: WSA_QOS_EPOLICYOBJ
#
# MessageText:
#
#  An invalid policy object was found in the QOS provider-specific buffer.
#
WSA_QOS_EPOLICYOBJ               = 11025

#
# MessageId: WSA_QOS_EFLOWDESC
#
# MessageText:
#
#  An invalid QOS flow descriptor was found in the flow descriptor list.
#
WSA_QOS_EFLOWDESC                = 11026

#
# MessageId: WSA_QOS_EPSFLOWSPEC
#
# MessageText:
#
#  An invalid or inconsistent flowspec was found in the QOS provider specific buffer.
#
WSA_QOS_EPSFLOWSPEC              = 11027

#
# MessageId: WSA_QOS_EPSFILTERSPEC
#
# MessageText:
#
#  An invalid FILTERSPEC was found in the QOS provider-specific buffer.
#
WSA_QOS_EPSFILTERSPEC            = 11028

#
# MessageId: WSA_QOS_ESDMODEOBJ
#
# MessageText:
#
#  An invalid shape discard mode object was found in the QOS provider specific buffer.
#
WSA_QOS_ESDMODEOBJ               = 11029

#
# MessageId: WSA_QOS_ESHAPERATEOBJ
#
# MessageText:
#
#  An invalid shaping rate object was found in the QOS provider-specific buffer.
#
WSA_QOS_ESHAPERATEOBJ            = 11030

#
# MessageId: WSA_QOS_RESERVED_PETYPE
#
# MessageText:
#
#  A reserved policy element was found in the QOS provider-specific buffer.
#
WSA_QOS_RESERVED_PETYPE          = 11031



#
#
#           End of WinSock Error Codes
#
#                 10000 to 11999
#



#
#
#             Side By Side Error Codes
#
#                 14000 to 14999
#

#
# MessageId: ERROR_SXS_SECTION_NOT_FOUND
#
# MessageText:
#
#  The requested section was not present in the activation context.
#
ERROR_SXS_SECTION_NOT_FOUND      = 14000

#
# MessageId: ERROR_SXS_CANT_GEN_ACTCTX
#
# MessageText:
#
#  This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
#
ERROR_SXS_CANT_GEN_ACTCTX        = 14001

#
# MessageId: ERROR_SXS_INVALID_ACTCTXDATA_FORMAT
#
# MessageText:
#
#  The application binding data format is invalid.
#
ERROR_SXS_INVALID_ACTCTXDATA_FORMAT = 14002

#
# MessageId: ERROR_SXS_ASSEMBLY_NOT_FOUND
#
# MessageText:
#
#  The referenced assembly is not installed on your system.
#
ERROR_SXS_ASSEMBLY_NOT_FOUND     = 14003

#
# MessageId: ERROR_SXS_MANIFEST_FORMAT_ERROR
#
# MessageText:
#
#  The manifest file does not begin with the required tag and format information.
#
ERROR_SXS_MANIFEST_FORMAT_ERROR  = 14004

#
# MessageId: ERROR_SXS_MANIFEST_PARSE_ERROR
#
# MessageText:
#
#  The manifest file contains one or more syntax errors.
#
ERROR_SXS_MANIFEST_PARSE_ERROR   = 14005

#
# MessageId: ERROR_SXS_ACTIVATION_CONTEXT_DISABLED
#
# MessageText:
#
#  The application attempted to activate a disabled activation context.
#
ERROR_SXS_ACTIVATION_CONTEXT_DISABLED = 14006

#
# MessageId: ERROR_SXS_KEY_NOT_FOUND
#
# MessageText:
#
#  The requested lookup key was not found in any active activation context.
#
ERROR_SXS_KEY_NOT_FOUND          = 14007

#
# MessageId: ERROR_SXS_VERSION_CONFLICT
#
# MessageText:
#
#  A component version required by the application conflicts with another component version already active.
#
ERROR_SXS_VERSION_CONFLICT       = 14008

#
# MessageId: ERROR_SXS_WRONG_SECTION_TYPE
#
# MessageText:
#
#  The type requested activation context section does not match the query API used.
#
ERROR_SXS_WRONG_SECTION_TYPE     = 14009

#
# MessageId: ERROR_SXS_THREAD_QUERIES_DISABLED
#
# MessageText:
#
#  Lack of system resources has required isolated activation to be disabled for the current thread of execution.
#
ERROR_SXS_THREAD_QUERIES_DISABLED = 14010

#
# MessageId: ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET
#
# MessageText:
#
#  An attempt to set the process default activation context failed because the process default activation context was already set.
#
ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET = 14011

#
# MessageId: ERROR_SXS_UNKNOWN_ENCODING_GROUP
#
# MessageText:
#
#  The encoding group identifier specified is not recognized.
#
ERROR_SXS_UNKNOWN_ENCODING_GROUP = 14012

#
# MessageId: ERROR_SXS_UNKNOWN_ENCODING
#
# MessageText:
#
#  The encoding requested is not recognized.
#
ERROR_SXS_UNKNOWN_ENCODING       = 14013

#
# MessageId: ERROR_SXS_INVALID_XML_NAMESPACE_URI
#
# MessageText:
#
#  The manifest contains a reference to an invalid URI.
#
ERROR_SXS_INVALID_XML_NAMESPACE_URI = 14014

#
# MessageId: ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED
#
# MessageText:
#
#  The application manifest contains a reference to a dependent assembly which is not installed
#
ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14015

#
# MessageId: ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED
#
# MessageText:
#
#  The manifest for an assembly used by the application has a reference to a dependent assembly which is not installed
#
ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14016

#
# MessageId: ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE
#
# MessageText:
#
#  The manifest contains an attribute for the assembly identity which is not valid.
#
ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE = 14017

#
# MessageId: ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE
#
# MessageText:
#
#  The manifest is missing the required default namespace specification on the assembly element.
#
ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE = 14018

#
# MessageId: ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE
#
# MessageText:
#
#  The manifest has a default namespace specified on the assembly element but its value is not "urn:schemas-microsoft-com:asm.v1".
#
ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE = 14019

#
# MessageId: ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT
#
# MessageText:
#
#  The private manifest probed has crossed reparse-point-associated path
#
ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT = 14020

#
# MessageId: ERROR_SXS_DUPLICATE_DLL_NAME
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest have files by the same name.
#
ERROR_SXS_DUPLICATE_DLL_NAME     = 14021

#
# MessageId: ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest have window classes with the same name.
#
ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME = 14022

#
# MessageId: ERROR_SXS_DUPLICATE_CLSID
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest have the same COM server CLSIDs.
#
ERROR_SXS_DUPLICATE_CLSID        = 14023

#
# MessageId: ERROR_SXS_DUPLICATE_IID
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest have proxies for the same COM interface IIDs.
#
ERROR_SXS_DUPLICATE_IID          = 14024

#
# MessageId: ERROR_SXS_DUPLICATE_TLBID
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest have the same COM type library TLBIDs.
#
ERROR_SXS_DUPLICATE_TLBID        = 14025

#
# MessageId: ERROR_SXS_DUPLICATE_PROGID
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest have the same COM ProgIDs.
#
ERROR_SXS_DUPLICATE_PROGID       = 14026

#
# MessageId: ERROR_SXS_DUPLICATE_ASSEMBLY_NAME
#
# MessageText:
#
#  Two or more components referenced directly or indirectly by the application manifest are different versions of the same component which is not permitted.
#
ERROR_SXS_DUPLICATE_ASSEMBLY_NAME = 14027

#
# MessageId: ERROR_SXS_FILE_HASH_MISMATCH
#
# MessageText:
#
#  A component#s file does not match the verification information present in the
#  component manifest.
#
ERROR_SXS_FILE_HASH_MISMATCH     = 14028

#
# MessageId: ERROR_SXS_POLICY_PARSE_ERROR
#
# MessageText:
#
#  The policy manifest contains one or more syntax errors.
#
ERROR_SXS_POLICY_PARSE_ERROR     = 14029

#
# MessageId: ERROR_SXS_XML_E_MISSINGQUOTE
#
# MessageText:
#
#  Manifest Parse Error : A string literal was expected, but no opening quote character was found.
#
ERROR_SXS_XML_E_MISSINGQUOTE     = 14030

#
# MessageId: ERROR_SXS_XML_E_COMMENTSYNTAX
#
# MessageText:
#
#  Manifest Parse Error : Incorrect syntax was used in a comment.
#
ERROR_SXS_XML_E_COMMENTSYNTAX    = 14031

#
# MessageId: ERROR_SXS_XML_E_BADSTARTNAMECHAR
#
# MessageText:
#
#  Manifest Parse Error : A name was started with an invalid character.
#
ERROR_SXS_XML_E_BADSTARTNAMECHAR = 14032

#
# MessageId: ERROR_SXS_XML_E_BADNAMECHAR
#
# MessageText:
#
#  Manifest Parse Error : A name contained an invalid character.
#
ERROR_SXS_XML_E_BADNAMECHAR      = 14033

#
# MessageId: ERROR_SXS_XML_E_BADCHARINSTRING
#
# MessageText:
#
#  Manifest Parse Error : A string literal contained an invalid character.
#
ERROR_SXS_XML_E_BADCHARINSTRING  = 14034

#
# MessageId: ERROR_SXS_XML_E_XMLDECLSYNTAX
#
# MessageText:
#
#  Manifest Parse Error : Invalid syntax for an xml declaration.
#
ERROR_SXS_XML_E_XMLDECLSYNTAX    = 14035

#
# MessageId: ERROR_SXS_XML_E_BADCHARDATA
#
# MessageText:
#
#  Manifest Parse Error : An Invalid character was found in text content.
#
ERROR_SXS_XML_E_BADCHARDATA      = 14036

#
# MessageId: ERROR_SXS_XML_E_MISSINGWHITESPACE
#
# MessageText:
#
#  Manifest Parse Error : Required white space was missing.
#
ERROR_SXS_XML_E_MISSINGWHITESPACE = 14037

#
# MessageId: ERROR_SXS_XML_E_EXPECTINGTAGEND
#
# MessageText:
#
#  Manifest Parse Error : The character #># was expected.
#
ERROR_SXS_XML_E_EXPECTINGTAGEND  = 14038

#
# MessageId: ERROR_SXS_XML_E_MISSINGSEMICOLON
#
# MessageText:
#
#  Manifest Parse Error : A semi colon character was expected.
#
ERROR_SXS_XML_E_MISSINGSEMICOLON = 14039

#
# MessageId: ERROR_SXS_XML_E_UNBALANCEDPAREN
#
# MessageText:
#
#  Manifest Parse Error : Unbalanced parentheses.
#
ERROR_SXS_XML_E_UNBALANCEDPAREN  = 14040

#
# MessageId: ERROR_SXS_XML_E_INTERNALERROR
#
# MessageText:
#
#  Manifest Parse Error : Internal error.
#
ERROR_SXS_XML_E_INTERNALERROR    = 14041

#
# MessageId: ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE
#
# MessageText:
#
#  Manifest Parse Error : Whitespace is not allowed at this location.
#
ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE = 14042

#
# MessageId: ERROR_SXS_XML_E_INCOMPLETE_ENCODING
#
# MessageText:
#
#  Manifest Parse Error : End of file reached in invalid state for current encoding.
#
ERROR_SXS_XML_E_INCOMPLETE_ENCODING = 14043

#
# MessageId: ERROR_SXS_XML_E_MISSING_PAREN
#
# MessageText:
#
#  Manifest Parse Error : Missing parenthesis.
#
ERROR_SXS_XML_E_MISSING_PAREN    = 14044

#
# MessageId: ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE
#
# MessageText:
#
#  Manifest Parse Error : A single or double closing quote character (# or ") is missing.
#
ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE = 14045

#
# MessageId: ERROR_SXS_XML_E_MULTIPLE_COLONS
#
# MessageText:
#
#  Manifest Parse Error : Multiple colons are not allowed in a name.
#
ERROR_SXS_XML_E_MULTIPLE_COLONS  = 14046

#
# MessageId: ERROR_SXS_XML_E_INVALID_DECIMAL
#
# MessageText:
#
#  Manifest Parse Error : Invalid character for decimal digit.
#
ERROR_SXS_XML_E_INVALID_DECIMAL  = 14047

#
# MessageId: ERROR_SXS_XML_E_INVALID_HEXIDECIMAL
#
# MessageText:
#
#  Manifest Parse Error : Invalid character for hexidecimal digit.
#
ERROR_SXS_XML_E_INVALID_HEXIDECIMAL = 14048

#
# MessageId: ERROR_SXS_XML_E_INVALID_UNICODE
#
# MessageText:
#
#  Manifest Parse Error : Invalid unicode character value for this platform.
#
ERROR_SXS_XML_E_INVALID_UNICODE  = 14049

#
# MessageId: ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK
#
# MessageText:
#
#  Manifest Parse Error : Expecting whitespace or ##.
#
ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK = 14050

#
# MessageId: ERROR_SXS_XML_E_UNEXPECTEDENDTAG
#
# MessageText:
#
#  Manifest Parse Error : End tag was not expected at this location.
#
ERROR_SXS_XML_E_UNEXPECTEDENDTAG = 14051

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDTAG
#
# MessageText:
#
#  Manifest Parse Error : The following tags were not closed: 1.
#
ERROR_SXS_XML_E_UNCLOSEDTAG      = 14052

#
# MessageId: ERROR_SXS_XML_E_DUPLICATEATTRIBUTE
#
# MessageText:
#
#  Manifest Parse Error : Duplicate attribute.
#
ERROR_SXS_XML_E_DUPLICATEATTRIBUTE = 14053

#
# MessageId: ERROR_SXS_XML_E_MULTIPLEROOTS
#
# MessageText:
#
#  Manifest Parse Error : Only one top level element is allowed in an XML document.
#
ERROR_SXS_XML_E_MULTIPLEROOTS    = 14054

#
# MessageId: ERROR_SXS_XML_E_INVALIDATROOTLEVEL
#
# MessageText:
#
#  Manifest Parse Error : Invalid at the top level of the document.
#
ERROR_SXS_XML_E_INVALIDATROOTLEVEL = 14055

#
# MessageId: ERROR_SXS_XML_E_BADXMLDECL
#
# MessageText:
#
#  Manifest Parse Error : Invalid xml declaration.
#
ERROR_SXS_XML_E_BADXMLDECL       = 14056

#
# MessageId: ERROR_SXS_XML_E_MISSINGROOT
#
# MessageText:
#
#  Manifest Parse Error : XML document must have a top level element.
#
ERROR_SXS_XML_E_MISSINGROOT      = 14057

#
# MessageId: ERROR_SXS_XML_E_UNEXPECTEDEOF
#
# MessageText:
#
#  Manifest Parse Error : Unexpected end of file.
#
ERROR_SXS_XML_E_UNEXPECTEDEOF    = 14058

#
# MessageId: ERROR_SXS_XML_E_BADPEREFINSUBSET
#
# MessageText:
#
#  Manifest Parse Error : Parameter entities cannot be used inside markup declarations in an internal subset.
#
ERROR_SXS_XML_E_BADPEREFINSUBSET = 14059

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDSTARTTAG
#
# MessageText:
#
#  Manifest Parse Error : Element was not closed.
#
ERROR_SXS_XML_E_UNCLOSEDSTARTTAG = 14060

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDENDTAG
#
# MessageText:
#
#  Manifest Parse Error : End element was missing the character #>#.
#
ERROR_SXS_XML_E_UNCLOSEDENDTAG   = 14061

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDSTRING
#
# MessageText:
#
#  Manifest Parse Error : A string literal was not closed.
#
ERROR_SXS_XML_E_UNCLOSEDSTRING   = 14062

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDCOMMENT
#
# MessageText:
#
#  Manifest Parse Error : A comment was not closed.
#
ERROR_SXS_XML_E_UNCLOSEDCOMMENT  = 14063

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDDECL
#
# MessageText:
#
#  Manifest Parse Error : A declaration was not closed.
#
ERROR_SXS_XML_E_UNCLOSEDDECL     = 14064

#
# MessageId: ERROR_SXS_XML_E_UNCLOSEDCDATA
#
# MessageText:
#
#  Manifest Parse Error : A CDATA section was not closed.
#
ERROR_SXS_XML_E_UNCLOSEDCDATA    = 14065

#
# MessageId: ERROR_SXS_XML_E_RESERVEDNAMESPACE
#
# MessageText:
#
#  Manifest Parse Error : The namespace prefix is not allowed to start with the reserved string "xml".
#
ERROR_SXS_XML_E_RESERVEDNAMESPACE = 14066

#
# MessageId: ERROR_SXS_XML_E_INVALIDENCODING
#
# MessageText:
#
#  Manifest Parse Error : System does not support the specified encoding.
#
ERROR_SXS_XML_E_INVALIDENCODING  = 14067

#
# MessageId: ERROR_SXS_XML_E_INVALIDSWITCH
#
# MessageText:
#
#  Manifest Parse Error : Switch from current encoding to specified encoding not supported.
#
ERROR_SXS_XML_E_INVALIDSWITCH    = 14068

#
# MessageId: ERROR_SXS_XML_E_BADXMLCASE
#
# MessageText:
#
#  Manifest Parse Error : The name #xml# is reserved and must be lower case.
#
ERROR_SXS_XML_E_BADXMLCASE       = 14069

#
# MessageId: ERROR_SXS_XML_E_INVALID_STANDALONE
#
# MessageText:
#
#  Manifest Parse Error : The standalone attribute must have the value #yes# or #no#.
#
ERROR_SXS_XML_E_INVALID_STANDALONE = 14070

#
# MessageId: ERROR_SXS_XML_E_UNEXPECTED_STANDALONE
#
# MessageText:
#
#  Manifest Parse Error : The standalone attribute cannot be used in external entities.
#
ERROR_SXS_XML_E_UNEXPECTED_STANDALONE = 14071

#
# MessageId: ERROR_SXS_XML_E_INVALID_VERSION
#
# MessageText:
#
#  Manifest Parse Error : Invalid version number.
#
ERROR_SXS_XML_E_INVALID_VERSION  = 14072

#
# MessageId: ERROR_SXS_XML_E_MISSINGEQUALS
#
# MessageText:
#
#  Manifest Parse Error : Missing equals sign between attribute and attribute value.
#
ERROR_SXS_XML_E_MISSINGEQUALS    = 14073

#
# MessageId: ERROR_SXS_PROTECTION_RECOVERY_FAILED
#
# MessageText:
#
#  Assembly Protection Error : Unable to recover the specified assembly.
#
ERROR_SXS_PROTECTION_RECOVERY_FAILED = 14074

#
# MessageId: ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT
#
# MessageText:
#
#  Assembly Protection Error : The public key for an assembly was too short to be allowed.
#
ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT = 14075

#
# MessageId: ERROR_SXS_PROTECTION_CATALOG_NOT_VALID
#
# MessageText:
#
#  Assembly Protection Error : The catalog for an assembly is not valid, or does not match the assembly#s manifest.
#
ERROR_SXS_PROTECTION_CATALOG_NOT_VALID = 14076

#
# MessageId: ERROR_SXS_UNTRANSLATABLE_HRESULT
#
# MessageText:
#
#  An HRESULT could not be translated to a corresponding Win32 error code.
#
ERROR_SXS_UNTRANSLATABLE_HRESULT = 14077

#
# MessageId: ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING
#
# MessageText:
#
#  Assembly Protection Error : The catalog for an assembly is missing.
#
ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING = 14078

#
# MessageId: ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE
#
# MessageText:
#
#  The supplied assembly identity is missing one or more attributes which must be present in this context.
#
ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE = 14079

#
# MessageId: ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME
#
# MessageText:
#
#  The supplied assembly identity has one or more attribute names that contain characters not permitted in XML names.
#
ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME = 14080


#
#
#           End of Side By Side Error Codes
#
#                 14000 to 14999
#



#
#
#           Start of IPSec Error codes
#
#                 13000 to 13999
#


#
# MessageId: ERROR_IPSEC_QM_POLICY_EXISTS
#
# MessageText:
#
#  The specified quick mode policy already exists.
#
ERROR_IPSEC_QM_POLICY_EXISTS     = 13000

#
# MessageId: ERROR_IPSEC_QM_POLICY_NOT_FOUND
#
# MessageText:
#
#  The specified quick mode policy was not found.
#
ERROR_IPSEC_QM_POLICY_NOT_FOUND  = 13001

#
# MessageId: ERROR_IPSEC_QM_POLICY_IN_USE
#
# MessageText:
#
#  The specified quick mode policy is being used.
#
ERROR_IPSEC_QM_POLICY_IN_USE     = 13002

#
# MessageId: ERROR_IPSEC_MM_POLICY_EXISTS
#
# MessageText:
#
#  The specified main mode policy already exists.
#
ERROR_IPSEC_MM_POLICY_EXISTS     = 13003

#
# MessageId: ERROR_IPSEC_MM_POLICY_NOT_FOUND
#
# MessageText:
#
#  The specified main mode policy was not found
#
ERROR_IPSEC_MM_POLICY_NOT_FOUND  = 13004

#
# MessageId: ERROR_IPSEC_MM_POLICY_IN_USE
#
# MessageText:
#
#  The specified main mode policy is being used.
#
ERROR_IPSEC_MM_POLICY_IN_USE     = 13005

#
# MessageId: ERROR_IPSEC_MM_FILTER_EXISTS
#
# MessageText:
#
#  The specified main mode filter already exists.
#
ERROR_IPSEC_MM_FILTER_EXISTS     = 13006

#
# MessageId: ERROR_IPSEC_MM_FILTER_NOT_FOUND
#
# MessageText:
#
#  The specified main mode filter was not found.
#
ERROR_IPSEC_MM_FILTER_NOT_FOUND  = 13007

#
# MessageId: ERROR_IPSEC_TRANSPORT_FILTER_EXISTS
#
# MessageText:
#
#  The specified transport mode filter already exists.
#
ERROR_IPSEC_TRANSPORT_FILTER_EXISTS = 13008

#
# MessageId: ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND
#
# MessageText:
#
#  The specified transport mode filter does not exist.
#
ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND = 13009

#
# MessageId: ERROR_IPSEC_MM_AUTH_EXISTS
#
# MessageText:
#
#  The specified main mode authentication list exists.
#
ERROR_IPSEC_MM_AUTH_EXISTS       = 13010

#
# MessageId: ERROR_IPSEC_MM_AUTH_NOT_FOUND
#
# MessageText:
#
#  The specified main mode authentication list was not found.
#
ERROR_IPSEC_MM_AUTH_NOT_FOUND    = 13011

#
# MessageId: ERROR_IPSEC_MM_AUTH_IN_USE
#
# MessageText:
#
#  The specified quick mode policy is being used.
#
ERROR_IPSEC_MM_AUTH_IN_USE       = 13012

#
# MessageId: ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND
#
# MessageText:
#
#  The specified main mode policy was not found.
#
ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND = 13013

#
# MessageId: ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND
#
# MessageText:
#
#  The specified quick mode policy was not found
#
ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND = 13014

#
# MessageId: ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND
#
# MessageText:
#
#  The manifest file contains one or more syntax errors.
#
ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND = 13015

#
# MessageId: ERROR_IPSEC_TUNNEL_FILTER_EXISTS
#
# MessageText:
#
#  The application attempted to activate a disabled activation context.
#
ERROR_IPSEC_TUNNEL_FILTER_EXISTS = 13016

#
# MessageId: ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND
#
# MessageText:
#
#  The requested lookup key was not found in any active activation context.
#
ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND = 13017

#
# MessageId: ERROR_IPSEC_MM_FILTER_PENDING_DELETION
#
# MessageText:
#
#  The Main Mode filter is pending deletion.
#
ERROR_IPSEC_MM_FILTER_PENDING_DELETION = 13018

#
# MessageId: ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION
#
# MessageText:
#
#  The transport filter is pending deletion.
#
ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION = 13019

#
# MessageId: ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION
#
# MessageText:
#
#  The tunnel filter is pending deletion.
#
ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION = 13020

#
# MessageId: ERROR_IPSEC_MM_POLICY_PENDING_DELETION
#
# MessageText:
#
#  The Main Mode policy is pending deletion.
#
ERROR_IPSEC_MM_POLICY_PENDING_DELETION = 13021

#
# MessageId: ERROR_IPSEC_MM_AUTH_PENDING_DELETION
#
# MessageText:
#
#  The Main Mode authentication bundle is pending deletion.
#
ERROR_IPSEC_MM_AUTH_PENDING_DELETION = 13022

#
# MessageId: ERROR_IPSEC_QM_POLICY_PENDING_DELETION
#
# MessageText:
#
#  The Quick Mode policy is pending deletion.
#
ERROR_IPSEC_QM_POLICY_PENDING_DELETION = 13023

#
# MessageId: WARNING_IPSEC_MM_POLICY_PRUNED
#
# MessageText:
#
#  The Main Mode policy was successfully added, but some of the requested offers are not supported.
#
WARNING_IPSEC_MM_POLICY_PRUNED   = 13024

#
# MessageId: WARNING_IPSEC_QM_POLICY_PRUNED
#
# MessageText:
#
#  The Quick Mode policy was successfully added, but some of the requested offers are not supported.
#
WARNING_IPSEC_QM_POLICY_PRUNED   = 13025

#
# MessageId: ERROR_IPSEC_IKE_NEG_STATUS_BEGIN
#
# MessageText:
#
#  ERROR_IPSEC_IKE_NEG_STATUS_BEGIN
#
ERROR_IPSEC_IKE_NEG_STATUS_BEGIN = 13800

#
# MessageId: ERROR_IPSEC_IKE_AUTH_FAIL
#
# MessageText:
#
#  IKE authentication credentials are unacceptable
#
ERROR_IPSEC_IKE_AUTH_FAIL        = 13801

#
# MessageId: ERROR_IPSEC_IKE_ATTRIB_FAIL
#
# MessageText:
#
#  IKE security attributes are unacceptable
#
ERROR_IPSEC_IKE_ATTRIB_FAIL      = 13802

#
# MessageId: ERROR_IPSEC_IKE_NEGOTIATION_PENDING
#
# MessageText:
#
#  IKE Negotiation in progress
#
ERROR_IPSEC_IKE_NEGOTIATION_PENDING = 13803

#
# MessageId: ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR
#
# MessageText:
#
#  General processing error
#
ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR = 13804

#
# MessageId: ERROR_IPSEC_IKE_TIMED_OUT
#
# MessageText:
#
#  Negotiation timed out
#
ERROR_IPSEC_IKE_TIMED_OUT        = 13805

#
# MessageId: ERROR_IPSEC_IKE_NO_CERT
#
# MessageText:
#
#  IKE failed to find valid machine certificate
#
ERROR_IPSEC_IKE_NO_CERT          = 13806

#
# MessageId: ERROR_IPSEC_IKE_SA_DELETED
#
# MessageText:
#
#  IKE SA deleted by peer before establishment completed
#
ERROR_IPSEC_IKE_SA_DELETED       = 13807

#
# MessageId: ERROR_IPSEC_IKE_SA_REAPED
#
# MessageText:
#
#  IKE SA deleted before establishment completed
#
ERROR_IPSEC_IKE_SA_REAPED        = 13808

#
# MessageId: ERROR_IPSEC_IKE_MM_ACQUIRE_DROP
#
# MessageText:
#
#  Negotiation request sat in Queue too long
#
ERROR_IPSEC_IKE_MM_ACQUIRE_DROP  = 13809

#
# MessageId: ERROR_IPSEC_IKE_QM_ACQUIRE_DROP
#
# MessageText:
#
#  Negotiation request sat in Queue too long
#
ERROR_IPSEC_IKE_QM_ACQUIRE_DROP  = 13810

#
# MessageId: ERROR_IPSEC_IKE_QUEUE_DROP_MM
#
# MessageText:
#
#  Negotiation request sat in Queue too long
#
ERROR_IPSEC_IKE_QUEUE_DROP_MM    = 13811

#
# MessageId: ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM
#
# MessageText:
#
#  Negotiation request sat in Queue too long
#
ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM = 13812

#
# MessageId: ERROR_IPSEC_IKE_DROP_NO_RESPONSE
#
# MessageText:
#
#  No response from peer
#
ERROR_IPSEC_IKE_DROP_NO_RESPONSE = 13813

#
# MessageId: ERROR_IPSEC_IKE_MM_DELAY_DROP
#
# MessageText:
#
#  Negotiation took too long
#
ERROR_IPSEC_IKE_MM_DELAY_DROP    = 13814

#
# MessageId: ERROR_IPSEC_IKE_QM_DELAY_DROP
#
# MessageText:
#
#  Negotiation took too long
#
ERROR_IPSEC_IKE_QM_DELAY_DROP    = 13815

#
# MessageId: ERROR_IPSEC_IKE_ERROR
#
# MessageText:
#
#  Unknown error occurred
#
ERROR_IPSEC_IKE_ERROR            = 13816

#
# MessageId: ERROR_IPSEC_IKE_CRL_FAILED
#
# MessageText:
#
#  Certificate Revocation Check failed
#
ERROR_IPSEC_IKE_CRL_FAILED       = 13817

#
# MessageId: ERROR_IPSEC_IKE_INVALID_KEY_USAGE
#
# MessageText:
#
#  Invalid certificate key usage
#
ERROR_IPSEC_IKE_INVALID_KEY_USAGE = 13818

#
# MessageId: ERROR_IPSEC_IKE_INVALID_CERT_TYPE
#
# MessageText:
#
#  Invalid certificate type
#
ERROR_IPSEC_IKE_INVALID_CERT_TYPE = 13819

#
# MessageId: ERROR_IPSEC_IKE_NO_PRIVATE_KEY
#
# MessageText:
#
#  No private key associated with machine certificate
#
ERROR_IPSEC_IKE_NO_PRIVATE_KEY   = 13820

#
# MessageId: ERROR_IPSEC_IKE_DH_FAIL
#
# MessageText:
#
#  Failure in Diffie-Helman computation
#
ERROR_IPSEC_IKE_DH_FAIL          = 13822

#
# MessageId: ERROR_IPSEC_IKE_INVALID_HEADER
#
# MessageText:
#
#  Invalid header
#
ERROR_IPSEC_IKE_INVALID_HEADER   = 13824

#
# MessageId: ERROR_IPSEC_IKE_NO_POLICY
#
# MessageText:
#
#  No policy configured
#
ERROR_IPSEC_IKE_NO_POLICY        = 13825

#
# MessageId: ERROR_IPSEC_IKE_INVALID_SIGNATURE
#
# MessageText:
#
#  Failed to verify signature
#
ERROR_IPSEC_IKE_INVALID_SIGNATURE = 13826

#
# MessageId: ERROR_IPSEC_IKE_KERBEROS_ERROR
#
# MessageText:
#
#  Failed to authenticate using kerberos
#
ERROR_IPSEC_IKE_KERBEROS_ERROR   = 13827

#
# MessageId: ERROR_IPSEC_IKE_NO_PUBLIC_KEY
#
# MessageText:
#
#  Peer#s certificate did not have a public key
#
ERROR_IPSEC_IKE_NO_PUBLIC_KEY    = 13828

# These must stay as a unit.
#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR
#
# MessageText:
#
#  Error processing error payload
#
ERROR_IPSEC_IKE_PROCESS_ERR      = 13829

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_SA
#
# MessageText:
#
#  Error processing SA payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_SA   = 13830

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_PROP
#
# MessageText:
#
#  Error processing Proposal payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_PROP = 13831

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_TRANS
#
# MessageText:
#
#  Error processing Transform payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_TRANS = 13832

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_KE
#
# MessageText:
#
#  Error processing KE payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_KE   = 13833

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_ID
#
# MessageText:
#
#  Error processing ID payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_ID   = 13834

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_CERT
#
# MessageText:
#
#  Error processing Cert payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_CERT = 13835

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ
#
# MessageText:
#
#  Error processing Certificate Request payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ = 13836

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_HASH
#
# MessageText:
#
#  Error processing Hash payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_HASH = 13837

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_SIG
#
# MessageText:
#
#  Error processing Signature payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_SIG  = 13838

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_NONCE
#
# MessageText:
#
#  Error processing Nonce payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_NONCE = 13839

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY
#
# MessageText:
#
#  Error processing Notify payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY = 13840

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_DELETE
#
# MessageText:
#
#  Error processing Delete Payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_DELETE = 13841

#
# MessageId: ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR
#
# MessageText:
#
#  Error processing VendorId payload
#
ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR = 13842

#
# MessageId: ERROR_IPSEC_IKE_INVALID_PAYLOAD
#
# MessageText:
#
#  Invalid payload received
#
ERROR_IPSEC_IKE_INVALID_PAYLOAD  = 13843

#
# MessageId: ERROR_IPSEC_IKE_LOAD_SOFT_SA
#
# MessageText:
#
#  Soft SA loaded
#
ERROR_IPSEC_IKE_LOAD_SOFT_SA     = 13844

#
# MessageId: ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN
#
# MessageText:
#
#  Soft SA torn down
#
ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN = 13845

#
# MessageId: ERROR_IPSEC_IKE_INVALID_COOKIE
#
# MessageText:
#
#  Invalid cookie received.
#
ERROR_IPSEC_IKE_INVALID_COOKIE   = 13846

#
# MessageId: ERROR_IPSEC_IKE_NO_PEER_CERT
#
# MessageText:
#
#  Peer failed to send valid machine certificate
#
ERROR_IPSEC_IKE_NO_PEER_CERT     = 13847

#
# MessageId: ERROR_IPSEC_IKE_PEER_CRL_FAILED
#
# MessageText:
#
#  Certification Revocation check of peer#s certificate failed
#
ERROR_IPSEC_IKE_PEER_CRL_FAILED  = 13848

#
# MessageId: ERROR_IPSEC_IKE_POLICY_CHANGE
#
# MessageText:
#
#  New policy invalidated SAs formed with old policy
#
ERROR_IPSEC_IKE_POLICY_CHANGE    = 13849

#
# MessageId: ERROR_IPSEC_IKE_NO_MM_POLICY
#
# MessageText:
#
#  There is no available Main Mode IKE policy.
#
ERROR_IPSEC_IKE_NO_MM_POLICY     = 13850

#
# MessageId: ERROR_IPSEC_IKE_NOTCBPRIV
#
# MessageText:
#
#  Failed to enabled TCB privilege.
#
ERROR_IPSEC_IKE_NOTCBPRIV        = 13851

#
# MessageId: ERROR_IPSEC_IKE_SECLOADFAIL
#
# MessageText:
#
#  Failed to load SECURITY.DLL.
#
ERROR_IPSEC_IKE_SECLOADFAIL      = 13852

#
# MessageId: ERROR_IPSEC_IKE_FAILSSPINIT
#
# MessageText:
#
#  Failed to obtain security function table dispatch address from SSPI.
#
ERROR_IPSEC_IKE_FAILSSPINIT      = 13853

#
# MessageId: ERROR_IPSEC_IKE_FAILQUERYSSP
#
# MessageText:
#
#  Failed to query Kerberos package to obtain max token size.
#
ERROR_IPSEC_IKE_FAILQUERYSSP     = 13854

#
# MessageId: ERROR_IPSEC_IKE_SRVACQFAIL
#
# MessageText:
#
#  Failed to obtain Kerberos server credentials for ISAKMP/ERROR_IPSEC_IKE service.  Kerberos authentication will not function.  The most likely reason for this is lack of domain membership.  This is normal if your computer is a member of a workgroup.
#
ERROR_IPSEC_IKE_SRVACQFAIL       = 13855

#
# MessageId: ERROR_IPSEC_IKE_SRVQUERYCRED
#
# MessageText:
#
#  Failed to determine SSPI principal name for ISAKMP/ERROR_IPSEC_IKE service (QueryCredentialsAttributes).
#
ERROR_IPSEC_IKE_SRVQUERYCRED     = 13856

#
# MessageId: ERROR_IPSEC_IKE_GETSPIFAIL
#
# MessageText:
#
#  Failed to obtain new SPI for the inbound SA from Ipsec driver.  The most common cause for this is that the driver does not have the correct filter.  Check your policy to verify the filters.
#
ERROR_IPSEC_IKE_GETSPIFAIL       = 13857

#
# MessageId: ERROR_IPSEC_IKE_INVALID_FILTER
#
# MessageText:
#
#  Given filter is invalid
#
ERROR_IPSEC_IKE_INVALID_FILTER   = 13858

#
# MessageId: ERROR_IPSEC_IKE_OUT_OF_MEMORY
#
# MessageText:
#
#  Memory allocation failed.
#
ERROR_IPSEC_IKE_OUT_OF_MEMORY    = 13859

#
# MessageId: ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED
#
# MessageText:
#
#  Failed to add Security Association to IPSec Driver.  The most common cause for this is if the IKE negotiation took too long to complete.  If the problem persists, reduce the load on the faulting machine.
#
ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED = 13860

#
# MessageId: ERROR_IPSEC_IKE_INVALID_POLICY
#
# MessageText:
#
#  Invalid policy
#
ERROR_IPSEC_IKE_INVALID_POLICY   = 13861

#
# MessageId: ERROR_IPSEC_IKE_UNKNOWN_DOI
#
# MessageText:
#
#  Invalid DOI
#
ERROR_IPSEC_IKE_UNKNOWN_DOI      = 13862

#
# MessageId: ERROR_IPSEC_IKE_INVALID_SITUATION
#
# MessageText:
#
#  Invalid situation
#
ERROR_IPSEC_IKE_INVALID_SITUATION = 13863

#
# MessageId: ERROR_IPSEC_IKE_DH_FAILURE
#
# MessageText:
#
#  Diffie-Hellman failure
#
ERROR_IPSEC_IKE_DH_FAILURE       = 13864

#
# MessageId: ERROR_IPSEC_IKE_INVALID_GROUP
#
# MessageText:
#
#  Invalid Diffie-Hellman group
#
ERROR_IPSEC_IKE_INVALID_GROUP    = 13865

#
# MessageId: ERROR_IPSEC_IKE_ENCRYPT
#
# MessageText:
#
#  Error encrypting payload
#
ERROR_IPSEC_IKE_ENCRYPT          = 13866

#
# MessageId: ERROR_IPSEC_IKE_DECRYPT
#
# MessageText:
#
#  Error decrypting payload
#
ERROR_IPSEC_IKE_DECRYPT          = 13867

#
# MessageId: ERROR_IPSEC_IKE_POLICY_MATCH
#
# MessageText:
#
#  Policy match error
#
ERROR_IPSEC_IKE_POLICY_MATCH     = 13868

#
# MessageId: ERROR_IPSEC_IKE_UNSUPPORTED_ID
#
# MessageText:
#
#  Unsupported ID
#
ERROR_IPSEC_IKE_UNSUPPORTED_ID   = 13869

#
# MessageId: ERROR_IPSEC_IKE_INVALID_HASH
#
# MessageText:
#
#  Hash verification failed
#
ERROR_IPSEC_IKE_INVALID_HASH     = 13870

#
# MessageId: ERROR_IPSEC_IKE_INVALID_HASH_ALG
#
# MessageText:
#
#  Invalid hash algorithm
#
ERROR_IPSEC_IKE_INVALID_HASH_ALG = 13871

#
# MessageId: ERROR_IPSEC_IKE_INVALID_HASH_SIZE
#
# MessageText:
#
#  Invalid hash size
#
ERROR_IPSEC_IKE_INVALID_HASH_SIZE = 13872

#
# MessageId: ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG
#
# MessageText:
#
#  Invalid encryption algorithm
#
ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG = 13873

#
# MessageId: ERROR_IPSEC_IKE_INVALID_AUTH_ALG
#
# MessageText:
#
#  Invalid authentication algorithm
#
ERROR_IPSEC_IKE_INVALID_AUTH_ALG = 13874

#
# MessageId: ERROR_IPSEC_IKE_INVALID_SIG
#
# MessageText:
#
#  Invalid certificate signature
#
ERROR_IPSEC_IKE_INVALID_SIG      = 13875

#
# MessageId: ERROR_IPSEC_IKE_LOAD_FAILED
#
# MessageText:
#
#  Load failed
#
ERROR_IPSEC_IKE_LOAD_FAILED      = 13876

#
# MessageId: ERROR_IPSEC_IKE_RPC_DELETE
#
# MessageText:
#
#  Deleted via RPC call
#
ERROR_IPSEC_IKE_RPC_DELETE       = 13877

#
# MessageId: ERROR_IPSEC_IKE_BENIGN_REINIT
#
# MessageText:
#
#  Temporary state created to perform reinit. This is not a real failure.
#
ERROR_IPSEC_IKE_BENIGN_REINIT    = 13878

#
# MessageId: ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY
#
# MessageText:
#
#  The lifetime value received in the Responder Lifetime Notify is below the Windows 2000 configured minimum value.  Please fix the policy on the peer machine.
#
ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY = 13879

#
# MessageId: ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN
#
# MessageText:
#
#  Key length in certificate is too small for configured security requirements.
#
ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881

#
# MessageId: ERROR_IPSEC_IKE_MM_LIMIT
#
# MessageText:
#
#  Max number of established MM SAs to peer exceeded.
#
ERROR_IPSEC_IKE_MM_LIMIT         = 13882

#
# MessageId: ERROR_IPSEC_IKE_NEGOTIATION_DISABLED
#
# MessageText:
#
#  IKE received a policy that disables negotiation.
#
ERROR_IPSEC_IKE_NEGOTIATION_DISABLED = 13883

#
# MessageId: ERROR_IPSEC_IKE_NEG_STATUS_END
#
# MessageText:
#
#  ERROR_IPSEC_IKE_NEG_STATUS_END
#
ERROR_IPSEC_IKE_NEG_STATUS_END   = 13884

#
#
#     COM Error Codes
#
#

#
# The return value of COM functions and methods is an HRESULT.
# This is not a handle to anything, but is merely a 32-bit value
# with several fields encoded in the value.  The parts of an
# HRESULT are shown below.
#
# Many of the macros and functions below were orginally defined to
# operate on SCODEs.  SCODEs are no longer used.  The macros are
# still present for compatibility and easy porting of Win16 code.
# Newly written code should use the HRESULT macros and functions.
#

#
#  HRESULTs are 32 bit values laid out as follows:
#
#   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
#   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
#  +-+-+-+-+-+---------------------+-------------------------------+
#  |S|R|C|N|r|    Facility         |               Code            |
#  +-+-+-+-+-+---------------------+-------------------------------+
#
#  where
#
#      S - Severity - indicates success/fail
#
#          0 - Success
#          1 - Fail (COERROR)
#
#      R - reserved portion of the facility code, corresponds to NT#s
#              second severity bit.
#
#      C - reserved portion of the facility code, corresponds to NT#s
#              C field.
#
#      N - reserved portion of the facility code. Used to indicate a
#              mapped NT status value.
#
#      r - reserved portion of the facility code. Reserved for internal
#              use. Used to indicate HRESULT values that are not status
#              values, but are instead message ids for display strings.
#
#      Facility - is the facility code
#
#      Code - is the facility#s status code
#

#
# Severity values
#

SEVERITY_SUCCESS  = 0
SEVERITY_ERROR    = 1


#
# Generic test for success on any status value (non-negative numbers
# indicate success).
#


#
# and the inverse
#



#
# Generic test for error on any status value.
#


#
# Return the code
#



# ---------------------- HRESULT value definitions -----------------
#
# HRESULT definitions
#

NOERROR = 0

#
# Error definitions follow
#

#
# Codes= 0x04000-0x40ff are reserved for OLE
#
#
# Error codes
#
#
# MessageId: E_UNEXPECTED
#
# MessageText:
#
#  Catastrophic failure
#
E_UNEXPECTED                     = 0x08000FFFF


#
# MessageId: E_NOTIMPL
#
# MessageText:
#
#  Not implemented
#
E_NOTIMPL                        = 0x080004001

#
# MessageId: E_OUTOFMEMORY
#
# MessageText:
#
#  Ran out of memory
#
E_OUTOFMEMORY                    = 0x08007000E

#
# MessageId: E_INVALIDARG
#
# MessageText:
#
#  One or more arguments are invalid
#
E_INVALIDARG                     = 0x080070057

#
# MessageId: E_NOINTERFACE
#
# MessageText:
#
#  No such interface supported
#
E_NOINTERFACE                    = 0x080004002

#
# MessageId: E_POINTER
#
# MessageText:
#
#  Invalid pointer
#
E_POINTER                        = 0x080004003

#
# MessageId: E_HANDLE
#
# MessageText:
#
#  Invalid handle
#
E_HANDLE                         = 0x080070006

#
# MessageId: E_ABORT
#
# MessageText:
#
#  Operation aborted
#
E_ABORT                          = 0x080004004

#
# MessageId: E_FAIL
#
# MessageText:
#
#  Unspecified error
#
E_FAIL                           = 0x080004005

#
# MessageId: E_ACCESSDENIED
#
# MessageText:
#
#  General access denied error
#
E_ACCESSDENIED                   = 0x080070005

#
# MessageId: E_PENDING
#
# MessageText:
#
#  The data necessary to complete this operation is not yet available.
#
E_PENDING                        = 0x08000000A

#
# MessageId: CO_E_INIT_TLS
#
# MessageText:
#
#  Thread local storage failure
#
CO_E_INIT_TLS                    = 0x080004006

#
# MessageId: CO_E_INIT_SHARED_ALLOCATOR
#
# MessageText:
#
#  Get shared memory allocator failure
#
CO_E_INIT_SHARED_ALLOCATOR       = 0x080004007

#
# MessageId: CO_E_INIT_MEMORY_ALLOCATOR
#
# MessageText:
#
#  Get memory allocator failure
#
CO_E_INIT_MEMORY_ALLOCATOR       = 0x080004008

#
# MessageId: CO_E_INIT_CLASS_CACHE
#
# MessageText:
#
#  Unable to initialize class cache
#
CO_E_INIT_CLASS_CACHE            = 0x080004009

#
# MessageId: CO_E_INIT_RPC_CHANNEL
#
# MessageText:
#
#  Unable to initialize RPC services
#
CO_E_INIT_RPC_CHANNEL            = 0x08000400A

#
# MessageId: CO_E_INIT_TLS_SET_CHANNEL_CONTROL
#
# MessageText:
#
#  Cannot set thread local storage channel control
#
CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x08000400B

#
# MessageId: CO_E_INIT_TLS_CHANNEL_CONTROL
#
# MessageText:
#
#  Could not allocate thread local storage channel control
#
CO_E_INIT_TLS_CHANNEL_CONTROL    = 0x08000400C

#
# MessageId: CO_E_INIT_UNACCEPTED_USER_ALLOCATOR
#
# MessageText:
#
#  The user supplied memory allocator is unacceptable
#
CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x08000400D

#
# MessageId: CO_E_INIT_SCM_MUTEX_EXISTS
#
# MessageText:
#
#  The OLE service mutex already exists
#
CO_E_INIT_SCM_MUTEX_EXISTS       = 0x08000400E

#
# MessageId: CO_E_INIT_SCM_FILE_MAPPING_EXISTS
#
# MessageText:
#
#  The OLE service file mapping already exists
#
CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x08000400F

#
# MessageId: CO_E_INIT_SCM_MAP_VIEW_OF_FILE
#
# MessageText:
#
#  Unable to map view of file for OLE service
#
CO_E_INIT_SCM_MAP_VIEW_OF_FILE   = 0x080004010

#
# MessageId: CO_E_INIT_SCM_EXEC_FAILURE
#
# MessageText:
#
#  Failure attempting to launch OLE service
#
CO_E_INIT_SCM_EXEC_FAILURE       = 0x080004011

#
# MessageId: CO_E_INIT_ONLY_SINGLE_THREADED
#
# MessageText:
#
#  There was an attempt to call CoInitialize a second time while single threaded
#
CO_E_INIT_ONLY_SINGLE_THREADED   = 0x080004012

#
# MessageId: CO_E_CANT_REMOTE
#
# MessageText:
#
#  A Remote activation was necessary but was not allowed
#
CO_E_CANT_REMOTE                 = 0x080004013

#
# MessageId: CO_E_BAD_SERVER_NAME
#
# MessageText:
#
#  A Remote activation was necessary but the server name provided was invalid
#
CO_E_BAD_SERVER_NAME             = 0x080004014

#
# MessageId: CO_E_WRONG_SERVER_IDENTITY
#
# MessageText:
#
#  The class is configured to run as a security id different from the caller
#
CO_E_WRONG_SERVER_IDENTITY       = 0x080004015

#
# MessageId: CO_E_OLE1DDE_DISABLED
#
# MessageText:
#
#  Use of Ole1 services requiring DDE windows is disabled
#
CO_E_OLE1DDE_DISABLED            = 0x080004016

#
# MessageId: CO_E_RUNAS_SYNTAX
#
# MessageText:
#
#  A RunAs specification must be <domain name>\<user name> or simply <user name>
#
CO_E_RUNAS_SYNTAX                = 0x080004017

#
# MessageId: CO_E_CREATEPROCESS_FAILURE
#
# MessageText:
#
#  The server process could not be started.  The pathname may be incorrect.
#
CO_E_CREATEPROCESS_FAILURE       = 0x080004018

#
# MessageId: CO_E_RUNAS_CREATEPROCESS_FAILURE
#
# MessageText:
#
#  The server process could not be started as the configured identity.  The pathname may be incorrect or unavailable.
#
CO_E_RUNAS_CREATEPROCESS_FAILURE = 0x080004019

#
# MessageId: CO_E_RUNAS_LOGON_FAILURE
#
# MessageText:
#
#  The server process could not be started because the configured identity is incorrect.  Check the username and password.
#
CO_E_RUNAS_LOGON_FAILURE         = 0x08000401A

#
# MessageId: CO_E_LAUNCH_PERMSSION_DENIED
#
# MessageText:
#
#  The client is not allowed to launch this server.
#
CO_E_LAUNCH_PERMSSION_DENIED     = 0x08000401B

#
# MessageId: CO_E_START_SERVICE_FAILURE
#
# MessageText:
#
#  The service providing this server could not be started.
#
CO_E_START_SERVICE_FAILURE       = 0x08000401C

#
# MessageId: CO_E_REMOTE_COMMUNICATION_FAILURE
#
# MessageText:
#
#  This computer was unable to communicate with the computer providing the server.
#
CO_E_REMOTE_COMMUNICATION_FAILURE = 0x08000401D

#
# MessageId: CO_E_SERVER_START_TIMEOUT
#
# MessageText:
#
#  The server did not respond after being launched.
#
CO_E_SERVER_START_TIMEOUT        = 0x08000401E

#
# MessageId: CO_E_CLSREG_INCONSISTENT
#
# MessageText:
#
#  The registration information for this server is inconsistent or incomplete.
#
CO_E_CLSREG_INCONSISTENT         = 0x08000401F

#
# MessageId: CO_E_IIDREG_INCONSISTENT
#
# MessageText:
#
#  The registration information for this interface is inconsistent or incomplete.
#
CO_E_IIDREG_INCONSISTENT         = 0x080004020

#
# MessageId: CO_E_NOT_SUPPORTED
#
# MessageText:
#
#  The operation attempted is not supported.
#
CO_E_NOT_SUPPORTED               = 0x080004021

#
# MessageId: CO_E_RELOAD_DLL
#
# MessageText:
#
#  A dll must be loaded.
#
CO_E_RELOAD_DLL                  = 0x080004022

#
# MessageId: CO_E_MSI_ERROR
#
# MessageText:
#
#  A Microsoft Software Installer error was encountered.
#
CO_E_MSI_ERROR                   = 0x080004023

#
# MessageId: CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT
#
# MessageText:
#
#  The specified activation could not occur in the client context as specified.
#
CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT = 0x080004024

#
# MessageId: CO_E_SERVER_PAUSED
#
# MessageText:
#
#  Activations on the server are paused.
#
CO_E_SERVER_PAUSED               = 0x080004025

#
# MessageId: CO_E_SERVER_NOT_PAUSED
#
# MessageText:
#
#  Activations on the server are not paused.
#
CO_E_SERVER_NOT_PAUSED           = 0x080004026

#
# MessageId: CO_E_CLASS_DISABLED
#
# MessageText:
#
#  The component or application containing the component has been disabled.
#
CO_E_CLASS_DISABLED              = 0x080004027

#
# MessageId: CO_E_CLRNOTAVAILABLE
#
# MessageText:
#
#  The common language runtime is not available
#
CO_E_CLRNOTAVAILABLE             = 0x080004028

#
# MessageId: CO_E_ASYNC_WORK_REJECTED
#
# MessageText:
#
#  The thread-pool rejected the submitted asynchronous work.
#
CO_E_ASYNC_WORK_REJECTED         = 0x080004029

#
# MessageId: CO_E_SERVER_INIT_TIMEOUT
#
# MessageText:
#
#  The server started, but did not finish initializing in a timely fashion.
#
CO_E_SERVER_INIT_TIMEOUT         = 0x08000402A

#
# MessageId: CO_E_NO_SECCTX_IN_ACTIVATE
#
# MessageText:
#
#  Unable to complete the call since there is no COM+ security context inside IObjectControl.Activate.
#
CO_E_NO_SECCTX_IN_ACTIVATE       = 0x08000402B

#
# MessageId: CO_E_TRACKER_CONFIG
#
# MessageText:
#
#  The provided tracker configuration is invalid
#
CO_E_TRACKER_CONFIG              = 0x080004030

#
# MessageId: CO_E_THREADPOOL_CONFIG
#
# MessageText:
#
#  The provided thread pool configuration is invalid
#
CO_E_THREADPOOL_CONFIG           = 0x080004031

#
# MessageId: CO_E_SXS_CONFIG
#
# MessageText:
#
#  The provided side-by-side configuration is invalid
#
CO_E_SXS_CONFIG                  = 0x080004032

#
# MessageId: CO_E_MALFORMED_SPN
#
# MessageText:
#
#  The server principal name (SPN) obtained during security negotiation is malformed.
#
CO_E_MALFORMED_SPN               = 0x080004033


#
# Success codes
#
S_OK                                   = 0x000000000
S_FALSE                                = 0x000000001

# ******************
# FACILITY_ITF
# ******************

#
# Codes= 0x00-0x01ff are reserved for the OLE group of
# interfaces.
#


#
# Generic OLE errors that may be returned by many inerfaces
#

OLE_E_FIRST = 0x080040000
OLE_E_LAST  = 0x0800400FF
OLE_S_FIRST = 0x000040000
OLE_S_LAST  = 0x0000400FF

#
# Old OLE errors
#
#
# MessageId: OLE_E_OLEVERB
#
# MessageText:
#
#  Invalid OLEVERB structure
#
OLE_E_OLEVERB                    = 0x080040000

#
# MessageId: OLE_E_ADVF
#
# MessageText:
#
#  Invalid advise flags
#
OLE_E_ADVF                       = 0x080040001

#
# MessageId: OLE_E_ENUM_NOMORE
#
# MessageText:
#
#  Can#t enumerate any more, because the associated data is missing
#
OLE_E_ENUM_NOMORE                = 0x080040002

#
# MessageId: OLE_E_ADVISENOTSUPPORTED
#
# MessageText:
#
#  This implementation doesn#t take advises
#
OLE_E_ADVISENOTSUPPORTED         = 0x080040003

#
# MessageId: OLE_E_NOCONNECTION
#
# MessageText:
#
#  There is no connection for this connection ID
#
OLE_E_NOCONNECTION               = 0x080040004

#
# MessageId: OLE_E_NOTRUNNING
#
# MessageText:
#
#  Need to run the object to perform this operation
#
OLE_E_NOTRUNNING                 = 0x080040005

#
# MessageId: OLE_E_NOCACHE
#
# MessageText:
#
#  There is no cache to operate on
#
OLE_E_NOCACHE                    = 0x080040006

#
# MessageId: OLE_E_BLANK
#
# MessageText:
#
#  Uninitialized object
#
OLE_E_BLANK                      = 0x080040007

#
# MessageId: OLE_E_CLASSDIFF
#
# MessageText:
#
#  Linked object#s source class has changed
#
OLE_E_CLASSDIFF                  = 0x080040008

#
# MessageId: OLE_E_CANT_GETMONIKER
#
# MessageText:
#
#  Not able to get the moniker of the object
#
OLE_E_CANT_GETMONIKER            = 0x080040009

#
# MessageId: OLE_E_CANT_BINDTOSOURCE
#
# MessageText:
#
#  Not able to bind to the source
#
OLE_E_CANT_BINDTOSOURCE          = 0x08004000A

#
# MessageId: OLE_E_STATIC
#
# MessageText:
#
#  Object is static; operation not allowed
#
OLE_E_STATIC                     = 0x08004000B

#
# MessageId: OLE_E_PROMPTSAVECANCELLED
#
# MessageText:
#
#  User canceled out of save dialog
#
OLE_E_PROMPTSAVECANCELLED        = 0x08004000C

#
# MessageId: OLE_E_INVALIDRECT
#
# MessageText:
#
#  Invalid rectangle
#
OLE_E_INVALIDRECT                = 0x08004000D

#
# MessageId: OLE_E_WRONGCOMPOBJ
#
# MessageText:
#
#  compobj.dll is too old for the ole2.dll initialized
#
OLE_E_WRONGCOMPOBJ               = 0x08004000E

#
# MessageId: OLE_E_INVALIDHWND
#
# MessageText:
#
#  Invalid window handle
#
OLE_E_INVALIDHWND                = 0x08004000F

#
# MessageId: OLE_E_NOT_INPLACEACTIVE
#
# MessageText:
#
#  Object is not in any of the inplace active states
#
OLE_E_NOT_INPLACEACTIVE          = 0x080040010

#
# MessageId: OLE_E_CANTCONVERT
#
# MessageText:
#
#  Not able to convert object
#
OLE_E_CANTCONVERT                = 0x080040011

#
# MessageId: OLE_E_NOSTORAGE
#
# MessageText:
#
#  Not able to perform the operation because object is not given storage yet
#
OLE_E_NOSTORAGE                  = 0x080040012

#
# MessageId: DV_E_FORMATETC
#
# MessageText:
#
#  Invalid FORMATETC structure
#
DV_E_FORMATETC                   = 0x080040064

#
# MessageId: DV_E_DVTARGETDEVICE
#
# MessageText:
#
#  Invalid DVTARGETDEVICE structure
#
DV_E_DVTARGETDEVICE              = 0x080040065

#
# MessageId: DV_E_STGMEDIUM
#
# MessageText:
#
#  Invalid STDGMEDIUM structure
#
DV_E_STGMEDIUM                   = 0x080040066

#
# MessageId: DV_E_STATDATA
#
# MessageText:
#
#  Invalid STATDATA structure
#
DV_E_STATDATA                    = 0x080040067

#
# MessageId: DV_E_LINDEX
#
# MessageText:
#
#  Invalid lindex
#
DV_E_LINDEX                      = 0x080040068

#
# MessageId: DV_E_TYMED
#
# MessageText:
#
#  Invalid tymed
#
DV_E_TYMED                       = 0x080040069

#
# MessageId: DV_E_CLIPFORMAT
#
# MessageText:
#
#  Invalid clipboard format
#
DV_E_CLIPFORMAT                  = 0x08004006A

#
# MessageId: DV_E_DVASPECT
#
# MessageText:
#
#  Invalid aspect(s)
#
DV_E_DVASPECT                    = 0x08004006B

#
# MessageId: DV_E_DVTARGETDEVICE_SIZE
#
# MessageText:
#
#  tdSize parameter of the DVTARGETDEVICE structure is invalid
#
DV_E_DVTARGETDEVICE_SIZE         = 0x08004006C

#
# MessageId: DV_E_NOIVIEWOBJECT
#
# MessageText:
#
#  Object doesn#t support IViewObject interface
#
DV_E_NOIVIEWOBJECT               = 0x08004006D

DRAGDROP_E_FIRST = 0x080040100
DRAGDROP_E_LAST  = 0x08004010F
DRAGDROP_S_FIRST = 0x000040100
DRAGDROP_S_LAST  = 0x00004010F
#
# MessageId: DRAGDROP_E_NOTREGISTERED
#
# MessageText:
#
#  Trying to revoke a drop target that has not been registered
#
DRAGDROP_E_NOTREGISTERED         = 0x080040100

#
# MessageId: DRAGDROP_E_ALREADYREGISTERED
#
# MessageText:
#
#  This window has already been registered as a drop target
#
DRAGDROP_E_ALREADYREGISTERED     = 0x080040101

#
# MessageId: DRAGDROP_E_INVALIDHWND
#
# MessageText:
#
#  Invalid window handle
#
DRAGDROP_E_INVALIDHWND           = 0x080040102

CLASSFACTORY_E_FIRST = 0x080040110
CLASSFACTORY_E_LAST  = 0x08004011F
CLASSFACTORY_S_FIRST = 0x000040110
CLASSFACTORY_S_LAST  = 0x00004011F
#
# MessageId: CLASS_E_NOAGGREGATION
#
# MessageText:
#
#  Class does not support aggregation (or class object is remote)
#
CLASS_E_NOAGGREGATION            = 0x080040110

#
# MessageId: CLASS_E_CLASSNOTAVAILABLE
#
# MessageText:
#
#  ClassFactory cannot supply requested class
#
CLASS_E_CLASSNOTAVAILABLE        = 0x080040111

#
# MessageId: CLASS_E_NOTLICENSED
#
# MessageText:
#
#  Class is not licensed for use
#
CLASS_E_NOTLICENSED              = 0x080040112

MARSHAL_E_FIRST = 0x080040120
MARSHAL_E_LAST  = 0x08004012F
MARSHAL_S_FIRST = 0x000040120
MARSHAL_S_LAST  = 0x00004012F
DATA_E_FIRST    = 0x080040130
DATA_E_LAST     = 0x08004013F
DATA_S_FIRST    = 0x000040130
DATA_S_LAST     = 0x00004013F
VIEW_E_FIRST    = 0x080040140
VIEW_E_LAST     = 0x08004014F
VIEW_S_FIRST    = 0x000040140
VIEW_S_LAST     = 0x00004014F
#
# MessageId: VIEW_E_DRAW
#
# MessageText:
#
#  Error drawing view
#
VIEW_E_DRAW                      = 0x080040140

REGDB_E_FIRST    = 0x080040150
REGDB_E_LAST     = 0x08004015F
REGDB_S_FIRST    = 0x000040150
REGDB_S_LAST     = 0x00004015F
#
# MessageId: REGDB_E_READREGDB
#
# MessageText:
#
#  Could not read key from registry
#
REGDB_E_READREGDB                = 0x080040150

#
# MessageId: REGDB_E_WRITEREGDB
#
# MessageText:
#
#  Could not write key to registry
#
REGDB_E_WRITEREGDB               = 0x080040151

#
# MessageId: REGDB_E_KEYMISSING
#
# MessageText:
#
#  Could not find the key in the registry
#
REGDB_E_KEYMISSING               = 0x080040152

#
# MessageId: REGDB_E_INVALIDVALUE
#
# MessageText:
#
#  Invalid value for registry
#
REGDB_E_INVALIDVALUE             = 0x080040153

#
# MessageId: REGDB_E_CLASSNOTREG
#
# MessageText:
#
#  Class not registered
#
REGDB_E_CLASSNOTREG              = 0x080040154

#
# MessageId: REGDB_E_IIDNOTREG
#
# MessageText:
#
#  Interface not registered
#
REGDB_E_IIDNOTREG                = 0x080040155

#
# MessageId: REGDB_E_BADTHREADINGMODEL
#
# MessageText:
#
#  Threading model entry is not valid
#
REGDB_E_BADTHREADINGMODEL        = 0x080040156

CAT_E_FIRST    = 0x080040160
CAT_E_LAST     = 0x080040161
#
# MessageId: CAT_E_CATIDNOEXIST
#
# MessageText:
#
#  CATID does not exist
#
CAT_E_CATIDNOEXIST               = 0x080040160

#
# MessageId: CAT_E_NODESCRIPTION
#
# MessageText:
#
#  Description not found
#
CAT_E_NODESCRIPTION              = 0x080040161

#
#
#     Class Store Error Codes
#
#
CS_E_FIRST    = 0x080040164
CS_E_LAST     = 0x08004016F
#
# MessageId: CS_E_PACKAGE_NOTFOUND
#
# MessageText:
#
#  No package in the software installation data in the Active Directory meets this criteria.
#
CS_E_PACKAGE_NOTFOUND            = 0x080040164

#
# MessageId: CS_E_NOT_DELETABLE
#
# MessageText:
#
#  Deleting this will break the referential integrity of the software installation data in the Active Directory.
#
CS_E_NOT_DELETABLE               = 0x080040165

#
# MessageId: CS_E_CLASS_NOTFOUND
#
# MessageText:
#
#  The CLSID was not found in the software installation data in the Active Directory.
#
CS_E_CLASS_NOTFOUND              = 0x080040166

#
# MessageId: CS_E_INVALID_VERSION
#
# MessageText:
#
#  The software installation data in the Active Directory is corrupt.
#
CS_E_INVALID_VERSION             = 0x080040167

#
# MessageId: CS_E_NO_CLASSSTORE
#
# MessageText:
#
#  There is no software installation data in the Active Directory.
#
CS_E_NO_CLASSSTORE               = 0x080040168

#
# MessageId: CS_E_OBJECT_NOTFOUND
#
# MessageText:
#
#  There is no software installation data object in the Active Directory.
#
CS_E_OBJECT_NOTFOUND             = 0x080040169

#
# MessageId: CS_E_OBJECT_ALREADY_EXISTS
#
# MessageText:
#
#  The software installation data object in the Active Directory already exists.
#
CS_E_OBJECT_ALREADY_EXISTS       = 0x08004016A

#
# MessageId: CS_E_INVALID_PATH
#
# MessageText:
#
#  The path to the software installation data in the Active Directory is not correct.
#
CS_E_INVALID_PATH                = 0x08004016B

#
# MessageId: CS_E_NETWORK_ERROR
#
# MessageText:
#
#  A network error interrupted the operation.
#
CS_E_NETWORK_ERROR               = 0x08004016C

#
# MessageId: CS_E_ADMIN_LIMIT_EXCEEDED
#
# MessageText:
#
#  The size of this object exceeds the maximum size set by the Administrator.
#
CS_E_ADMIN_LIMIT_EXCEEDED        = 0x08004016D

#
# MessageId: CS_E_SCHEMA_MISMATCH
#
# MessageText:
#
#  The schema for the software installation data in the Active Directory does not match the required schema.
#
CS_E_SCHEMA_MISMATCH             = 0x08004016E

#
# MessageId: CS_E_INTERNAL_ERROR
#
# MessageText:
#
#  An error occurred in the software installation data in the Active Directory.
#
CS_E_INTERNAL_ERROR              = 0x08004016F

CACHE_E_FIRST    = 0x080040170
CACHE_E_LAST     = 0x08004017F
CACHE_S_FIRST    = 0x000040170
CACHE_S_LAST     = 0x00004017F
#
# MessageId: CACHE_E_NOCACHE_UPDATED
#
# MessageText:
#
#  Cache not updated
#
CACHE_E_NOCACHE_UPDATED          = 0x080040170

OLEOBJ_E_FIRST    = 0x080040180
OLEOBJ_E_LAST     = 0x08004018F
OLEOBJ_S_FIRST    = 0x000040180
OLEOBJ_S_LAST     = 0x00004018F
#
# MessageId: OLEOBJ_E_NOVERBS
#
# MessageText:
#
#  No verbs for OLE object
#
OLEOBJ_E_NOVERBS                 = 0x080040180

#
# MessageId: OLEOBJ_E_INVALIDVERB
#
# MessageText:
#
#  Invalid verb for OLE object
#
OLEOBJ_E_INVALIDVERB             = 0x080040181

CLIENTSITE_E_FIRST    = 0x080040190
CLIENTSITE_E_LAST     = 0x08004019F
CLIENTSITE_S_FIRST    = 0x000040190
CLIENTSITE_S_LAST     = 0x00004019F
#
# MessageId: INPLACE_E_NOTUNDOABLE
#
# MessageText:
#
#  Undo is not available
#
INPLACE_E_NOTUNDOABLE            = 0x0800401A0

#
# MessageId: INPLACE_E_NOTOOLSPACE
#
# MessageText:
#
#  Space for tools is not available
#
INPLACE_E_NOTOOLSPACE            = 0x0800401A1

INPLACE_E_FIRST    = 0x0800401A0
INPLACE_E_LAST     = 0x0800401AF
INPLACE_S_FIRST    = 0x0000401A0
INPLACE_S_LAST     = 0x0000401AF
ENUM_E_FIRST       = 0x0800401B0
ENUM_E_LAST        = 0x0800401BF
ENUM_S_FIRST       = 0x0000401B0
ENUM_S_LAST        = 0x0000401BF
CONVERT10_E_FIRST       = 0x0800401C0
CONVERT10_E_LAST        = 0x0800401CF
CONVERT10_S_FIRST       = 0x0000401C0
CONVERT10_S_LAST        = 0x0000401CF
#
# MessageId: CONVERT10_E_OLESTREAM_GET
#
# MessageText:
#
#  OLESTREAM Get method failed
#
CONVERT10_E_OLESTREAM_GET        = 0x0800401C0

#
# MessageId: CONVERT10_E_OLESTREAM_PUT
#
# MessageText:
#
#  OLESTREAM Put method failed
#
CONVERT10_E_OLESTREAM_PUT        = 0x0800401C1

#
# MessageId: CONVERT10_E_OLESTREAM_FMT
#
# MessageText:
#
#  Contents of the OLESTREAM not in correct format
#
CONVERT10_E_OLESTREAM_FMT        = 0x0800401C2

#
# MessageId: CONVERT10_E_OLESTREAM_BITMAP_TO_DIB
#
# MessageText:
#
#  There was an error in a Windows GDI call while converting the bitmap to a DIB
#
CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x0800401C3

#
# MessageId: CONVERT10_E_STG_FMT
#
# MessageText:
#
#  Contents of the IStorage not in correct format
#
CONVERT10_E_STG_FMT              = 0x0800401C4

#
# MessageId: CONVERT10_E_STG_NO_STD_STREAM
#
# MessageText:
#
#  Contents of IStorage is missing one of the standard streams
#
CONVERT10_E_STG_NO_STD_STREAM    = 0x0800401C5

#
# MessageId: CONVERT10_E_STG_DIB_TO_BITMAP
#
# MessageText:
#
#  There was an error in a Windows GDI call while converting the DIB to a bitmap.
#
#
CONVERT10_E_STG_DIB_TO_BITMAP    = 0x0800401C6

CLIPBRD_E_FIRST       = 0x0800401D0
CLIPBRD_E_LAST        = 0x0800401DF
CLIPBRD_S_FIRST       = 0x0000401D0
CLIPBRD_S_LAST        = 0x0000401DF
#
# MessageId: CLIPBRD_E_CANT_OPEN
#
# MessageText:
#
#  OpenClipboard Failed
#
CLIPBRD_E_CANT_OPEN              = 0x0800401D0

#
# MessageId: CLIPBRD_E_CANT_EMPTY
#
# MessageText:
#
#  EmptyClipboard Failed
#
CLIPBRD_E_CANT_EMPTY             = 0x0800401D1

#
# MessageId: CLIPBRD_E_CANT_SET
#
# MessageText:
#
#  SetClipboard Failed
#
CLIPBRD_E_CANT_SET               = 0x0800401D2

#
# MessageId: CLIPBRD_E_BAD_DATA
#
# MessageText:
#
#  Data on clipboard is invalid
#
CLIPBRD_E_BAD_DATA               = 0x0800401D3

#
# MessageId: CLIPBRD_E_CANT_CLOSE
#
# MessageText:
#
#  CloseClipboard Failed
#
CLIPBRD_E_CANT_CLOSE             = 0x0800401D4

MK_E_FIRST       = 0x0800401E0
MK_E_LAST        = 0x0800401EF
MK_S_FIRST       = 0x0000401E0
MK_S_LAST        = 0x0000401EF
#
# MessageId: MK_E_CONNECTMANUALLY
#
# MessageText:
#
#  Moniker needs to be connected manually
#
MK_E_CONNECTMANUALLY             = 0x0800401E0

#
# MessageId: MK_E_EXCEEDEDDEADLINE
#
# MessageText:
#
#  Operation exceeded deadline
#
MK_E_EXCEEDEDDEADLINE            = 0x0800401E1

#
# MessageId: MK_E_NEEDGENERIC
#
# MessageText:
#
#  Moniker needs to be generic
#
MK_E_NEEDGENERIC                 = 0x0800401E2

#
# MessageId: MK_E_UNAVAILABLE
#
# MessageText:
#
#  Operation unavailable
#
MK_E_UNAVAILABLE                 = 0x0800401E3

#
# MessageId: MK_E_SYNTAX
#
# MessageText:
#
#  Invalid syntax
#
MK_E_SYNTAX                      = 0x0800401E4

#
# MessageId: MK_E_NOOBJECT
#
# MessageText:
#
#  No object for moniker
#
MK_E_NOOBJECT                    = 0x0800401E5

#
# MessageId: MK_E_INVALIDEXTENSION
#
# MessageText:
#
#  Bad extension for file
#
MK_E_INVALIDEXTENSION            = 0x0800401E6

#
# MessageId: MK_E_INTERMEDIATEINTERFACENOTSUPPORTED
#
# MessageText:
#
#  Intermediate operation failed
#
MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x0800401E7

#
# MessageId: MK_E_NOTBINDABLE
#
# MessageText:
#
#  Moniker is not bindable
#
MK_E_NOTBINDABLE                 = 0x0800401E8

#
# MessageId: MK_E_NOTBOUND
#
# MessageText:
#
#  Moniker is not bound
#
MK_E_NOTBOUND                    = 0x0800401E9

#
# MessageId: MK_E_CANTOPENFILE
#
# MessageText:
#
#  Moniker cannot open file
#
MK_E_CANTOPENFILE                = 0x0800401EA

#
# MessageId: MK_E_MUSTBOTHERUSER
#
# MessageText:
#
#  User input required for operation to succeed
#
MK_E_MUSTBOTHERUSER              = 0x0800401EB

#
# MessageId: MK_E_NOINVERSE
#
# MessageText:
#
#  Moniker class has no inverse
#
MK_E_NOINVERSE                   = 0x0800401EC

#
# MessageId: MK_E_NOSTORAGE
#
# MessageText:
#
#  Moniker does not refer to storage
#
MK_E_NOSTORAGE                   = 0x0800401ED

#
# MessageId: MK_E_NOPREFIX
#
# MessageText:
#
#  No common prefix
#
MK_E_NOPREFIX                    = 0x0800401EE

#
# MessageId: MK_E_ENUMERATION_FAILED
#
# MessageText:
#
#  Moniker could not be enumerated
#
MK_E_ENUMERATION_FAILED          = 0x0800401EF

CO_E_FIRST       = 0x0800401F0
CO_E_LAST        = 0x0800401FF
CO_S_FIRST       = 0x0000401F0
CO_S_LAST        = 0x0000401FF
#
# MessageId: CO_E_NOTINITIALIZED
#
# MessageText:
#
#  CoInitialize has not been called.
#
CO_E_NOTINITIALIZED              = 0x0800401F0

#
# MessageId: CO_E_ALREADYINITIALIZED
#
# MessageText:
#
#  CoInitialize has already been called.
#
CO_E_ALREADYINITIALIZED          = 0x0800401F1

#
# MessageId: CO_E_CANTDETERMINECLASS
#
# MessageText:
#
#  Class of object cannot be determined
#
CO_E_CANTDETERMINECLASS          = 0x0800401F2

#
# MessageId: CO_E_CLASSSTRING
#
# MessageText:
#
#  Invalid class string
#
CO_E_CLASSSTRING                 = 0x0800401F3

#
# MessageId: CO_E_IIDSTRING
#
# MessageText:
#
#  Invalid interface string
#
CO_E_IIDSTRING                   = 0x0800401F4

#
# MessageId: CO_E_APPNOTFOUND
#
# MessageText:
#
#  Application not found
#
CO_E_APPNOTFOUND                 = 0x0800401F5

#
# MessageId: CO_E_APPSINGLEUSE
#
# MessageText:
#
#  Application cannot be run more than once
#
CO_E_APPSINGLEUSE                = 0x0800401F6

#
# MessageId: CO_E_ERRORINAPP
#
# MessageText:
#
#  Some error in application program
#
CO_E_ERRORINAPP                  = 0x0800401F7

#
# MessageId: CO_E_DLLNOTFOUND
#
# MessageText:
#
#  DLL for class not found
#
CO_E_DLLNOTFOUND                 = 0x0800401F8

#
# MessageId: CO_E_ERRORINDLL
#
# MessageText:
#
#  Error in the DLL
#
CO_E_ERRORINDLL                  = 0x0800401F9

#
# MessageId: CO_E_WRONGOSFORAPP
#
# MessageText:
#
#  Wrong OS or OS version for application
#
CO_E_WRONGOSFORAPP               = 0x0800401FA

#
# MessageId: CO_E_OBJNOTREG
#
# MessageText:
#
#  Object is not registered
#
CO_E_OBJNOTREG                   = 0x0800401FB

#
# MessageId: CO_E_OBJISREG
#
# MessageText:
#
#  Object is already registered
#
CO_E_OBJISREG                    = 0x0800401FC

#
# MessageId: CO_E_OBJNOTCONNECTED
#
# MessageText:
#
#  Object is not connected to server
#
CO_E_OBJNOTCONNECTED             = 0x0800401FD

#
# MessageId: CO_E_APPDIDNTREG
#
# MessageText:
#
#  Application was launched but it didn#t register a class factory
#
CO_E_APPDIDNTREG                 = 0x0800401FE

#
# MessageId: CO_E_RELEASED
#
# MessageText:
#
#  Object has been released
#
CO_E_RELEASED                    = 0x0800401FF

EVENT_E_FIRST       = 0x080040200
EVENT_E_LAST        = 0x08004021F
EVENT_S_FIRST       = 0x000040200
EVENT_S_LAST        = 0x00004021F
#
# MessageId: EVENT_S_SOME_SUBSCRIBERS_FAILED
#
# MessageText:
#
#  An event was able to invoke some but not all of the subscribers
#
EVENT_S_SOME_SUBSCRIBERS_FAILED  = 0x000040200

#
# MessageId: EVENT_E_ALL_SUBSCRIBERS_FAILED
#
# MessageText:
#
#  An event was unable to invoke any of the subscribers
#
EVENT_E_ALL_SUBSCRIBERS_FAILED   = 0x080040201

#
# MessageId: EVENT_S_NOSUBSCRIBERS
#
# MessageText:
#
#  An event was delivered but there were no subscribers
#
EVENT_S_NOSUBSCRIBERS            = 0x000040202

#
# MessageId: EVENT_E_QUERYSYNTAX
#
# MessageText:
#
#  A syntax error occurred trying to evaluate a query string
#
EVENT_E_QUERYSYNTAX              = 0x080040203

#
# MessageId: EVENT_E_QUERYFIELD
#
# MessageText:
#
#  An invalid field name was used in a query string
#
EVENT_E_QUERYFIELD               = 0x080040204

#
# MessageId: EVENT_E_INTERNALEXCEPTION
#
# MessageText:
#
#  An unexpected exception was raised
#
EVENT_E_INTERNALEXCEPTION        = 0x080040205

#
# MessageId: EVENT_E_INTERNALERROR
#
# MessageText:
#
#  An unexpected internal error was detected
#
EVENT_E_INTERNALERROR            = 0x080040206

#
# MessageId: EVENT_E_INVALID_PER_USER_SID
#
# MessageText:
#
#  The owner SID on a per-user subscription doesn#t exist
#
EVENT_E_INVALID_PER_USER_SID     = 0x080040207

#
# MessageId: EVENT_E_USER_EXCEPTION
#
# MessageText:
#
#  A user-supplied component or subscriber raised an exception
#
EVENT_E_USER_EXCEPTION           = 0x080040208

#
# MessageId: EVENT_E_TOO_MANY_METHODS
#
# MessageText:
#
#  An interface has too many methods to fire events from
#
EVENT_E_TOO_MANY_METHODS         = 0x080040209

#
# MessageId: EVENT_E_MISSING_EVENTCLASS
#
# MessageText:
#
#  A subscription cannot be stored unless its event class already exists
#
EVENT_E_MISSING_EVENTCLASS       = 0x08004020A

#
# MessageId: EVENT_E_NOT_ALL_REMOVED
#
# MessageText:
#
#  Not all the objects requested could be removed
#
EVENT_E_NOT_ALL_REMOVED          = 0x08004020B

#
# MessageId: EVENT_E_COMPLUS_NOT_INSTALLED
#
# MessageText:
#
#  COM+ is required for this operation, but is not installed
#
EVENT_E_COMPLUS_NOT_INSTALLED    = 0x08004020C

#
# MessageId: EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT
#
# MessageText:
#
#  Cannot modify or delete an object that was not added using the COM+ Admin SDK
#
EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT = 0x08004020D

#
# MessageId: EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT
#
# MessageText:
#
#  Cannot modify or delete an object that was added using the COM+ Admin SDK
#
EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT = 0x08004020E

#
# MessageId: EVENT_E_INVALID_EVENT_CLASS_PARTITION
#
# MessageText:
#
#  The event class for this subscription is in an invalid partition
#
EVENT_E_INVALID_EVENT_CLASS_PARTITION = 0x08004020F

#
# MessageId: EVENT_E_PER_USER_SID_NOT_LOGGED_ON
#
# MessageText:
#
#  The owner of the PerUser subscription is not logged on to the system specified
#
EVENT_E_PER_USER_SID_NOT_LOGGED_ON = 0x080040210

XACT_E_FIRST  = 0x08004D000
XACT_E_LAST   = 0x08004D029
XACT_S_FIRST  = 0x00004D000
XACT_S_LAST   = 0x00004D010
#
# MessageId: XACT_E_ALREADYOTHERSINGLEPHASE
#
# MessageText:
#
#  Another single phase resource manager has already been enlisted in this transaction.
#
XACT_E_ALREADYOTHERSINGLEPHASE   = 0x08004D000

#
# MessageId: XACT_E_CANTRETAIN
#
# MessageText:
#
#  A retaining commit or abort is not supported
#
XACT_E_CANTRETAIN                = 0x08004D001

#
# MessageId: XACT_E_COMMITFAILED
#
# MessageText:
#
#  The transaction failed to commit for an unknown reason. The transaction was aborted.
#
XACT_E_COMMITFAILED              = 0x08004D002

#
# MessageId: XACT_E_COMMITPREVENTED
#
# MessageText:
#
#  Cannot call commit on this transaction object because the calling application did not initiate the transaction.
#
XACT_E_COMMITPREVENTED           = 0x08004D003

#
# MessageId: XACT_E_HEURISTICABORT
#
# MessageText:
#
#  Instead of committing, the resource heuristically aborted.
#
XACT_E_HEURISTICABORT            = 0x08004D004

#
# MessageId: XACT_E_HEURISTICCOMMIT
#
# MessageText:
#
#  Instead of aborting, the resource heuristically committed.
#
XACT_E_HEURISTICCOMMIT           = 0x08004D005

#
# MessageId: XACT_E_HEURISTICDAMAGE
#
# MessageText:
#
#  Some of the states of the resource were committed while others were aborted, likely because of heuristic decisions.
#
XACT_E_HEURISTICDAMAGE           = 0x08004D006

#
# MessageId: XACT_E_HEURISTICDANGER
#
# MessageText:
#
#  Some of the states of the resource may have been committed while others may have been aborted, likely because of heuristic decisions.
#
XACT_E_HEURISTICDANGER           = 0x08004D007

#
# MessageId: XACT_E_ISOLATIONLEVEL
#
# MessageText:
#
#  The requested isolation level is not valid or supported.
#
XACT_E_ISOLATIONLEVEL            = 0x08004D008

#
# MessageId: XACT_E_NOASYNC
#
# MessageText:
#
#  The transaction manager doesn#t support an asynchronous operation for this method.
#
XACT_E_NOASYNC                   = 0x08004D009

#
# MessageId: XACT_E_NOENLIST
#
# MessageText:
#
#  Unable to enlist in the transaction.
#
XACT_E_NOENLIST                  = 0x08004D00A

#
# MessageId: XACT_E_NOISORETAIN
#
# MessageText:
#
#  The requested semantics of retention of isolation across retaining commit and abort boundaries cannot be supported by this transaction implementation, or isoFlags was not equal to zero.
#
XACT_E_NOISORETAIN               = 0x08004D00B

#
# MessageId: XACT_E_NORESOURCE
#
# MessageText:
#
#  There is no resource presently associated with this enlistment
#
XACT_E_NORESOURCE                = 0x08004D00C

#
# MessageId: XACT_E_NOTCURRENT
#
# MessageText:
#
#  The transaction failed to commit due to the failure of optimistic concurrency control in at least one of the resource managers.
#
XACT_E_NOTCURRENT                = 0x08004D00D

#
# MessageId: XACT_E_NOTRANSACTION
#
# MessageText:
#
#  The transaction has already been implicitly or explicitly committed or aborted
#
XACT_E_NOTRANSACTION             = 0x08004D00E

#
# MessageId: XACT_E_NOTSUPPORTED
#
# MessageText:
#
#  An invalid combination of flags was specified
#
XACT_E_NOTSUPPORTED              = 0x08004D00F

#
# MessageId: XACT_E_UNKNOWNRMGRID
#
# MessageText:
#
#  The resource manager id is not associated with this transaction or the transaction manager.
#
XACT_E_UNKNOWNRMGRID             = 0x08004D010

#
# MessageId: XACT_E_WRONGSTATE
#
# MessageText:
#
#  This method was called in the wrong state
#
XACT_E_WRONGSTATE                = 0x08004D011

#
# MessageId: XACT_E_WRONGUOW
#
# MessageText:
#
#  The indicated unit of work does not match the unit of work expected by the resource manager.
#
XACT_E_WRONGUOW                  = 0x08004D012

#
# MessageId: XACT_E_XTIONEXISTS
#
# MessageText:
#
#  An enlistment in a transaction already exists.
#
XACT_E_XTIONEXISTS               = 0x08004D013

#
# MessageId: XACT_E_NOIMPORTOBJECT
#
# MessageText:
#
#  An import object for the transaction could not be found.
#
XACT_E_NOIMPORTOBJECT            = 0x08004D014

#
# MessageId: XACT_E_INVALIDCOOKIE
#
# MessageText:
#
#  The transaction cookie is invalid.
#
XACT_E_INVALIDCOOKIE             = 0x08004D015

#
# MessageId: XACT_E_INDOUBT
#
# MessageText:
#
#  The transaction status is in doubt. A communication failure occurred, or a transaction manager or resource manager has failed
#
XACT_E_INDOUBT                   = 0x08004D016

#
# MessageId: XACT_E_NOTIMEOUT
#
# MessageText:
#
#  A time-out was specified, but time-outs are not supported.
#
XACT_E_NOTIMEOUT                 = 0x08004D017

#
# MessageId: XACT_E_ALREADYINPROGRESS
#
# MessageText:
#
#  The requested operation is already in progress for the transaction.
#
XACT_E_ALREADYINPROGRESS         = 0x08004D018

#
# MessageId: XACT_E_ABORTED
#
# MessageText:
#
#  The transaction has already been aborted.
#
XACT_E_ABORTED                   = 0x08004D019

#
# MessageId: XACT_E_LOGFULL
#
# MessageText:
#
#  The Transaction Manager returned a log full error.
#
XACT_E_LOGFULL                   = 0x08004D01A

#
# MessageId: XACT_E_TMNOTAVAILABLE
#
# MessageText:
#
#  The Transaction Manager is not available.
#
XACT_E_TMNOTAVAILABLE            = 0x08004D01B

#
# MessageId: XACT_E_CONNECTION_DOWN
#
# MessageText:
#
#  A connection with the transaction manager was lost.
#
XACT_E_CONNECTION_DOWN           = 0x08004D01C

#
# MessageId: XACT_E_CONNECTION_DENIED
#
# MessageText:
#
#  A request to establish a connection with the transaction manager was denied.
#
XACT_E_CONNECTION_DENIED         = 0x08004D01D

#
# MessageId: XACT_E_REENLISTTIMEOUT
#
# MessageText:
#
#  Resource manager reenlistment to determine transaction status timed out.
#
XACT_E_REENLISTTIMEOUT           = 0x08004D01E

#
# MessageId: XACT_E_TIP_CONNECT_FAILED
#
# MessageText:
#
#  This transaction manager failed to establish a connection with another TIP transaction manager.
#
XACT_E_TIP_CONNECT_FAILED        = 0x08004D01F

#
# MessageId: XACT_E_TIP_PROTOCOL_ERROR
#
# MessageText:
#
#  This transaction manager encountered a protocol error with another TIP transaction manager.
#
XACT_E_TIP_PROTOCOL_ERROR        = 0x08004D020

#
# MessageId: XACT_E_TIP_PULL_FAILED
#
# MessageText:
#
#  This transaction manager could not propagate a transaction from another TIP transaction manager.
#
XACT_E_TIP_PULL_FAILED           = 0x08004D021

#
# MessageId: XACT_E_DEST_TMNOTAVAILABLE
#
# MessageText:
#
#  The Transaction Manager on the destination machine is not available.
#
XACT_E_DEST_TMNOTAVAILABLE       = 0x08004D022

#
# MessageId: XACT_E_TIP_DISABLED
#
# MessageText:
#
#  The Transaction Manager has disabled its support for TIP.
#
XACT_E_TIP_DISABLED              = 0x08004D023

#
# MessageId: XACT_E_NETWORK_TX_DISABLED
#
# MessageText:
#
#  The transaction manager has disabled its support for remote/network transactions.
#
XACT_E_NETWORK_TX_DISABLED       = 0x08004D024

#
# MessageId: XACT_E_PARTNER_NETWORK_TX_DISABLED
#
# MessageText:
#
#  The partner transaction manager has disabled its support for remote/network transactions.
#
XACT_E_PARTNER_NETWORK_TX_DISABLED = 0x08004D025

#
# MessageId: XACT_E_XA_TX_DISABLED
#
# MessageText:
#
#  The transaction manager has disabled its support for XA transactions.
#
XACT_E_XA_TX_DISABLED            = 0x08004D026

#
# MessageId: XACT_E_UNABLE_TO_READ_DTC_CONFIG
#
# MessageText:
#
#  MSDTC was unable to read its configuration information.
#
XACT_E_UNABLE_TO_READ_DTC_CONFIG = 0x08004D027

#
# MessageId: XACT_E_UNABLE_TO_LOAD_DTC_PROXY
#
# MessageText:
#
#  MSDTC was unable to load the dtc proxy dll.
#
XACT_E_UNABLE_TO_LOAD_DTC_PROXY  = 0x08004D028

#
# MessageId: XACT_E_ABORTING
#
# MessageText:
#
#  The local transaction has aborted.
#
XACT_E_ABORTING                  = 0x08004D029

#
# TXF  CRM errors start 4d080.
#
# MessageId: XACT_E_CLERKNOTFOUND
#
# MessageText:
#
#  XACT_E_CLERKNOTFOUND
#
XACT_E_CLERKNOTFOUND             = 0x08004D080

#
# MessageId: XACT_E_CLERKEXISTS
#
# MessageText:
#
#  XACT_E_CLERKEXISTS
#
XACT_E_CLERKEXISTS               = 0x08004D081

#
# MessageId: XACT_E_RECOVERYINPROGRESS
#
# MessageText:
#
#  XACT_E_RECOVERYINPROGRESS
#
XACT_E_RECOVERYINPROGRESS        = 0x08004D082

#
# MessageId: XACT_E_TRANSACTIONCLOSED
#
# MessageText:
#
#  XACT_E_TRANSACTIONCLOSED
#
XACT_E_TRANSACTIONCLOSED         = 0x08004D083

#
# MessageId: XACT_E_INVALIDLSN
#
# MessageText:
#
#  XACT_E_INVALIDLSN
#
XACT_E_INVALIDLSN                = 0x08004D084

#
# MessageId: XACT_E_REPLAYREQUEST
#
# MessageText:
#
#  XACT_E_REPLAYREQUEST
#
XACT_E_REPLAYREQUEST             = 0x08004D085

#
# OleTx Success codes.
#
#
# MessageId: XACT_S_ASYNC
#
# MessageText:
#
#  An asynchronous operation was specified. The operation has begun, but its outcome is not known yet.
#
XACT_S_ASYNC                     = 0x00004D000

#
# MessageId: XACT_S_DEFECT
#
# MessageText:
#
#  XACT_S_DEFECT
#
XACT_S_DEFECT                    = 0x00004D001

#
# MessageId: XACT_S_READONLY
#
# MessageText:
#
#  The method call succeeded because the transaction was read-only.
#
XACT_S_READONLY                  = 0x00004D002

#
# MessageId: XACT_S_SOMENORETAIN
#
# MessageText:
#
#  The transaction was successfully aborted. However, this is a coordinated transaction, and some number of enlisted resources were aborted outright because they could not support abort-retaining semantics
#
XACT_S_SOMENORETAIN              = 0x00004D003

#
# MessageId: XACT_S_OKINFORM
#
# MessageText:
#
#  No changes were made during this call, but the sink wants another chance to look if any other sinks make further changes.
#
XACT_S_OKINFORM                  = 0x00004D004

#
# MessageId: XACT_S_MADECHANGESCONTENT
#
# MessageText:
#
#  The sink is content and wishes the transaction to proceed. Changes were made to one or more resources during this call.
#
XACT_S_MADECHANGESCONTENT        = 0x00004D005

#
# MessageId: XACT_S_MADECHANGESINFORM
#
# MessageText:
#
#  The sink is for the moment and wishes the transaction to proceed, but if other changes are made following this return by other event sinks then this sink wants another chance to look
#
XACT_S_MADECHANGESINFORM         = 0x00004D006

#
# MessageId: XACT_S_ALLNORETAIN
#
# MessageText:
#
#  The transaction was successfully aborted. However, the abort was non-retaining.
#
XACT_S_ALLNORETAIN               = 0x00004D007

#
# MessageId: XACT_S_ABORTING
#
# MessageText:
#
#  An abort operation was already in progress.
#
XACT_S_ABORTING                  = 0x00004D008

#
# MessageId: XACT_S_SINGLEPHASE
#
# MessageText:
#
#  The resource manager has performed a single-phase commit of the transaction.
#
XACT_S_SINGLEPHASE               = 0x00004D009

#
# MessageId: XACT_S_LOCALLY_OK
#
# MessageText:
#
#  The local transaction has not aborted.
#
XACT_S_LOCALLY_OK                = 0x00004D00A

#
# MessageId: XACT_S_LASTRESOURCEMANAGER
#
# MessageText:
#
#  The resource manager has requested to be the coordinator (last resource manager) for the transaction.
#
XACT_S_LASTRESOURCEMANAGER       = 0x00004D010

CONTEXT_E_FIRST       = 0x08004E000
CONTEXT_E_LAST        = 0x08004E02F
CONTEXT_S_FIRST       = 0x00004E000
CONTEXT_S_LAST        = 0x00004E02F
#
# MessageId: CONTEXT_E_ABORTED
#
# MessageText:
#
#  The root transaction wanted to commit, but transaction aborted
#
CONTEXT_E_ABORTED                = 0x08004E002

#
# MessageId: CONTEXT_E_ABORTING
#
# MessageText:
#
#  You made a method call on a COM+ component that has a transaction that has already aborted or in the process of aborting.
#
CONTEXT_E_ABORTING               = 0x08004E003

#
# MessageId: CONTEXT_E_NOCONTEXT
#
# MessageText:
#
#  There is no MTS object context
#
CONTEXT_E_NOCONTEXT              = 0x08004E004

#
# MessageId: CONTEXT_E_WOULD_DEADLOCK
#
# MessageText:
#
#  The component is configured to use synchronization and this method call would cause a deadlock to occur.
#
CONTEXT_E_WOULD_DEADLOCK         = 0x08004E005

#
# MessageId: CONTEXT_E_SYNCH_TIMEOUT
#
# MessageText:
#
#  The component is configured to use synchronization and a thread has timed out waiting to enter the context.
#
CONTEXT_E_SYNCH_TIMEOUT          = 0x08004E006

#
# MessageId: CONTEXT_E_OLDREF
#
# MessageText:
#
#  You made a method call on a COM+ component that has a transaction that has already committed or aborted.
#
CONTEXT_E_OLDREF                 = 0x08004E007

#
# MessageId: CONTEXT_E_ROLENOTFOUND
#
# MessageText:
#
#  The specified role was not configured for the application
#
CONTEXT_E_ROLENOTFOUND           = 0x08004E00C

#
# MessageId: CONTEXT_E_TMNOTAVAILABLE
#
# MessageText:
#
#  COM+ was unable to talk to the Microsoft Distributed Transaction Coordinator
#
CONTEXT_E_TMNOTAVAILABLE         = 0x08004E00F

#
# MessageId: CO_E_ACTIVATIONFAILED
#
# MessageText:
#
#  An unexpected error occurred during COM+ Activation.
#
CO_E_ACTIVATIONFAILED            = 0x08004E021

#
# MessageId: CO_E_ACTIVATIONFAILED_EVENTLOGGED
#
# MessageText:
#
#  COM+ Activation failed. Check the event log for more information
#
CO_E_ACTIVATIONFAILED_EVENTLOGGED = 0x08004E022

#
# MessageId: CO_E_ACTIVATIONFAILED_CATALOGERROR
#
# MessageText:
#
#  COM+ Activation failed due to a catalog or configuration error.
#
CO_E_ACTIVATIONFAILED_CATALOGERROR = 0x08004E023

#
# MessageId: CO_E_ACTIVATIONFAILED_TIMEOUT
#
# MessageText:
#
#  COM+ activation failed because the activation could not be completed in the specified amount of time.
#
CO_E_ACTIVATIONFAILED_TIMEOUT    = 0x08004E024

#
# MessageId: CO_E_INITIALIZATIONFAILED
#
# MessageText:
#
#  COM+ Activation failed because an initialization function failed.  Check the event log for more information.
#
CO_E_INITIALIZATIONFAILED        = 0x08004E025

#
# MessageId: CONTEXT_E_NOJIT
#
# MessageText:
#
#  The requested operation requires that JIT be in the current context and it is not
#
CONTEXT_E_NOJIT                  = 0x08004E026

#
# MessageId: CONTEXT_E_NOTRANSACTION
#
# MessageText:
#
#  The requested operation requires that the current context have a Transaction, and it does not
#
CONTEXT_E_NOTRANSACTION          = 0x08004E027

#
# MessageId: CO_E_THREADINGMODEL_CHANGED
#
# MessageText:
#
#  The components threading model has changed after install into a COM+ Application.  Please re-install component.
#
CO_E_THREADINGMODEL_CHANGED      = 0x08004E028

#
# MessageId: CO_E_NOIISINTRINSICS
#
# MessageText:
#
#  IIS intrinsics not available.  Start your work with IIS.
#
CO_E_NOIISINTRINSICS             = 0x08004E029

#
# MessageId: CO_E_NOCOOKIES
#
# MessageText:
#
#  An attempt to write a cookie failed.
#
CO_E_NOCOOKIES                   = 0x08004E02A

#
# MessageId: CO_E_DBERROR
#
# MessageText:
#
#  An attempt to use a database generated a database specific error.
#
CO_E_DBERROR                     = 0x08004E02B

#
# MessageId: CO_E_NOTPOOLED
#
# MessageText:
#
#  The COM+ component you created must use object pooling to work.
#
CO_E_NOTPOOLED                   = 0x08004E02C

#
# MessageId: CO_E_NOTCONSTRUCTED
#
# MessageText:
#
#  The COM+ component you created must use object construction to work correctly.
#
CO_E_NOTCONSTRUCTED              = 0x08004E02D

#
# MessageId: CO_E_NOSYNCHRONIZATION
#
# MessageText:
#
#  The COM+ component requires synchronization, and it is not configured for it.
#
CO_E_NOSYNCHRONIZATION           = 0x08004E02E

#
# MessageId: CO_E_ISOLEVELMISMATCH
#
# MessageText:
#
#  The TxIsolation Level property for the COM+ component being created is stronger than the TxIsolationLevel for the "root" component for the transaction.  The creation failed.
#
CO_E_ISOLEVELMISMATCH            = 0x08004E02F

#
# Old OLE Success Codes
#
#
# MessageId: OLE_S_USEREG
#
# MessageText:
#
#  Use the registry database to provide the requested information
#
OLE_S_USEREG                     = 0x000040000

#
# MessageId: OLE_S_STATIC
#
# MessageText:
#
#  Success, but static
#
OLE_S_STATIC                     = 0x000040001

#
# MessageId: OLE_S_MAC_CLIPFORMAT
#
# MessageText:
#
#  Macintosh clipboard format
#
OLE_S_MAC_CLIPFORMAT             = 0x000040002

#
# MessageId: DRAGDROP_S_DROP
#
# MessageText:
#
#  Successful drop took place
#
DRAGDROP_S_DROP                  = 0x000040100

#
# MessageId: DRAGDROP_S_CANCEL
#
# MessageText:
#
#  Drag-drop operation canceled
#
DRAGDROP_S_CANCEL                = 0x000040101

#
# MessageId: DRAGDROP_S_USEDEFAULTCURSORS
#
# MessageText:
#
#  Use the default cursor
#
DRAGDROP_S_USEDEFAULTCURSORS     = 0x000040102

#
# MessageId: DATA_S_SAMEFORMATETC
#
# MessageText:
#
#  Data has same FORMATETC
#
DATA_S_SAMEFORMATETC             = 0x000040130

#
# MessageId: VIEW_S_ALREADY_FROZEN
#
# MessageText:
#
#  View is already frozen
#
VIEW_S_ALREADY_FROZEN            = 0x000040140

#
# MessageId: CACHE_S_FORMATETC_NOTSUPPORTED
#
# MessageText:
#
#  FORMATETC not supported
#
CACHE_S_FORMATETC_NOTSUPPORTED   = 0x000040170

#
# MessageId: CACHE_S_SAMECACHE
#
# MessageText:
#
#  Same cache
#
CACHE_S_SAMECACHE                = 0x000040171

#
# MessageId: CACHE_S_SOMECACHES_NOTUPDATED
#
# MessageText:
#
#  Some cache(s) not updated
#
CACHE_S_SOMECACHES_NOTUPDATED    = 0x000040172

#
# MessageId: OLEOBJ_S_INVALIDVERB
#
# MessageText:
#
#  Invalid verb for OLE object
#
OLEOBJ_S_INVALIDVERB             = 0x000040180

#
# MessageId: OLEOBJ_S_CANNOT_DOVERB_NOW
#
# MessageText:
#
#  Verb number is valid but verb cannot be done now
#
OLEOBJ_S_CANNOT_DOVERB_NOW       = 0x000040181

#
# MessageId: OLEOBJ_S_INVALIDHWND
#
# MessageText:
#
#  Invalid window handle passed
#
OLEOBJ_S_INVALIDHWND             = 0x000040182

#
# MessageId: INPLACE_S_TRUNCATED
#
# MessageText:
#
#  Message is too long; some of it had to be truncated before displaying
#
INPLACE_S_TRUNCATED              = 0x0000401A0

#
# MessageId: CONVERT10_S_NO_PRESENTATION
#
# MessageText:
#
#  Unable to convert OLESTREAM to IStorage
#
CONVERT10_S_NO_PRESENTATION      = 0x0000401C0

#
# MessageId: MK_S_REDUCED_TO_SELF
#
# MessageText:
#
#  Moniker reduced to itself
#
MK_S_REDUCED_TO_SELF             = 0x0000401E2

#
# MessageId: MK_S_ME
#
# MessageText:
#
#  Common prefix is this moniker
#
MK_S_ME                          = 0x0000401E4

#
# MessageId: MK_S_HIM
#
# MessageText:
#
#  Common prefix is input moniker
#
MK_S_HIM                         = 0x0000401E5

#
# MessageId: MK_S_US
#
# MessageText:
#
#  Common prefix is both monikers
#
MK_S_US                          = 0x0000401E6

#
# MessageId: MK_S_MONIKERALREADYREGISTERED
#
# MessageText:
#
#  Moniker is already registered in running object table
#
MK_S_MONIKERALREADYREGISTERED    = 0x0000401E7

#
# Task Scheduler errors
#
#
# MessageId: SCHED_S_TASK_READY
#
# MessageText:
#
#  The task is ready to run at its next scheduled time.
#
SCHED_S_TASK_READY               = 0x000041300

#
# MessageId: SCHED_S_TASK_RUNNING
#
# MessageText:
#
#  The task is currently running.
#
SCHED_S_TASK_RUNNING             = 0x000041301

#
# MessageId: SCHED_S_TASK_DISABLED
#
# MessageText:
#
#  The task will not run at the scheduled times because it has been disabled.
#
SCHED_S_TASK_DISABLED            = 0x000041302

#
# MessageId: SCHED_S_TASK_HAS_NOT_RUN
#
# MessageText:
#
#  The task has not yet run.
#
SCHED_S_TASK_HAS_NOT_RUN         = 0x000041303

#
# MessageId: SCHED_S_TASK_NO_MORE_RUNS
#
# MessageText:
#
#  There are no more runs scheduled for this task.
#
SCHED_S_TASK_NO_MORE_RUNS        = 0x000041304

#
# MessageId: SCHED_S_TASK_NOT_SCHEDULED
#
# MessageText:
#
#  One or more of the properties that are needed to run this task on a schedule have not been set.
#
SCHED_S_TASK_NOT_SCHEDULED       = 0x000041305

#
# MessageId: SCHED_S_TASK_TERMINATED
#
# MessageText:
#
#  The last run of the task was terminated by the user.
#
SCHED_S_TASK_TERMINATED          = 0x000041306

#
# MessageId: SCHED_S_TASK_NO_VALID_TRIGGERS
#
# MessageText:
#
#  Either the task has no triggers or the existing triggers are disabled or not set.
#
SCHED_S_TASK_NO_VALID_TRIGGERS   = 0x000041307

#
# MessageId: SCHED_S_EVENT_TRIGGER
#
# MessageText:
#
#  Event triggers don#t have set run times.
#
SCHED_S_EVENT_TRIGGER            = 0x000041308

#
# MessageId: SCHED_E_TRIGGER_NOT_FOUND
#
# MessageText:
#
#  Trigger not found.
#
SCHED_E_TRIGGER_NOT_FOUND        = 0x080041309

#
# MessageId: SCHED_E_TASK_NOT_READY
#
# MessageText:
#
#  One or more of the properties that are needed to run this task have not been set.
#
SCHED_E_TASK_NOT_READY           = 0x08004130A

#
# MessageId: SCHED_E_TASK_NOT_RUNNING
#
# MessageText:
#
#  There is no running instance of the task to terminate.
#
SCHED_E_TASK_NOT_RUNNING         = 0x08004130B

#
# MessageId: SCHED_E_SERVICE_NOT_INSTALLED
#
# MessageText:
#
#  The Task Scheduler Service is not installed on this computer.
#
SCHED_E_SERVICE_NOT_INSTALLED    = 0x08004130C

#
# MessageId: SCHED_E_CANNOT_OPEN_TASK
#
# MessageText:
#
#  The task object could not be opened.
#
SCHED_E_CANNOT_OPEN_TASK         = 0x08004130D

#
# MessageId: SCHED_E_INVALID_TASK
#
# MessageText:
#
#  The object is either an invalid task object or is not a task object.
#
SCHED_E_INVALID_TASK             = 0x08004130E

#
# MessageId: SCHED_E_ACCOUNT_INFORMATION_NOT_SET
#
# MessageText:
#
#  No account information could be found in the Task Scheduler security database for the task indicated.
#
SCHED_E_ACCOUNT_INFORMATION_NOT_SET = 0x08004130F

#
# MessageId: SCHED_E_ACCOUNT_NAME_NOT_FOUND
#
# MessageText:
#
#  Unable to establish existence of the account specified.
#
SCHED_E_ACCOUNT_NAME_NOT_FOUND   = 0x080041310

#
# MessageId: SCHED_E_ACCOUNT_DBASE_CORRUPT
#
# MessageText:
#
#  Corruption was detected in the Task Scheduler security database; the database has been reset.
#
SCHED_E_ACCOUNT_DBASE_CORRUPT    = 0x080041311

#
# MessageId: SCHED_E_NO_SECURITY_SERVICES
#
# MessageText:
#
#  Task Scheduler security services are available only on Windows NT.
#
SCHED_E_NO_SECURITY_SERVICES     = 0x080041312

#
# MessageId: SCHED_E_UNKNOWN_OBJECT_VERSION
#
# MessageText:
#
#  The task object version is either unsupported or invalid.
#
SCHED_E_UNKNOWN_OBJECT_VERSION   = 0x080041313

#
# MessageId: SCHED_E_UNSUPPORTED_ACCOUNT_OPTION
#
# MessageText:
#
#  The task has been configured with an unsupported combination of account settings and run time options.
#
SCHED_E_UNSUPPORTED_ACCOUNT_OPTION = 0x080041314

#
# MessageId: SCHED_E_SERVICE_NOT_RUNNING
#
# MessageText:
#
#  The Task Scheduler Service is not running.
#
SCHED_E_SERVICE_NOT_RUNNING      = 0x080041315

# ******************
# FACILITY_WINDOWS
# ******************
#
# Codes= 0x00-0x01ff are reserved for the OLE group of
# interfaces.
#
#
# MessageId: CO_E_CLASS_CREATE_FAILED
#
# MessageText:
#
#  Attempt to create a class object failed
#
CO_E_CLASS_CREATE_FAILED         = 0x080080001

#
# MessageId: CO_E_SCM_ERROR
#
# MessageText:
#
#  OLE service could not bind object
#
CO_E_SCM_ERROR                   = 0x080080002

#
# MessageId: CO_E_SCM_RPC_FAILURE
#
# MessageText:
#
#  RPC communication failed with OLE service
#
CO_E_SCM_RPC_FAILURE             = 0x080080003

#
# MessageId: CO_E_BAD_PATH
#
# MessageText:
#
#  Bad path to object
#
CO_E_BAD_PATH                    = 0x080080004

#
# MessageId: CO_E_SERVER_EXEC_FAILURE
#
# MessageText:
#
#  Server execution failed
#
CO_E_SERVER_EXEC_FAILURE         = 0x080080005

#
# MessageId: CO_E_OBJSRV_RPC_FAILURE
#
# MessageText:
#
#  OLE service could not communicate with the object server
#
CO_E_OBJSRV_RPC_FAILURE          = 0x080080006

#
# MessageId: MK_E_NO_NORMALIZED
#
# MessageText:
#
#  Moniker path could not be normalized
#
MK_E_NO_NORMALIZED               = 0x080080007

#
# MessageId: CO_E_SERVER_STOPPING
#
# MessageText:
#
#  Object server is stopping when OLE service contacts it
#
CO_E_SERVER_STOPPING             = 0x080080008

#
# MessageId: MEM_E_INVALID_ROOT
#
# MessageText:
#
#  An invalid root block pointer was specified
#
MEM_E_INVALID_ROOT               = 0x080080009

#
# MessageId: MEM_E_INVALID_LINK
#
# MessageText:
#
#  An allocation chain contained an invalid link pointer
#
MEM_E_INVALID_LINK               = 0x080080010

#
# MessageId: MEM_E_INVALID_SIZE
#
# MessageText:
#
#  The requested allocation size was too large
#
MEM_E_INVALID_SIZE               = 0x080080011

#
# MessageId: CO_S_NOTALLINTERFACES
#
# MessageText:
#
#  Not all the requested interfaces were available
#
CO_S_NOTALLINTERFACES            = 0x000080012

#
# MessageId: CO_S_MACHINENAMENOTFOUND
#
# MessageText:
#
#  The specified machine name was not found in the cache.
#
CO_S_MACHINENAMENOTFOUND         = 0x000080013

# ******************
# FACILITY_DISPATCH
# ******************
#
# MessageId: DISP_E_UNKNOWNINTERFACE
#
# MessageText:
#
#  Unknown interface.
#
DISP_E_UNKNOWNINTERFACE          = 0x080020001

#
# MessageId: DISP_E_MEMBERNOTFOUND
#
# MessageText:
#
#  Member not found.
#
DISP_E_MEMBERNOTFOUND            = 0x080020003

#
# MessageId: DISP_E_PARAMNOTFOUND
#
# MessageText:
#
#  Parameter not found.
#
DISP_E_PARAMNOTFOUND             = 0x080020004

#
# MessageId: DISP_E_TYPEMISMATCH
#
# MessageText:
#
#  Type mismatch.
#
DISP_E_TYPEMISMATCH              = 0x080020005

#
# MessageId: DISP_E_UNKNOWNNAME
#
# MessageText:
#
#  Unknown name.
#
DISP_E_UNKNOWNNAME               = 0x080020006

#
# MessageId: DISP_E_NONAMEDARGS
#
# MessageText:
#
#  No named arguments.
#
DISP_E_NONAMEDARGS               = 0x080020007

#
# MessageId: DISP_E_BADVARTYPE
#
# MessageText:
#
#  Bad variable type.
#
DISP_E_BADVARTYPE                = 0x080020008

#
# MessageId: DISP_E_EXCEPTION
#
# MessageText:
#
#  Exception occurred.
#
DISP_E_EXCEPTION                 = 0x080020009

#
# MessageId: DISP_E_OVERFLOW
#
# MessageText:
#
#  Out of present range.
#
DISP_E_OVERFLOW                  = 0x08002000A

#
# MessageId: DISP_E_BADINDEX
#
# MessageText:
#
#  Invalid index.
#
DISP_E_BADINDEX                  = 0x08002000B

#
# MessageId: DISP_E_UNKNOWNLCID
#
# MessageText:
#
#  Unknown language.
#
DISP_E_UNKNOWNLCID               = 0x08002000C

#
# MessageId: DISP_E_ARRAYISLOCKED
#
# MessageText:
#
#  Memory is locked.
#
DISP_E_ARRAYISLOCKED             = 0x08002000D

#
# MessageId: DISP_E_BADPARAMCOUNT
#
# MessageText:
#
#  Invalid number of parameters.
#
DISP_E_BADPARAMCOUNT             = 0x08002000E

#
# MessageId: DISP_E_PARAMNOTOPTIONAL
#
# MessageText:
#
#  Parameter not optional.
#
DISP_E_PARAMNOTOPTIONAL          = 0x08002000F

#
# MessageId: DISP_E_BADCALLEE
#
# MessageText:
#
#  Invalid callee.
#
DISP_E_BADCALLEE                 = 0x080020010

#
# MessageId: DISP_E_NOTACOLLECTION
#
# MessageText:
#
#  Does not support a collection.
#
DISP_E_NOTACOLLECTION            = 0x080020011

#
# MessageId: DISP_E_DIVBYZERO
#
# MessageText:
#
#  Division by zero.
#
DISP_E_DIVBYZERO                 = 0x080020012

#
# MessageId: DISP_E_BUFFERTOOSMALL
#
# MessageText:
#
#  Buffer too small
#
DISP_E_BUFFERTOOSMALL            = 0x080020013

#
# MessageId: TYPE_E_BUFFERTOOSMALL
#
# MessageText:
#
#  Buffer too small.
#
TYPE_E_BUFFERTOOSMALL            = 0x080028016

#
# MessageId: TYPE_E_FIELDNOTFOUND
#
# MessageText:
#
#  Field name not defined in the record.
#
TYPE_E_FIELDNOTFOUND             = 0x080028017

#
# MessageId: TYPE_E_INVDATAREAD
#
# MessageText:
#
#  Old format or invalid type library.
#
TYPE_E_INVDATAREAD               = 0x080028018

#
# MessageId: TYPE_E_UNSUPFORMAT
#
# MessageText:
#
#  Old format or invalid type library.
#
TYPE_E_UNSUPFORMAT               = 0x080028019

#
# MessageId: TYPE_E_REGISTRYACCESS
#
# MessageText:
#
#  Error accessing the OLE registry.
#
TYPE_E_REGISTRYACCESS            = 0x08002801C

#
# MessageId: TYPE_E_LIBNOTREGISTERED
#
# MessageText:
#
#  Library not registered.
#
TYPE_E_LIBNOTREGISTERED          = 0x08002801D

#
# MessageId: TYPE_E_UNDEFINEDTYPE
#
# MessageText:
#
#  Bound to unknown type.
#
TYPE_E_UNDEFINEDTYPE             = 0x080028027

#
# MessageId: TYPE_E_QUALIFIEDNAMEDISALLOWED
#
# MessageText:
#
#  Qualified name disallowed.
#
TYPE_E_QUALIFIEDNAMEDISALLOWED   = 0x080028028

#
# MessageId: TYPE_E_INVALIDSTATE
#
# MessageText:
#
#  Invalid forward reference, or reference to uncompiled type.
#
TYPE_E_INVALIDSTATE              = 0x080028029

#
# MessageId: TYPE_E_WRONGTYPEKIND
#
# MessageText:
#
#  Type mismatch.
#
TYPE_E_WRONGTYPEKIND             = 0x08002802A

#
# MessageId: TYPE_E_ELEMENTNOTFOUND
#
# MessageText:
#
#  Element not found.
#
TYPE_E_ELEMENTNOTFOUND           = 0x08002802B

#
# MessageId: TYPE_E_AMBIGUOUSNAME
#
# MessageText:
#
#  Ambiguous name.
#
TYPE_E_AMBIGUOUSNAME             = 0x08002802C

#
# MessageId: TYPE_E_NAMECONFLICT
#
# MessageText:
#
#  Name already exists in the library.
#
TYPE_E_NAMECONFLICT              = 0x08002802D

#
# MessageId: TYPE_E_UNKNOWNLCID
#
# MessageText:
#
#  Unknown LCID.
#
TYPE_E_UNKNOWNLCID               = 0x08002802E

#
# MessageId: TYPE_E_DLLFUNCTIONNOTFOUND
#
# MessageText:
#
#  Function not defined in specified DLL.
#
TYPE_E_DLLFUNCTIONNOTFOUND       = 0x08002802F

#
# MessageId: TYPE_E_BADMODULEKIND
#
# MessageText:
#
#  Wrong module kind for the operation.
#
TYPE_E_BADMODULEKIND             = 0x0800288BD

#
# MessageId: TYPE_E_SIZETOOBIG
#
# MessageText:
#
#  Size may not exceed 64K.
#
TYPE_E_SIZETOOBIG                = 0x0800288C5

#
# MessageId: TYPE_E_DUPLICATEID
#
# MessageText:
#
#  Duplicate ID in inheritance hierarchy.
#
TYPE_E_DUPLICATEID               = 0x0800288C6

#
# MessageId: TYPE_E_INVALIDID
#
# MessageText:
#
#  Incorrect inheritance depth in standard OLE hmember.
#
TYPE_E_INVALIDID                 = 0x0800288CF

#
# MessageId: TYPE_E_TYPEMISMATCH
#
# MessageText:
#
#  Type mismatch.
#
TYPE_E_TYPEMISMATCH              = 0x080028CA0

#
# MessageId: TYPE_E_OUTOFBOUNDS
#
# MessageText:
#
#  Invalid number of arguments.
#
TYPE_E_OUTOFBOUNDS               = 0x080028CA1

#
# MessageId: TYPE_E_IOERROR
#
# MessageText:
#
#  I/O Error.
#
TYPE_E_IOERROR                   = 0x080028CA2

#
# MessageId: TYPE_E_CANTCREATETMPFILE
#
# MessageText:
#
#  Error creating unique tmp file.
#
TYPE_E_CANTCREATETMPFILE         = 0x080028CA3

#
# MessageId: TYPE_E_CANTLOADLIBRARY
#
# MessageText:
#
#  Error loading type library/DLL.
#
TYPE_E_CANTLOADLIBRARY           = 0x080029C4A

#
# MessageId: TYPE_E_INCONSISTENTPROPFUNCS
#
# MessageText:
#
#  Inconsistent property functions.
#
TYPE_E_INCONSISTENTPROPFUNCS     = 0x080029C83

#
# MessageId: TYPE_E_CIRCULARTYPE
#
# MessageText:
#
#  Circular dependency between types/modules.
#
TYPE_E_CIRCULARTYPE              = 0x080029C84

# ******************
# FACILITY_STORAGE
# ******************
#
# MessageId: STG_E_INVALIDFUNCTION
#
# MessageText:
#
#  Unable to perform requested operation.
#
STG_E_INVALIDFUNCTION            = 0x080030001

#
# MessageId: STG_E_FILENOTFOUND
#
# MessageText:
#
#  1 could not be found.
#
STG_E_FILENOTFOUND               = 0x080030002

#
# MessageId: STG_E_PATHNOTFOUND
#
# MessageText:
#
#  The path 1 could not be found.
#
STG_E_PATHNOTFOUND               = 0x080030003

#
# MessageId: STG_E_TOOMANYOPENFILES
#
# MessageText:
#
#  There are insufficient resources to open another file.
#
STG_E_TOOMANYOPENFILES           = 0x080030004

#
# MessageId: STG_E_ACCESSDENIED
#
# MessageText:
#
#  Access Denied.
#
STG_E_ACCESSDENIED               = 0x080030005

#
# MessageId: STG_E_INVALIDHANDLE
#
# MessageText:
#
#  Attempted an operation on an invalid object.
#
STG_E_INVALIDHANDLE              = 0x080030006

#
# MessageId: STG_E_INSUFFICIENTMEMORY
#
# MessageText:
#
#  There is insufficient memory available to complete operation.
#
STG_E_INSUFFICIENTMEMORY         = 0x080030008

#
# MessageId: STG_E_INVALIDPOINTER
#
# MessageText:
#
#  Invalid pointer error.
#
STG_E_INVALIDPOINTER             = 0x080030009

#
# MessageId: STG_E_NOMOREFILES
#
# MessageText:
#
#  There are no more entries to return.
#
STG_E_NOMOREFILES                = 0x080030012

#
# MessageId: STG_E_DISKISWRITEPROTECTED
#
# MessageText:
#
#  Disk is write-protected.
#
STG_E_DISKISWRITEPROTECTED       = 0x080030013

#
# MessageId: STG_E_SEEKERROR
#
# MessageText:
#
#  An error occurred during a seek operation.
#
STG_E_SEEKERROR                  = 0x080030019

#
# MessageId: STG_E_WRITEFAULT
#
# MessageText:
#
#  A disk error occurred during a write operation.
#
STG_E_WRITEFAULT                 = 0x08003001D

#
# MessageId: STG_E_READFAULT
#
# MessageText:
#
#  A disk error occurred during a read operation.
#
STG_E_READFAULT                  = 0x08003001E

#
# MessageId: STG_E_SHAREVIOLATION
#
# MessageText:
#
#  A share violation has occurred.
#
STG_E_SHAREVIOLATION             = 0x080030020

#
# MessageId: STG_E_LOCKVIOLATION
#
# MessageText:
#
#  A lock violation has occurred.
#
STG_E_LOCKVIOLATION              = 0x080030021

#
# MessageId: STG_E_FILEALREADYEXISTS
#
# MessageText:
#
#  1 already exists.
#
STG_E_FILEALREADYEXISTS          = 0x080030050

#
# MessageId: STG_E_INVALIDPARAMETER
#
# MessageText:
#
#  Invalid parameter error.
#
STG_E_INVALIDPARAMETER           = 0x080030057

#
# MessageId: STG_E_MEDIUMFULL
#
# MessageText:
#
#  There is insufficient disk space to complete operation.
#
STG_E_MEDIUMFULL                 = 0x080030070

#
# MessageId: STG_E_PROPSETMISMATCHED
#
# MessageText:
#
#  Illegal write of non-simple property to simple property set.
#
STG_E_PROPSETMISMATCHED          = 0x0800300F0

#
# MessageId: STG_E_ABNORMALAPIEXIT
#
# MessageText:
#
#  An API call exited abnormally.
#
STG_E_ABNORMALAPIEXIT            = 0x0800300FA

#
# MessageId: STG_E_INVALIDHEADER
#
# MessageText:
#
#  The file 1 is not a valid compound file.
#
STG_E_INVALIDHEADER              = 0x0800300FB

#
# MessageId: STG_E_INVALIDNAME
#
# MessageText:
#
#  The name 1 is not valid.
#
STG_E_INVALIDNAME                = 0x0800300FC

#
# MessageId: STG_E_UNKNOWN
#
# MessageText:
#
#  An unexpected error occurred.
#
STG_E_UNKNOWN                    = 0x0800300FD

#
# MessageId: STG_E_UNIMPLEMENTEDFUNCTION
#
# MessageText:
#
#  That function is not implemented.
#
STG_E_UNIMPLEMENTEDFUNCTION      = 0x0800300FE

#
# MessageId: STG_E_INVALIDFLAG
#
# MessageText:
#
#  Invalid flag error.
#
STG_E_INVALIDFLAG                = 0x0800300FF

#
# MessageId: STG_E_INUSE
#
# MessageText:
#
#  Attempted to use an object that is busy.
#
STG_E_INUSE                      = 0x080030100

#
# MessageId: STG_E_NOTCURRENT
#
# MessageText:
#
#  The storage has been changed since the last commit.
#
STG_E_NOTCURRENT                 = 0x080030101

#
# MessageId: STG_E_REVERTED
#
# MessageText:
#
#  Attempted to use an object that has ceased to exist.
#
STG_E_REVERTED                   = 0x080030102

#
# MessageId: STG_E_CANTSAVE
#
# MessageText:
#
#  Can#t save.
#
STG_E_CANTSAVE                   = 0x080030103

#
# MessageId: STG_E_OLDFORMAT
#
# MessageText:
#
#  The compound file 1 was produced with an incompatible version of storage.
#
STG_E_OLDFORMAT                  = 0x080030104

#
# MessageId: STG_E_OLDDLL
#
# MessageText:
#
#  The compound file 1 was produced with a newer version of storage.
#
STG_E_OLDDLL                     = 0x080030105

#
# MessageId: STG_E_SHAREREQUIRED
#
# MessageText:
#
#  Share.exe or equivalent is required for operation.
#
STG_E_SHAREREQUIRED              = 0x080030106

#
# MessageId: STG_E_NOTFILEBASEDSTORAGE
#
# MessageText:
#
#  Illegal operation called on non-file based storage.
#
STG_E_NOTFILEBASEDSTORAGE        = 0x080030107

#
# MessageId: STG_E_EXTANTMARSHALLINGS
#
# MessageText:
#
#  Illegal operation called on object with extant marshallings.
#
STG_E_EXTANTMARSHALLINGS         = 0x080030108

#
# MessageId: STG_E_DOCFILECORRUPT
#
# MessageText:
#
#  The docfile has been corrupted.
#
STG_E_DOCFILECORRUPT             = 0x080030109

#
# MessageId: STG_E_BADBASEADDRESS
#
# MessageText:
#
#  OLE32.DLL has been loaded at the wrong address.
#
STG_E_BADBASEADDRESS             = 0x080030110

#
# MessageId: STG_E_DOCFILETOOLARGE
#
# MessageText:
#
#  The compound file is too large for the current implementation
#
STG_E_DOCFILETOOLARGE            = 0x080030111

#
# MessageId: STG_E_NOTSIMPLEFORMAT
#
# MessageText:
#
#  The compound file was not created with the STGM_SIMPLE flag
#
STG_E_NOTSIMPLEFORMAT            = 0x080030112

#
# MessageId: STG_E_INCOMPLETE
#
# MessageText:
#
#  The file download was aborted abnormally.  The file is incomplete.
#
STG_E_INCOMPLETE                 = 0x080030201

#
# MessageId: STG_E_TERMINATED
#
# MessageText:
#
#  The file download has been terminated.
#
STG_E_TERMINATED                 = 0x080030202

#
# MessageId: STG_S_CONVERTED
#
# MessageText:
#
#  The underlying file was converted to compound file format.
#
STG_S_CONVERTED                  = 0x000030200

#
# MessageId: STG_S_BLOCK
#
# MessageText:
#
#  The storage operation should block until more data is available.
#
STG_S_BLOCK                      = 0x000030201

#
# MessageId: STG_S_RETRYNOW
#
# MessageText:
#
#  The storage operation should retry immediately.
#
STG_S_RETRYNOW                   = 0x000030202

#
# MessageId: STG_S_MONITORING
#
# MessageText:
#
#  The notified event sink will not influence the storage operation.
#
STG_S_MONITORING                 = 0x000030203

#
# MessageId: STG_S_MULTIPLEOPENS
#
# MessageText:
#
#  Multiple opens prevent consolidated. (commit succeeded).
#
STG_S_MULTIPLEOPENS              = 0x000030204

#
# MessageId: STG_S_CONSOLIDATIONFAILED
#
# MessageText:
#
#  Consolidation of the storage file failed. (commit succeeded).
#
STG_S_CONSOLIDATIONFAILED        = 0x000030205

#
# MessageId: STG_S_CANNOTCONSOLIDATE
#
# MessageText:
#
#  Consolidation of the storage file is inappropriate. (commit succeeded).
#
STG_S_CANNOTCONSOLIDATE          = 0x000030206


# MessageId#s= 0x00305 -= 0x0031f (inclusive) are reserved for **STORAGE**
# copy protection errors.

#
# MessageId: STG_E_STATUS_COPY_PROTECTION_FAILURE
#
# MessageText:
#
#  Generic Copy Protection Error.
#
STG_E_STATUS_COPY_PROTECTION_FAILURE = 0x080030305

#
# MessageId: STG_E_CSS_AUTHENTICATION_FAILURE
#
# MessageText:
#
#  Copy Protection Error - DVD CSS Authentication failed.
#
STG_E_CSS_AUTHENTICATION_FAILURE = 0x080030306

#
# MessageId: STG_E_CSS_KEY_NOT_PRESENT
#
# MessageText:
#
#  Copy Protection Error - The given sector does not have a valid CSS key.
#
STG_E_CSS_KEY_NOT_PRESENT        = 0x080030307

#
# MessageId: STG_E_CSS_KEY_NOT_ESTABLISHED
#
# MessageText:
#
#  Copy Protection Error - DVD session key not established.
#
STG_E_CSS_KEY_NOT_ESTABLISHED    = 0x080030308

#
# MessageId: STG_E_CSS_SCRAMBLED_SECTOR
#
# MessageText:
#
#  Copy Protection Error - The read failed because the sector is encrypted.
#
STG_E_CSS_SCRAMBLED_SECTOR       = 0x080030309

#
# MessageId: STG_E_CSS_REGION_MISMATCH
#
# MessageText:
#
#  Copy Protection Error - The current DVD#s region does not correspond to the region setting of the drive.
#
STG_E_CSS_REGION_MISMATCH        = 0x08003030A

#
# MessageId: STG_E_RESETS_EXHAUSTED
#
# MessageText:
#
#  Copy Protection Error - The drive#s region setting may be permanent or the number of user resets has been exhausted.
#
STG_E_RESETS_EXHAUSTED           = 0x08003030B


# MessageId#s= 0x00305 -= 0x0031f (inclusive) are reserved for **STORAGE**
# copy protection errors.

# ******************
# FACILITY_RPC
# ******************
#
# Codes= 0x00-0x11 are propagated from 16 bit OLE.
#
#
# MessageId: RPC_E_CALL_REJECTED
#
# MessageText:
#
#  Call was rejected by callee.
#
RPC_E_CALL_REJECTED              = 0x080010001

#
# MessageId: RPC_E_CALL_CANCELED
#
# MessageText:
#
#  Call was canceled by the message filter.
#
RPC_E_CALL_CANCELED              = 0x080010002

#
# MessageId: RPC_E_CANTPOST_INSENDCALL
#
# MessageText:
#
#  The caller is dispatching an intertask SendMessage call and cannot call out via PostMessage.
#
RPC_E_CANTPOST_INSENDCALL        = 0x080010003

#
# MessageId: RPC_E_CANTCALLOUT_INASYNCCALL
#
# MessageText:
#
#  The caller is dispatching an asynchronous call and cannot make an outgoing call on behalf of this call.
#
RPC_E_CANTCALLOUT_INASYNCCALL    = 0x080010004

#
# MessageId: RPC_E_CANTCALLOUT_INEXTERNALCALL
#
# MessageText:
#
#  It is illegal to call out while inside message filter.
#
RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x080010005

#
# MessageId: RPC_E_CONNECTION_TERMINATED
#
# MessageText:
#
#  The connection terminated or is in a bogus state and cannot be used any more. Other connections are still valid.
#
RPC_E_CONNECTION_TERMINATED      = 0x080010006

#
# MessageId: RPC_E_SERVER_DIED
#
# MessageText:
#
#  The callee (server [not server application]) is not available and disappeared; all connections are invalid. The call may have executed.
#
RPC_E_SERVER_DIED                = 0x080010007

#
# MessageId: RPC_E_CLIENT_DIED
#
# MessageText:
#
#  The caller (client) disappeared while the callee (server) was processing a call.
#
RPC_E_CLIENT_DIED                = 0x080010008

#
# MessageId: RPC_E_INVALID_DATAPACKET
#
# MessageText:
#
#  The data packet with the marshalled parameter data is incorrect.
#
RPC_E_INVALID_DATAPACKET         = 0x080010009

#
# MessageId: RPC_E_CANTTRANSMIT_CALL
#
# MessageText:
#
#  The call was not transmitted properly; the message queue was full and was not emptied after yielding.
#
RPC_E_CANTTRANSMIT_CALL          = 0x08001000A

#
# MessageId: RPC_E_CLIENT_CANTMARSHAL_DATA
#
# MessageText:
#
#  The client (caller) cannot marshall the parameter data - low memory, etc.
#
RPC_E_CLIENT_CANTMARSHAL_DATA    = 0x08001000B

#
# MessageId: RPC_E_CLIENT_CANTUNMARSHAL_DATA
#
# MessageText:
#
#  The client (caller) cannot unmarshall the return data - low memory, etc.
#
RPC_E_CLIENT_CANTUNMARSHAL_DATA  = 0x08001000C

#
# MessageId: RPC_E_SERVER_CANTMARSHAL_DATA
#
# MessageText:
#
#  The server (callee) cannot marshall the return data - low memory, etc.
#
RPC_E_SERVER_CANTMARSHAL_DATA    = 0x08001000D

#
# MessageId: RPC_E_SERVER_CANTUNMARSHAL_DATA
#
# MessageText:
#
#  The server (callee) cannot unmarshall the parameter data - low memory, etc.
#
RPC_E_SERVER_CANTUNMARSHAL_DATA  = 0x08001000E

#
# MessageId: RPC_E_INVALID_DATA
#
# MessageText:
#
#  Received data is invalid; could be server or client data.
#
RPC_E_INVALID_DATA               = 0x08001000F

#
# MessageId: RPC_E_INVALID_PARAMETER
#
# MessageText:
#
#  A particular parameter is invalid and cannot be (un)marshalled.
#
RPC_E_INVALID_PARAMETER          = 0x080010010

#
# MessageId: RPC_E_CANTCALLOUT_AGAIN
#
# MessageText:
#
#  There is no second outgoing call on same channel in DDE conversation.
#
RPC_E_CANTCALLOUT_AGAIN          = 0x080010011

#
# MessageId: RPC_E_SERVER_DIED_DNE
#
# MessageText:
#
#  The callee (server [not server application]) is not available and disappeared; all connections are invalid. The call did not execute.
#
RPC_E_SERVER_DIED_DNE            = 0x080010012

#
# MessageId: RPC_E_SYS_CALL_FAILED
#
# MessageText:
#
#  System call failed.
#
RPC_E_SYS_CALL_FAILED            = 0x080010100

#
# MessageId: RPC_E_OUT_OF_RESOURCES
#
# MessageText:
#
#  Could not allocate some required resource (memory, events, ...)
#
RPC_E_OUT_OF_RESOURCES           = 0x080010101

#
# MessageId: RPC_E_ATTEMPTED_MULTITHREAD
#
# MessageText:
#
#  Attempted to make calls on more than one thread in single threaded mode.
#
RPC_E_ATTEMPTED_MULTITHREAD      = 0x080010102

#
# MessageId: RPC_E_NOT_REGISTERED
#
# MessageText:
#
#  The requested interface is not registered on the server object.
#
RPC_E_NOT_REGISTERED             = 0x080010103

#
# MessageId: RPC_E_FAULT
#
# MessageText:
#
#  RPC could not call the server or could not return the results of calling the server.
#
RPC_E_FAULT                      = 0x080010104

#
# MessageId: RPC_E_SERVERFAULT
#
# MessageText:
#
#  The server threw an exception.
#
RPC_E_SERVERFAULT                = 0x080010105

#
# MessageId: RPC_E_CHANGED_MODE
#
# MessageText:
#
#  Cannot change thread mode after it is set.
#
RPC_E_CHANGED_MODE               = 0x080010106

#
# MessageId: RPC_E_INVALIDMETHOD
#
# MessageText:
#
#  The method called does not exist on the server.
#
RPC_E_INVALIDMETHOD              = 0x080010107

#
# MessageId: RPC_E_DISCONNECTED
#
# MessageText:
#
#  The object invoked has disconnected from its clients.
#
RPC_E_DISCONNECTED               = 0x080010108

#
# MessageId: RPC_E_RETRY
#
# MessageText:
#
#  The object invoked chose not to process the call now.  Try again later.
#
RPC_E_RETRY                      = 0x080010109

#
# MessageId: RPC_E_SERVERCALL_RETRYLATER
#
# MessageText:
#
#  The message filter indicated that the application is busy.
#
RPC_E_SERVERCALL_RETRYLATER      = 0x08001010A

#
# MessageId: RPC_E_SERVERCALL_REJECTED
#
# MessageText:
#
#  The message filter rejected the call.
#
RPC_E_SERVERCALL_REJECTED        = 0x08001010B

#
# MessageId: RPC_E_INVALID_CALLDATA
#
# MessageText:
#
#  A call control interfaces was called with invalid data.
#
RPC_E_INVALID_CALLDATA           = 0x08001010C

#
# MessageId: RPC_E_CANTCALLOUT_ININPUTSYNCCALL
#
# MessageText:
#
#  An outgoing call cannot be made since the application is dispatching an input-synchronous call.
#
RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x08001010D

#
# MessageId: RPC_E_WRONG_THREAD
#
# MessageText:
#
#  The application called an interface that was marshalled for a different thread.
#
RPC_E_WRONG_THREAD               = 0x08001010E

#
# MessageId: RPC_E_THREAD_NOT_INIT
#
# MessageText:
#
#  CoInitialize has not been called on the current thread.
#
RPC_E_THREAD_NOT_INIT            = 0x08001010F

#
# MessageId: RPC_E_VERSION_MISMATCH
#
# MessageText:
#
#  The version of OLE on the client and server machines does not match.
#
RPC_E_VERSION_MISMATCH           = 0x080010110

#
# MessageId: RPC_E_INVALID_HEADER
#
# MessageText:
#
#  OLE received a packet with an invalid header.
#
RPC_E_INVALID_HEADER             = 0x080010111

#
# MessageId: RPC_E_INVALID_EXTENSION
#
# MessageText:
#
#  OLE received a packet with an invalid extension.
#
RPC_E_INVALID_EXTENSION          = 0x080010112

#
# MessageId: RPC_E_INVALID_IPID
#
# MessageText:
#
#  The requested object or interface does not exist.
#
RPC_E_INVALID_IPID               = 0x080010113

#
# MessageId: RPC_E_INVALID_OBJECT
#
# MessageText:
#
#  The requested object does not exist.
#
RPC_E_INVALID_OBJECT             = 0x080010114

#
# MessageId: RPC_S_CALLPENDING
#
# MessageText:
#
#  OLE has sent a request and is waiting for a reply.
#
RPC_S_CALLPENDING                = 0x080010115

#
# MessageId: RPC_S_WAITONTIMER
#
# MessageText:
#
#  OLE is waiting before retrying a request.
#
RPC_S_WAITONTIMER                = 0x080010116

#
# MessageId: RPC_E_CALL_COMPLETE
#
# MessageText:
#
#  Call context cannot be accessed after call completed.
#
RPC_E_CALL_COMPLETE              = 0x080010117

#
# MessageId: RPC_E_UNSECURE_CALL
#
# MessageText:
#
#  Impersonate on unsecure calls is not supported.
#
RPC_E_UNSECURE_CALL              = 0x080010118

#
# MessageId: RPC_E_TOO_LATE
#
# MessageText:
#
#  Security must be initialized before any interfaces are marshalled or unmarshalled. It cannot be changed once initialized.
#
RPC_E_TOO_LATE                   = 0x080010119

#
# MessageId: RPC_E_NO_GOOD_SECURITY_PACKAGES
#
# MessageText:
#
#  No security packages are installed on this machine or the user is not logged on or there are no compatible security packages between the client and server.
#
RPC_E_NO_GOOD_SECURITY_PACKAGES  = 0x08001011A

#
# MessageId: RPC_E_ACCESS_DENIED
#
# MessageText:
#
#  Access is denied.
#
RPC_E_ACCESS_DENIED              = 0x08001011B

#
# MessageId: RPC_E_REMOTE_DISABLED
#
# MessageText:
#
#  Remote calls are not allowed for this process.
#
RPC_E_REMOTE_DISABLED            = 0x08001011C

#
# MessageId: RPC_E_INVALID_OBJREF
#
# MessageText:
#
#  The marshaled interface data packet (OBJREF) has an invalid or unknown format.
#
RPC_E_INVALID_OBJREF             = 0x08001011D

#
# MessageId: RPC_E_NO_CONTEXT
#
# MessageText:
#
#  No context is associated with this call. This happens for some custom marshalled calls and on the client side of the call.
#
RPC_E_NO_CONTEXT                 = 0x08001011E

#
# MessageId: RPC_E_TIMEOUT
#
# MessageText:
#
#  This operation returned because the timeout period expired.
#
RPC_E_TIMEOUT                    = 0x08001011F

#
# MessageId: RPC_E_NO_SYNC
#
# MessageText:
#
#  There are no synchronize objects to wait on.
#
RPC_E_NO_SYNC                    = 0x080010120

#
# MessageId: RPC_E_FULLSIC_REQUIRED
#
# MessageText:
#
#  Full subject issuer chain SSL principal name expected from the server.
#
RPC_E_FULLSIC_REQUIRED           = 0x080010121

#
# MessageId: RPC_E_INVALID_STD_NAME
#
# MessageText:
#
#  Principal name is not a valid MSSTD name.
#
RPC_E_INVALID_STD_NAME           = 0x080010122

#
# MessageId: CO_E_FAILEDTOIMPERSONATE
#
# MessageText:
#
#  Unable to impersonate DCOM client
#
CO_E_FAILEDTOIMPERSONATE         = 0x080010123

#
# MessageId: CO_E_FAILEDTOGETSECCTX
#
# MessageText:
#
#  Unable to obtain server#s security context
#
CO_E_FAILEDTOGETSECCTX           = 0x080010124

#
# MessageId: CO_E_FAILEDTOOPENTHREADTOKEN
#
# MessageText:
#
#  Unable to open the access token of the current thread
#
CO_E_FAILEDTOOPENTHREADTOKEN     = 0x080010125

#
# MessageId: CO_E_FAILEDTOGETTOKENINFO
#
# MessageText:
#
#  Unable to obtain user info from an access token
#
CO_E_FAILEDTOGETTOKENINFO        = 0x080010126

#
# MessageId: CO_E_TRUSTEEDOESNTMATCHCLIENT
#
# MessageText:
#
#  The client who called IAccessControl::IsAccessPermitted was not the trustee provided to the method
#
CO_E_TRUSTEEDOESNTMATCHCLIENT    = 0x080010127

#
# MessageId: CO_E_FAILEDTOQUERYCLIENTBLANKET
#
# MessageText:
#
#  Unable to obtain the client#s security blanket
#
CO_E_FAILEDTOQUERYCLIENTBLANKET  = 0x080010128

#
# MessageId: CO_E_FAILEDTOSETDACL
#
# MessageText:
#
#  Unable to set a discretionary ACL into a security descriptor
#
CO_E_FAILEDTOSETDACL             = 0x080010129

#
# MessageId: CO_E_ACCESSCHECKFAILED
#
# MessageText:
#
#  The system function, AccessCheck, returned false
#
CO_E_ACCESSCHECKFAILED           = 0x08001012A

#
# MessageId: CO_E_NETACCESSAPIFAILED
#
# MessageText:
#
#  Either NetAccessDel or NetAccessAdd returned an error code.
#
CO_E_NETACCESSAPIFAILED          = 0x08001012B

#
# MessageId: CO_E_WRONGTRUSTEENAMESYNTAX
#
# MessageText:
#
#  One of the trustee strings provided by the user did not conform to the <Domain>\<Name> syntax and it was not the "*" string
#
CO_E_WRONGTRUSTEENAMESYNTAX      = 0x08001012C

#
# MessageId: CO_E_INVALIDSID
#
# MessageText:
#
#  One of the security identifiers provided by the user was invalid
#
CO_E_INVALIDSID                  = 0x08001012D

#
# MessageId: CO_E_CONVERSIONFAILED
#
# MessageText:
#
#  Unable to convert a wide character trustee string to a multibyte trustee string
#
CO_E_CONVERSIONFAILED            = 0x08001012E

#
# MessageId: CO_E_NOMATCHINGSIDFOUND
#
# MessageText:
#
#  Unable to find a security identifier that corresponds to a trustee string provided by the user
#
CO_E_NOMATCHINGSIDFOUND          = 0x08001012F

#
# MessageId: CO_E_LOOKUPACCSIDFAILED
#
# MessageText:
#
#  The system function, LookupAccountSID, failed
#
CO_E_LOOKUPACCSIDFAILED          = 0x080010130

#
# MessageId: CO_E_NOMATCHINGNAMEFOUND
#
# MessageText:
#
#  Unable to find a trustee name that corresponds to a security identifier provided by the user
#
CO_E_NOMATCHINGNAMEFOUND         = 0x080010131

#
# MessageId: CO_E_LOOKUPACCNAMEFAILED
#
# MessageText:
#
#  The system function, LookupAccountName, failed
#
CO_E_LOOKUPACCNAMEFAILED         = 0x080010132

#
# MessageId: CO_E_SETSERLHNDLFAILED
#
# MessageText:
#
#  Unable to set or reset a serialization handle
#
CO_E_SETSERLHNDLFAILED           = 0x080010133

#
# MessageId: CO_E_FAILEDTOGETWINDIR
#
# MessageText:
#
#  Unable to obtain the Windows directory
#
CO_E_FAILEDTOGETWINDIR           = 0x080010134

#
# MessageId: CO_E_PATHTOOLONG
#
# MessageText:
#
#  Path too long
#
CO_E_PATHTOOLONG                 = 0x080010135

#
# MessageId: CO_E_FAILEDTOGENUUID
#
# MessageText:
#
#  Unable to generate a uuid.
#
CO_E_FAILEDTOGENUUID             = 0x080010136

#
# MessageId: CO_E_FAILEDTOCREATEFILE
#
# MessageText:
#
#  Unable to create file
#
CO_E_FAILEDTOCREATEFILE          = 0x080010137

#
# MessageId: CO_E_FAILEDTOCLOSEHANDLE
#
# MessageText:
#
#  Unable to close a serialization handle or a file handle.
#
CO_E_FAILEDTOCLOSEHANDLE         = 0x080010138

#
# MessageId: CO_E_EXCEEDSYSACLLIMIT
#
# MessageText:
#
#  The number of ACEs in an ACL exceeds the system limit.
#
CO_E_EXCEEDSYSACLLIMIT           = 0x080010139

#
# MessageId: CO_E_ACESINWRONGORDER
#
# MessageText:
#
#  Not all the DENY_ACCESS ACEs are arranged in front of the GRANT_ACCESS ACEs in the stream.
#
CO_E_ACESINWRONGORDER            = 0x08001013A

#
# MessageId: CO_E_INCOMPATIBLESTREAMVERSION
#
# MessageText:
#
#  The version of ACL format in the stream is not supported by this implementation of IAccessControl
#
CO_E_INCOMPATIBLESTREAMVERSION   = 0x08001013B

#
# MessageId: CO_E_FAILEDTOOPENPROCESSTOKEN
#
# MessageText:
#
#  Unable to open the access token of the server process
#
CO_E_FAILEDTOOPENPROCESSTOKEN    = 0x08001013C

#
# MessageId: CO_E_DECODEFAILED
#
# MessageText:
#
#  Unable to decode the ACL in the stream provided by the user
#
CO_E_DECODEFAILED                = 0x08001013D

#
# MessageId: CO_E_ACNOTINITIALIZED
#
# MessageText:
#
#  The COM IAccessControl object is not initialized
#
CO_E_ACNOTINITIALIZED            = 0x08001013F

#
# MessageId: CO_E_CANCEL_DISABLED
#
# MessageText:
#
#  Call Cancellation is disabled
#
CO_E_CANCEL_DISABLED             = 0x080010140

#
# MessageId: RPC_E_UNEXPECTED
#
# MessageText:
#
#  An internal error occurred.
#
RPC_E_UNEXPECTED                 = 0x08001FFFF



#
#
# Additional Security Status Codes
#
# Facility=Security
#
#


#
# MessageId: ERROR_AUDITING_DISABLED
#
# MessageText:
#
#  The specified event is currently not being audited.
#
ERROR_AUDITING_DISABLED          = 0x0C0090001

#
# MessageId: ERROR_ALL_SIDS_FILTERED
#
# MessageText:
#
#  The SID filtering operation removed all SIDs.
#
ERROR_ALL_SIDS_FILTERED          = 0x0C0090002



#
#
# end of Additional Security Status Codes
#
#



#
#
#  FACILITY_SSPI
#
#

#
# MessageId: NTE_BAD_UID
#
# MessageText:
#
#  Bad UID.
#
NTE_BAD_UID                      = 0x080090001

#
# MessageId: NTE_BAD_HASH
#
# MessageText:
#
#  Bad Hash.
#
NTE_BAD_HASH                     = 0x080090002

#
# MessageId: NTE_BAD_KEY
#
# MessageText:
#
#  Bad Key.
#
NTE_BAD_KEY                      = 0x080090003

#
# MessageId: NTE_BAD_LEN
#
# MessageText:
#
#  Bad Length.
#
NTE_BAD_LEN                      = 0x080090004

#
# MessageId: NTE_BAD_DATA
#
# MessageText:
#
#  Bad Data.
#
NTE_BAD_DATA                     = 0x080090005

#
# MessageId: NTE_BAD_SIGNATURE
#
# MessageText:
#
#  Invalid Signature.
#
NTE_BAD_SIGNATURE                = 0x080090006

#
# MessageId: NTE_BAD_VER
#
# MessageText:
#
#  Bad Version of provider.
#
NTE_BAD_VER                      = 0x080090007

#
# MessageId: NTE_BAD_ALGID
#
# MessageText:
#
#  Invalid algorithm specified.
#
NTE_BAD_ALGID                    = 0x080090008

#
# MessageId: NTE_BAD_FLAGS
#
# MessageText:
#
#  Invalid flags specified.
#
NTE_BAD_FLAGS                    = 0x080090009

#
# MessageId: NTE_BAD_TYPE
#
# MessageText:
#
#  Invalid type specified.
#
NTE_BAD_TYPE                     = 0x08009000A

#
# MessageId: NTE_BAD_KEY_STATE
#
# MessageText:
#
#  Key not valid for use in specified state.
#
NTE_BAD_KEY_STATE                = 0x08009000B

#
# MessageId: NTE_BAD_HASH_STATE
#
# MessageText:
#
#  Hash not valid for use in specified state.
#
NTE_BAD_HASH_STATE               = 0x08009000C

#
# MessageId: NTE_NO_KEY
#
# MessageText:
#
#  Key does not exist.
#
NTE_NO_KEY                       = 0x08009000D

#
# MessageId: NTE_NO_MEMORY
#
# MessageText:
#
#  Insufficient memory available for the operation.
#
NTE_NO_MEMORY                    = 0x08009000E

#
# MessageId: NTE_EXISTS
#
# MessageText:
#
#  Object already exists.
#
NTE_EXISTS                       = 0x08009000F

#
# MessageId: NTE_PERM
#
# MessageText:
#
#  Access denied.
#
NTE_PERM                         = 0x080090010

#
# MessageId: NTE_NOT_FOUND
#
# MessageText:
#
#  Object was not found.
#
NTE_NOT_FOUND                    = 0x080090011

#
# MessageId: NTE_DOUBLE_ENCRYPT
#
# MessageText:
#
#  Data already encrypted.
#
NTE_DOUBLE_ENCRYPT               = 0x080090012

#
# MessageId: NTE_BAD_PROVIDER
#
# MessageText:
#
#  Invalid provider specified.
#
NTE_BAD_PROVIDER                 = 0x080090013

#
# MessageId: NTE_BAD_PROV_TYPE
#
# MessageText:
#
#  Invalid provider type specified.
#
NTE_BAD_PROV_TYPE                = 0x080090014

#
# MessageId: NTE_BAD_PUBLIC_KEY
#
# MessageText:
#
#  Provider#s public key is invalid.
#
NTE_BAD_PUBLIC_KEY               = 0x080090015

#
# MessageId: NTE_BAD_KEYSET
#
# MessageText:
#
#  Keyset does not exist
#
NTE_BAD_KEYSET                   = 0x080090016

#
# MessageId: NTE_PROV_TYPE_NOT_DEF
#
# MessageText:
#
#  Provider type not defined.
#
NTE_PROV_TYPE_NOT_DEF            = 0x080090017

#
# MessageId: NTE_PROV_TYPE_ENTRY_BAD
#
# MessageText:
#
#  Provider type as registered is invalid.
#
NTE_PROV_TYPE_ENTRY_BAD          = 0x080090018

#
# MessageId: NTE_KEYSET_NOT_DEF
#
# MessageText:
#
#  The keyset is not defined.
#
NTE_KEYSET_NOT_DEF               = 0x080090019

#
# MessageId: NTE_KEYSET_ENTRY_BAD
#
# MessageText:
#
#  Keyset as registered is invalid.
#
NTE_KEYSET_ENTRY_BAD             = 0x08009001A

#
# MessageId: NTE_PROV_TYPE_NO_MATCH
#
# MessageText:
#
#  Provider type does not match registered value.
#
NTE_PROV_TYPE_NO_MATCH           = 0x08009001B

#
# MessageId: NTE_SIGNATURE_FILE_BAD
#
# MessageText:
#
#  The digital signature file is corrupt.
#
NTE_SIGNATURE_FILE_BAD           = 0x08009001C

#
# MessageId: NTE_PROVIDER_DLL_FAIL
#
# MessageText:
#
#  Provider DLL failed to initialize correctly.
#
NTE_PROVIDER_DLL_FAIL            = 0x08009001D

#
# MessageId: NTE_PROV_DLL_NOT_FOUND
#
# MessageText:
#
#  Provider DLL could not be found.
#
NTE_PROV_DLL_NOT_FOUND           = 0x08009001E

#
# MessageId: NTE_BAD_KEYSET_PARAM
#
# MessageText:
#
#  The Keyset parameter is invalid.
#
NTE_BAD_KEYSET_PARAM             = 0x08009001F

#
# MessageId: NTE_FAIL
#
# MessageText:
#
#  An internal error occurred.
#
NTE_FAIL                         = 0x080090020

#
# MessageId: NTE_SYS_ERR
#
# MessageText:
#
#  A base error occurred.
#
NTE_SYS_ERR                      = 0x080090021

#
# MessageId: NTE_SILENT_CONTEXT
#
# MessageText:
#
#  Provider could not perform the action since the context was acquired as silent.
#
NTE_SILENT_CONTEXT               = 0x080090022

#
# MessageId: NTE_TOKEN_KEYSET_STORAGE_FULL
#
# MessageText:
#
#  The security token does not have storage space available for an additional container.
#
NTE_TOKEN_KEYSET_STORAGE_FULL    = 0x080090023

#
# MessageId: NTE_TEMPORARY_PROFILE
#
# MessageText:
#
#  The profile for the user is a temporary profile.
#
NTE_TEMPORARY_PROFILE            = 0x080090024

#
# MessageId: NTE_FIXEDPARAMETER
#
# MessageText:
#
#  The key parameters could not be set because the CSP uses fixed parameters.
#
NTE_FIXEDPARAMETER               = 0x080090025

#
# MessageId: SEC_E_INSUFFICIENT_MEMORY
#
# MessageText:
#
#  Not enough memory is available to complete this request
#
SEC_E_INSUFFICIENT_MEMORY        = 0x080090300

#
# MessageId: SEC_E_INVALID_HANDLE
#
# MessageText:
#
#  The handle specified is invalid
#
SEC_E_INVALID_HANDLE             = 0x080090301

#
# MessageId: SEC_E_UNSUPPORTED_FUNCTION
#
# MessageText:
#
#  The function requested is not supported
#
SEC_E_UNSUPPORTED_FUNCTION       = 0x080090302

#
# MessageId: SEC_E_TARGET_UNKNOWN
#
# MessageText:
#
#  The specified target is unknown or unreachable
#
SEC_E_TARGET_UNKNOWN             = 0x080090303

#
# MessageId: SEC_E_INTERNAL_ERROR
#
# MessageText:
#
#  The Local Security Authority cannot be contacted
#
SEC_E_INTERNAL_ERROR             = 0x080090304

#
# MessageId: SEC_E_SECPKG_NOT_FOUND
#
# MessageText:
#
#  The requested security package does not exist
#
SEC_E_SECPKG_NOT_FOUND           = 0x080090305

#
# MessageId: SEC_E_NOT_OWNER
#
# MessageText:
#
#  The caller is not the owner of the desired credentials
#
SEC_E_NOT_OWNER                  = 0x080090306

#
# MessageId: SEC_E_CANNOT_INSTALL
#
# MessageText:
#
#  The security package failed to initialize, and cannot be installed
#
SEC_E_CANNOT_INSTALL             = 0x080090307

#
# MessageId: SEC_E_INVALID_TOKEN
#
# MessageText:
#
#  The token supplied to the function is invalid
#
SEC_E_INVALID_TOKEN              = 0x080090308

#
# MessageId: SEC_E_CANNOT_PACK
#
# MessageText:
#
#  The security package is not able to marshall the logon buffer, so the logon attempt has failed
#
SEC_E_CANNOT_PACK                = 0x080090309

#
# MessageId: SEC_E_QOP_NOT_SUPPORTED
#
# MessageText:
#
#  The per-message Quality of Protection is not supported by the security package
#
SEC_E_QOP_NOT_SUPPORTED          = 0x08009030A

#
# MessageId: SEC_E_NO_IMPERSONATION
#
# MessageText:
#
#  The security context does not allow impersonation of the client
#
SEC_E_NO_IMPERSONATION           = 0x08009030B

#
# MessageId: SEC_E_LOGON_DENIED
#
# MessageText:
#
#  The logon attempt failed
#
SEC_E_LOGON_DENIED               = 0x08009030C

#
# MessageId: SEC_E_UNKNOWN_CREDENTIALS
#
# MessageText:
#
#  The credentials supplied to the package were not recognized
#
SEC_E_UNKNOWN_CREDENTIALS        = 0x08009030D

#
# MessageId: SEC_E_NO_CREDENTIALS
#
# MessageText:
#
#  No credentials are available in the security package
#
SEC_E_NO_CREDENTIALS             = 0x08009030E

#
# MessageId: SEC_E_MESSAGE_ALTERED
#
# MessageText:
#
#  The message or signature supplied for verification has been altered
#
SEC_E_MESSAGE_ALTERED            = 0x08009030F

#
# MessageId: SEC_E_OUT_OF_SEQUENCE
#
# MessageText:
#
#  The message supplied for verification is out of sequence
#
SEC_E_OUT_OF_SEQUENCE            = 0x080090310

#
# MessageId: SEC_E_NO_AUTHENTICATING_AUTHORITY
#
# MessageText:
#
#  No authority could be contacted for authentication.
#
SEC_E_NO_AUTHENTICATING_AUTHORITY = 0x080090311

#
# MessageId: SEC_I_CONTINUE_NEEDED
#
# MessageText:
#
#  The function completed successfully, but must be called again to complete the context
#
SEC_I_CONTINUE_NEEDED            = 0x000090312

#
# MessageId: SEC_I_COMPLETE_NEEDED
#
# MessageText:
#
#  The function completed successfully, but CompleteToken must be called
#
SEC_I_COMPLETE_NEEDED            = 0x000090313

#
# MessageId: SEC_I_COMPLETE_AND_CONTINUE
#
# MessageText:
#
#  The function completed successfully, but both CompleteToken and this function must be called to complete the context
#
SEC_I_COMPLETE_AND_CONTINUE      = 0x000090314

#
# MessageId: SEC_I_LOCAL_LOGON
#
# MessageText:
#
#  The logon was completed, but no network authority was available. The logon was made using locally known information
#
SEC_I_LOCAL_LOGON                = 0x000090315

#
# MessageId: SEC_E_BAD_PKGID
#
# MessageText:
#
#  The requested security package does not exist
#
SEC_E_BAD_PKGID                  = 0x080090316

#
# MessageId: SEC_E_CONTEXT_EXPIRED
#
# MessageText:
#
#  The context has expired and can no longer be used.
#
SEC_E_CONTEXT_EXPIRED            = 0x080090317

#
# MessageId: SEC_I_CONTEXT_EXPIRED
#
# MessageText:
#
#  The context has expired and can no longer be used.
#
SEC_I_CONTEXT_EXPIRED            = 0x000090317

#
# MessageId: SEC_E_INCOMPLETE_MESSAGE
#
# MessageText:
#
#  The supplied message is incomplete.  The signature was not verified.
#
SEC_E_INCOMPLETE_MESSAGE         = 0x080090318

#
# MessageId: SEC_E_INCOMPLETE_CREDENTIALS
#
# MessageText:
#
#  The credentials supplied were not complete, and could not be verified. The context could not be initialized.
#
SEC_E_INCOMPLETE_CREDENTIALS     = 0x080090320

#
# MessageId: SEC_E_BUFFER_TOO_SMALL
#
# MessageText:
#
#  The buffers supplied to a function was too small.
#
SEC_E_BUFFER_TOO_SMALL           = 0x080090321

#
# MessageId: SEC_I_INCOMPLETE_CREDENTIALS
#
# MessageText:
#
#  The credentials supplied were not complete, and could not be verified. Additional information can be returned from the context.
#
SEC_I_INCOMPLETE_CREDENTIALS     = 0x000090320

#
# MessageId: SEC_I_RENEGOTIATE
#
# MessageText:
#
#  The context data must be renegotiated with the peer.
#
SEC_I_RENEGOTIATE                = 0x000090321

#
# MessageId: SEC_E_WRONG_PRINCIPAL
#
# MessageText:
#
#  The target principal name is incorrect.
#
SEC_E_WRONG_PRINCIPAL            = 0x080090322

#
# MessageId: SEC_I_NO_LSA_CONTEXT
#
# MessageText:
#
#  There is no LSA mode context associated with this context.
#
SEC_I_NO_LSA_CONTEXT             = 0x000090323

#
# MessageId: SEC_E_TIME_SKEW
#
# MessageText:
#
#  The clocks on the client and server machines are skewed.
#
SEC_E_TIME_SKEW                  = 0x080090324

#
# MessageId: SEC_E_UNTRUSTED_ROOT
#
# MessageText:
#
#  The certificate chain was issued by an authority that is not trusted.
#
SEC_E_UNTRUSTED_ROOT             = 0x080090325

#
# MessageId: SEC_E_ILLEGAL_MESSAGE
#
# MessageText:
#
#  The message received was unexpected or badly formatted.
#
SEC_E_ILLEGAL_MESSAGE            = 0x080090326

#
# MessageId: SEC_E_CERT_UNKNOWN
#
# MessageText:
#
#  An unknown error occurred while processing the certificate.
#
SEC_E_CERT_UNKNOWN               = 0x080090327

#
# MessageId: SEC_E_CERT_EXPIRED
#
# MessageText:
#
#  The received certificate has expired.
#
SEC_E_CERT_EXPIRED               = 0x080090328

#
# MessageId: SEC_E_ENCRYPT_FAILURE
#
# MessageText:
#
#  The specified data could not be encrypted.
#
SEC_E_ENCRYPT_FAILURE            = 0x080090329

#
# MessageId: SEC_E_DECRYPT_FAILURE
#
# MessageText:
#
#  The specified data could not be decrypted.
#
#
SEC_E_DECRYPT_FAILURE            = 0x080090330

#
# MessageId: SEC_E_ALGORITHM_MISMATCH
#
# MessageText:
#
#  The client and server cannot communicate, because they do not possess a common algorithm.
#
SEC_E_ALGORITHM_MISMATCH         = 0x080090331

#
# MessageId: SEC_E_SECURITY_QOS_FAILED
#
# MessageText:
#
#  The security context could not be established due to a failure in the requested quality of service (e.g. mutual authentication or delegation).
#
SEC_E_SECURITY_QOS_FAILED        = 0x080090332

#
# MessageId: SEC_E_UNFINISHED_CONTEXT_DELETED
#
# MessageText:
#
#  A security context was deleted before the context was completed.  This is considered a logon failure.
#
SEC_E_UNFINISHED_CONTEXT_DELETED = 0x080090333

#
# MessageId: SEC_E_NO_TGT_REPLY
#
# MessageText:
#
#  The client is trying to negotiate a context and the server requires user-to-user but didn#t send a TGT reply.
#
SEC_E_NO_TGT_REPLY               = 0x080090334

#
# MessageId: SEC_E_NO_IP_ADDRESSES
#
# MessageText:
#
#  Unable to accomplish the requested task because the local machine does not have any IP addresses.
#
SEC_E_NO_IP_ADDRESSES            = 0x080090335

#
# MessageId: SEC_E_WRONG_CREDENTIAL_HANDLE
#
# MessageText:
#
#  The supplied credential handle does not match the credential associated with the security context.
#
SEC_E_WRONG_CREDENTIAL_HANDLE    = 0x080090336

#
# MessageId: SEC_E_CRYPTO_SYSTEM_INVALID
#
# MessageText:
#
#  The crypto system or checksum function is invalid because a required function is unavailable.
#
SEC_E_CRYPTO_SYSTEM_INVALID      = 0x080090337

#
# MessageId: SEC_E_MAX_REFERRALS_EXCEEDED
#
# MessageText:
#
#  The number of maximum ticket referrals has been exceeded.
#
SEC_E_MAX_REFERRALS_EXCEEDED     = 0x080090338

#
# MessageId: SEC_E_MUST_BE_KDC
#
# MessageText:
#
#  The local machine must be a Kerberos KDC (domain controller) and it is not.
#
SEC_E_MUST_BE_KDC                = 0x080090339

#
# MessageId: SEC_E_STRONG_CRYPTO_NOT_SUPPORTED
#
# MessageText:
#
#  The other end of the security negotiation is requires strong crypto but it is not supported on the local machine.
#
SEC_E_STRONG_CRYPTO_NOT_SUPPORTED = 0x08009033A

#
# MessageId: SEC_E_TOO_MANY_PRINCIPALS
#
# MessageText:
#
#  The KDC reply contained more than one principal name.
#
SEC_E_TOO_MANY_PRINCIPALS        = 0x08009033B

#
# MessageId: SEC_E_NO_PA_DATA
#
# MessageText:
#
#  Expected to find PA data for a hint of what etype to use, but it was not found.
#
SEC_E_NO_PA_DATA                 = 0x08009033C

#
# MessageId: SEC_E_PKINIT_NAME_MISMATCH
#
# MessageText:
#
#  The client certificate does not contain a valid UPN, or does not match the client name
#  in the logon request.  Please contact your administrator.
#
SEC_E_PKINIT_NAME_MISMATCH       = 0x08009033D

#
# MessageId: SEC_E_SMARTCARD_LOGON_REQUIRED
#
# MessageText:
#
#  Smartcard logon is required and was not used.
#
SEC_E_SMARTCARD_LOGON_REQUIRED   = 0x08009033E

#
# MessageId: SEC_E_SHUTDOWN_IN_PROGRESS
#
# MessageText:
#
#  A system shutdown is in progress.
#
SEC_E_SHUTDOWN_IN_PROGRESS       = 0x08009033F

#
# MessageId: SEC_E_KDC_INVALID_REQUEST
#
# MessageText:
#
#  An invalid request was sent to the KDC.
#
SEC_E_KDC_INVALID_REQUEST        = 0x080090340

#
# MessageId: SEC_E_KDC_UNABLE_TO_REFER
#
# MessageText:
#
#  The KDC was unable to generate a referral for the service requested.
#
SEC_E_KDC_UNABLE_TO_REFER        = 0x080090341

#
# MessageId: SEC_E_KDC_UNKNOWN_ETYPE
#
# MessageText:
#
#  The encryption type requested is not supported by the KDC.
#
SEC_E_KDC_UNKNOWN_ETYPE          = 0x080090342

#
# MessageId: SEC_E_UNSUPPORTED_PREAUTH
#
# MessageText:
#
#  An unsupported preauthentication mechanism was presented to the kerberos package.
#
SEC_E_UNSUPPORTED_PREAUTH        = 0x080090343

#
# MessageId: SEC_E_DELEGATION_REQUIRED
#
# MessageText:
#
#  The requested operation requires delegation to be enabled on the machine.
#
SEC_E_DELEGATION_REQUIRED        = 0x080090345

#
# MessageId: SEC_E_BAD_BINDINGS
#
# MessageText:
#
#  Client#s supplied SSPI channel bindings were incorrect.
#
SEC_E_BAD_BINDINGS               = 0x080090346

#
# MessageId: SEC_E_MULTIPLE_ACCOUNTS
#
# MessageText:
#
#  The received certificate was mapped to multiple accounts.
#
SEC_E_MULTIPLE_ACCOUNTS          = 0x080090347

#
# MessageId: SEC_E_NO_KERB_KEY
#
# MessageText:
#
#  SEC_E_NO_KERB_KEY
#
SEC_E_NO_KERB_KEY                = 0x080090348

#
# MessageId: SEC_E_CERT_WRONG_USAGE
#
# MessageText:
#
#  The certificate is not valid for the requested usage.
#
SEC_E_CERT_WRONG_USAGE           = 0x080090349

#
# MessageId: SEC_E_DOWNGRADE_DETECTED
#
# MessageText:
#
#  The system detected a possible attempt to compromise security.  Please ensure that you can contact the server that authenticated you.
#
SEC_E_DOWNGRADE_DETECTED         = 0x080090350

#
# MessageId: SEC_E_SMARTCARD_CERT_REVOKED
#
# MessageText:
#
#  The smartcard certificate used for authentication has been revoked.
#  Please contact your system administrator.  There may be additional information in the
#  event log.
#
SEC_E_SMARTCARD_CERT_REVOKED     = 0x080090351

#
# MessageId: SEC_E_ISSUING_CA_UNTRUSTED
#
# MessageText:
#
#  An untrusted certificate authority was detected While processing the
#  smartcard certificate used for authentication.  Please contact your system
#  administrator.
#
SEC_E_ISSUING_CA_UNTRUSTED       = 0x080090352

#
# MessageId: SEC_E_REVOCATION_OFFLINE_C
#
# MessageText:
#
#  The revocation status of the smartcard certificate used for
#  authentication could not be determined. Please contact your system administrator.
#
SEC_E_REVOCATION_OFFLINE_C       = 0x080090353

#
# MessageId: SEC_E_PKINIT_CLIENT_FAILURE
#
# MessageText:
#
#  The smartcard certificate used for authentication was not trusted.  Please
#  contact your system administrator.
#
SEC_E_PKINIT_CLIENT_FAILURE      = 0x080090354

#
# MessageId: SEC_E_SMARTCARD_CERT_EXPIRED
#
# MessageText:
#
#  The smartcard certificate used for authentication has expired.  Please
#  contact your system administrator.
#
SEC_E_SMARTCARD_CERT_EXPIRED     = 0x080090355

#
# MessageId: SEC_E_NO_S4U_PROT_SUPPORT
#
# MessageText:
#
#  The Kerberos subsystem encountered an error.  A service for user protocol request was made
#  against a domain controller which does not support service for user.
#
SEC_E_NO_S4U_PROT_SUPPORT        = 0x080090356

#
# MessageId: SEC_E_CROSSREALM_DELEGATION_FAILURE
#
# MessageText:
#
#  An attempt was made by this server to make a Kerberos constrained delegation request for a target
#  outside of the server#s realm.  This is not supported, and indicates a misconfiguration on this
#  server#s allowed to delegate to list.  Please contact your administrator.
#
SEC_E_CROSSREALM_DELEGATION_FAILURE = 0x080090357

#
# Provided for backwards compatibility
#

SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR
SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION

#
# MessageId: CRYPT_E_MSG_ERROR
#
# MessageText:
#
#  An error occurred while performing an operation on a cryptographic message.
#
CRYPT_E_MSG_ERROR                = 0x080091001

#
# MessageId: CRYPT_E_UNKNOWN_ALGO
#
# MessageText:
#
#  Unknown cryptographic algorithm.
#
CRYPT_E_UNKNOWN_ALGO             = 0x080091002

#
# MessageId: CRYPT_E_OID_FORMAT
#
# MessageText:
#
#  The object identifier is poorly formatted.
#
CRYPT_E_OID_FORMAT               = 0x080091003

#
# MessageId: CRYPT_E_INVALID_MSG_TYPE
#
# MessageText:
#
#  Invalid cryptographic message type.
#
CRYPT_E_INVALID_MSG_TYPE         = 0x080091004

#
# MessageId: CRYPT_E_UNEXPECTED_ENCODING
#
# MessageText:
#
#  Unexpected cryptographic message encoding.
#
CRYPT_E_UNEXPECTED_ENCODING      = 0x080091005

#
# MessageId: CRYPT_E_AUTH_ATTR_MISSING
#
# MessageText:
#
#  The cryptographic message does not contain an expected authenticated attribute.
#
CRYPT_E_AUTH_ATTR_MISSING        = 0x080091006

#
# MessageId: CRYPT_E_HASH_VALUE
#
# MessageText:
#
#  The hash value is not correct.
#
CRYPT_E_HASH_VALUE               = 0x080091007

#
# MessageId: CRYPT_E_INVALID_INDEX
#
# MessageText:
#
#  The index value is not valid.
#
CRYPT_E_INVALID_INDEX            = 0x080091008

#
# MessageId: CRYPT_E_ALREADY_DECRYPTED
#
# MessageText:
#
#  The content of the cryptographic message has already been decrypted.
#
CRYPT_E_ALREADY_DECRYPTED        = 0x080091009

#
# MessageId: CRYPT_E_NOT_DECRYPTED
#
# MessageText:
#
#  The content of the cryptographic message has not been decrypted yet.
#
CRYPT_E_NOT_DECRYPTED            = 0x08009100A

#
# MessageId: CRYPT_E_RECIPIENT_NOT_FOUND
#
# MessageText:
#
#  The enveloped-data message does not contain the specified recipient.
#
CRYPT_E_RECIPIENT_NOT_FOUND      = 0x08009100B

#
# MessageId: CRYPT_E_CONTROL_TYPE
#
# MessageText:
#
#  Invalid control type.
#
CRYPT_E_CONTROL_TYPE             = 0x08009100C

#
# MessageId: CRYPT_E_ISSUER_SERIALNUMBER
#
# MessageText:
#
#  Invalid issuer and/or serial number.
#
CRYPT_E_ISSUER_SERIALNUMBER      = 0x08009100D

#
# MessageId: CRYPT_E_SIGNER_NOT_FOUND
#
# MessageText:
#
#  Cannot find the original signer.
#
CRYPT_E_SIGNER_NOT_FOUND         = 0x08009100E

#
# MessageId: CRYPT_E_ATTRIBUTES_MISSING
#
# MessageText:
#
#  The cryptographic message does not contain all of the requested attributes.
#
CRYPT_E_ATTRIBUTES_MISSING       = 0x08009100F

#
# MessageId: CRYPT_E_STREAM_MSG_NOT_READY
#
# MessageText:
#
#  The streamed cryptographic message is not ready to return data.
#
CRYPT_E_STREAM_MSG_NOT_READY     = 0x080091010

#
# MessageId: CRYPT_E_STREAM_INSUFFICIENT_DATA
#
# MessageText:
#
#  The streamed cryptographic message requires more data to complete the decode operation.
#
CRYPT_E_STREAM_INSUFFICIENT_DATA = 0x080091011

#
# MessageId: CRYPT_I_NEW_PROTECTION_REQUIRED
#
# MessageText:
#
#  The protected data needs to be re-protected.
#
CRYPT_I_NEW_PROTECTION_REQUIRED  = 0x000091012

#
# MessageId: CRYPT_E_BAD_LEN
#
# MessageText:
#
#  The length specified for the output data was insufficient.
#
CRYPT_E_BAD_LEN                  = 0x080092001

#
# MessageId: CRYPT_E_BAD_ENCODE
#
# MessageText:
#
#  An error occurred during encode or decode operation.
#
CRYPT_E_BAD_ENCODE               = 0x080092002

#
# MessageId: CRYPT_E_FILE_ERROR
#
# MessageText:
#
#  An error occurred while reading or writing to a file.
#
CRYPT_E_FILE_ERROR               = 0x080092003

#
# MessageId: CRYPT_E_NOT_FOUND
#
# MessageText:
#
#  Cannot find object or property.
#
CRYPT_E_NOT_FOUND                = 0x080092004

#
# MessageId: CRYPT_E_EXISTS
#
# MessageText:
#
#  The object or property already exists.
#
CRYPT_E_EXISTS                   = 0x080092005

#
# MessageId: CRYPT_E_NO_PROVIDER
#
# MessageText:
#
#  No provider was specified for the store or object.
#
CRYPT_E_NO_PROVIDER              = 0x080092006

#
# MessageId: CRYPT_E_SELF_SIGNED
#
# MessageText:
#
#  The specified certificate is self signed.
#
CRYPT_E_SELF_SIGNED              = 0x080092007

#
# MessageId: CRYPT_E_DELETED_PREV
#
# MessageText:
#
#  The previous certificate or CRL context was deleted.
#
CRYPT_E_DELETED_PREV             = 0x080092008

#
# MessageId: CRYPT_E_NO_MATCH
#
# MessageText:
#
#  Cannot find the requested object.
#
CRYPT_E_NO_MATCH                 = 0x080092009

#
# MessageId: CRYPT_E_UNEXPECTED_MSG_TYPE
#
# MessageText:
#
#  The certificate does not have a property that references a private key.
#
CRYPT_E_UNEXPECTED_MSG_TYPE      = 0x08009200A

#
# MessageId: CRYPT_E_NO_KEY_PROPERTY
#
# MessageText:
#
#  Cannot find the certificate and private key for decryption.
#
CRYPT_E_NO_KEY_PROPERTY          = 0x08009200B

#
# MessageId: CRYPT_E_NO_DECRYPT_CERT
#
# MessageText:
#
#  Cannot find the certificate and private key to use for decryption.
#
CRYPT_E_NO_DECRYPT_CERT          = 0x08009200C

#
# MessageId: CRYPT_E_BAD_MSG
#
# MessageText:
#
#  Not a cryptographic message or the cryptographic message is not formatted correctly.
#
CRYPT_E_BAD_MSG                  = 0x08009200D

#
# MessageId: CRYPT_E_NO_SIGNER
#
# MessageText:
#
#  The signed cryptographic message does not have a signer for the specified signer index.
#
CRYPT_E_NO_SIGNER                = 0x08009200E

#
# MessageId: CRYPT_E_PENDING_CLOSE
#
# MessageText:
#
#  Final closure is pending until additional frees or closes.
#
CRYPT_E_PENDING_CLOSE            = 0x08009200F

#
# MessageId: CRYPT_E_REVOKED
#
# MessageText:
#
#  The certificate is revoked.
#
CRYPT_E_REVOKED                  = 0x080092010

#
# MessageId: CRYPT_E_NO_REVOCATION_DLL
#
# MessageText:
#
#  No Dll or exported function was found to verify revocation.
#
CRYPT_E_NO_REVOCATION_DLL        = 0x080092011

#
# MessageId: CRYPT_E_NO_REVOCATION_CHECK
#
# MessageText:
#
#  The revocation function was unable to check revocation for the certificate.
#
CRYPT_E_NO_REVOCATION_CHECK      = 0x080092012

#
# MessageId: CRYPT_E_REVOCATION_OFFLINE
#
# MessageText:
#
#  The revocation function was unable to check revocation because the revocation server was offline.
#
CRYPT_E_REVOCATION_OFFLINE       = 0x080092013

#
# MessageId: CRYPT_E_NOT_IN_REVOCATION_DATABASE
#
# MessageText:
#
#  The certificate is not in the revocation server#s database.
#
CRYPT_E_NOT_IN_REVOCATION_DATABASE = 0x080092014

#
# MessageId: CRYPT_E_INVALID_NUMERIC_STRING
#
# MessageText:
#
#  The string contains a non-numeric character.
#
CRYPT_E_INVALID_NUMERIC_STRING   = 0x080092020

#
# MessageId: CRYPT_E_INVALID_PRINTABLE_STRING
#
# MessageText:
#
#  The string contains a non-printable character.
#
CRYPT_E_INVALID_PRINTABLE_STRING = 0x080092021

#
# MessageId: CRYPT_E_INVALID_IA5_STRING
#
# MessageText:
#
#  The string contains a character not in the 7 bit ASCII character set.
#
CRYPT_E_INVALID_IA5_STRING       = 0x080092022

#
# MessageId: CRYPT_E_INVALID_X500_STRING
#
# MessageText:
#
#  The string contains an invalid X500 name attribute key, oid, value or delimiter.
#
CRYPT_E_INVALID_X500_STRING      = 0x080092023

#
# MessageId: CRYPT_E_NOT_CHAR_STRING
#
# MessageText:
#
#  The dwValueType for the CERT_NAME_VALUE is not one of the character strings.  Most likely it is either a CERT_RDN_ENCODED_BLOB or CERT_TDN_OCTED_STRING.
#
CRYPT_E_NOT_CHAR_STRING          = 0x080092024

#
# MessageId: CRYPT_E_FILERESIZED
#
# MessageText:
#
#  The Put operation can not continue.  The file needs to be resized.  However, there is already a signature present.  A complete signing operation must be done.
#
CRYPT_E_FILERESIZED              = 0x080092025

#
# MessageId: CRYPT_E_SECURITY_SETTINGS
#
# MessageText:
#
#  The cryptographic operation failed due to a local security option setting.
#
CRYPT_E_SECURITY_SETTINGS        = 0x080092026

#
# MessageId: CRYPT_E_NO_VERIFY_USAGE_DLL
#
# MessageText:
#
#  No DLL or exported function was found to verify subject usage.
#
CRYPT_E_NO_VERIFY_USAGE_DLL      = 0x080092027

#
# MessageId: CRYPT_E_NO_VERIFY_USAGE_CHECK
#
# MessageText:
#
#  The called function was unable to do a usage check on the subject.
#
CRYPT_E_NO_VERIFY_USAGE_CHECK    = 0x080092028

#
# MessageId: CRYPT_E_VERIFY_USAGE_OFFLINE
#
# MessageText:
#
#  Since the server was offline, the called function was unable to complete the usage check.
#
CRYPT_E_VERIFY_USAGE_OFFLINE     = 0x080092029

#
# MessageId: CRYPT_E_NOT_IN_CTL
#
# MessageText:
#
#  The subject was not found in a Certificate Trust List (CT.
#
CRYPT_E_NOT_IN_CTL               = 0x08009202A

#
# MessageId: CRYPT_E_NO_TRUSTED_SIGNER
#
# MessageText:
#
#  None of the signers of the cryptographic message or certificate trust list is trusted.
#
CRYPT_E_NO_TRUSTED_SIGNER        = 0x08009202B

#
# MessageId: CRYPT_E_MISSING_PUBKEY_PARA
#
# MessageText:
#
#  The public key#s algorithm parameters are missing.
#
CRYPT_E_MISSING_PUBKEY_PARA      = 0x08009202C

#
# MessageId: CRYPT_E_OSS_ERROR
#
# MessageText:
#
#  OSS Certificate encode/decode error code base
#
#  See asn1code.h for a definition of the OSS runtime errors. The OSS
#  error values are offset by CRYPT_E_OSS_ERROR.
#
CRYPT_E_OSS_ERROR                = 0x080093000

#
# MessageId: OSS_MORE_BUF
#
# MessageText:
#
#  OSS ASN.1 Error: Output Buffer is too small.
#
OSS_MORE_BUF                     = 0x080093001

#
# MessageId: OSS_NEGATIVE_UINTEGER
#
# MessageText:
#
#  OSS ASN.1 Error: Signed integer is encoded as a unsigned integer.
#
OSS_NEGATIVE_UINTEGER            = 0x080093002

#
# MessageId: OSS_PDU_RANGE
#
# MessageText:
#
#  OSS ASN.1 Error: Unknown ASN.1 data type.
#
OSS_PDU_RANGE                    = 0x080093003

#
# MessageId: OSS_MORE_INPUT
#
# MessageText:
#
#  OSS ASN.1 Error: Output buffer is too small, the decoded data has been truncated.
#
OSS_MORE_INPUT                   = 0x080093004

#
# MessageId: OSS_DATA_ERROR
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_DATA_ERROR                   = 0x080093005

#
# MessageId: OSS_BAD_ARG
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid argument.
#
OSS_BAD_ARG                      = 0x080093006

#
# MessageId: OSS_BAD_VERSION
#
# MessageText:
#
#  OSS ASN.1 Error: Encode/Decode version mismatch.
#
OSS_BAD_VERSION                  = 0x080093007

#
# MessageId: OSS_OUT_MEMORY
#
# MessageText:
#
#  OSS ASN.1 Error: Out of memory.
#
OSS_OUT_MEMORY                   = 0x080093008

#
# MessageId: OSS_PDU_MISMATCH
#
# MessageText:
#
#  OSS ASN.1 Error: Encode/Decode Error.
#
OSS_PDU_MISMATCH                 = 0x080093009

#
# MessageId: OSS_LIMITED
#
# MessageText:
#
#  OSS ASN.1 Error: Internal Error.
#
OSS_LIMITED                      = 0x08009300A

#
# MessageId: OSS_BAD_PTR
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_BAD_PTR                      = 0x08009300B

#
# MessageId: OSS_BAD_TIME
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_BAD_TIME                     = 0x08009300C

#
# MessageId: OSS_INDEFINITE_NOT_SUPPORTED
#
# MessageText:
#
#  OSS ASN.1 Error: Unsupported BER indefinite-length encoding.
#
OSS_INDEFINITE_NOT_SUPPORTED     = 0x08009300D

#
# MessageId: OSS_MEM_ERROR
#
# MessageText:
#
#  OSS ASN.1 Error: Access violation.
#
OSS_MEM_ERROR                    = 0x08009300E

#
# MessageId: OSS_BAD_TABLE
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_BAD_TABLE                    = 0x08009300F

#
# MessageId: OSS_TOO_LONG
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_TOO_LONG                     = 0x080093010

#
# MessageId: OSS_CONSTRAINT_VIOLATED
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_CONSTRAINT_VIOLATED          = 0x080093011

#
# MessageId: OSS_FATAL_ERROR
#
# MessageText:
#
#  OSS ASN.1 Error: Internal Error.
#
OSS_FATAL_ERROR                  = 0x080093012

#
# MessageId: OSS_ACCESS_SERIALIZATION_ERROR
#
# MessageText:
#
#  OSS ASN.1 Error: Multi-threading conflict.
#
OSS_ACCESS_SERIALIZATION_ERROR   = 0x080093013

#
# MessageId: OSS_NULL_TBL
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_NULL_TBL                     = 0x080093014

#
# MessageId: OSS_NULL_FCN
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_NULL_FCN                     = 0x080093015

#
# MessageId: OSS_BAD_ENCRULES
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_BAD_ENCRULES                 = 0x080093016

#
# MessageId: OSS_UNAVAIL_ENCRULES
#
# MessageText:
#
#  OSS ASN.1 Error: Encode/Decode function not implemented.
#
OSS_UNAVAIL_ENCRULES             = 0x080093017

#
# MessageId: OSS_CANT_OPEN_TRACE_WINDOW
#
# MessageText:
#
#  OSS ASN.1 Error: Trace file error.
#
OSS_CANT_OPEN_TRACE_WINDOW       = 0x080093018

#
# MessageId: OSS_UNIMPLEMENTED
#
# MessageText:
#
#  OSS ASN.1 Error: Function not implemented.
#
OSS_UNIMPLEMENTED                = 0x080093019

#
# MessageId: OSS_OID_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_OID_DLL_NOT_LINKED           = 0x08009301A

#
# MessageId: OSS_CANT_OPEN_TRACE_FILE
#
# MessageText:
#
#  OSS ASN.1 Error: Trace file error.
#
OSS_CANT_OPEN_TRACE_FILE         = 0x08009301B

#
# MessageId: OSS_TRACE_FILE_ALREADY_OPEN
#
# MessageText:
#
#  OSS ASN.1 Error: Trace file error.
#
OSS_TRACE_FILE_ALREADY_OPEN      = 0x08009301C

#
# MessageId: OSS_TABLE_MISMATCH
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_TABLE_MISMATCH               = 0x08009301D

#
# MessageId: OSS_TYPE_NOT_SUPPORTED
#
# MessageText:
#
#  OSS ASN.1 Error: Invalid data.
#
OSS_TYPE_NOT_SUPPORTED           = 0x08009301E

#
# MessageId: OSS_REAL_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_REAL_DLL_NOT_LINKED          = 0x08009301F

#
# MessageId: OSS_REAL_CODE_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_REAL_CODE_NOT_LINKED         = 0x080093020

#
# MessageId: OSS_OUT_OF_RANGE
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_OUT_OF_RANGE                 = 0x080093021

#
# MessageId: OSS_COPIER_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_COPIER_DLL_NOT_LINKED        = 0x080093022

#
# MessageId: OSS_CONSTRAINT_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_CONSTRAINT_DLL_NOT_LINKED    = 0x080093023

#
# MessageId: OSS_COMPARATOR_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_COMPARATOR_DLL_NOT_LINKED    = 0x080093024

#
# MessageId: OSS_COMPARATOR_CODE_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_COMPARATOR_CODE_NOT_LINKED   = 0x080093025

#
# MessageId: OSS_MEM_MGR_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_MEM_MGR_DLL_NOT_LINKED       = 0x080093026

#
# MessageId: OSS_PDV_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_PDV_DLL_NOT_LINKED           = 0x080093027

#
# MessageId: OSS_PDV_CODE_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_PDV_CODE_NOT_LINKED          = 0x080093028

#
# MessageId: OSS_API_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_API_DLL_NOT_LINKED           = 0x080093029

#
# MessageId: OSS_BERDER_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_BERDER_DLL_NOT_LINKED        = 0x08009302A

#
# MessageId: OSS_PER_DLL_NOT_LINKED
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_PER_DLL_NOT_LINKED           = 0x08009302B

#
# MessageId: OSS_OPEN_TYPE_ERROR
#
# MessageText:
#
#  OSS ASN.1 Error: Program link error.
#
OSS_OPEN_TYPE_ERROR              = 0x08009302C

#
# MessageId: OSS_MUTEX_NOT_CREATED
#
# MessageText:
#
#  OSS ASN.1 Error: System resource error.
#
OSS_MUTEX_NOT_CREATED            = 0x08009302D

#
# MessageId: OSS_CANT_CLOSE_TRACE_FILE
#
# MessageText:
#
#  OSS ASN.1 Error: Trace file error.
#
OSS_CANT_CLOSE_TRACE_FILE        = 0x08009302E

#
# MessageId: CRYPT_E_ASN1_ERROR
#
# MessageText:
#
#  ASN1 Certificate encode/decode error code base.
#
#  The ASN1 error values are offset by CRYPT_E_ASN1_ERROR.
#
CRYPT_E_ASN1_ERROR               = 0x080093100

#
# MessageId: CRYPT_E_ASN1_INTERNAL
#
# MessageText:
#
#  ASN1 internal encode or decode error.
#
CRYPT_E_ASN1_INTERNAL            = 0x080093101

#
# MessageId: CRYPT_E_ASN1_EOD
#
# MessageText:
#
#  ASN1 unexpected end of data.
#
CRYPT_E_ASN1_EOD                 = 0x080093102

#
# MessageId: CRYPT_E_ASN1_CORRUPT
#
# MessageText:
#
#  ASN1 corrupted data.
#
CRYPT_E_ASN1_CORRUPT             = 0x080093103

#
# MessageId: CRYPT_E_ASN1_LARGE
#
# MessageText:
#
#  ASN1 value too large.
#
CRYPT_E_ASN1_LARGE               = 0x080093104

#
# MessageId: CRYPT_E_ASN1_CONSTRAINT
#
# MessageText:
#
#  ASN1 constraint violated.
#
CRYPT_E_ASN1_CONSTRAINT          = 0x080093105

#
# MessageId: CRYPT_E_ASN1_MEMORY
#
# MessageText:
#
#  ASN1 out of memory.
#
CRYPT_E_ASN1_MEMORY              = 0x080093106

#
# MessageId: CRYPT_E_ASN1_OVERFLOW
#
# MessageText:
#
#  ASN1 buffer overflow.
#
CRYPT_E_ASN1_OVERFLOW            = 0x080093107

#
# MessageId: CRYPT_E_ASN1_BADPDU
#
# MessageText:
#
#  ASN1 function not supported for this PDU.
#
CRYPT_E_ASN1_BADPDU              = 0x080093108

#
# MessageId: CRYPT_E_ASN1_BADARGS
#
# MessageText:
#
#  ASN1 bad arguments to function call.
#
CRYPT_E_ASN1_BADARGS             = 0x080093109

#
# MessageId: CRYPT_E_ASN1_BADREAL
#
# MessageText:
#
#  ASN1 bad real value.
#
CRYPT_E_ASN1_BADREAL             = 0x08009310A

#
# MessageId: CRYPT_E_ASN1_BADTAG
#
# MessageText:
#
#  ASN1 bad tag value met.
#
CRYPT_E_ASN1_BADTAG              = 0x08009310B

#
# MessageId: CRYPT_E_ASN1_CHOICE
#
# MessageText:
#
#  ASN1 bad choice value.
#
CRYPT_E_ASN1_CHOICE              = 0x08009310C

#
# MessageId: CRYPT_E_ASN1_RULE
#
# MessageText:
#
#  ASN1 bad encoding rule.
#
CRYPT_E_ASN1_RULE                = 0x08009310D

#
# MessageId: CRYPT_E_ASN1_UTF8
#
# MessageText:
#
#  ASN1 bad unicode (UTF8).
#
CRYPT_E_ASN1_UTF8                = 0x08009310E

#
# MessageId: CRYPT_E_ASN1_PDU_TYPE
#
# MessageText:
#
#  ASN1 bad PDU type.
#
CRYPT_E_ASN1_PDU_TYPE            = 0x080093133

#
# MessageId: CRYPT_E_ASN1_NYI
#
# MessageText:
#
#  ASN1 not yet implemented.
#
CRYPT_E_ASN1_NYI                 = 0x080093134

#
# MessageId: CRYPT_E_ASN1_EXTENDED
#
# MessageText:
#
#  ASN1 skipped unknown extension(s).
#
CRYPT_E_ASN1_EXTENDED            = 0x080093201

#
# MessageId: CRYPT_E_ASN1_NOEOD
#
# MessageText:
#
#  ASN1 end of data expected
#
CRYPT_E_ASN1_NOEOD               = 0x080093202

#
# MessageId: CERTSRV_E_BAD_REQUESTSUBJECT
#
# MessageText:
#
#  The request subject name is invalid or too long.
#
CERTSRV_E_BAD_REQUESTSUBJECT     = 0x080094001

#
# MessageId: CERTSRV_E_NO_REQUEST
#
# MessageText:
#
#  The request does not exist.
#
CERTSRV_E_NO_REQUEST             = 0x080094002

#
# MessageId: CERTSRV_E_BAD_REQUESTSTATUS
#
# MessageText:
#
#  The request#s current status does not allow this operation.
#
CERTSRV_E_BAD_REQUESTSTATUS      = 0x080094003

#
# MessageId: CERTSRV_E_PROPERTY_EMPTY
#
# MessageText:
#
#  The requested property value is empty.
#
CERTSRV_E_PROPERTY_EMPTY         = 0x080094004

#
# MessageId: CERTSRV_E_INVALID_CA_CERTIFICATE
#
# MessageText:
#
#  The certification authority#s certificate contains invalid data.
#
CERTSRV_E_INVALID_CA_CERTIFICATE = 0x080094005

#
# MessageId: CERTSRV_E_SERVER_SUSPENDED
#
# MessageText:
#
#  Certificate service has been suspended for a database restore operation.
#
CERTSRV_E_SERVER_SUSPENDED       = 0x080094006

#
# MessageId: CERTSRV_E_ENCODING_LENGTH
#
# MessageText:
#
#  The certificate contains an encoded length that is potentially incompatible with older enrollment software.
#
CERTSRV_E_ENCODING_LENGTH        = 0x080094007

#
# MessageId: CERTSRV_E_ROLECONFLICT
#
# MessageText:
#
#  The operation is denied. The user has multiple roles assigned and the certification authority is configured to enforce role separation.
#
CERTSRV_E_ROLECONFLICT           = 0x080094008

#
# MessageId: CERTSRV_E_RESTRICTEDOFFICER
#
# MessageText:
#
#  The operation is denied. It can only be performed by a certificate manager that is allowed to manage certificates for the current requester.
#
CERTSRV_E_RESTRICTEDOFFICER      = 0x080094009

#
# MessageId: CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED
#
# MessageText:
#
#  Cannot archive private key.  The certification authority is not configured for key archival.
#
CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED = 0x08009400A

#
# MessageId: CERTSRV_E_NO_VALID_KRA
#
# MessageText:
#
#  Cannot archive private key.  The certification authority could not verify one or more key recovery certificates.
#
CERTSRV_E_NO_VALID_KRA           = 0x08009400B

#
# MessageId: CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL
#
# MessageText:
#
#  The request is incorrectly formatted.  The encrypted private key must be in an unauthenticated attribute in an outermost signature.
#
CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL = 0x08009400C

#
# MessageId: CERTSRV_E_NO_CAADMIN_DEFINED
#
# MessageText:
#
#  At least one security principal must have the permission to manage this CA.
#
CERTSRV_E_NO_CAADMIN_DEFINED     = 0x08009400D

#
# MessageId: CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE
#
# MessageText:
#
#  The request contains an invalid renewal certificate attribute.
#
CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE = 0x08009400E

#
# MessageId: CERTSRV_E_NO_DB_SESSIONS
#
# MessageText:
#
#  An attempt was made to open a Certification Authority database session, but there are already too many active sessions.  The server may need to be configured to allow additional sessions.
#
CERTSRV_E_NO_DB_SESSIONS         = 0x08009400F

#
# MessageId: CERTSRV_E_ALIGNMENT_FAULT
#
# MessageText:
#
#  A memory reference caused a data alignment fault.
#
CERTSRV_E_ALIGNMENT_FAULT        = 0x080094010

#
# MessageId: CERTSRV_E_ENROLL_DENIED
#
# MessageText:
#
#  The permissions on this certification authority do not allow the current user to enroll for certificates.
#
CERTSRV_E_ENROLL_DENIED          = 0x080094011

#
# MessageId: CERTSRV_E_TEMPLATE_DENIED
#
# MessageText:
#
#  The permissions on the certificate template do not allow the current user to enroll for this type of certificate.
#
CERTSRV_E_TEMPLATE_DENIED        = 0x080094012

#
# MessageId: CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE
#
# MessageText:
#
#  The contacted domain controller cannot support signed LDAP traffic.  Update the domain controller or configure Certificate Services to use SSL for Active Directory access.
#
CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE = 0x080094013

#
# MessageId: CERTSRV_E_UNSUPPORTED_CERT_TYPE
#
# MessageText:
#
#  The requested certificate template is not supported by this CA.
#
CERTSRV_E_UNSUPPORTED_CERT_TYPE  = 0x080094800

#
# MessageId: CERTSRV_E_NO_CERT_TYPE
#
# MessageText:
#
#  The request contains no certificate template information.
#
CERTSRV_E_NO_CERT_TYPE           = 0x080094801

#
# MessageId: CERTSRV_E_TEMPLATE_CONFLICT
#
# MessageText:
#
#  The request contains conflicting template information.
#
CERTSRV_E_TEMPLATE_CONFLICT      = 0x080094802

#
# MessageId: CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED
#
# MessageText:
#
#  The request is missing a required Subject Alternate name extension.
#
CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED = 0x080094803

#
# MessageId: CERTSRV_E_ARCHIVED_KEY_REQUIRED
#
# MessageText:
#
#  The request is missing a required private key for archival by the server.
#
CERTSRV_E_ARCHIVED_KEY_REQUIRED  = 0x080094804

#
# MessageId: CERTSRV_E_SMIME_REQUIRED
#
# MessageText:
#
#  The request is missing a required SMIME capabilities extension.
#
CERTSRV_E_SMIME_REQUIRED         = 0x080094805

#
# MessageId: CERTSRV_E_BAD_RENEWAL_SUBJECT
#
# MessageText:
#
#  The request was made on behalf of a subject other than the caller.  The certificate template must be configured to require at least one signature to authorize the request.
#
CERTSRV_E_BAD_RENEWAL_SUBJECT    = 0x080094806

#
# MessageId: CERTSRV_E_BAD_TEMPLATE_VERSION
#
# MessageText:
#
#  The request template version is newer than the supported template version.
#
CERTSRV_E_BAD_TEMPLATE_VERSION   = 0x080094807

#
# MessageId: CERTSRV_E_TEMPLATE_POLICY_REQUIRED
#
# MessageText:
#
#  The template is missing a required signature policy attribute.
#
CERTSRV_E_TEMPLATE_POLICY_REQUIRED = 0x080094808

#
# MessageId: CERTSRV_E_SIGNATURE_POLICY_REQUIRED
#
# MessageText:
#
#  The request is missing required signature policy information.
#
CERTSRV_E_SIGNATURE_POLICY_REQUIRED = 0x080094809

#
# MessageId: CERTSRV_E_SIGNATURE_COUNT
#
# MessageText:
#
#  The request is missing one or more required signatures.
#
CERTSRV_E_SIGNATURE_COUNT        = 0x08009480A

#
# MessageId: CERTSRV_E_SIGNATURE_REJECTED
#
# MessageText:
#
#  One or more signatures did not include the required application or issuance policies.  The request is missing one or more required valid signatures.
#
CERTSRV_E_SIGNATURE_REJECTED     = 0x08009480B

#
# MessageId: CERTSRV_E_ISSUANCE_POLICY_REQUIRED
#
# MessageText:
#
#  The request is missing one or more required signature issuance policies.
#
CERTSRV_E_ISSUANCE_POLICY_REQUIRED = 0x08009480C

#
# MessageId: CERTSRV_E_SUBJECT_UPN_REQUIRED
#
# MessageText:
#
#  The UPN is unavailable and cannot be added to the Subject Alternate name.
#
CERTSRV_E_SUBJECT_UPN_REQUIRED   = 0x08009480D

#
# MessageId: CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED
#
# MessageText:
#
#  The Active Directory GUID is unavailable and cannot be added to the Subject Alternate name.
#
CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED = 0x08009480E

#
# MessageId: CERTSRV_E_SUBJECT_DNS_REQUIRED
#
# MessageText:
#
#  The DNS name is unavailable and cannot be added to the Subject Alternate name.
#
CERTSRV_E_SUBJECT_DNS_REQUIRED   = 0x08009480F

#
# MessageId: CERTSRV_E_ARCHIVED_KEY_UNEXPECTED
#
# MessageText:
#
#  The request includes a private key for archival by the server, but key archival is not enabled for the specified certificate template.
#
CERTSRV_E_ARCHIVED_KEY_UNEXPECTED = 0x080094810

#
# MessageId: CERTSRV_E_KEY_LENGTH
#
# MessageText:
#
#  The public key does not meet the minimum size required by the specified certificate template.
#
CERTSRV_E_KEY_LENGTH             = 0x080094811

#
# MessageId: CERTSRV_E_SUBJECT_EMAIL_REQUIRED
#
# MessageText:
#
#  The EMail name is unavailable and cannot be added to the Subject or Subject Alternate name.
#
CERTSRV_E_SUBJECT_EMAIL_REQUIRED = 0x080094812

#
# MessageId: CERTSRV_E_UNKNOWN_CERT_TYPE
#
# MessageText:
#
#  One or more certificate templates to be enabled on this certification authority could not be found.
#
CERTSRV_E_UNKNOWN_CERT_TYPE      = 0x080094813

#
# MessageId: CERTSRV_E_CERT_TYPE_OVERLAP
#
# MessageText:
#
#  The certificate template renewal period is longer than the certificate validity period.  The template should be reconfigured or the CA certificate renewed.
#
CERTSRV_E_CERT_TYPE_OVERLAP      = 0x080094814

#
# The range= 0x05000-0x51ff is reserved for XENROLL errors.
#
#
# MessageId: XENROLL_E_KEY_NOT_EXPORTABLE
#
# MessageText:
#
#  The key is not exportable.
#
XENROLL_E_KEY_NOT_EXPORTABLE     = 0x080095000

#
# MessageId: XENROLL_E_CANNOT_ADD_ROOT_CERT
#
# MessageText:
#
#  You cannot add the root CA certificate into your local store.
#
XENROLL_E_CANNOT_ADD_ROOT_CERT   = 0x080095001

#
# MessageId: XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND
#
# MessageText:
#
#  The key archival hash attribute was not found in the response.
#
XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND = 0x080095002

#
# MessageId: XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH
#
# MessageText:
#
#  An unexpected key archival hash attribute was found in the response.
#
XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH = 0x080095003

#
# MessageId: XENROLL_E_RESPONSE_KA_HASH_MISMATCH
#
# MessageText:
#
#  There is a key archival hash mismatch between the request and the response.
#
XENROLL_E_RESPONSE_KA_HASH_MISMATCH = 0x080095004

#
# MessageId: XENROLL_E_KEYSPEC_SMIME_MISMATCH
#
# MessageText:
#
#  Signing certificate cannot include SMIME extension.
#
XENROLL_E_KEYSPEC_SMIME_MISMATCH = 0x080095005

#
# MessageId: TRUST_E_SYSTEM_ERROR
#
# MessageText:
#
#  A system-level error occurred while verifying trust.
#
TRUST_E_SYSTEM_ERROR             = 0x080096001

#
# MessageId: TRUST_E_NO_SIGNER_CERT
#
# MessageText:
#
#  The certificate for the signer of the message is invalid or not found.
#
TRUST_E_NO_SIGNER_CERT           = 0x080096002

#
# MessageId: TRUST_E_COUNTER_SIGNER
#
# MessageText:
#
#  One of the counter signatures was invalid.
#
TRUST_E_COUNTER_SIGNER           = 0x080096003

#
# MessageId: TRUST_E_CERT_SIGNATURE
#
# MessageText:
#
#  The signature of the certificate can not be verified.
#
TRUST_E_CERT_SIGNATURE           = 0x080096004

#
# MessageId: TRUST_E_TIME_STAMP
#
# MessageText:
#
#  The timestamp signature and/or certificate could not be verified or is malformed.
#
TRUST_E_TIME_STAMP               = 0x080096005

#
# MessageId: TRUST_E_BAD_DIGEST
#
# MessageText:
#
#  The digital signature of the object did not verify.
#
TRUST_E_BAD_DIGEST               = 0x080096010

#
# MessageId: TRUST_E_BASIC_CONSTRAINTS
#
# MessageText:
#
#  A certificate#s basic constraint extension has not been observed.
#
TRUST_E_BASIC_CONSTRAINTS        = 0x080096019

#
# MessageId: TRUST_E_FINANCIAL_CRITERIA
#
# MessageText:
#
#  The certificate does not meet or contain the Authenticode financial extensions.
#
TRUST_E_FINANCIAL_CRITERIA       = 0x08009601E

#
#  Error codes for mssipotf.dll
#  Most of the error codes can only occur when an error occurs
#    during font file signing
#
#
#
# MessageId: MSSIPOTF_E_OUTOFMEMRANGE
#
# MessageText:
#
#  Tried to reference a part of the file outside the proper range.
#
MSSIPOTF_E_OUTOFMEMRANGE         = 0x080097001

#
# MessageId: MSSIPOTF_E_CANTGETOBJECT
#
# MessageText:
#
#  Could not retrieve an object from the file.
#
MSSIPOTF_E_CANTGETOBJECT         = 0x080097002

#
# MessageId: MSSIPOTF_E_NOHEADTABLE
#
# MessageText:
#
#  Could not find the head table in the file.
#
MSSIPOTF_E_NOHEADTABLE           = 0x080097003

#
# MessageId: MSSIPOTF_E_BAD_MAGICNUMBER
#
# MessageText:
#
#  The magic number in the head table is incorrect.
#
MSSIPOTF_E_BAD_MAGICNUMBER       = 0x080097004

#
# MessageId: MSSIPOTF_E_BAD_OFFSET_TABLE
#
# MessageText:
#
#  The offset table has incorrect values.
#
MSSIPOTF_E_BAD_OFFSET_TABLE      = 0x080097005

#
# MessageId: MSSIPOTF_E_TABLE_TAGORDER
#
# MessageText:
#
#  Duplicate table tags or tags out of alphabetical order.
#
MSSIPOTF_E_TABLE_TAGORDER        = 0x080097006

#
# MessageId: MSSIPOTF_E_TABLE_LONGWORD
#
# MessageText:
#
#  A table does not start on a long word boundary.
#
MSSIPOTF_E_TABLE_LONGWORD        = 0x080097007

#
# MessageId: MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT
#
# MessageText:
#
#  First table does not appear after header information.
#
MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT = 0x080097008

#
# MessageId: MSSIPOTF_E_TABLES_OVERLAP
#
# MessageText:
#
#  Two or more tables overlap.
#
MSSIPOTF_E_TABLES_OVERLAP        = 0x080097009

#
# MessageId: MSSIPOTF_E_TABLE_PADBYTES
#
# MessageText:
#
#  Too many pad bytes between tables or pad bytes are not 0.
#
MSSIPOTF_E_TABLE_PADBYTES        = 0x08009700A

#
# MessageId: MSSIPOTF_E_FILETOOSMALL
#
# MessageText:
#
#  File is too small to contain the last table.
#
MSSIPOTF_E_FILETOOSMALL          = 0x08009700B

#
# MessageId: MSSIPOTF_E_TABLE_CHECKSUM
#
# MessageText:
#
#  A table checksum is incorrect.
#
MSSIPOTF_E_TABLE_CHECKSUM        = 0x08009700C

#
# MessageId: MSSIPOTF_E_FILE_CHECKSUM
#
# MessageText:
#
#  The file checksum is incorrect.
#
MSSIPOTF_E_FILE_CHECKSUM         = 0x08009700D

#
# MessageId: MSSIPOTF_E_FAILED_POLICY
#
# MessageText:
#
#  The signature does not have the correct attributes for the policy.
#
MSSIPOTF_E_FAILED_POLICY         = 0x080097010

#
# MessageId: MSSIPOTF_E_FAILED_HINTS_CHECK
#
# MessageText:
#
#  The file did not pass the hints check.
#
MSSIPOTF_E_FAILED_HINTS_CHECK    = 0x080097011

#
# MessageId: MSSIPOTF_E_NOT_OPENTYPE
#
# MessageText:
#
#  The file is not an OpenType file.
#
MSSIPOTF_E_NOT_OPENTYPE          = 0x080097012

#
# MessageId: MSSIPOTF_E_FILE
#
# MessageText:
#
#  Failed on a file operation (open, map, read, write).
#
MSSIPOTF_E_FILE                  = 0x080097013

#
# MessageId: MSSIPOTF_E_CRYPT
#
# MessageText:
#
#  A call to a CryptoAPI function failed.
#
MSSIPOTF_E_CRYPT                 = 0x080097014

#
# MessageId: MSSIPOTF_E_BADVERSION
#
# MessageText:
#
#  There is a bad version number in the file.
#
MSSIPOTF_E_BADVERSION            = 0x080097015

#
# MessageId: MSSIPOTF_E_DSIG_STRUCTURE
#
# MessageText:
#
#  The structure of the DSIG table is incorrect.
#
MSSIPOTF_E_DSIG_STRUCTURE        = 0x080097016

#
# MessageId: MSSIPOTF_E_PCONST_CHECK
#
# MessageText:
#
#  A check failed in a partially constant table.
#
MSSIPOTF_E_PCONST_CHECK          = 0x080097017

#
# MessageId: MSSIPOTF_E_STRUCTURE
#
# MessageText:
#
#  Some kind of structural error.
#
MSSIPOTF_E_STRUCTURE             = 0x080097018

NTE_OP_OK = 0

#
# Note that additional FACILITY_SSPI errors are in issperr.h
#
# ******************
# FACILITY_CERT
# ******************
#
# MessageId: TRUST_E_PROVIDER_UNKNOWN
#
# MessageText:
#
#  Unknown trust provider.
#
TRUST_E_PROVIDER_UNKNOWN         = 0x0800B0001

#
# MessageId: TRUST_E_ACTION_UNKNOWN
#
# MessageText:
#
#  The trust verification action specified is not supported by the specified trust provider.
#
TRUST_E_ACTION_UNKNOWN           = 0x0800B0002

#
# MessageId: TRUST_E_SUBJECT_FORM_UNKNOWN
#
# MessageText:
#
#  The form specified for the subject is not one supported or known by the specified trust provider.
#
TRUST_E_SUBJECT_FORM_UNKNOWN     = 0x0800B0003

#
# MessageId: TRUST_E_SUBJECT_NOT_TRUSTED
#
# MessageText:
#
#  The subject is not trusted for the specified action.
#
TRUST_E_SUBJECT_NOT_TRUSTED      = 0x0800B0004

#
# MessageId: DIGSIG_E_ENCODE
#
# MessageText:
#
#  Error due to problem in ASN.1 encoding process.
#
DIGSIG_E_ENCODE                  = 0x0800B0005

#
# MessageId: DIGSIG_E_DECODE
#
# MessageText:
#
#  Error due to problem in ASN.1 decoding process.
#
DIGSIG_E_DECODE                  = 0x0800B0006

#
# MessageId: DIGSIG_E_EXTENSIBILITY
#
# MessageText:
#
#  Reading / writing Extensions where Attributes are appropriate, and visa versa.
#
DIGSIG_E_EXTENSIBILITY           = 0x0800B0007

#
# MessageId: DIGSIG_E_CRYPTO
#
# MessageText:
#
#  Unspecified cryptographic failure.
#
DIGSIG_E_CRYPTO                  = 0x0800B0008

#
# MessageId: PERSIST_E_SIZEDEFINITE
#
# MessageText:
#
#  The size of the data could not be determined.
#
PERSIST_E_SIZEDEFINITE           = 0x0800B0009

#
# MessageId: PERSIST_E_SIZEINDEFINITE
#
# MessageText:
#
#  The size of the indefinite-sized data could not be determined.
#
PERSIST_E_SIZEINDEFINITE         = 0x0800B000A

#
# MessageId: PERSIST_E_NOTSELFSIZING
#
# MessageText:
#
#  This object does not read and write self-sizing data.
#
PERSIST_E_NOTSELFSIZING          = 0x0800B000B

#
# MessageId: TRUST_E_NOSIGNATURE
#
# MessageText:
#
#  No signature was present in the subject.
#
TRUST_E_NOSIGNATURE              = 0x0800B0100

#
# MessageId: CERT_E_EXPIRED
#
# MessageText:
#
#  A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file.
#
CERT_E_EXPIRED                   = 0x0800B0101

#
# MessageId: CERT_E_VALIDITYPERIODNESTING
#
# MessageText:
#
#  The validity periods of the certification chain do not nest correctly.
#
CERT_E_VALIDITYPERIODNESTING     = 0x0800B0102

#
# MessageId: CERT_E_ROLE
#
# MessageText:
#
#  A certificate that can only be used as an end-entity is being used as a CA or visa versa.
#
CERT_E_ROLE                      = 0x0800B0103

#
# MessageId: CERT_E_PATHLENCONST
#
# MessageText:
#
#  A path length constraint in the certification chain has been violated.
#
CERT_E_PATHLENCONST              = 0x0800B0104

#
# MessageId: CERT_E_CRITICAL
#
# MessageText:
#
#  A certificate contains an unknown extension that is marked #critical#.
#
CERT_E_CRITICAL                  = 0x0800B0105

#
# MessageId: CERT_E_PURPOSE
#
# MessageText:
#
#  A certificate being used for a purpose other than the ones specified by its CA.
#
CERT_E_PURPOSE                   = 0x0800B0106

#
# MessageId: CERT_E_ISSUERCHAINING
#
# MessageText:
#
#  A parent of a given certificate in fact did not issue that child certificate.
#
CERT_E_ISSUERCHAINING            = 0x0800B0107

#
# MessageId: CERT_E_MALFORMED
#
# MessageText:
#
#  A certificate is missing or has an empty value for an important field, such as a subject or issuer name.
#
CERT_E_MALFORMED                 = 0x0800B0108

#
# MessageId: CERT_E_UNTRUSTEDROOT
#
# MessageText:
#
#  A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
#
CERT_E_UNTRUSTEDROOT             = 0x0800B0109

#
# MessageId: CERT_E_CHAINING
#
# MessageText:
#
#  A certificate chain could not be built to a trusted root authority.
#
CERT_E_CHAINING                  = 0x0800B010A

#
# MessageId: TRUST_E_FAIL
#
# MessageText:
#
#  Generic trust failure.
#
TRUST_E_FAIL                     = 0x0800B010B

#
# MessageId: CERT_E_REVOKED
#
# MessageText:
#
#  A certificate was explicitly revoked by its issuer.
#
CERT_E_REVOKED                   = 0x0800B010C

#
# MessageId: CERT_E_UNTRUSTEDTESTROOT
#
# MessageText:
#
#  The certification path terminates with the test root which is not trusted with the current policy settings.
#
CERT_E_UNTRUSTEDTESTROOT         = 0x0800B010D

#
# MessageId: CERT_E_REVOCATION_FAILURE
#
# MessageText:
#
#  The revocation process could not continue - the certificate(s) could not be checked.
#
CERT_E_REVOCATION_FAILURE        = 0x0800B010E

#
# MessageId: CERT_E_CN_NO_MATCH
#
# MessageText:
#
#  The certificate#s CN name does not match the passed value.
#
CERT_E_CN_NO_MATCH               = 0x0800B010F

#
# MessageId: CERT_E_WRONG_USAGE
#
# MessageText:
#
#  The certificate is not valid for the requested usage.
#
CERT_E_WRONG_USAGE               = 0x0800B0110

#
# MessageId: TRUST_E_EXPLICIT_DISTRUST
#
# MessageText:
#
#  The certificate was explicitly marked as untrusted by the user.
#
TRUST_E_EXPLICIT_DISTRUST        = 0x0800B0111

#
# MessageId: CERT_E_UNTRUSTEDCA
#
# MessageText:
#
#  A certification chain processed correctly, but one of the CA certificates is not trusted by the policy provider.
#
CERT_E_UNTRUSTEDCA               = 0x0800B0112

#
# MessageId: CERT_E_INVALID_POLICY
#
# MessageText:
#
#  The certificate has invalid policy.
#
CERT_E_INVALID_POLICY            = 0x0800B0113

#
# MessageId: CERT_E_INVALID_NAME
#
# MessageText:
#
#  The certificate has an invalid name. The name is not included in the permitted list or is explicitly excluded.
#
CERT_E_INVALID_NAME              = 0x0800B0114

# *****************
# FACILITY_SETUPAPI
# *****************
#
# Since these error codes aren#t in the standard Win32 range (i.e., 0-64K), define a
# macro to map either Win32 or SetupAPI error codes into an HRESULT.
#

#
# MessageId: SPAPI_E_EXPECTED_SECTION_NAME
#
# MessageText:
#
#  A non-empty line was encountered in the INF before the start of a section.
#
SPAPI_E_EXPECTED_SECTION_NAME    = 0x0800F0000

#
# MessageId: SPAPI_E_BAD_SECTION_NAME_LINE
#
# MessageText:
#
#  A section name marker in the INF is not complete, or does not exist on a line by itself.
#
SPAPI_E_BAD_SECTION_NAME_LINE    = 0x0800F0001

#
# MessageId: SPAPI_E_SECTION_NAME_TOO_LONG
#
# MessageText:
#
#  An INF section was encountered whose name exceeds the maximum section name length.
#
SPAPI_E_SECTION_NAME_TOO_LONG    = 0x0800F0002

#
# MessageId: SPAPI_E_GENERAL_SYNTAX
#
# MessageText:
#
#  The syntax of the INF is invalid.
#
SPAPI_E_GENERAL_SYNTAX           = 0x0800F0003

#
# MessageId: SPAPI_E_WRONG_INF_STYLE
#
# MessageText:
#
#  The style of the INF is different than what was requested.
#
SPAPI_E_WRONG_INF_STYLE          = 0x0800F0100

#
# MessageId: SPAPI_E_SECTION_NOT_FOUND
#
# MessageText:
#
#  The required section was not found in the INF.
#
SPAPI_E_SECTION_NOT_FOUND        = 0x0800F0101

#
# MessageId: SPAPI_E_LINE_NOT_FOUND
#
# MessageText:
#
#  The required line was not found in the INF.
#
SPAPI_E_LINE_NOT_FOUND           = 0x0800F0102

#
# MessageId: SPAPI_E_NO_BACKUP
#
# MessageText:
#
#  The files affected by the installation of this file queue have not been backed up for uninstall.
#
SPAPI_E_NO_BACKUP                = 0x0800F0103

#
# MessageId: SPAPI_E_NO_ASSOCIATED_CLASS
#
# MessageText:
#
#  The INF or the device information set or element does not have an associated install class.
#
SPAPI_E_NO_ASSOCIATED_CLASS      = 0x0800F0200

#
# MessageId: SPAPI_E_CLASS_MISMATCH
#
# MessageText:
#
#  The INF or the device information set or element does not match the specified install class.
#
SPAPI_E_CLASS_MISMATCH           = 0x0800F0201

#
# MessageId: SPAPI_E_DUPLICATE_FOUND
#
# MessageText:
#
#  An existing device was found that is a duplicate of the device being manually installed.
#
SPAPI_E_DUPLICATE_FOUND          = 0x0800F0202

#
# MessageId: SPAPI_E_NO_DRIVER_SELECTED
#
# MessageText:
#
#  There is no driver selected for the device information set or element.
#
SPAPI_E_NO_DRIVER_SELECTED       = 0x0800F0203

#
# MessageId: SPAPI_E_KEY_DOES_NOT_EXIST
#
# MessageText:
#
#  The requested device registry key does not exist.
#
SPAPI_E_KEY_DOES_NOT_EXIST       = 0x0800F0204

#
# MessageId: SPAPI_E_INVALID_DEVINST_NAME
#
# MessageText:
#
#  The device instance name is invalid.
#
SPAPI_E_INVALID_DEVINST_NAME     = 0x0800F0205

#
# MessageId: SPAPI_E_INVALID_CLASS
#
# MessageText:
#
#  The install class is not present or is invalid.
#
SPAPI_E_INVALID_CLASS            = 0x0800F0206

#
# MessageId: SPAPI_E_DEVINST_ALREADY_EXISTS
#
# MessageText:
#
#  The device instance cannot be created because it already exists.
#
SPAPI_E_DEVINST_ALREADY_EXISTS   = 0x0800F0207

#
# MessageId: SPAPI_E_DEVINFO_NOT_REGISTERED
#
# MessageText:
#
#  The operation cannot be performed on a device information element that has not been registered.
#
SPAPI_E_DEVINFO_NOT_REGISTERED   = 0x0800F0208

#
# MessageId: SPAPI_E_INVALID_REG_PROPERTY
#
# MessageText:
#
#  The device property code is invalid.
#
SPAPI_E_INVALID_REG_PROPERTY     = 0x0800F0209

#
# MessageId: SPAPI_E_NO_INF
#
# MessageText:
#
#  The INF from which a driver list is to be built does not exist.
#
SPAPI_E_NO_INF                   = 0x0800F020A

#
# MessageId: SPAPI_E_NO_SUCH_DEVINST
#
# MessageText:
#
#  The device instance does not exist in the hardware tree.
#
SPAPI_E_NO_SUCH_DEVINST          = 0x0800F020B

#
# MessageId: SPAPI_E_CANT_LOAD_CLASS_ICON
#
# MessageText:
#
#  The icon representing this install class cannot be loaded.
#
SPAPI_E_CANT_LOAD_CLASS_ICON     = 0x0800F020C

#
# MessageId: SPAPI_E_INVALID_CLASS_INSTALLER
#
# MessageText:
#
#  The class installer registry entry is invalid.
#
SPAPI_E_INVALID_CLASS_INSTALLER  = 0x0800F020D

#
# MessageId: SPAPI_E_DI_DO_DEFAULT
#
# MessageText:
#
#  The class installer has indicated that the default action should be performed for this installation request.
#
SPAPI_E_DI_DO_DEFAULT            = 0x0800F020E

#
# MessageId: SPAPI_E_DI_NOFILECOPY
#
# MessageText:
#
#  The operation does not require any files to be copied.
#
SPAPI_E_DI_NOFILECOPY            = 0x0800F020F

#
# MessageId: SPAPI_E_INVALID_HWPROFILE
#
# MessageText:
#
#  The specified hardware profile does not exist.
#
SPAPI_E_INVALID_HWPROFILE        = 0x0800F0210

#
# MessageId: SPAPI_E_NO_DEVICE_SELECTED
#
# MessageText:
#
#  There is no device information element currently selected for this device information set.
#
SPAPI_E_NO_DEVICE_SELECTED       = 0x0800F0211

#
# MessageId: SPAPI_E_DEVINFO_LIST_LOCKED
#
# MessageText:
#
#  The operation cannot be performed because the device information set is locked.
#
SPAPI_E_DEVINFO_LIST_LOCKED      = 0x0800F0212

#
# MessageId: SPAPI_E_DEVINFO_DATA_LOCKED
#
# MessageText:
#
#  The operation cannot be performed because the device information element is locked.
#
SPAPI_E_DEVINFO_DATA_LOCKED      = 0x0800F0213

#
# MessageId: SPAPI_E_DI_BAD_PATH
#
# MessageText:
#
#  The specified path does not contain any applicable device INFs.
#
SPAPI_E_DI_BAD_PATH              = 0x0800F0214

#
# MessageId: SPAPI_E_NO_CLASSINSTALL_PARAMS
#
# MessageText:
#
#  No class installer parameters have been set for the device information set or element.
#
SPAPI_E_NO_CLASSINSTALL_PARAMS   = 0x0800F0215

#
# MessageId: SPAPI_E_FILEQUEUE_LOCKED
#
# MessageText:
#
#  The operation cannot be performed because the file queue is locked.
#
SPAPI_E_FILEQUEUE_LOCKED         = 0x0800F0216

#
# MessageId: SPAPI_E_BAD_SERVICE_INSTALLSECT
#
# MessageText:
#
#  A service installation section in this INF is invalid.
#
SPAPI_E_BAD_SERVICE_INSTALLSECT  = 0x0800F0217

#
# MessageId: SPAPI_E_NO_CLASS_DRIVER_LIST
#
# MessageText:
#
#  There is no class driver list for the device information element.
#
SPAPI_E_NO_CLASS_DRIVER_LIST     = 0x0800F0218

#
# MessageId: SPAPI_E_NO_ASSOCIATED_SERVICE
#
# MessageText:
#
#  The installation failed because a function driver was not specified for this device instance.
#
SPAPI_E_NO_ASSOCIATED_SERVICE    = 0x0800F0219

#
# MessageId: SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE
#
# MessageText:
#
#  There is presently no default device interface designated for this interface class.
#
SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE = 0x0800F021A

#
# MessageId: SPAPI_E_DEVICE_INTERFACE_ACTIVE
#
# MessageText:
#
#  The operation cannot be performed because the device interface is currently active.
#
SPAPI_E_DEVICE_INTERFACE_ACTIVE  = 0x0800F021B

#
# MessageId: SPAPI_E_DEVICE_INTERFACE_REMOVED
#
# MessageText:
#
#  The operation cannot be performed because the device interface has been removed from the system.
#
SPAPI_E_DEVICE_INTERFACE_REMOVED = 0x0800F021C

#
# MessageId: SPAPI_E_BAD_INTERFACE_INSTALLSECT
#
# MessageText:
#
#  An interface installation section in this INF is invalid.
#
SPAPI_E_BAD_INTERFACE_INSTALLSECT = 0x0800F021D

#
# MessageId: SPAPI_E_NO_SUCH_INTERFACE_CLASS
#
# MessageText:
#
#  This interface class does not exist in the system.
#
SPAPI_E_NO_SUCH_INTERFACE_CLASS  = 0x0800F021E

#
# MessageId: SPAPI_E_INVALID_REFERENCE_STRING
#
# MessageText:
#
#  The reference string supplied for this interface device is invalid.
#
SPAPI_E_INVALID_REFERENCE_STRING = 0x0800F021F

#
# MessageId: SPAPI_E_INVALID_MACHINENAME
#
# MessageText:
#
#  The specified machine name does not conform to UNC naming conventions.
#
SPAPI_E_INVALID_MACHINENAME      = 0x0800F0220

#
# MessageId: SPAPI_E_REMOTE_COMM_FAILURE
#
# MessageText:
#
#  A general remote communication error occurred.
#
SPAPI_E_REMOTE_COMM_FAILURE      = 0x0800F0221

#
# MessageId: SPAPI_E_MACHINE_UNAVAILABLE
#
# MessageText:
#
#  The machine selected for remote communication is not available at this time.
#
SPAPI_E_MACHINE_UNAVAILABLE      = 0x0800F0222

#
# MessageId: SPAPI_E_NO_CONFIGMGR_SERVICES
#
# MessageText:
#
#  The Plug and Play service is not available on the remote machine.
#
SPAPI_E_NO_CONFIGMGR_SERVICES    = 0x0800F0223

#
# MessageId: SPAPI_E_INVALID_PROPPAGE_PROVIDER
#
# MessageText:
#
#  The property page provider registry entry is invalid.
#
SPAPI_E_INVALID_PROPPAGE_PROVIDER = 0x0800F0224

#
# MessageId: SPAPI_E_NO_SUCH_DEVICE_INTERFACE
#
# MessageText:
#
#  The requested device interface is not present in the system.
#
SPAPI_E_NO_SUCH_DEVICE_INTERFACE = 0x0800F0225

#
# MessageId: SPAPI_E_DI_POSTPROCESSING_REQUIRED
#
# MessageText:
#
#  The device#s co-installer has additional work to perform after installation is complete.
#
SPAPI_E_DI_POSTPROCESSING_REQUIRED = 0x0800F0226

#
# MessageId: SPAPI_E_INVALID_COINSTALLER
#
# MessageText:
#
#  The device#s co-installer is invalid.
#
SPAPI_E_INVALID_COINSTALLER      = 0x0800F0227

#
# MessageId: SPAPI_E_NO_COMPAT_DRIVERS
#
# MessageText:
#
#  There are no compatible drivers for this device.
#
SPAPI_E_NO_COMPAT_DRIVERS        = 0x0800F0228

#
# MessageId: SPAPI_E_NO_DEVICE_ICON
#
# MessageText:
#
#  There is no icon that represents this device or device type.
#
SPAPI_E_NO_DEVICE_ICON           = 0x0800F0229

#
# MessageId: SPAPI_E_INVALID_INF_LOGCONFIG
#
# MessageText:
#
#  A logical configuration specified in this INF is invalid.
#
SPAPI_E_INVALID_INF_LOGCONFIG    = 0x0800F022A

#
# MessageId: SPAPI_E_DI_DONT_INSTALL
#
# MessageText:
#
#  The class installer has denied the request to install or upgrade this device.
#
SPAPI_E_DI_DONT_INSTALL          = 0x0800F022B

#
# MessageId: SPAPI_E_INVALID_FILTER_DRIVER
#
# MessageText:
#
#  One of the filter drivers installed for this device is invalid.
#
SPAPI_E_INVALID_FILTER_DRIVER    = 0x0800F022C

#
# MessageId: SPAPI_E_NON_WINDOWS_NT_DRIVER
#
# MessageText:
#
#  The driver selected for this device does not support Windows XP.
#
SPAPI_E_NON_WINDOWS_NT_DRIVER    = 0x0800F022D

#
# MessageId: SPAPI_E_NON_WINDOWS_DRIVER
#
# MessageText:
#
#  The driver selected for this device does not support Windows.
#
SPAPI_E_NON_WINDOWS_DRIVER       = 0x0800F022E

#
# MessageId: SPAPI_E_NO_CATALOG_FOR_OEM_INF
#
# MessageText:
#
#  The third-party INF does not contain digital signature information.
#
SPAPI_E_NO_CATALOG_FOR_OEM_INF   = 0x0800F022F

#
# MessageId: SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE
#
# MessageText:
#
#  An invalid attempt was made to use a device installation file queue for verification of digital signatures relative to other platforms.
#
SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE = 0x0800F0230

#
# MessageId: SPAPI_E_NOT_DISABLEABLE
#
# MessageText:
#
#  The device cannot be disabled.
#
SPAPI_E_NOT_DISABLEABLE          = 0x0800F0231

#
# MessageId: SPAPI_E_CANT_REMOVE_DEVINST
#
# MessageText:
#
#  The device could not be dynamically removed.
#
SPAPI_E_CANT_REMOVE_DEVINST      = 0x0800F0232

#
# MessageId: SPAPI_E_INVALID_TARGET
#
# MessageText:
#
#  Cannot copy to specified target.
#
SPAPI_E_INVALID_TARGET           = 0x0800F0233

#
# MessageId: SPAPI_E_DRIVER_NONNATIVE
#
# MessageText:
#
#  Driver is not intended for this platform.
#
SPAPI_E_DRIVER_NONNATIVE         = 0x0800F0234

#
# MessageId: SPAPI_E_IN_WOW64
#
# MessageText:
#
#  Operation not allowed in WOW64.
#
SPAPI_E_IN_WOW64                 = 0x0800F0235

#
# MessageId: SPAPI_E_SET_SYSTEM_RESTORE_POINT
#
# MessageText:
#
#  The operation involving unsigned file copying was rolled back, so that a system restore point could be set.
#
SPAPI_E_SET_SYSTEM_RESTORE_POINT = 0x0800F0236

#
# MessageId: SPAPI_E_INCORRECTLY_COPIED_INF
#
# MessageText:
#
#  An INF was copied into the Windows INF directory in an improper manner.
#
SPAPI_E_INCORRECTLY_COPIED_INF   = 0x0800F0237

#
# MessageId: SPAPI_E_SCE_DISABLED
#
# MessageText:
#
#  The Security Configuration Editor (SCE) APIs have been disabled on this Embedded product.
#
SPAPI_E_SCE_DISABLED             = 0x0800F0238

#
# MessageId: SPAPI_E_ERROR_NOT_INSTALLED
#
# MessageText:
#
#  No installed components were detected.
#
SPAPI_E_ERROR_NOT_INSTALLED      = 0x0800F1000

# *****************
# FACILITY_SCARD
# *****************
#
# =============================
# Facility SCARD Error Messages
# =============================
#
SCARD_S_SUCCESS = NO_ERROR
#
# MessageId: SCARD_F_INTERNAL_ERROR
#
# MessageText:
#
#  An internal consistency check failed.
#
SCARD_F_INTERNAL_ERROR           = 0x080100001

#
# MessageId: SCARD_E_CANCELLED
#
# MessageText:
#
#  The action was cancelled by an SCardCancel request.
#
SCARD_E_CANCELLED                = 0x080100002

#
# MessageId: SCARD_E_INVALID_HANDLE
#
# MessageText:
#
#  The supplied handle was invalid.
#
SCARD_E_INVALID_HANDLE           = 0x080100003

#
# MessageId: SCARD_E_INVALID_PARAMETER
#
# MessageText:
#
#  One or more of the supplied parameters could not be properly interpreted.
#
SCARD_E_INVALID_PARAMETER        = 0x080100004

#
# MessageId: SCARD_E_INVALID_TARGET
#
# MessageText:
#
#  Registry startup information is missing or invalid.
#
SCARD_E_INVALID_TARGET           = 0x080100005

#
# MessageId: SCARD_E_NO_MEMORY
#
# MessageText:
#
#  Not enough memory available to complete this command.
#
SCARD_E_NO_MEMORY                = 0x080100006

#
# MessageId: SCARD_F_WAITED_TOO_LONG
#
# MessageText:
#
#  An internal consistency timer has expired.
#
SCARD_F_WAITED_TOO_LONG          = 0x080100007

#
# MessageId: SCARD_E_INSUFFICIENT_BUFFER
#
# MessageText:
#
#  The data buffer to receive returned data is too small for the returned data.
#
SCARD_E_INSUFFICIENT_BUFFER      = 0x080100008

#
# MessageId: SCARD_E_UNKNOWN_READER
#
# MessageText:
#
#  The specified reader name is not recognized.
#
SCARD_E_UNKNOWN_READER           = 0x080100009

#
# MessageId: SCARD_E_TIMEOUT
#
# MessageText:
#
#  The user-specified timeout value has expired.
#
SCARD_E_TIMEOUT                  = 0x08010000A

#
# MessageId: SCARD_E_SHARING_VIOLATION
#
# MessageText:
#
#  The smart card cannot be accessed because of other connections outstanding.
#
SCARD_E_SHARING_VIOLATION        = 0x08010000B

#
# MessageId: SCARD_E_NO_SMARTCARD
#
# MessageText:
#
#  The operation requires a Smart Card, but no Smart Card is currently in the device.
#
SCARD_E_NO_SMARTCARD             = 0x08010000C

#
# MessageId: SCARD_E_UNKNOWN_CARD
#
# MessageText:
#
#  The specified smart card name is not recognized.
#
SCARD_E_UNKNOWN_CARD             = 0x08010000D

#
# MessageId: SCARD_E_CANT_DISPOSE
#
# MessageText:
#
#  The system could not dispose of the media in the requested manner.
#
SCARD_E_CANT_DISPOSE             = 0x08010000E

#
# MessageId: SCARD_E_PROTO_MISMATCH
#
# MessageText:
#
#  The requested protocols are incompatible with the protocol currently in use with the smart card.
#
SCARD_E_PROTO_MISMATCH           = 0x08010000F

#
# MessageId: SCARD_E_NOT_READY
#
# MessageText:
#
#  The reader or smart card is not ready to accept commands.
#
SCARD_E_NOT_READY                = 0x080100010

#
# MessageId: SCARD_E_INVALID_VALUE
#
# MessageText:
#
#  One or more of the supplied parameters values could not be properly interpreted.
#
SCARD_E_INVALID_VALUE            = 0x080100011

#
# MessageId: SCARD_E_SYSTEM_CANCELLED
#
# MessageText:
#
#  The action was cancelled by the system, presumably to log off or shut down.
#
SCARD_E_SYSTEM_CANCELLED         = 0x080100012

#
# MessageId: SCARD_F_COMM_ERROR
#
# MessageText:
#
#  An internal communications error has been detected.
#
SCARD_F_COMM_ERROR               = 0x080100013

#
# MessageId: SCARD_F_UNKNOWN_ERROR
#
# MessageText:
#
#  An internal error has been detected, but the source is unknown.
#
SCARD_F_UNKNOWN_ERROR            = 0x080100014

#
# MessageId: SCARD_E_INVALID_ATR
#
# MessageText:
#
#  An ATR obtained from the registry is not a valid ATR string.
#
SCARD_E_INVALID_ATR              = 0x080100015

#
# MessageId: SCARD_E_NOT_TRANSACTED
#
# MessageText:
#
#  An attempt was made to end a non-existent transaction.
#
SCARD_E_NOT_TRANSACTED           = 0x080100016

#
# MessageId: SCARD_E_READER_UNAVAILABLE
#
# MessageText:
#
#  The specified reader is not currently available for use.
#
SCARD_E_READER_UNAVAILABLE       = 0x080100017

#
# MessageId: SCARD_P_SHUTDOWN
#
# MessageText:
#
#  The operation has been aborted to allow the server application to exit.
#
SCARD_P_SHUTDOWN                 = 0x080100018

#
# MessageId: SCARD_E_PCI_TOO_SMALL
#
# MessageText:
#
#  The PCI Receive buffer was too small.
#
SCARD_E_PCI_TOO_SMALL            = 0x080100019

#
# MessageId: SCARD_E_READER_UNSUPPORTED
#
# MessageText:
#
#  The reader driver does not meet minimal requirements for support.
#
SCARD_E_READER_UNSUPPORTED       = 0x08010001A

#
# MessageId: SCARD_E_DUPLICATE_READER
#
# MessageText:
#
#  The reader driver did not produce a unique reader name.
#
SCARD_E_DUPLICATE_READER         = 0x08010001B

#
# MessageId: SCARD_E_CARD_UNSUPPORTED
#
# MessageText:
#
#  The smart card does not meet minimal requirements for support.
#
SCARD_E_CARD_UNSUPPORTED         = 0x08010001C

#
# MessageId: SCARD_E_NO_SERVICE
#
# MessageText:
#
#  The Smart card resource manager is not running.
#
SCARD_E_NO_SERVICE               = 0x08010001D

#
# MessageId: SCARD_E_SERVICE_STOPPED
#
# MessageText:
#
#  The Smart card resource manager has shut down.
#
SCARD_E_SERVICE_STOPPED          = 0x08010001E

#
# MessageId: SCARD_E_UNEXPECTED
#
# MessageText:
#
#  An unexpected card error has occurred.
#
SCARD_E_UNEXPECTED               = 0x08010001F

#
# MessageId: SCARD_E_ICC_INSTALLATION
#
# MessageText:
#
#  No Primary Provider can be found for the smart card.
#
SCARD_E_ICC_INSTALLATION         = 0x080100020

#
# MessageId: SCARD_E_ICC_CREATEORDER
#
# MessageText:
#
#  The requested order of object creation is not supported.
#
SCARD_E_ICC_CREATEORDER          = 0x080100021

#
# MessageId: SCARD_E_UNSUPPORTED_FEATURE
#
# MessageText:
#
#  This smart card does not support the requested feature.
#
SCARD_E_UNSUPPORTED_FEATURE      = 0x080100022

#
# MessageId: SCARD_E_DIR_NOT_FOUND
#
# MessageText:
#
#  The identified directory does not exist in the smart card.
#
SCARD_E_DIR_NOT_FOUND            = 0x080100023

#
# MessageId: SCARD_E_FILE_NOT_FOUND
#
# MessageText:
#
#  The identified file does not exist in the smart card.
#
SCARD_E_FILE_NOT_FOUND           = 0x080100024

#
# MessageId: SCARD_E_NO_DIR
#
# MessageText:
#
#  The supplied path does not represent a smart card directory.
#
SCARD_E_NO_DIR                   = 0x080100025

#
# MessageId: SCARD_E_NO_FILE
#
# MessageText:
#
#  The supplied path does not represent a smart card file.
#
SCARD_E_NO_FILE                  = 0x080100026

#
# MessageId: SCARD_E_NO_ACCESS
#
# MessageText:
#
#  Access is denied to this file.
#
SCARD_E_NO_ACCESS                = 0x080100027

#
# MessageId: SCARD_E_WRITE_TOO_MANY
#
# MessageText:
#
#  The smartcard does not have enough memory to store the information.
#
SCARD_E_WRITE_TOO_MANY           = 0x080100028

#
# MessageId: SCARD_E_BAD_SEEK
#
# MessageText:
#
#  There was an error trying to set the smart card file object pointer.
#
SCARD_E_BAD_SEEK                 = 0x080100029

#
# MessageId: SCARD_E_INVALID_CHV
#
# MessageText:
#
#  The supplied PIN is incorrect.
#
SCARD_E_INVALID_CHV              = 0x08010002A

#
# MessageId: SCARD_E_UNKNOWN_RES_MNG
#
# MessageText:
#
#  An unrecognized error code was returned from a layered component.
#
SCARD_E_UNKNOWN_RES_MNG          = 0x08010002B

#
# MessageId: SCARD_E_NO_SUCH_CERTIFICATE
#
# MessageText:
#
#  The requested certificate does not exist.
#
SCARD_E_NO_SUCH_CERTIFICATE      = 0x08010002C

#
# MessageId: SCARD_E_CERTIFICATE_UNAVAILABLE
#
# MessageText:
#
#  The requested certificate could not be obtained.
#
SCARD_E_CERTIFICATE_UNAVAILABLE  = 0x08010002D

#
# MessageId: SCARD_E_NO_READERS_AVAILABLE
#
# MessageText:
#
#  Cannot find a smart card reader.
#
SCARD_E_NO_READERS_AVAILABLE     = 0x08010002E

#
# MessageId: SCARD_E_COMM_DATA_LOST
#
# MessageText:
#
#  A communications error with the smart card has been detected.  Retry the operation.
#
SCARD_E_COMM_DATA_LOST           = 0x08010002F

#
# MessageId: SCARD_E_NO_KEY_CONTAINER
#
# MessageText:
#
#  The requested key container does not exist on the smart card.
#
SCARD_E_NO_KEY_CONTAINER         = 0x080100030

#
# MessageId: SCARD_E_SERVER_TOO_BUSY
#
# MessageText:
#
#  The Smart card resource manager is too busy to complete this operation.
#
SCARD_E_SERVER_TOO_BUSY          = 0x080100031

#
# These are warning codes.
#
#
# MessageId: SCARD_W_UNSUPPORTED_CARD
#
# MessageText:
#
#  The reader cannot communicate with the smart card, due to ATR configuration conflicts.
#
SCARD_W_UNSUPPORTED_CARD         = 0x080100065

#
# MessageId: SCARD_W_UNRESPONSIVE_CARD
#
# MessageText:
#
#  The smart card is not responding to a reset.
#
SCARD_W_UNRESPONSIVE_CARD        = 0x080100066

#
# MessageId: SCARD_W_UNPOWERED_CARD
#
# MessageText:
#
#  Power has been removed from the smart card, so that further communication is not possible.
#
SCARD_W_UNPOWERED_CARD           = 0x080100067

#
# MessageId: SCARD_W_RESET_CARD
#
# MessageText:
#
#  The smart card has been reset, so any shared state information is invalid.
#
SCARD_W_RESET_CARD               = 0x080100068

#
# MessageId: SCARD_W_REMOVED_CARD
#
# MessageText:
#
#  The smart card has been removed, so that further communication is not possible.
#
SCARD_W_REMOVED_CARD             = 0x080100069

#
# MessageId: SCARD_W_SECURITY_VIOLATION
#
# MessageText:
#
#  Access was denied because of a security violation.
#
SCARD_W_SECURITY_VIOLATION       = 0x08010006A

#
# MessageId: SCARD_W_WRONG_CHV
#
# MessageText:
#
#  The card cannot be accessed because the wrong PIN was presented.
#
SCARD_W_WRONG_CHV                = 0x08010006B

#
# MessageId: SCARD_W_CHV_BLOCKED
#
# MessageText:
#
#  The card cannot be accessed because the maximum number of PIN entry attempts has been reached.
#
SCARD_W_CHV_BLOCKED              = 0x08010006C

#
# MessageId: SCARD_W_EOF
#
# MessageText:
#
#  The end of the smart card file has been reached.
#
SCARD_W_EOF                      = 0x08010006D

#
# MessageId: SCARD_W_CANCELLED_BY_USER
#
# MessageText:
#
#  The action was cancelled by the user.
#
SCARD_W_CANCELLED_BY_USER        = 0x08010006E

#
# MessageId: SCARD_W_CARD_NOT_AUTHENTICATED
#
# MessageText:
#
#  No PIN was presented to the smart card.
#
SCARD_W_CARD_NOT_AUTHENTICATED   = 0x08010006F

# *****************
# FACILITY_COMPLUS
# *****************
#
# ===============================
# Facility COMPLUS Error Messages
# ===============================
#
#
# The following are the subranges  within the COMPLUS facility
#= 0x0400 -= 0x04ff               COMADMIN_E_CAT
#= 0x0600 -= 0x06ff               COMQC errors
#= 0x0700 -= 0x07ff               MSDTC errors
#= 0x0800 -= 0x08ff               Other COMADMIN errors
#
# COMPLUS Admin errors
#
#
# MessageId: COMADMIN_E_OBJECTERRORS
#
# MessageText:
#
#  Errors occurred accessing one or more objects - the ErrorInfo collection may have more detail
#
COMADMIN_E_OBJECTERRORS          = 0x080110401

#
# MessageId: COMADMIN_E_OBJECTINVALID
#
# MessageText:
#
#  One or more of the object#s properties are missing or invalid
#
COMADMIN_E_OBJECTINVALID         = 0x080110402

#
# MessageId: COMADMIN_E_KEYMISSING
#
# MessageText:
#
#  The object was not found in the catalog
#
COMADMIN_E_KEYMISSING            = 0x080110403

#
# MessageId: COMADMIN_E_ALREADYINSTALLED
#
# MessageText:
#
#  The object is already registered
#
COMADMIN_E_ALREADYINSTALLED      = 0x080110404

#
# MessageId: COMADMIN_E_APP_FILE_WRITEFAIL
#
# MessageText:
#
#  Error occurred writing to the application file
#
COMADMIN_E_APP_FILE_WRITEFAIL    = 0x080110407

#
# MessageId: COMADMIN_E_APP_FILE_READFAIL
#
# MessageText:
#
#  Error occurred reading the application file
#
COMADMIN_E_APP_FILE_READFAIL     = 0x080110408

#
# MessageId: COMADMIN_E_APP_FILE_VERSION
#
# MessageText:
#
#  Invalid version number in application file
#
COMADMIN_E_APP_FILE_VERSION      = 0x080110409

#
# MessageId: COMADMIN_E_BADPATH
#
# MessageText:
#
#  The file path is invalid
#
COMADMIN_E_BADPATH               = 0x08011040A

#
# MessageId: COMADMIN_E_APPLICATIONEXISTS
#
# MessageText:
#
#  The application is already installed
#
COMADMIN_E_APPLICATIONEXISTS     = 0x08011040B

#
# MessageId: COMADMIN_E_ROLEEXISTS
#
# MessageText:
#
#  The role already exists
#
COMADMIN_E_ROLEEXISTS            = 0x08011040C

#
# MessageId: COMADMIN_E_CANTCOPYFILE
#
# MessageText:
#
#  An error occurred copying the file
#
COMADMIN_E_CANTCOPYFILE          = 0x08011040D

#
# MessageId: COMADMIN_E_NOUSER
#
# MessageText:
#
#  One or more users are not valid
#
COMADMIN_E_NOUSER                = 0x08011040F

#
# MessageId: COMADMIN_E_INVALIDUSERIDS
#
# MessageText:
#
#  One or more users in the application file are not valid
#
COMADMIN_E_INVALIDUSERIDS        = 0x080110410

#
# MessageId: COMADMIN_E_NOREGISTRYCLSID
#
# MessageText:
#
#  The component#s CLSID is missing or corrupt
#
COMADMIN_E_NOREGISTRYCLSID       = 0x080110411

#
# MessageId: COMADMIN_E_BADREGISTRYPROGID
#
# MessageText:
#
#  The component#s progID is missing or corrupt
#
COMADMIN_E_BADREGISTRYPROGID     = 0x080110412

#
# MessageId: COMADMIN_E_AUTHENTICATIONLEVEL
#
# MessageText:
#
#  Unable to set required authentication level for update request
#
COMADMIN_E_AUTHENTICATIONLEVEL   = 0x080110413

#
# MessageId: COMADMIN_E_USERPASSWDNOTVALID
#
# MessageText:
#
#  The identity or password set on the application is not valid
#
COMADMIN_E_USERPASSWDNOTVALID    = 0x080110414

#
# MessageId: COMADMIN_E_CLSIDORIIDMISMATCH
#
# MessageText:
#
#  Application file CLSIDs or IIDs do not match corresponding DLLs
#
COMADMIN_E_CLSIDORIIDMISMATCH    = 0x080110418

#
# MessageId: COMADMIN_E_REMOTEINTERFACE
#
# MessageText:
#
#  Interface information is either missing or changed
#
COMADMIN_E_REMOTEINTERFACE       = 0x080110419

#
# MessageId: COMADMIN_E_DLLREGISTERSERVER
#
# MessageText:
#
#  DllRegisterServer failed on component install
#
COMADMIN_E_DLLREGISTERSERVER     = 0x08011041A

#
# MessageId: COMADMIN_E_NOSERVERSHARE
#
# MessageText:
#
#  No server file share available
#
COMADMIN_E_NOSERVERSHARE         = 0x08011041B

#
# MessageId: COMADMIN_E_DLLLOADFAILED
#
# MessageText:
#
#  DLL could not be loaded
#
COMADMIN_E_DLLLOADFAILED         = 0x08011041D

#
# MessageId: COMADMIN_E_BADREGISTRYLIBID
#
# MessageText:
#
#  The registered TypeLib ID is not valid
#
COMADMIN_E_BADREGISTRYLIBID      = 0x08011041E

#
# MessageId: COMADMIN_E_APPDIRNOTFOUND
#
# MessageText:
#
#  Application install directory not found
#
COMADMIN_E_APPDIRNOTFOUND        = 0x08011041F

#
# MessageId: COMADMIN_E_REGISTRARFAILED
#
# MessageText:
#
#  Errors occurred while in the component registrar
#
COMADMIN_E_REGISTRARFAILED       = 0x080110423

#
# MessageId: COMADMIN_E_COMPFILE_DOESNOTEXIST
#
# MessageText:
#
#  The file does not exist
#
COMADMIN_E_COMPFILE_DOESNOTEXIST = 0x080110424

#
# MessageId: COMADMIN_E_COMPFILE_LOADDLLFAIL
#
# MessageText:
#
#  The DLL could not be loaded
#
COMADMIN_E_COMPFILE_LOADDLLFAIL  = 0x080110425

#
# MessageId: COMADMIN_E_COMPFILE_GETCLASSOBJ
#
# MessageText:
#
#  GetClassObject failed in the DLL
#
COMADMIN_E_COMPFILE_GETCLASSOBJ  = 0x080110426

#
# MessageId: COMADMIN_E_COMPFILE_CLASSNOTAVAIL
#
# MessageText:
#
#  The DLL does not support the components listed in the TypeLib
#
COMADMIN_E_COMPFILE_CLASSNOTAVAIL = 0x080110427

#
# MessageId: COMADMIN_E_COMPFILE_BADTLB
#
# MessageText:
#
#  The TypeLib could not be loaded
#
COMADMIN_E_COMPFILE_BADTLB       = 0x080110428

#
# MessageId: COMADMIN_E_COMPFILE_NOTINSTALLABLE
#
# MessageText:
#
#  The file does not contain components or component information
#
COMADMIN_E_COMPFILE_NOTINSTALLABLE = 0x080110429

#
# MessageId: COMADMIN_E_NOTCHANGEABLE
#
# MessageText:
#
#  Changes to this object and its sub-objects have been disabled
#
COMADMIN_E_NOTCHANGEABLE         = 0x08011042A

#
# MessageId: COMADMIN_E_NOTDELETEABLE
#
# MessageText:
#
#  The delete function has been disabled for this object
#
COMADMIN_E_NOTDELETEABLE         = 0x08011042B

#
# MessageId: COMADMIN_E_SESSION
#
# MessageText:
#
#  The server catalog version is not supported
#
COMADMIN_E_SESSION               = 0x08011042C

#
# MessageId: COMADMIN_E_COMP_MOVE_LOCKED
#
# MessageText:
#
#  The component move was disallowed, because the source or destination application is either a system application or currently locked against changes
#
COMADMIN_E_COMP_MOVE_LOCKED      = 0x08011042D

#
# MessageId: COMADMIN_E_COMP_MOVE_BAD_DEST
#
# MessageText:
#
#  The component move failed because the destination application no longer exists
#
COMADMIN_E_COMP_MOVE_BAD_DEST    = 0x08011042E

#
# MessageId: COMADMIN_E_REGISTERTLB
#
# MessageText:
#
#  The system was unable to register the TypeLib
#
COMADMIN_E_REGISTERTLB           = 0x080110430

#
# MessageId: COMADMIN_E_SYSTEMAPP
#
# MessageText:
#
#  This operation can not be performed on the system application
#
COMADMIN_E_SYSTEMAPP             = 0x080110433

#
# MessageId: COMADMIN_E_COMPFILE_NOREGISTRAR
#
# MessageText:
#
#  The component registrar referenced in this file is not available
#
COMADMIN_E_COMPFILE_NOREGISTRAR  = 0x080110434

#
# MessageId: COMADMIN_E_COREQCOMPINSTALLED
#
# MessageText:
#
#  A component in the same DLL is already installed
#
COMADMIN_E_COREQCOMPINSTALLED    = 0x080110435

#
# MessageId: COMADMIN_E_SERVICENOTINSTALLED
#
# MessageText:
#
#  The service is not installed
#
COMADMIN_E_SERVICENOTINSTALLED   = 0x080110436

#
# MessageId: COMADMIN_E_PROPERTYSAVEFAILED
#
# MessageText:
#
#  One or more property settings are either invalid or in conflict with each other
#
COMADMIN_E_PROPERTYSAVEFAILED    = 0x080110437

#
# MessageId: COMADMIN_E_OBJECTEXISTS
#
# MessageText:
#
#  The object you are attempting to add or rename already exists
#
COMADMIN_E_OBJECTEXISTS          = 0x080110438

#
# MessageId: COMADMIN_E_COMPONENTEXISTS
#
# MessageText:
#
#  The component already exists
#
COMADMIN_E_COMPONENTEXISTS       = 0x080110439

#
# MessageId: COMADMIN_E_REGFILE_CORRUPT
#
# MessageText:
#
#  The registration file is corrupt
#
COMADMIN_E_REGFILE_CORRUPT       = 0x08011043B

#
# MessageId: COMADMIN_E_PROPERTY_OVERFLOW
#
# MessageText:
#
#  The property value is too large
#
COMADMIN_E_PROPERTY_OVERFLOW     = 0x08011043C

#
# MessageId: COMADMIN_E_NOTINREGISTRY
#
# MessageText:
#
#  Object was not found in registry
#
COMADMIN_E_NOTINREGISTRY         = 0x08011043E

#
# MessageId: COMADMIN_E_OBJECTNOTPOOLABLE
#
# MessageText:
#
#  This object is not poolable
#
COMADMIN_E_OBJECTNOTPOOLABLE     = 0x08011043F

#
# MessageId: COMADMIN_E_APPLID_MATCHES_CLSID
#
# MessageText:
#
#  A CLSID with the same GUID as the new application ID is already installed on this machine
#
COMADMIN_E_APPLID_MATCHES_CLSID  = 0x080110446

#
# MessageId: COMADMIN_E_ROLE_DOES_NOT_EXIST
#
# MessageText:
#
#  A role assigned to a component, interface, or method did not exist in the application
#
COMADMIN_E_ROLE_DOES_NOT_EXIST   = 0x080110447

#
# MessageId: COMADMIN_E_START_APP_NEEDS_COMPONENTS
#
# MessageText:
#
#  You must have components in an application in order to start the application
#
COMADMIN_E_START_APP_NEEDS_COMPONENTS = 0x080110448

#
# MessageId: COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
#
# MessageText:
#
#  This operation is not enabled on this platform
#
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM = 0x080110449

#
# MessageId: COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY
#
# MessageText:
#
#  Application Proxy is not exportable
#
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY = 0x08011044A

#
# MessageId: COMADMIN_E_CAN_NOT_START_APP
#
# MessageText:
#
#  Failed to start application because it is either a library application or an application proxy
#
COMADMIN_E_CAN_NOT_START_APP     = 0x08011044B

#
# MessageId: COMADMIN_E_CAN_NOT_EXPORT_SYS_APP
#
# MessageText:
#
#  System application is not exportable
#
COMADMIN_E_CAN_NOT_EXPORT_SYS_APP = 0x08011044C

#
# MessageId: COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT
#
# MessageText:
#
#  Can not subscribe to this component (the component may have been imported)
#
COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT = 0x08011044D

#
# MessageId: COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
#
# MessageText:
#
#  An event class cannot also be a subscriber component
#
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER = 0x08011044E

#
# MessageId: COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
#
# MessageText:
#
#  Library applications and application proxies are incompatible
#
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE = 0x08011044F

#
# MessageId: COMADMIN_E_BASE_PARTITION_ONLY
#
# MessageText:
#
#  This function is valid for the base partition only
#
COMADMIN_E_BASE_PARTITION_ONLY   = 0x080110450

#
# MessageId: COMADMIN_E_START_APP_DISABLED
#
# MessageText:
#
#  You cannot start an application that has been disabled
#
COMADMIN_E_START_APP_DISABLED    = 0x080110451

#
# MessageId: COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME
#
# MessageText:
#
#  The specified partition name is already in use on this computer
#
COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME = 0x080110457

#
# MessageId: COMADMIN_E_CAT_INVALID_PARTITION_NAME
#
# MessageText:
#
#  The specified partition name is invalid. Check that the name contains at least one visible character
#
COMADMIN_E_CAT_INVALID_PARTITION_NAME = 0x080110458

#
# MessageId: COMADMIN_E_CAT_PARTITION_IN_USE
#
# MessageText:
#
#  The partition cannot be deleted because it is the default partition for one or more users
#
COMADMIN_E_CAT_PARTITION_IN_USE  = 0x080110459

#
# MessageId: COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES
#
# MessageText:
#
#  The partition cannot be exported, because one or more components in the partition have the same file name
#
COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES = 0x08011045A

#
# MessageId: COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED
#
# MessageText:
#
#  Applications that contain one or more imported components cannot be installed into a non-base partition
#
COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED = 0x08011045B

#
# MessageId: COMADMIN_E_AMBIGUOUS_APPLICATION_NAME
#
# MessageText:
#
#  The application name is not unique and cannot be resolved to an application id
#
COMADMIN_E_AMBIGUOUS_APPLICATION_NAME = 0x08011045C

#
# MessageId: COMADMIN_E_AMBIGUOUS_PARTITION_NAME
#
# MessageText:
#
#  The partition name is not unique and cannot be resolved to a partition id
#
COMADMIN_E_AMBIGUOUS_PARTITION_NAME = 0x08011045D

#
# MessageId: COMADMIN_E_REGDB_NOTINITIALIZED
#
# MessageText:
#
#  The COM+ registry database has not been initialized
#
COMADMIN_E_REGDB_NOTINITIALIZED  = 0x080110472

#
# MessageId: COMADMIN_E_REGDB_NOTOPEN
#
# MessageText:
#
#  The COM+ registry database is not open
#
COMADMIN_E_REGDB_NOTOPEN         = 0x080110473

#
# MessageId: COMADMIN_E_REGDB_SYSTEMERR
#
# MessageText:
#
#  The COM+ registry database detected a system error
#
COMADMIN_E_REGDB_SYSTEMERR       = 0x080110474

#
# MessageId: COMADMIN_E_REGDB_ALREADYRUNNING
#
# MessageText:
#
#  The COM+ registry database is already running
#
COMADMIN_E_REGDB_ALREADYRUNNING  = 0x080110475

#
# MessageId: COMADMIN_E_MIG_VERSIONNOTSUPPORTED
#
# MessageText:
#
#  This version of the COM+ registry database cannot be migrated
#
COMADMIN_E_MIG_VERSIONNOTSUPPORTED = 0x080110480

#
# MessageId: COMADMIN_E_MIG_SCHEMANOTFOUND
#
# MessageText:
#
#  The schema version to be migrated could not be found in the COM+ registry database
#
COMADMIN_E_MIG_SCHEMANOTFOUND    = 0x080110481

#
# MessageId: COMADMIN_E_CAT_BITNESSMISMATCH
#
# MessageText:
#
#  There was a type mismatch between binaries
#
COMADMIN_E_CAT_BITNESSMISMATCH   = 0x080110482

#
# MessageId: COMADMIN_E_CAT_UNACCEPTABLEBITNESS
#
# MessageText:
#
#  A binary of unknown or invalid type was provided
#
COMADMIN_E_CAT_UNACCEPTABLEBITNESS = 0x080110483

#
# MessageId: COMADMIN_E_CAT_WRONGAPPBITNESS
#
# MessageText:
#
#  There was a type mismatch between a binary and an application
#
COMADMIN_E_CAT_WRONGAPPBITNESS   = 0x080110484

#
# MessageId: COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED
#
# MessageText:
#
#  The application cannot be paused or resumed
#
COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED = 0x080110485

#
# MessageId: COMADMIN_E_CAT_SERVERFAULT
#
# MessageText:
#
#  The COM+ Catalog Server threw an exception during execution
#
COMADMIN_E_CAT_SERVERFAULT       = 0x080110486

#
# COMPLUS Queued component errors
#
#
# MessageId: COMQC_E_APPLICATION_NOT_QUEUED
#
# MessageText:
#
#  Only COM+ Applications marked "queued" can be invoked using the "queue" moniker
#
COMQC_E_APPLICATION_NOT_QUEUED   = 0x080110600

#
# MessageId: COMQC_E_NO_QUEUEABLE_INTERFACES
#
# MessageText:
#
#  At least one interface must be marked "queued" in order to create a queued component instance with the "queue" moniker
#
COMQC_E_NO_QUEUEABLE_INTERFACES  = 0x080110601

#
# MessageId: COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE
#
# MessageText:
#
#  MSMQ is required for the requested operation and is not installed
#
COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE = 0x080110602

#
# MessageId: COMQC_E_NO_IPERSISTSTREAM
#
# MessageText:
#
#  Unable to marshal an interface that does not support IPersistStream
#
COMQC_E_NO_IPERSISTSTREAM        = 0x080110603

#
# MessageId: COMQC_E_BAD_MESSAGE
#
# MessageText:
#
#  The message is improperly formatted or was damaged in transit
#
COMQC_E_BAD_MESSAGE              = 0x080110604

#
# MessageId: COMQC_E_UNAUTHENTICATED
#
# MessageText:
#
#  An unauthenticated message was received by an application that accepts only authenticated messages
#
COMQC_E_UNAUTHENTICATED          = 0x080110605

#
# MessageId: COMQC_E_UNTRUSTED_ENQUEUER
#
# MessageText:
#
#  The message was requeued or moved by a user not in the "QC Trusted User" role
#
COMQC_E_UNTRUSTED_ENQUEUER       = 0x080110606

#
# The range= 0x0700-0x7ff is reserved for MSDTC errors.
#
#
# MessageId: MSDTC_E_DUPLICATE_RESOURCE
#
# MessageText:
#
#  Cannot create a duplicate resource of type Distributed Transaction Coordinator
#
MSDTC_E_DUPLICATE_RESOURCE       = 0x080110701

#
# More COMADMIN errors from 0x08**
#
#
# MessageId: COMADMIN_E_OBJECT_PARENT_MISSING
#
# MessageText:
#
#  One of the objects being inserted or updated does not belong to a valid parent collection
#
COMADMIN_E_OBJECT_PARENT_MISSING = 0x080110808

#
# MessageId: COMADMIN_E_OBJECT_DOES_NOT_EXIST
#
# MessageText:
#
#  One of the specified objects cannot be found
#
COMADMIN_E_OBJECT_DOES_NOT_EXIST = 0x080110809

#
# MessageId: COMADMIN_E_APP_NOT_RUNNING
#
# MessageText:
#
#  The specified application is not currently running
#
COMADMIN_E_APP_NOT_RUNNING       = 0x08011080A

#
# MessageId: COMADMIN_E_INVALID_PARTITION
#
# MessageText:
#
#  The partition(s) specified are not valid.
#
COMADMIN_E_INVALID_PARTITION     = 0x08011080B

#
# MessageId: COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE
#
# MessageText:
#
#  COM+ applications that run as NT service may not be pooled or recycled
#
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE = 0x08011080D

#
# MessageId: COMADMIN_E_USER_IN_SET
#
# MessageText:
#
#  One or more users are already assigned to a local partition set.
#
COMADMIN_E_USER_IN_SET           = 0x08011080E

#
# MessageId: COMADMIN_E_CANTRECYCLELIBRARYAPPS
#
# MessageText:
#
#  Library applications may not be recycled.
#
COMADMIN_E_CANTRECYCLELIBRARYAPPS = 0x08011080F

#
# MessageId: COMADMIN_E_CANTRECYCLESERVICEAPPS
#
# MessageText:
#
#  Applications running as NT services may not be recycled.
#
COMADMIN_E_CANTRECYCLESERVICEAPPS = 0x080110811

#
# MessageId: COMADMIN_E_PROCESSALREADYRECYCLED
#
# MessageText:
#
#  The process has already been recycled.
#
COMADMIN_E_PROCESSALREADYRECYCLED = 0x080110812

#
# MessageId: COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED
#
# MessageText:
#
#  A paused process may not be recycled.
#
COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED = 0x080110813

#
# MessageId: COMADMIN_E_CANTMAKEINPROCSERVICE
#
# MessageText:
#
#  Library applications may not be NT services.
#
COMADMIN_E_CANTMAKEINPROCSERVICE = 0x080110814

#
# MessageId: COMADMIN_E_PROGIDINUSEBYCLSID
#
# MessageText:
#
#  The ProgID provided to the copy operation is invalid. The ProgID is in use by another registered CLSID.
#
COMADMIN_E_PROGIDINUSEBYCLSID    = 0x080110815

#
# MessageId: COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET
#
# MessageText:
#
#  The partition specified as default is not a member of the partition set.
#
COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET = 0x080110816

#
# MessageId: COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED
#
# MessageText:
#
#  A recycled process may not be paused.
#
COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED = 0x080110817

#
# MessageId: COMADMIN_E_PARTITION_ACCESSDENIED
#
# MessageText:
#
#  Access to the specified partition is denied.
#
COMADMIN_E_PARTITION_ACCESSDENIED = 0x080110818

#
# MessageId: COMADMIN_E_PARTITION_MSI_ONLY
#
# MessageText:
#
#  Only Application Files (*.MSI files) can be installed into partitions.
#
COMADMIN_E_PARTITION_MSI_ONLY    = 0x080110819

#
# MessageId: COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT
#
# MessageText:
#
#  Applications containing one or more legacy components may not be exported to 1.0 format.
#
COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT = 0x08011081A

#
# MessageId: COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS
#
# MessageText:
#
#  Legacy components may not exist in non-base partitions.
#
COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS = 0x08011081B

#
# MessageId: COMADMIN_E_COMP_MOVE_SOURCE
#
# MessageText:
#
#  A component cannot be moved (or copied) from the System Application, an application proxy or a non-changeable application
#
COMADMIN_E_COMP_MOVE_SOURCE      = 0x08011081C

#
# MessageId: COMADMIN_E_COMP_MOVE_DEST
#
# MessageText:
#
#  A component cannot be moved (or copied) to the System Application, an application proxy or a non-changeable application
#
COMADMIN_E_COMP_MOVE_DEST        = 0x08011081D

#
# MessageId: COMADMIN_E_COMP_MOVE_PRIVATE
#
# MessageText:
#
#  A private component cannot be moved (or copied) to a library application or to the base partition
#
COMADMIN_E_COMP_MOVE_PRIVATE     = 0x08011081E

#
# MessageId: COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET
#
# MessageText:
#
#  The Base Application Partition exists in all partition sets and cannot be removed.
#
COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET = 0x08011081F

#
# MessageId: COMADMIN_E_CANNOT_ALIAS_EVENTCLASS
#
# MessageText:
#
#  Alas, Event Class components cannot be aliased.
#
COMADMIN_E_CANNOT_ALIAS_EVENTCLASS = 0x080110820

#
# MessageId: COMADMIN_E_PRIVATE_ACCESSDENIED
#
# MessageText:
#
#  Access is denied because the component is private.
#
COMADMIN_E_PRIVATE_ACCESSDENIED  = 0x080110821

#
# MessageId: COMADMIN_E_SAFERINVALID
#
# MessageText:
#
#  The specified SAFER level is invalid.
#
COMADMIN_E_SAFERINVALID          = 0x080110822

#
# MessageId: COMADMIN_E_REGISTRY_ACCESSDENIED
#
# MessageText:
#
#  The specified user cannot write to the system registry
#
COMADMIN_E_REGISTRY_ACCESSDENIED = 0x080110823

#
# MessageId: COMADMIN_E_PARTITIONS_DISABLED
#
# MessageText:
#
#  COM+ partitions are currently disabled.
#
COMADMIN_E_PARTITIONS_DISABLED   = 0x080110824

# End of constants from winerror.h ============================================

# Constants from UserEnv.h ====================================================

PI_NOUI        = 0x000000001
PI_APPLYPOLICY = 0x000000002

PT_TEMPORARY = 0x000000001
PT_ROAMING   = 0x000000002
PT_MANDATORY = 0x000000004

RP_FORCE = 1

GPC_BLOCK_POLICY = 0x000000001

GPO_FLAG_DISABLE = 0x000000001
GPO_FLAG_FORCE   = 0x000000002

GPO_LIST_FLAG_MACHINE  = 0x000000001
GPO_LIST_FLAG_SITEONLY = 0x000000002

GPO_INFO_FLAG_MACHINE            = 0x000000001
GPO_INFO_FLAG_BACKGROUND         = 0x000000010
GPO_INFO_FLAG_SLOWLINK           = 0x000000020
GPO_INFO_FLAG_VERBOSE            = 0x000000040
GPO_INFO_FLAG_NOCHANGES          = 0x000000080
GPO_INFO_FLAG_LINKTRANSITION     = 0x000000100

GPO_INFO_FLAG_LOGRSOP_TRANSITION = 0x000000200

GPO_INFO_FLAG_FORCED_REFRESH     = 0x000000400
GPO_INFO_FLAG_SAFEMODE_BOOT      = 0x000000800
GPO_INFO_FLAG_ASYNC_FOREGROUND   = 0x000001000

RSOPUnspecified      = 0
RSOPApplied          = 1
RSOPIgnored          = 2
RSOPFailed           = 3
RSOPSubsettingFailed = 4

FLAG_NO_GPO_FILTER    = 0x080000000
FLAG_NO_CSE_INVOKE    = 0x040000000
FLAG_ASSUME_SLOW_LINK = 0x020000000
FLAG_LOOPBACK_MERGE   = 0x010000000
FLAG_LOOPBACK_REPLACE = 0x008000000

FLAG_ASSUME_USER_WQLFILTER_TRUE = 0x004000000
FLAG_ASSUME_COMP_WQLFILTER_TRUE = 0x002000000
FLAG_INTERNAL_MASK      = 0x001FFFFFF

FLAG_NO_USER               = 0x000000001
FLAG_NO_COMPUTER           = 0x000000002
FLAG_FORCE_CREATENAMESPACE = 0x000000004

RSOP_USER_ACCESS_DENIED     = 0x000000001
RSOP_COMPUTER_ACCESS_DENIED = 0x000000002
RSOP_TEMPNAMESPACE_EXISTS   = 0x000000004

# End of constants from UserEnv.h =============================================

# Constants from sensapi.h ====================================================

NETWORK_ALIVE_LAN = 0x000000001
NETWORK_ALIVE_WAN = 0x000000002
NETWORK_ALIVE_AOL = 0x000000004

# End of constants from sensapi.h =============================================

# Constants from objbase.h ====================================================

# class registration flags; passed to CoRegisterClassObject; REGCLS enum
REGCLS_SINGLEUSE      = 0 # class object only generates one instance
REGCLS_MULTIPLEUSE    = 1 # same class object genereates multiple inst.
                           # and local automatically goes into inproc tbl.
REGCLS_MULTI_SEPARATE = 2 # multiple use  but separate control over each
                           # context.
REGCLS_SUSPENDED      = 4 # register is as suspended  will be activated
                           # when app calls CoResumeClassObjects
REGCLS_SURROGATE      = 8 # must be used when a surrogate process

# interface marshaling definitions
MARSHALINTERFACE_MIN = 500 # minimum number of bytes for interface marshal

# Common typedefs for paramaters used in Storage API#s, gleamed from storage.h
# Also contains Storage error codes, which should be moved into the storage
# idl files.

CWCSTORAGENAME = 32

# Storage instantiation modes
STGM_DIRECT     = 0x000000000
STGM_TRANSACTED = 0x000010000
STGM_SIMPLE     = 0x008000000

STGM_READ       = 0x000000000
STGM_WRITE      = 0x000000001
STGM_READWRITE  = 0x000000002

STGM_SHARE_DENY_NONE  = 0x000000040
STGM_SHARE_DENY_READ  = 0x000000030
STGM_SHARE_DENY_WRITE = 0x000000020
STGM_SHARE_EXCLUSIVE  = 0x000000010

STGM_PRIORITY         = 0x000040000
STGM_DELETEONRELEASE  = 0x004000000
STGM_NOSCRATCH        = 0x000100000

STGM_CREATE      = 0x000001000
STGM_CONVERT     = 0x000020000
STGM_FAILIFTHERE = 0x000000000

STGM_NOSNAPSHOT  = 0x000200000
STGM_DIRECT_SWMR = 0x000400000

# flags for internet asyncronous and layout docfile
ASYNC_MODE_COMPATIBILITY = 0x000000001
ASYNC_MODE_DEFAULT       = 0x000000000

STGTY_REPEAT             = 0x000000100
STG_TOEND                = 0x0FFFFFFFF

STG_LAYOUT_SEQUENTIAL    = 0x000000000
STG_LAYOUT_INTERLEAVED   = 0x000000001

STGFMT_STORAGE = 0
STGFMT_NATIVE  = 1
STGFMT_FILE    = 3
STGFMT_ANY     = 4
STGFMT_DOCFILE = 5

# This is a legacy define to allow old component to builds [sic]
STGFMT_DOCUMENT = 0

# COM initialization flags; passed to CoInitialize. COINIT enum.
COINIT_APARTMENTTHREADED  = 0x02   # Apartment model

# flags for CoGetStdMarshalEx. STDMSHLFLAGS enum.
SMEXF_SERVER  = 0x001   # server side aggregated std marshaler
SMEXF_HANDLER = 0x002   # client side (handler) agg std marshaler

# End of constants from objbase.h =============================================




# File attributes
Normal   = 0
ReadOnly = 1
Hidden   = 2
System   = 4
vLabel   = 8
SubDir   = 16
Archive  = 32

#Common RGB Colors
BLACK   = 0x0000000
BLUE    = 0x0FF0000
GREEN   = 0x000FF00
CYAN    = 0x0FFFF00
RED     = 0x00000FF
MAGENTA = 0x0FF00FF
YELLOW  = 0x000FFFF
WHITE   = 0x0FFFFFF
GRAY    = 0x0808080
LTGRAY  = 0x0C0C0C0

INVALID_HANDLE_VALUE = 0x0FFFFFFFF
INVALID_FILE_SIZE = 0x0FFFFFFFF
INVALID_SET_FILE_POINTER = 0x0FFFFFFFF
INVALID_FILE_ATTRIBUTES = 0x0FFFFFFFF

FILE_BEGIN   = 0
FILE_CURRENT = 1
FILE_END     = 2

SV_HIDDEN  = 1
SV_VISIBLE = 0

# Service Types (Bit Mask)
SERVICE_KERNEL_DRIVER        = 0x000000001
SERVICE_FILE_SYSTEM_DRIVER   = 0x000000002
SERVICE_ADAPTER              = 0x000000004
SERVICE_RECOGNIZER_DRIVER    = 0x000000008

SERVICE_DRIVER = SERVICE_KERNEL_DRIVER or SERVICE_FILE_SYSTEM_DRIVER or SERVICE_RECOGNIZER_DRIVER

SERVICE_WIN32_OWN_PROCESS    = 0x000000010
SERVICE_WIN32_SHARE_PROCESS  = 0x000000020
SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS

SERVICE_INTERACTIVE_PROCESS  = 0x000000100

SERVICE_TYPE_ALL = SERVICE_WIN32 or SERVICE_ADAPTER or SERVICE_DRIVER or SERVICE_INTERACTIVE_PROCESS

#start types
SERVICE_BOOT_START     = 0x000000000
SERVICE_SYSTEM_START   = 0x000000001
SERVICE_AUTO_START     = 0x000000002
SERVICE_DEMAND_START   = 0x000000003
SERVICE_DISABLED       = 0x000000004

# Error control type

SERVICE_ERROR_IGNORE   = 0x000000000
SERVICE_ERROR_NORMAL   = 0x000000001
SERVICE_ERROR_SEVERE   = 0x000000002
SERVICE_ERROR_CRITICAL = 0x000000003

USER_PRIV_GUEST = 0
USER_PRIV_USER  = 1
USER_PRIV_ADMIN = 2

# Defines for the READ flags for Eventlogging

EVENTLOG_SEQUENTIAL_READ = 0x00001
EVENTLOG_SEEK_READ       = 0x00002
EVENTLOG_FORWARDS_READ   = 0x00004
EVENTLOG_BACKWARDS_READ  = 0x00008

# The types of events that can be logged.

EVENTLOG_SUCCESS               = 0x00000
EVENTLOG_ERROR_TYPE            = 0x00001
EVENTLOG_WARNING_TYPE          = 0x00002
EVENTLOG_INFORMATION_TYPE      = 0x00004
EVENTLOG_AUDIT_SUCCESS         = 0x00008
EVENTLOG_AUDIT_FAILURE         = 0x00010

# Defines for the WRITE flags used by Auditing for paired events
# These are not implemented in Product 1

EVENTLOG_START_PAIRED_EVENT    = 0x00001
EVENTLOG_END_PAIRED_EVENT      = 0x00002
EVENTLOG_END_ALL_PAIRED_EVENTS = 0x00004
EVENTLOG_PAIRED_EVENT_ACTIVE   = 0x00008
EVENTLOG_PAIRED_EVENT_INACTIVE = 0x00010

FILE_FLAG_FIRST_PIPE_INSTANCE = 0x0000080000
FILE_FLAG_OPEN_NO_RECALL      = 0x0000100000
FILE_FLAG_OPEN_REPARSE_POINT  = 0x0000200000
FILE_FLAG_POSIX_SEMANTICS     = 0x0001000000
FILE_FLAG_BACKUP_SEMANTICS    = 0x0002000000
FILE_FLAG_DELETE_ON_CLOSE     = 0x0004000000
FILE_FLAG_SEQUENTIAL_SCAN     = 0x0008000000
FILE_FLAG_RANDOM_ACCESS       = 0x0010000000
FILE_FLAG_NO_BUFFERING        = 0x0020000000
FILE_FLAG_OVERLAPPED          = 0x0040000000
FILE_FLAG_WRITE_THROUGH       = 0x0080000000

CREATE_NEW        = 1
CREATE_ALWAYS     = 2
OPEN_EXISTING     = 3
OPEN_ALWAYS       = 4
TRUNCATE_EXISTING = 5

FIND_FIRST_EX_CASE_SENSITIVE = 0x000000001

# Define possible return codes from the CopyFileEx callback routine

PROGRESS_CONTINUE = 0
PROGRESS_CANCEL   = 1
PROGRESS_STOP     = 2
PROGRESS_QUIET    = 3

# Define CopyFileEx callback routine state change values

CALLBACK_CHUNK_FINISHED  = 0x000000000
CALLBACK_STREAM_SWITCHED = 0x000000001

# Define CopyFileEx option flags

COPY_FILE_FAIL_IF_EXISTS              = 0x000000001
COPY_FILE_RESTARTABLE                 = 0x000000002
COPY_FILE_OPEN_SOURCE_FOR_WRITE       = 0x000000004
COPY_FILE_ALLOW_DECRYPTED_DESTINATION = 0x000000008

REPLACEFILE_WRITE_THROUGH       = 0x000000001
REPLACEFILE_IGNORE_MERGE_ERRORS = 0x000000002

VWIN32_DIOC_DOS_IOCTL     = 1 # DOS IOCTL commands
VWIN32_DIOC_DOS_INT25     = 2 # absolute disk read
VWIN32_DIOC_DOS_INT26     = 3 # absolute disk write
VWIN32_DIOC_DOS_INT13     = 4 # INT 13
VWIN32_DIOC_DOS_DRIVEINFO = 6 # Win95B or later

PIPE_ACCESS_INBOUND  = 0x01
PIPE_ACCESS_OUTBOUND = 0x02
PIPE_ACCESS_DUPLEX   = 0x03

PIPE_CLIENT_END      = 0x00
PIPE_SERVER_END      = 0x01

PIPE_WAIT             = 0x00
PIPE_NOWAIT           = 0x01
PIPE_READMODE_BYTE    = 0x00
PIPE_READMODE_MESSAGE = 0x02
PIPE_TYPE_BYTE        = 0x00
PIPE_TYPE_MESSAGE     = 0x04

PIPE_UNLIMITED_INSTANCES = 255

SECURITY_CONTEXT_TRACKING = 0x040000
SECURITY_EFFECTIVE_ONLY   = 0x080000

SECURITY_SQOS_PRESENT     = 0x0100000
SECURITY_VALID_SQOS_FLAGS = 0x01F0000

SP_SERIALCOMM = 0x01

PST_UNSPECIFIED    = 0x00
PST_RS232          = 0x01
PST_PARALLELPORT   = 0x02
PST_RS422          = 0x03
PST_RS423          = 0x04
PST_RS449          = 0x05
PST_FAX            = 0x021
PST_SCANNER        = 0x022
PST_NETWORK_BRIDGE = 0x0100
PST_LAT            = 0x0101
PST_TCPIP_TELNET   = 0x0102
PST_X25            = 0x0103

PCF_DTRDSR        = 0x01
PCF_RTSCTS        = 0x02
PCF_RLSD          = 0x04
PCF_PARITY_CHECK  = 0x08
PCF_XONXOFF       = 0x010
PCF_SETXCHAR      = 0x020
PCF_TOTALTIMEOUTS = 0x040
PCF_INTTIMEOUTS   = 0x080
PCF_SPECIALCHARS  = 0x0100
PCF_16BITMODE     = 0x0200

DLL_PROCESS_DETACH = 0
DLL_PROCESS_ATTACH = 1
DLL_THREAD_ATTACH  = 2
DLL_THREAD_DETACH  = 3

SP_PARITY       = 0x01
SP_BAUD         = 0x02
SP_DATABITS     = 0x04
SP_STOPBITS     = 0x08
SP_HANDSHAKING  = 0x010
SP_PARITY_CHECK = 0x020
SP_RLSD         = 0x040

BAUD_075    = 0x01
BAUD_110    = 0x02
BAUD_134_5  = 0x04
BAUD_150    = 0x08
BAUD_300    = 0x010
BAUD_600    = 0x020
BAUD_1200   = 0x040
BAUD_1800   = 0x080
BAUD_2400   = 0x0100
BAUD_4800   = 0x0200
BAUD_7200   = 0x0400
BAUD_9600   = 0x0800
BAUD_14400  = 0x000001000
BAUD_19200  = 0x000002000
BAUD_38400  = 0x000004000
BAUD_56K    = 0x000008000
BAUD_128K   = 0x010000
BAUD_115200 = 0x020000
BAUD_57600  = 0x040000
BAUD_USER   = 0x010000000

DATABITS_5   = 0x01
DATABITS_6   = 0x02
DATABITS_7   = 0x04
DATABITS_8   = 0x08
DATABITS_16  = 0x010
DATABITS_16X = 0x020

STOPBITS_10  = 0x01
STOPBITS_15  = 0x02
STOPBITS_20  = 0x04
PARITY_NONE  = 0x0100
PARITY_ODD   = 0x0200
PARITY_EVEN  = 0x0400
PARITY_MARK  = 0x0800
PARITY_SPACE = 0x01000

DTR_CONTROL_DISABLE   = 0x00
DTR_CONTROL_ENABLE    = 0x01
DTR_CONTROL_HANDSHAKE = 0x02

RTS_CONTROL_DISABLE   = 0x00
RTS_CONTROL_ENABLE    = 0x01
RTS_CONTROL_HANDSHAKE = 0x02
RTS_CONTROL_TOGGLE    = 0x03

# --- Values for SHFormatDrive, as semi-documented by Microsoft.
# --- See MSDN/Knowledgebase ID: Q173688
#
# Special value of fmtID which means "use the default format"
#
SHFMT_ID_DEFAULT  = 0x0FFFF
#
# Option bits for options parameter
#
SHFMT_OPT_FULL    = 0x00001
SHFMT_OPT_SYSONLY = 0x00002
#
# Special return values. PLEASE NOTE that these are DWORD values.
#
SHFMT_NOFORMAT = 0x0FFFFFFFD # error on last format, disk may be formattable
SHFMT_CANCEL   = 0x0FFFFFFFE # last format was canceled
SHFMT_ERROR    = 0x0FFFFFFFF # drive is not formattable

GMEM_FIXED          = 0x00
GMEM_MOVEABLE       = 0x02
GMEM_NOCOMPACT      = 0x010
GMEM_NODISCARD      = 0x020
GMEM_ZEROINIT       = 0x040
GMEM_MODIFY         = 0x080
GMEM_DISCARDABLE    = 0x0100
GMEM_NOT_BANKED     = 0x01000
GMEM_SHARE          = 0x02000
GMEM_DDESHARE       = 0x02000
GMEM_NOTIFY         = 0x04000
GMEM_LOWER          = GMEM_NOT_BANKED
GMEM_VALID_FLAGS    = 0x07F72
GMEM_INVALID_HANDLE = 0x000008000

MIIM_STATE      = 0x000000001
MIIM_ID         = 0x000000002
MIIM_SUBMENU    = 0x000000004
MIIM_CHECKMARKS = 0x000000008
MIIM_TYPE       = 0x000000010
MIIM_DATA       = 0x000000020
MIIM_STRING     = 0x000000040
MIIM_BITMAP     = 0x000000080
MIIM_FTYPE      = 0x000000100

GMEM_DISCARDED = 0x04000
GMEM_LOCKCOUNT = 0x0FF

GHND = GMEM_MOVEABLE or GMEM_ZEROINIT
GPTR = GMEM_FIXED or GMEM_ZEROINIT

LMEM_FIXED          = 0x00
LMEM_MOVEABLE       = 0x02
LMEM_NOCOMPACT      = 0x010
LMEM_NODISCARD      = 0x020
LMEM_ZEROINIT       = 0x040
LMEM_MODIFY         = 0x080
LMEM_DISCARDABLE    = 0x0F00
LMEM_VALID_FLAGS    = 0x0F72
LMEM_INVALID_HANDLE = 0x000008000

LHND = LMEM_MOVEABLE + LMEM_ZEROINIT
LPTR = LMEM_FIXED + LMEM_ZEROINIT

NONZEROLHND  = LMEM_MOVEABLE
NONZEROLPTR  = LMEM_FIXED

LMEM_DISCARDED      = 0x04000
LMEM_LOCKCOUNT      = 0x000FF

HEAP_NO_SERIALIZE             = 0x000000001
HEAP_GROWABLE                 = 0x000000002
HEAP_GENERATE_EXCEPTIONS      = 0x000000004
HEAP_ZERO_MEMORY              = 0x000000008
HEAP_REALLOC_IN_PLACE_ONLY    = 0x000000010
HEAP_TAIL_CHECKING_ENABLED    = 0x000000020
HEAP_FREE_CHECKING_ENABLED    = 0x000000040
HEAP_DISABLE_COALESCE_ON_FREE = 0x000000080
HEAP_CREATE_ALIGN_16          = 0x000010000
HEAP_CREATE_ENABLE_TRACING    = 0x000020000
HEAP_MAXIMUM_TAG              = 0x000000FFF
HEAP_PSEUDO_TAG_FLAG          = 0x000008000
HEAP_TAG_SHIFT                = 18

IS_TEXT_UNICODE_ASCII16            = 0x000000001
IS_TEXT_UNICODE_REVERSE_ASCII16    = 0x000000010
IS_TEXT_UNICODE_STATISTICS         = 0x000000002
IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x000000020
IS_TEXT_UNICODE_CONTROLS           = 0x000000004
IS_TEXT_UNICODE_REVERSE_CONTROLS   = 0x000000040
IS_TEXT_UNICODE_SIGNATURE          = 0x000000008
IS_TEXT_UNICODE_REVERSE_SIGNATURE  = 0x000000080
IS_TEXT_UNICODE_ILLEGAL_CHARS      = 0x000000100
IS_TEXT_UNICODE_ODD_LENGTH         = 0x000000200
IS_TEXT_UNICODE_DBCS_LEADBYTE      = 0x000000400
IS_TEXT_UNICODE_NULL_BYTES         = 0x000001000
IS_TEXT_UNICODE_UNICODE_MASK       = 0x00000000F
IS_TEXT_UNICODE_REVERSE_MASK       = 0x0000000F0
IS_TEXT_UNICODE_NOT_UNICODE_MASK   = 0x000000F00
IS_TEXT_UNICODE_NOT_ASCII_MASK     = 0x00000F000

COMPRESSION_FORMAT_NONE     = 0x00000
COMPRESSION_FORMAT_DEFAULT  = 0x00001
COMPRESSION_FORMAT_LZNT1    = 0x00002
COMPRESSION_ENGINE_STANDARD = 0x00000
COMPRESSION_ENGINE_MAXIMUM  = 0x00100
COMPRESSION_ENGINE_HIBER    = 0x00200

DEBUG_PROCESS           = 1
DEBUG_ONLY_THIS_PROCESS = 2

CREATE_SUSPENDED   = 4

DETACHED_PROCESS   = 8

CREATE_NEW_CONSOLE = 0x010

CREATE_NO_WINDOW = 0x008000000

PROFILE_USER   = 0x010000000
PROFILE_KERNEL = 0x020000000
PROFILE_SERVER = 0x040000000

THREAD_BASE_PRIORITY_LOWRT = 15  # value that gets a thread to LowRealtime-1
THREAD_BASE_PRIORITY_MAX   = 2   # maximum thread base priority boost
THREAD_BASE_PRIORITY_MIN   = -2  # minimum thread base priority boost
THREAD_BASE_PRIORITY_IDLE  = -15 # value that gets a thread to idle

MAXLONG                      = 0x07FFFFFFF
THREAD_PRIORITY_LOWEST       = THREAD_BASE_PRIORITY_MIN
THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1
THREAD_PRIORITY_NORMAL       = 0
THREAD_PRIORITY_HIGHEST      = THREAD_BASE_PRIORITY_MAX
THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1
THREAD_PRIORITY_ERROR_RETURN = MAXLONG

THREAD_PRIORITY_TIME_CRITICAL= THREAD_BASE_PRIORITY_LOWRT
THREAD_PRIORITY_IDLE         = THREAD_BASE_PRIORITY_IDLE

ATTR_ARCHIVE  = FILE_ATTRIBUTE_ARCHIVE
ATTR_DIR      = FILE_ATTRIBUTE_DIRECTORY
ATTR_HIDDEN   = FILE_ATTRIBUTE_HIDDEN
ATTR_NORMAL   = FILE_ATTRIBUTE_NORMAL
ATTR_READONLY = FILE_ATTRIBUTE_READONLY
ATTR_SYSTEM   = FILE_ATTRIBUTE_SYSTEM

HELPINFO_WINDOW   = 1
HELPINFO_MENUITEM = 2

REG_OPTION_RESERVED             = 0     # Parameter is reserved
REG_OPTION_NON_VOLATILE         = 0     # Key is preserved when system is rebooted
REG_OPTION_VOLATILE             = 1     # Key is not preserved when system is rebooted
REG_OPTION_CREATE_LINK          = 2     # Created key is a symbolic link
REG_OPTION_BACKUP_RESTORE       = 4     # open for backup or restore
REG_OPTION_OPEN_LINK            = 8     # Open symbolic link

REG_NONE                        = 0     # No value type
REG_SZ                          = 1     # Unicode nul terminated string
REG_EXPAND_SZ                   = 2     # Unicode nul terminated string
REG_BINARY                      = 3     # Free form binary
REG_DWORD                       = 4     # 32-bit number
REG_DWORD_LITTLE_ENDIAN         = 4     # 32-bit number (same as REG_DWORD)
REG_DWORD_BIG_ENDIAN            = 5     # 32-bit number
REG_LINK                        = 6     # Symbolic Link (unicode)
REG_MULTI_SZ                    = 7     # Multiple Unicode strings
REG_RESOURCE_LIST               = 8     # Resource list in the resource map
REG_FULL_RESOURCE_DESCRIPTOR    = 9     # Resource list in the hardware description
REG_RESOURCE_REQUIREMENTS_LIST  = 10
REG_QWORD                       = 11    # 64-bit number
REG_QWORD_LITTLE_ENDIAN         = 11    # 64-bit number (same as REG_QWORD)

REG_CREATED_NEW_KEY             = 1     # New Registry Key created
REG_OPENED_EXISTING_KEY         = 2     # Existing Key opened
REG_WHOLE_HIVE_VOLATILE         = 1     # Restore whole hive volatile
REG_REFRESH_HIVE                = 2     # Unwind changes to last flush
REG_NO_LAZY_FLUSH               = 4     # Never lazy flush this hive
REG_FORCE_RESTORE               = 8     # Force the restore process even when we have open handles on subkeys
REG_NOTIFY_CHANGE_NAME          = 1     # Create or delete (child)
REG_NOTIFY_CHANGE_ATTRIBUTES    = 2
REG_NOTIFY_CHANGE_LAST_SET      = 4     # Time stamp
REG_NOTIFY_CHANGE_SECURITY      = 8
REG_LEGAL_CHANGE_FILTER         = REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_ATTRIBUTES or REG_NOTIFY_CHANGE_LAST_SET or REG_NOTIFY_CHANGE_SECURITY
REG_LEGAL_OPTION                = REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or REG_OPTION_VOLATILE or REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE or REG_OPTION_OPEN_LINK

KEY_QUERY_VALUE        = 0x01
KEY_SET_VALUE          = 0x02
KEY_CREATE_SUB_KEY     = 0x04
KEY_ENUMERATE_SUB_KEYS = 0x08
KEY_NOTIFY             = 0x010
KEY_CREATE_LINK        = 0x020
KEY_READ               = STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY and (not SYNCHRONIZE)
KEY_WRITE              = STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY and (not SYNCHRONIZE)
KEY_EXECUTE            = KEY_READ
KEY_ALL_ACCESS         = STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or KEY_CREATE_LINK and (not SYNCHRONIZE)

EXCEPTION_DEBUG_EVENT      = 1
CREATE_THREAD_DEBUG_EVENT  = 2
CREATE_PROCESS_DEBUG_EVENT = 3
EXIT_THREAD_DEBUG_EVENT    = 4
EXIT_PROCESS_DEBUG_EVENT   = 5
LOAD_DLL_DEBUG_EVENT       = 6
UNLOAD_DLL_DEBUG_EVENT     = 7
OUTPUT_DEBUG_STRING_EVENT  = 8
RIP_EVENT                  = 9


DRIVE_UNKNOWN     = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE   = 2
DRIVE_FIXED       = 3
DRIVE_REMOTE      = 4
DRIVE_CDROM       = 5
DRIVE_RAMDISK     = 6

FILE_TYPE_UNKNOWN = 0x00
FILE_TYPE_DISK    = 0x01
FILE_TYPE_CHAR    = 0x02
FILE_TYPE_PIPE    = 0x03
FILE_TYPE_REMOTE  = 0x000008000

STD_INPUT_HANDLE  = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE  = -12

NOPARITY    = 0
ODDPARITY   = 1
EVENPARITY  = 2
MARKPARITY  = 3
SPACEPARITY = 4

ONESTOPBIT   = 0
ONE5STOPBITS = 1
TWOSTOPBITS  = 2

IGNORE   = 0               # Ignore signal
INFINITE = 0x0FFFFFFFF   # Infinite timeout

# Comm Baud Rate indices
CBR_110      = 110
CBR_300      = 300
CBR_600      = 600
CBR_1200     = 1200
CBR_2400     = 2400
CBR_4800     = 4800
CBR_9600     = 9600
CBR_14400    = 14400
CBR_19200    = 19200
CBR_38400    = 38400
CBR_56000    = 56000
CBR_57600    = 57600
CBR_115200   = 115200
CBR_128000   = 128000
CBR_256000   = 256000

# Error Flags
CE_RXOVER   = 0x01       # Receive Queue overflow
CE_OVERRUN  = 0x02       # Receive Overrun Error
CE_RXPARITY = 0x04       # Receive Parity Error
CE_FRAME    = 0x08       # Receive Framing error
CE_BREAK    = 0x010      # Break Detected
CE_TXFULL   = 0x0100     # TX Queue is full
CE_PTO      = 0x0200     # LPTx Timeout
CE_IOE      = 0x0400     # LPTx I/O Error
CE_DNS      = 0x0800     # LPTx Device not selected
CE_OOP      = 0x000001000    # LPTx Out-Of-Paper
CE_MODE     = 0x000008000    # Requested mode unsupported

IE_BADID    = -1        # Invalid or unsupported id
IE_OPEN     = -2        # Device Already Open
IE_NOPEN    = -3        # Device Not Open
IE_MEMORY   = -4        # Unable to allocate queues
IE_DEFAULT  = -5        # Error in default parameters
IE_HARDWARE = -10       # Hardware Not Present
IE_BYTESIZE = -11       # Illegal Byte Size
IE_BAUDRATE = -12       # Unsupported BaudRate

# Events
EV_RXCHAR   = 0x01       # Any Character received
EV_RXFLAG   = 0x02       # Received certain character
EV_TXEMPTY  = 0x04       # Transmitt Queue Empty
EV_CTS      = 0x08       # CTS changed state
EV_DSR      = 0x010      # DSR changed state
EV_RLSD     = 0x020      # RLSD changed state
EV_BREAK    = 0x040      # BREAK received
EV_ERR      = 0x080      # Line status error occurred
EV_RING     = 0x0100     # Ring signal detected
EV_PERR     = 0x0200     # Printer error occured
EV_RX80FULL = 0x0400     # Receive buffer is 80 percent full
EV_EVENT1   = 0x0800     # Provider specific event 1
EV_EVENT2   = 0x01000    # Provider specific event 2

SETXOFF  = 1         # Simulate XOFF received
SETXON   = 2         # Simulate XON received
SETRTS   = 3         # Set RTS high
CLRRTS   = 4         # Set RTS low
SETDTR   = 5         # Set DTR high
CLRDTR   = 6         # Set DTR low
RESETDEV = 7         # Reset device if possible
SETBREAK = 8         # Set the device break line
CLRBREAK = 9         # Clear the device break line

PURGE_TXABORT = 0x01       # Kill the pending/current writes to the comm port.
PURGE_RXABORT = 0x02       # Kill the pending/current reads to the comm port.
PURGE_TXCLEAR = 0x04       # Kill the transmit queue if there.
PURGE_RXCLEAR = 0x08       # Kill the typeahead buffer if there.

LPTx = 0x080      # Set if ID is for LPT device

MS_CTS_ON  = 0x010
MS_DSR_ON  = 0x020
MS_RING_ON = 0x040
MS_RLSD_ON = 0x080

S_QUEUEEMPTY   = 0
S_THRESHOLD    = 1
S_ALLTHRESHOLD = 2

S_NORMAL       = 0
S_LEGATO       = 1
S_STACCATO     = 2

S_PERIOD512    = 0   # Freq = N/512 high pitch, less coarse hiss
S_PERIOD1024   = 1   # Freq = N/1024
S_PERIOD2048   = 2   # Freq = N/2048 low pitch, more coarse hiss
S_PERIODVOICE  = 3   # Source is frequency from voice channel (3)
S_WHITE512     = 4   # Freq = N/512 high pitch, less coarse hiss
S_WHITE1024    = 5   # Freq = N/1024
S_WHITE2048    = 6   # Freq = N/2048 low pitch, more coarse hiss
S_WHITEVOICE   = 7   # Source is frequency from voice channel (3)

S_SERDVNA      = -1  # Device not available
S_SEROFM       = -2  # Out of memory
S_SERMACT      = -3  # Music active
S_SERQFUL      = -4  # Queue full
S_SERBDNT      = -5  # Invalid note
S_SERDLN       = -6  # Invalid note length
S_SERDCC       = -7  # Invalid note count
S_SERDTP       = -8  # Invalid tempo
S_SERDVL       = -9  # Invalid volume
S_SERDMD       = -10 # Invalid mode
S_SERDSH       = -11 # Invalid shape
S_SERDPT       = -12 # Invalid pitch
S_SERDFQ       = -13 # Invalid frequency
S_SERDDR       = -14 # Invalid duration
S_SERDSR       = -15 # Invalid source
S_SERDST       = -16 # Invalid state

NMPWAIT_WAIT_FOREVER      = 0x0FFFFFFFF
NMPWAIT_NOWAIT            = 0x000000001
NMPWAIT_USE_DEFAULT_WAIT  = 0x000000000

FS_CASE_IS_PRESERVED      = FILE_CASE_PRESERVED_NAMES
FS_CASE_SENSITIVE         = FILE_CASE_SENSITIVE_SEARCH
FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK
FS_PERSISTENT_ACLS        = FILE_PERSISTENT_ACLS
FS_VOL_IS_COMPRESSED      = FILE_VOLUME_IS_COMPRESSED
FS_FILE_COMPRESSION       = FILE_FILE_COMPRESSION
FS_FILE_ENCRYPTION        = FILE_SUPPORTS_ENCRYPTION

FILE_MAP_COPY       = SECTION_QUERY
FILE_MAP_WRITE      = SECTION_MAP_WRITE
FILE_MAP_READ       = SECTION_MAP_READ
FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS

# OpenFile() Flags
OF_READ             = 0x00
OF_WRITE            = 0x01
OF_READWRITE        = 0x02
OF_SHARE_COMPAT     = 0x00
OF_SHARE_EXCLUSIVE  = 0x010
OF_SHARE_DENY_WRITE = 0x020
OF_SHARE_DENY_READ  = 0x030
OF_SHARE_DENY_NONE  = 0x040
OF_PARSE            = 0x0100
OF_DELETE           = 0x0200
OF_VERIFY           = 0x0400
OF_CANCEL           = 0x0800
OF_CREATE           = 0x000001000
OF_PROMPT           = 0x000002000
OF_EXIST            = 0x000004000
OF_REOPEN           = 0x000008000

OFS_MAXPATHNAME = 128

DONT_RESOLVE_DLL_REFERENCES   = 0x000000001
LOAD_LIBRARY_AS_DATAFILE      = 0x000000002
LOAD_WITH_ALTERED_SEARCH_PATH = 0x000000008

TC_NORMAL  = 0
TC_HARDERR = 1
TC_GP_TRAP = 2
TC_SIGNAL  = 3

LOCALE_USER_DEFAULT     = 0x00000
LOCALE_SYSTEM_DEFAULT   = 0x00800

TIME_ZONE_ID_INVALID  = 0x0FFFFFFFF
TIME_ZONE_ID_UNKNOWN  = 0
TIME_ZONE_ID_STANDARD = 1
TIME_ZONE_ID_DAYLIGHT = 2

# Equates from WINNLS.H =======================================================

MAX_LEADBYTES   = 12   # 5 ranges, 2 bytes ea., 0 term.
MAX_DEFAULTCHAR = 2    # single or double byte

# MBCS and Unicode Translation Flags
MB_PRECOMPOSED       = 0x000000001  # use precomposed chars
MB_COMPOSITE         = 0x000000002  # use composite chars
MB_USEGLYPHCHARS     = 0x000000004  # use glyph chars, not ctrl chars
MB_ERR_INVALID_CHARS = 0x000000008  # error for invalid chars

WC_COMPOSITECHECK    = 0x000000200  # convert composite to precomposed
WC_DISCARDNS         = 0x000000010  # discard non-spacing chars
WC_SEPCHARS          = 0x000000020  # generate separate chars
WC_DEFAULTCHAR       = 0x000000040  # replace w/ default char
WC_NO_BEST_FIT_CHARS = 0x000000400  # do not use best fit chars

# Character Type Flags.
CT_CTYPE1 = 0x00001   # ctype 1 information
CT_CTYPE2 = 0x00002   # ctype 2 information
CT_CTYPE3 = 0x00004   # ctype 3 information

# CType 1 Flag Bits.
C1_UPPER   = 0x00001  # upper case
C1_LOWER   = 0x00002  # lower case
C1_DIGIT   = 0x00004  # decimal digits
C1_SPACE   = 0x00008  # spacing characters
C1_PUNCT   = 0x00010  # punctuation characters
C1_CNTRL   = 0x00020  # control characters
C1_BLANK   = 0x00040  # blank characters
C1_XDIGIT  = 0x00080  # other digits
C1_ALPHA   = 0x00100  # any linguistic character
C1_DEFINED = 0x00200  # defined character

# CType 2 Flag Bits.
C2_LEFTTORIGHT      = 0x00001     # left to right
C2_RIGHTTOLEFT      = 0x00002     # right to left
C2_EUROPENUMBER     = 0x00003     # European number, digit
C2_EUROPESEPARATOR  = 0x00004     # European numeric separator
C2_EUROPETERMINATOR = 0x00005     # European numeric terminator
C2_ARABICNUMBER     = 0x00006     # Arabic number
C2_COMMONSEPARATOR  = 0x00007     # common numeric separator
C2_BLOCKSEPARATOR   = 0x00008     # block separator
C2_SEGMENTSEPARATOR = 0x00009     # segment separator
C2_WHITESPACE       = 0x0000A     # white space
C2_OTHERNEUTRAL     = 0x0000B     # other neutrals
C2_NOTAPPLICABLE    = 0x00000     # no implicit directionality

# CType 3 Flag Bits.
C3_NONSPACING    = 0x000001  # nonspacing character
C3_DIACRITIC     = 0x000002  # diacritic mark
C3_VOWELMARK     = 0x000004  # vowel mark
C3_SYMBOL        = 0x000008  # symbols
C3_KATAKANA      = 0x000010  # katakana character
C3_HIRAGANA      = 0x000020  # hiragana character
C3_HALFWIDTH     = 0x000040  # half width character
C3_FULLWIDTH     = 0x000080  # full width character
C3_IDEOGRAPH     = 0x000100  # ideographic character
C3_KASHIDA       = 0x000200  # Arabic kashida character
C3_LEXICAL       = 0x000400  # lexical character
C3_ALPHA         = 0x008000  # any linguistic char (C1_ALPHA)
C3_NOTAPPLICABLE = 0x000000  # ctype 3 is not applicable

# String Flags.
NORM_IGNORECASE     = 0x000000001  # ignore case
NORM_IGNORENONSPACE = 0x000000002  # ignore nonspacing chars
NORM_IGNORESYMBOLS  = 0x000000004  # ignore symbols
NORM_IGNOREKANATYPE = 0x000010000  # ignore kanatype
NORM_IGNOREWIDTH    = 0x000020000  # ignore width

# Locale Independent Mapping Flags.
MAP_FOLDCZONE        = 0x000000010  # fold compatibility zone chars
MAP_PRECOMPOSED      = 0x000000020  # convert to precomposed chars
MAP_COMPOSITE        = 0x000000040  # convert to composite chars
MAP_FOLDDIGITS       = 0x000000080  # all digits to ASCII 0-9
MAP_EXPAND_LIGATURES = 0x000002000  # expand all ligatures

# Locale Dependent Mapping Flags.
LCMAP_LOWERCASE           = 0x000000100  # lower case letters
LCMAP_UPPERCASE           = 0x000000200  # upper case letters
LCMAP_SORTKEY             = 0x000000400  # WC sort key (normalize)
LCMAP_BYTEREV             = 0x000000800  # byte reversal
LCMAP_HIRAGANA            = 0x000100000  # map katakana to hiragana
LCMAP_KATAKANA            = 0x000200000  # map hiragana to katakana
LCMAP_HALFWIDTH           = 0x000400000  # map double byte to single byte
LCMAP_FULLWIDTH           = 0x000800000  # map single byte to double byte
LCMAP_LINGUISTIC_CASING   = 0x001000000  # use linguistic rules for casing
LCMAP_SIMPLIFIED_CHINESE  = 0x002000000  # map traditional chinese to simplified chinese
LCMAP_TRADITIONAL_CHINESE = 0x004000000  # map simplified chinese to traditional chinese

# Language Group Enumeration Flags.
LGRPID_INSTALLED          = 0x000000001  # installed language group ids
LGRPID_SUPPORTED          = 0x000000002  # supported language group ids

# Locale Enumeration Flags.
LCID_INSTALLED       = 0x000000001  # installed locale ids
LCID_SUPPORTED       = 0x000000002  # supported locale ids
LCID_ALTERNATE_SORTS = 0x000000004  # alternate sort locale ids

# Code Page Enumeration Flags.
CP_INSTALLED         = 0x000000001  # installed code page ids
CP_SUPPORTED         = 0x000000002  # supported code page ids

# Sorting Flags.
#
#    WORD Sort:    culturally correct sort
#                  hyphen and apostrophe are special cased
#                  example: "coop" and "co-op" will sort together in a list
#
#                        co_op     <-------  underscore (symbol)
#                        coat
#                        comb
#                        coop
#                        co-op     <-------  hyphen (punctuation)
#                        cork
#                        went
#                        were
#                        we#re     <-------  apostrophe (punctuation)
#
#
#    STRING Sort:  hyphen and apostrophe will sort with all other symbols
#
#                        co-op     <-------  hyphen (punctuation)
#                        co_op     <-------  underscore (symbol)
#                        coat
#                        comb
#                        coop
#                        cork
#                        we#re     <-------  apostrophe (punctuation)
#                        went
#                        were

SORT_STRINGSORT = 0x000001000   # use string sort method

# Compare String Return Values.
CSTR_LESS_THAN    = 1           # string 1 less than string 2
CSTR_EQUAL        = 2           # string 1 equal to string 2
CSTR_GREATER_THAN = 3           # string 1 greater than string 2

# Code Page Default Values.
CP_ACP        = 0       # default to ANSI code page
CP_OEMCP      = 1       # default to OEM  code page
CP_MACCP      = 2       # default to MAC  code page
CP_THREAD_ACP = 3       # current thread#s ANSI code page
CP_SYMBOL     = 42      # SYMBOL translations
CP_UTF7       = 65000   # UTF-7 translation
CP_UTF8       = 65001   # UTF-8 translation

# Country/Region Codes.

CTRY_DEFAULT            = 0

CTRY_ALBANIA            = 355   # Albania
CTRY_ALGERIA            = 213   # Algeria
CTRY_ARGENTINA          = 54    # Argentina
CTRY_ARMENIA            = 374   # Armenia
CTRY_AUSTRALIA          = 61    # Australia
CTRY_AUSTRIA            = 43    # Austria
CTRY_AZERBAIJAN         = 994   # Azerbaijan
CTRY_BAHRAIN            = 973   # Bahrain
CTRY_BELARUS            = 375   # Belarus
CTRY_BELGIUM            = 32    # Belgium
CTRY_BELIZE             = 501   # Belize
CTRY_BOLIVIA            = 591   # Bolivia
CTRY_BRAZIL             = 55    # Brazil
CTRY_BRUNEI_DARUSSALAM  = 673   # Brunei Darussalam
CTRY_BULGARIA           = 359   # Bulgaria
CTRY_CANADA             = 2     # Canada
CTRY_CARIBBEAN          = 1     # Caribbean
CTRY_CHILE              = 56    # Chile
CTRY_COLOMBIA           = 57    # Colombia
CTRY_COSTA_RICA         = 506   # Costa Rica
CTRY_CROATIA            = 385   # Croatia
CTRY_CZECH              = 420   # Czech Republic
CTRY_DENMARK            = 45    # Denmark
CTRY_DOMINICAN_REPUBLIC = 1     # Dominican Republic
CTRY_ECUADOR            = 593   # Ecuador
CTRY_EGYPT              = 20    # Egypt
CTRY_EL_SALVADOR        = 503   # El Salvador
CTRY_ESTONIA            = 372   # Estonia
CTRY_FAEROE_ISLANDS     = 298   # Faeroe Islands
CTRY_FINLAND            = 358   # Finland
CTRY_FRANCE             = 33    # France
CTRY_GEORGIA            = 995   # Georgia
CTRY_GERMANY            = 49    # Germany
CTRY_GREECE             = 30    # Greece
CTRY_GUATEMALA          = 502   # Guatemala
CTRY_HONDURAS           = 504   # Honduras
CTRY_HONG_KONG          = 852   # Hong Kong S.A.R., P.R.C.
CTRY_HUNGARY            = 36    # Hungary
CTRY_ICELAND            = 354   # Iceland
CTRY_INDIA              = 91    # India
CTRY_INDONESIA          = 62    # Indonesia
CTRY_IRAN               = 981   # Iran
CTRY_IRAQ               = 964   # Iraq
CTRY_IRELAND            = 353   # Ireland
CTRY_ISRAEL             = 972   # Israel
CTRY_ITALY              = 39    # Italy
CTRY_JAMAICA            = 1     # Jamaica
CTRY_JAPAN              = 81    # Japan
CTRY_JORDAN             = 962   # Jordan
CTRY_KAZAKSTAN          = 7     # Kazakstan
CTRY_KENYA              = 254   # Kenya
CTRY_KUWAIT             = 965   # Kuwait
CTRY_KYRGYZSTAN         = 996   # Kyrgyzstan
CTRY_LATVIA             = 371   # Latvia
CTRY_LEBANON            = 961   # Lebanon
CTRY_LIBYA              = 218   # Libya
CTRY_LIECHTENSTEIN      = 41    # Liechtenstein
CTRY_LITHUANIA          = 370   # Lithuania
CTRY_LUXEMBOURG         = 352   # Luxembourg
CTRY_MACAU              = 853   # Macau S.A.R., PRC
CTRY_MACEDONIA          = 389   # Former Yugoslav Republic of Macedonia
CTRY_MALAYSIA           = 60    # Malaysia
CTRY_MALDIVES           = 960   # Maldives
CTRY_MEXICO             = 52    # Mexico
CTRY_MONACO             = 33    # Principality of Monaco
CTRY_MONGOLIA           = 976   # Mongolia
CTRY_MOROCCO            = 212   # Morocco
CTRY_NETHERLANDS        = 31    # Netherlands
CTRY_NEW_ZEALAND        = 64    # New Zealand
CTRY_NICARAGUA          = 505   # Nicaragua
CTRY_NORWAY             = 47    # Norway
CTRY_OMAN               = 968   # Oman
CTRY_PAKISTAN           = 92    # Islamic Republic of Pakistan
CTRY_PANAMA             = 507   # Panama
CTRY_PARAGUAY           = 595   # Paraguay
CTRY_PERU               = 51    # Peru
CTRY_PHILIPPINES        = 63    # Republic of the Philippines
CTRY_POLAND             = 48    # Poland
CTRY_PORTUGAL           = 351   # Portugal
CTRY_PRCHINA            = 86    # People#s Republic of China
CTRY_PUERTO_RICO        = 1     # Puerto Rico
CTRY_QATAR              = 974   # Qatar
CTRY_ROMANIA            = 40    # Romania
CTRY_RUSSIA             = 7     # Russia
CTRY_SAUDI_ARABIA       = 966   # Saudi Arabia
CTRY_SERBIA             = 381   # Serbia
CTRY_SINGAPORE          = 65    # Singapore
CTRY_SLOVAK             = 421   # Slovak Republic
CTRY_SLOVENIA           = 386   # Slovenia
CTRY_SOUTH_AFRICA       = 27    # South Africa
CTRY_SOUTH_KOREA        = 82    # Korea
CTRY_SPAIN              = 34    # Spain
CTRY_SWEDEN             = 46    # Sweden
CTRY_SWITZERLAND        = 41    # Switzerland
CTRY_SYRIA              = 963   # Syria
CTRY_TAIWAN             = 886   # Taiwan
CTRY_TATARSTAN          = 7     # Tatarstan
CTRY_THAILAND           = 66    # Thailand
CTRY_TRINIDAD_Y_TOBAGO  = 1     # Trinidad y Tobago
CTRY_TUNISIA            = 216   # Tunisia
CTRY_TURKEY             = 90    # Turkey
CTRY_UAE                = 971   # U.A.E.
CTRY_UKRAINE            = 380   # Ukraine
CTRY_UNITED_KINGDOM     = 44    # United Kingdom
CTRY_UNITED_STATES      = 1     # United States
CTRY_URUGUAY            = 598   # Uruguay
CTRY_UZBEKISTAN         = 7     # Uzbekistan
CTRY_VENEZUELA          = 58    # Venezuela
CTRY_VIET_NAM           = 84    # Viet Nam
CTRY_YEMEN              = 967   # Yemen
CTRY_ZIMBABWE           = 263   # Zimbabwe

# Locale Types.
#
# These types are used for the GetLocaleInfo NLS API routine.
# Some of these types are also used for the SetLocaleInfo NLS API routine.
#
# The following LCTypes may be used in combination with any other LCTypes.
#
#   LOCALE_NOUSEROVERRIDE is also used in GetTimeFormat and
#   GetDateFormat.
#
#   LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need
#   to do string translation.
#
#   LOCALE_RETURN_NUMBER will return the result from GetLocaleInfo as a
#   number instead of a string.  This flag is only valid for the LCTypes
#   beginning with LOCALE_I.

LOCALE_NOUSEROVERRIDE   = 0x080000000 # do not use user overrides
LOCALE_USE_CP_ACP       = 0x040000000 # use the system ACP
LOCALE_RETURN_NUMBER    = 0x020000000 # return number instead of string

# The following LCTypes are mutually exclusive in that they may NOT
# be used in combination with each other.

LOCALE_ILANGUAGE              = 0x000000001   # language id
LOCALE_SLANGUAGE              = 0x000000002   # localized name of language
LOCALE_SENGLANGUAGE           = 0x000001001   # English name of language
LOCALE_SABBREVLANGNAME        = 0x000000003   # abbreviated language name
LOCALE_SNATIVELANGNAME        = 0x000000004   # native name of language
LOCALE_ICOUNTRY               = 0x000000005   # country code
LOCALE_SCOUNTRY               = 0x000000006   # localized name of country
LOCALE_SENGCOUNTRY            = 0x000001002   # English name of country
LOCALE_SABBREVCTRYNAME        = 0x000000007   # abbreviated country name
LOCALE_SNATIVECTRYNAME        = 0x000000008   # native name of country
LOCALE_IDEFAULTLANGUAGE       = 0x000000009   # default language id
LOCALE_IDEFAULTCOUNTRY        = 0x00000000A   # default country code
LOCALE_IDEFAULTCODEPAGE       = 0x00000000B   # default oem code page
LOCALE_IDEFAULTANSICODEPAGE   = 0x000001004   # default ansi code page
LOCALE_IDEFAULTMACCODEPAGE    = 0x000001011   # default mac code page

LOCALE_SLIST                  = 0x00000000C   # list item separator
LOCALE_IMEASURE               = 0x00000000D   # 0 = metric, 1 = US
LOCALE_SDECIMAL               = 0x00000000E   # decimal separator
LOCALE_STHOUSAND              = 0x00000000F   # thousand separator
LOCALE_SGROUPING              = 0x000000010   # digit grouping
LOCALE_IDIGITS                = 0x000000011   # number of fractional digits
LOCALE_ILZERO                 = 0x000000012   # leading zeros for decimal
LOCALE_INEGNUMBER             = 0x000001010   # negative number mode
LOCALE_SNATIVEDIGITS          = 0x000000013   # native ascii 0-9
LOCALE_SCURRENCY              = 0x000000014   # local monetary symbol
LOCALE_SINTLSYMBOL            = 0x000000015   # intl monetary symbol
LOCALE_SMONDECIMALSEP         = 0x000000016   # monetary decimal separator
LOCALE_SMONTHOUSANDSEP        = 0x000000017   # monetary thousand separator
LOCALE_SMONGROUPING           = 0x000000018   # monetary grouping
LOCALE_ICURRDIGITS            = 0x000000019   # # local monetary digits
LOCALE_IINTLCURRDIGITS        = 0x00000001A   # # intl monetary digits
LOCALE_ICURRENCY              = 0x00000001B   # positive currency mode
LOCALE_INEGCURR               = 0x00000001C   # negative currency mode

LOCALE_SDATE                  = 0x00000001D   # date separator
LOCALE_STIME                  = 0x00000001E   # time separator
LOCALE_SSHORTDATE             = 0x00000001F   # short date format string
LOCALE_SLONGDATE              = 0x000000020   # long date format string
LOCALE_STIMEFORMAT            = 0x000001003   # time format string
LOCALE_IDATE                  = 0x000000021   # short date format ordering
LOCALE_ILDATE                 = 0x000000022   # long date format ordering
LOCALE_ITIME                  = 0x000000023   # time format specifier
LOCALE_ITIMEMARKPOSN          = 0x000001005   # time marker position
LOCALE_ICENTURY               = 0x000000024   # century format specifier (short date)
LOCALE_ITLZERO                = 0x000000025   # leading zeros in time field
LOCALE_IDAYLZERO              = 0x000000026   # leading zeros in day field (short date)
LOCALE_IMONLZERO              = 0x000000027   # leading zeros in month field (short date)
LOCALE_S1159                  = 0x000000028   # AM designator
LOCALE_S2359                  = 0x000000029   # PM designator

LOCALE_ICALENDARTYPE          = 0x000001009   # type of calendar specifier
LOCALE_IOPTIONALCALENDAR      = 0x00000100B   # additional calendar types specifier
LOCALE_IFIRSTDAYOFWEEK        = 0x00000100C   # first day of week specifier
LOCALE_IFIRSTWEEKOFYEAR       = 0x00000100D   # first week of year specifier

LOCALE_SDAYNAME1              = 0x00000002A   # long name for Monday
LOCALE_SDAYNAME2              = 0x00000002B   # long name for Tuesday
LOCALE_SDAYNAME3              = 0x00000002C   # long name for Wednesday
LOCALE_SDAYNAME4              = 0x00000002D   # long name for Thursday
LOCALE_SDAYNAME5              = 0x00000002E   # long name for Friday
LOCALE_SDAYNAME6              = 0x00000002F   # long name for Saturday
LOCALE_SDAYNAME7              = 0x000000030   # long name for Sunday
LOCALE_SABBREVDAYNAME1        = 0x000000031   # abbreviated name for Monday
LOCALE_SABBREVDAYNAME2        = 0x000000032   # abbreviated name for Tuesday
LOCALE_SABBREVDAYNAME3        = 0x000000033   # abbreviated name for Wednesday
LOCALE_SABBREVDAYNAME4        = 0x000000034   # abbreviated name for Thursday
LOCALE_SABBREVDAYNAME5        = 0x000000035   # abbreviated name for Friday
LOCALE_SABBREVDAYNAME6        = 0x000000036   # abbreviated name for Saturday
LOCALE_SABBREVDAYNAME7        = 0x000000037   # abbreviated name for Sunday
LOCALE_SMONTHNAME1            = 0x000000038   # long name for January
LOCALE_SMONTHNAME2            = 0x000000039   # long name for February
LOCALE_SMONTHNAME3            = 0x00000003A   # long name for March
LOCALE_SMONTHNAME4            = 0x00000003B   # long name for April
LOCALE_SMONTHNAME5            = 0x00000003C   # long name for May
LOCALE_SMONTHNAME6            = 0x00000003D   # long name for June
LOCALE_SMONTHNAME7            = 0x00000003E   # long name for July
LOCALE_SMONTHNAME8            = 0x00000003F   # long name for August
LOCALE_SMONTHNAME9            = 0x000000040   # long name for September
LOCALE_SMONTHNAME10           = 0x000000041   # long name for October
LOCALE_SMONTHNAME11           = 0x000000042   # long name for November
LOCALE_SMONTHNAME12           = 0x000000043   # long name for December
LOCALE_SMONTHNAME13           = 0x00000100E   # long name for 13th month (if exists)
LOCALE_SABBREVMONTHNAME1      = 0x000000044   # abbreviated name for January
LOCALE_SABBREVMONTHNAME2      = 0x000000045   # abbreviated name for February
LOCALE_SABBREVMONTHNAME3      = 0x000000046   # abbreviated name for March
LOCALE_SABBREVMONTHNAME4      = 0x000000047   # abbreviated name for April
LOCALE_SABBREVMONTHNAME5      = 0x000000048   # abbreviated name for May
LOCALE_SABBREVMONTHNAME6      = 0x000000049   # abbreviated name for June
LOCALE_SABBREVMONTHNAME7      = 0x00000004A   # abbreviated name for July
LOCALE_SABBREVMONTHNAME8      = 0x00000004B   # abbreviated name for August
LOCALE_SABBREVMONTHNAME9      = 0x00000004C   # abbreviated name for September
LOCALE_SABBREVMONTHNAME10     = 0x00000004D   # abbreviated name for October
LOCALE_SABBREVMONTHNAME11     = 0x00000004E   # abbreviated name for November
LOCALE_SABBREVMONTHNAME12     = 0x00000004F   # abbreviated name for December
LOCALE_SABBREVMONTHNAME13     = 0x00000100F   # abbreviated name for 13th month (if exists)

LOCALE_SPOSITIVESIGN          = 0x000000050   # positive sign
LOCALE_SNEGATIVESIGN          = 0x000000051   # negative sign
LOCALE_IPOSSIGNPOSN           = 0x000000052   # positive sign position
LOCALE_INEGSIGNPOSN           = 0x000000053   # negative sign position
LOCALE_IPOSSYMPRECEDES        = 0x000000054   # mon sym precedes pos amt
LOCALE_IPOSSEPBYSPACE         = 0x000000055   # mon sym sep by space from pos amt
LOCALE_INEGSYMPRECEDES        = 0x000000056   # mon sym precedes neg amt
LOCALE_INEGSEPBYSPACE         = 0x000000057   # mon sym sep by space from neg amt

LOCALE_FONTSIGNATURE          = 0x000000058   # font signature
LOCALE_SISO639LANGNAME        = 0x000000059   # ISO abbreviated language name
LOCALE_SISO3166CTRYNAME       = 0x00000005A   # ISO abbreviated country name

LOCALE_IDEFAULTEBCDICCODEPAGE = 0x000001012   # default ebcdic code page
LOCALE_IPAPERSIZE             = 0x00000100A   # 1 = letter, 5 = legal, 8 = a3, 9 = a4
LOCALE_SENGCURRNAME           = 0x000001007   # english name of currency
LOCALE_SNATIVECURRNAME        = 0x000001008   # native name of currency
LOCALE_SYEARMONTH             = 0x000001006   # year month format string
LOCALE_SSORTNAME              = 0x000001013   # sort name
LOCALE_IDIGITSUBSTITUTION     = 0x000001014   # 0 = context, 1 = none, 2 = national

# Time Flags for GetTimeFormat.
TIME_NOMINUTESORSECONDS = 0x001   # do not use minutes or seconds
TIME_NOSECONDS          = 0x002   # do not use seconds
TIME_NOTIMEMARKER       = 0x004   # do not use time marker
TIME_FORCE24HOURFORMAT  = 0x008   # always use 24 hour format

# Date Flags for GetDateFormat.
DATE_SHORTDATE        = 0x000000001  # use short date picture
DATE_LONGDATE         = 0x000000002  # use long date picture
DATE_USE_ALT_CALENDAR = 0x000000004  # use alternate calendar (if any)
DATE_YEARMONTH        = 0x000000008  # use year month picture
DATE_LTRREADING       = 0x000000010  # add marks for left to right reading order layout
DATE_RTLREADING       = 0x000000020  # add marks for right to left reading order layout

# Calendar Types.
#
# These types are used for the EnumCalendarInfo and GetCalendarInfo
# NLS API routines.
# Some of these types are also used for the SetCalendarInfo NLS API
# routine.
#
# The following CalTypes may be used in combination with any other CalTypes.
#
#  CAL_NOUSEROVERRIDE
#
#  CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string
#   translation.
#
#  CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a
#   number instead of a string.  This flag is only valid for the CalTypes
#   beginning with CAL_I.
#
CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE  # do not use user overrides
CAL_USE_CP_ACP     = LOCALE_USE_CP_ACP      # use the system ACP
CAL_RETURN_NUMBER  = LOCALE_RETURN_NUMBER   # return number instead of string

# The following CalTypes are mutually exclusive in that they may NOT
# be used in combination with each other.

CAL_ICALINTVALUE       = 0x000000001  # calendar type
CAL_SCALNAME           = 0x000000002  # native name of calendar
CAL_IYEAROFFSETRANGE   = 0x000000003  # starting years of eras
CAL_SERASTRING         = 0x000000004  # era name for IYearOffsetRanges
CAL_SSHORTDATE         = 0x000000005  # short date format string
CAL_SLONGDATE          = 0x000000006  # long date format string
CAL_SDAYNAME1          = 0x000000007  # native name for Monday
CAL_SDAYNAME2          = 0x000000008  # native name for Tuesday
CAL_SDAYNAME3          = 0x000000009  # native name for Wednesday
CAL_SDAYNAME4          = 0x00000000a  # native name for Thursday
CAL_SDAYNAME5          = 0x00000000b  # native name for Friday
CAL_SDAYNAME6          = 0x00000000c  # native name for Saturday
CAL_SDAYNAME7          = 0x00000000d  # native name for Sunday
CAL_SABBREVDAYNAME1    = 0x00000000e  # abbreviated name for Monday
CAL_SABBREVDAYNAME2    = 0x00000000f  # abbreviated name for Tuesday
CAL_SABBREVDAYNAME3    = 0x000000010  # abbreviated name for Wednesday
CAL_SABBREVDAYNAME4    = 0x000000011  # abbreviated name for Thursday
CAL_SABBREVDAYNAME5    = 0x000000012  # abbreviated name for Friday
CAL_SABBREVDAYNAME6    = 0x000000013  # abbreviated name for Saturday
CAL_SABBREVDAYNAME7    = 0x000000014  # abbreviated name for Sunday
CAL_SMONTHNAME1        = 0x000000015  # native name for January
CAL_SMONTHNAME2        = 0x000000016  # native name for February
CAL_SMONTHNAME3        = 0x000000017  # native name for March
CAL_SMONTHNAME4        = 0x000000018  # native name for April
CAL_SMONTHNAME5        = 0x000000019  # native name for May
CAL_SMONTHNAME6        = 0x00000001a  # native name for June
CAL_SMONTHNAME7        = 0x00000001b  # native name for July
CAL_SMONTHNAME8        = 0x00000001c  # native name for August
CAL_SMONTHNAME9        = 0x00000001d  # native name for September
CAL_SMONTHNAME10       = 0x00000001e  # native name for October
CAL_SMONTHNAME11       = 0x00000001f  # native name for November
CAL_SMONTHNAME12       = 0x000000020  # native name for December
CAL_SMONTHNAME13       = 0x000000021  # native name for 13th month (if any)
CAL_SABBREVMONTHNAME1  = 0x000000022  # abbreviated name for January
CAL_SABBREVMONTHNAME2  = 0x000000023  # abbreviated name for February
CAL_SABBREVMONTHNAME3  = 0x000000024  # abbreviated name for March
CAL_SABBREVMONTHNAME4  = 0x000000025  # abbreviated name for April
CAL_SABBREVMONTHNAME5  = 0x000000026  # abbreviated name for May
CAL_SABBREVMONTHNAME6  = 0x000000027  # abbreviated name for June
CAL_SABBREVMONTHNAME7  = 0x000000028  # abbreviated name for July
CAL_SABBREVMONTHNAME8  = 0x000000029  # abbreviated name for August
CAL_SABBREVMONTHNAME9  = 0x00000002a  # abbreviated name for September
CAL_SABBREVMONTHNAME10 = 0x00000002b  # abbreviated name for October
CAL_SABBREVMONTHNAME11 = 0x00000002c  # abbreviated name for November
CAL_SABBREVMONTHNAME12 = 0x00000002d  # abbreviated name for December
CAL_SABBREVMONTHNAME13 = 0x00000002e  # abbreviated name for 13th month (if any)
CAL_SYEARMONTH         = 0x00000002f  # year month format string
CAL_ITWODIGITYEARMAX   = 0x000000030  # two digit year max

ENUM_ALL_CALENDARS     = 0x0ffffffff  # enumerate all calendars

# Calendar ID Values.
CAL_GREGORIAN              = 1   # Gregorian (localized) calendar
CAL_GREGORIAN_US           = 2   # Gregorian (U.S.) calendar
CAL_JAPAN                  = 3   # Japanese Emperor Era calendar
CAL_TAIWAN                 = 4   # Taiwan calendar
CAL_KOREA                  = 5   # Korean Tangun Era calendar
CAL_HIJRI                  = 6   # Hijri (Arabic Lunar) calendar
CAL_THAI                   = 7   # Thai calendar
CAL_HEBREW                 = 8   # Hebrew (Lunar) calendar
CAL_GREGORIAN_ME_FRENCH    = 9   # Gregorian Middle East French calendar
CAL_GREGORIAN_ARABIC       = 10  # Gregorian Arabic calendar
CAL_GREGORIAN_XLIT_ENGLISH = 11  # Gregorian Transliterated English calendar
CAL_GREGORIAN_XLIT_FRENCH  = 12  # Gregorian Transliterated French calendar

# Language Group ID Values.
LGRPID_WESTERN_EUROPE      = 0x00001   # Western Europe  U.S.
LGRPID_CENTRAL_EUROPE      = 0x00002   # Central Europe
LGRPID_BALTIC              = 0x00003   # Baltic
LGRPID_GREEK               = 0x00004   # Greek
LGRPID_CYRILLIC            = 0x00005   # Cyrillic
LGRPID_TURKISH             = 0x00006   # Turkish
LGRPID_JAPANESE            = 0x00007   # Japanese
LGRPID_KOREAN              = 0x00008   # Korean
LGRPID_TRADITIONAL_CHINESE = 0x00009   # Traditional Chinese
LGRPID_SIMPLIFIED_CHINESE  = 0x0000a   # Simplified Chinese
LGRPID_THAI                = 0x0000b   # Thai
LGRPID_HEBREW              = 0x0000c   # Hebrew
LGRPID_ARABIC              = 0x0000d   # Arabic
LGRPID_VIETNAMESE          = 0x0000e   # Vietnamese
LGRPID_INDIC               = 0x0000f   # Indic
LGRPID_GEORGIAN            = 0x00010   # Georgian
LGRPID_ARMENIAN            = 0x00011   # Armenian

# GEO defines

GEOID_NOT_AVAILABLE = -1

# GEO information types for clients to query (SYSGEOTYPE enumerated type)

GEO_NATION            = 0x00001
GEO_LATITUDE          = 0x00002
GEO_LONGITUDE         = 0x00003
GEO_ISO2              = 0x00004
GEO_ISO3              = 0x00005
GEO_RFC1766           = 0x00006
GEO_LCID              = 0x00007
GEO_FRIENDLYNAME      = 0x00008
GEO_OFFICIALNAME      = 0x00009
GEO_TIMEZONES         = 0x0000A
GEO_OFFICIALLANGUAGES = 0x0000B

# More GEOCLASS defines will be listed here (SYSGEOCLASS enumerated type)

GEOCLASS_NATION = 16
GEOCLASS_REGION = 14

# End of equates from WINNLS.H ================================================

LR_DEFAULTCOLOR     = 0x00000
LR_MONOCHROME       = 0x00001
LR_COLOR            = 0x00002
LR_COPYRETURNORG    = 0x00004
LR_COPYDELETEORG    = 0x00008
LR_LOADFROMFILE     = 0x00010
LR_LOADTRANSPARENT  = 0x00020
LR_DEFAULTSIZE      = 0x00040
LR_VGACOLOR         = 0x00080
LR_LOADMAP3DCOLORS  = 0x01000
LR_CREATEDIBSECTION = 0x02000
LR_COPYFROMRESOURCE = 0x04000
LR_SHARED           = 0x08000

TF_FORCEDRIVE = 0x080

LOCKFILE_FAIL_IMMEDIATELY = 0x01
LOCKFILE_EXCLUSIVE_LOCK   = 0x02

LNOTIFY_OUTOFMEM = 0
LNOTIFY_MOVE     = 1
LNOTIFY_DISCARD  = 2

SEM_FAILCRITICALERRORS = 0x01
SEM_NOGPFAULTERRORBOX  = 0x02
SEM_NOOPENFILEERRORBOX = 0x000008000


RT_CURSOR       = 1
RT_BITMAP       = 2
RT_ICON         = 3
RT_MENU         = 4
RT_DIALOG       = 5
RT_STRING       = 6
RT_FONTDIR      = 7
RT_FONT         = 8
RT_ACCELERATOR  = 9
RT_RCDATA       = 10
RT_MESSAGETABLE = 11
RT_GROUP_CURSOR = 12
RT_GROUP_ICON   = 14
RT_VERSION      = 16
RT_DLGINCLUDE   = 17
RT_PLUGPLAY     = 19
RT_VXD          = 20
RT_ANICURSOR    = 21
RT_ANIICON      = 22
RT_HTML         = 23
RT_MANIFEST     = 24
CREATEPROCESS_MANIFEST_RESOURCE_ID =  1
ISOLATIONAWARE_MANIFEST_RESOURCE_ID = 2
ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = 3
MINIMUM_RESERVED_MANIFEST_RESOURCE_ID =  1 # inclusive
MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = 16 # inclusive



DFC_CAPTION     = 1
DFC_MENU        = 2
DFC_SCROLL      = 3
DFC_BUTTON      = 4
DFC_POPUPMENU   = 5

DFCS_CAPTIONCLOSE   = 0x00000
DFCS_CAPTIONMIN     = 0x00001
DFCS_CAPTIONMAX     = 0x00002
DFCS_CAPTIONRESTORE = 0x00003
DFCS_CAPTIONHELP    = 0x00004

DFCS_MENUARROW      = 0x00000
DFCS_MENUCHECK      = 0x00001
DFCS_MENUBULLET     = 0x00002
DFCS_MENUARROWRIGHT = 0x00004

DFCS_SCROLLUP            = 0x00000
DFCS_SCROLLDOWN          = 0x00001
DFCS_SCROLLLEFT          = 0x00002
DFCS_SCROLLRIGHT         = 0x00003
DFCS_SCROLLCOMBOBOX      = 0x00005
DFCS_SCROLLSIZEGRIP      = 0x00008
DFCS_SCROLLSIZEGRIPRIGHT = 0x00010

DFCS_BUTTONCHECK      = 0x00000
DFCS_BUTTONRADIOIMAGE = 0x00001
DFCS_BUTTONRADIOMASK  = 0x00002
DFCS_BUTTONRADIO      = 0x00004
DFCS_BUTTON3STATE     = 0x00008
DFCS_BUTTONPUSH       = 0x00010

DFCS_INACTIVE    = 0x000000100
DFCS_PUSHED      = 0x000000200
DFCS_CHECKED     = 0x000000400
DFCS_TRANSPARENT = 0x000000800
DFCS_HOT         = 0x000001000
DFCS_ADJUSTRECT  = 0x000002000
DFCS_FLAT        = 0x000004000
DFCS_MONO        = 0x000008000

# flags for DrawCaption
DC_ACTIVE   = 0x00001
DC_SMALLCAP = 0x00002
DC_ICON     = 0x00004
DC_TEXT     = 0x00008
DC_INBUTTON = 0x00010
DC_GRADIENT = 0x00020
DC_BUTTONS  = 0x01000

IDANI_OPEN    = 1
IDANI_CAPTION = 3

DDD_RAW_TARGET_PATH       = 0x01
DDD_REMOVE_DEFINITION     = 0x02
DDD_EXACT_MATCH_ON_REMOVE = 0x04

MAX_PATH  = 260  # max. length of full pathname
MAX_DRIVE = 3    # max. length of drive component
MAX_DIR   = 256  # max. length of path component
MAX_FNAME = 256  # max. length of file name component
MAX_EXT   = 256  # max. length of extension component

MOVEFILE_REPLACE_EXISTING      = 0x01
MOVEFILE_COPY_ALLOWED          = 0x02
MOVEFILE_DELAY_UNTIL_REBOOT    = 0x04
MOVEFILE_WRITE_THROUGH         = 0x08
MOVEFILE_CREATE_HARDLINK       = 0x010
MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x020

GET_TAPE_MEDIA_INFORMATION = 0
GET_TAPE_DRIVE_INFORMATION = 1

SET_TAPE_MEDIA_INFORMATION = 0
SET_TAPE_DRIVE_INFORMATION = 1

FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100
FORMAT_MESSAGE_IGNORE_INSERTS  = 0x0200
FORMAT_MESSAGE_FROM_STRING     = 0x0400
FORMAT_MESSAGE_FROM_HMODULE    = 0x0800
FORMAT_MESSAGE_FROM_SYSTEM     = 0x01000
FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x02000
FORMAT_MESSAGE_MAX_WIDTH_MASK  = 0x0FF

TLS_OUT_OF_INDEXES = 0x0FFFF

BACKUP_DATA           = 0x01
BACKUP_EA_DATA        = 0x02
BACKUP_SECURITY_DATA  = 0x03
BACKUP_ALTERNATE_DATA = 0x04
BACKUP_LINK           = 0x05

#  Stream Attributes
STREAM_MODIFIED_WHEN_READ = 0x01
STREAM_CONTAINS_SECURITY  = 0x02

# Dual Mode API below this line. Dual Mode Types also included.

STARTF_USESHOWWINDOW    = 0x000000001
STARTF_USESIZE          = 0x000000002
STARTF_USEPOSITION      = 0x000000004
STARTF_USECOUNTCHARS    = 0x000000008
STARTF_USEFILLATTRIBUTE = 0x000000010
STARTF_RUNFULLSCREEN    = 0x000000020     # ignored for non-x86 platforms
STARTF_FORCEONFEEDBACK  = 0x000000040
STARTF_FORCEOFFFEEDBACK = 0x000000080
STARTF_USESTDHANDLES    = 0x000000100
STARTF_USEHOTKEY        = 0x000000200

SHUTDOWN_NORETRY = 0x01

RIGHT_ALT_PRESSED  = 0x01     # the right alt key is pressed.
LEFT_ALT_PRESSED   = 0x02     # the left alt key is pressed.
RIGHT_CTRL_PRESSED = 0x04     # the right ctrl key is pressed.
LEFT_CTRL_PRESSED  = 0x08     # the left ctrl key is pressed.
SHIFT_PRESSED      = 0x010    # the shift key is pressed.
NUMLOCK_ON         = 0x020    # the numlock light is on.
SCROLLLOCK_ON      = 0x040    # the scrolllock light is on.
CAPSLOCK_ON        = 0x080    # the capslock light is on.
ENHANCED_KEY       = 0x0100   # the key is enhanced.

FROM_LEFT_1ST_BUTTON_PRESSED = 0x01
RIGHTMOST_BUTTON_PRESSED     = 0x02
FROM_LEFT_2ND_BUTTON_PRESSED = 0x04
FROM_LEFT_3RD_BUTTON_PRESSED = 0x08
FROM_LEFT_4TH_BUTTON_PRESSED = 0x010

MOUSE_MOVED  = 0x01
DOUBLE_CLICK = 0x02

KEY_EVENT                = 0x01     # Event contains key event record
MOUSE_EVENT              = 0x02     # Event contains mouse event record
WINDOW_BUFFER_SIZE_EVENT = 0x04     # Event contains window change event record
MENU_EVENT               = 0x08     # Event contains menu event record
FOCUS_EVENT              = 0x010    # event contains focus change

FOREGROUND_BLUE      = 0x01     # text color contains blue.
FOREGROUND_GREEN     = 0x02     # text color contains green.
FOREGROUND_RED       = 0x04     # text color contains red.
FOREGROUND_INTENSITY = 0x08     # text color is intensified.
BACKGROUND_BLUE      = 0x010    # background color contains blue.
BACKGROUND_GREEN     = 0x020    # background color contains green.
BACKGROUND_RED       = 0x040    # background color contains red.
BACKGROUND_INTENSITY = 0x080    # background color is intensified.

CTRL_C_EVENT        = 0
CTRL_BREAK_EVENT    = 1
CTRL_CLOSE_EVENT    = 2
CTRL_LOGOFF_EVENT   = 5
CTRL_SHUTDOWN_EVENT = 6

ENABLE_PROCESSED_INPUT = 0x01
ENABLE_LINE_INPUT      = 0x02
ENABLE_ECHO_INPUT      = 0x04
ENABLE_WINDOW_INPUT    = 0x08
ENABLE_MOUSE_INPUT     = 0x010

ENABLE_PROCESSED_OUTPUT   = 0x01
ENABLE_WRAP_AT_EOL_OUTPUT = 0x02

CONSOLE_TEXTMODE_BUFFER = 1



# Constants from mmreg.h ======================================================

INC_MMREG = 146   # _INC_MMREG in original; shows version 1, revision 46




MM_MICROSOFT                  = 1     # Microsoft Corporation


MM_CREATIVE                   = 2     # Creative Labs, Inc
MM_MEDIAVISION                = 3     # Media Vision, Inc.
MM_FUJITSU                    = 4     # Fujitsu Corp.
MM_ARTISOFT                   = 20    # Artisoft, Inc.
MM_TURTLE_BEACH               = 21    # Turtle Beach, Inc.
MM_IBM                        = 22    # IBM Corporation
MM_VOCALTEC                   = 23    # Vocaltec LTD.
MM_ROLAND                     = 24    # Roland
MM_DSP_SOLUTIONS              = 25    # DSP Solutions, Inc.
MM_NEC                        = 26    # NEC
MM_ATI                        = 27    # ATI
MM_WANGLABS                   = 28    # Wang Laboratories, Inc
MM_TANDY                      = 29    # Tandy Corporation
MM_VOYETRA                    = 30    # Voyetra
MM_ANTEX                      = 31    # Antex Electronics Corporation
MM_ICL_PS                     = 32    # ICL Personal Systems
MM_INTEL                      = 33    # Intel Corporation
MM_GRAVIS                     = 34    # Advanced Gravis
MM_VAL                        = 35    # Video Associates Labs, Inc.
MM_INTERACTIVE                = 36    # InterActive Inc
MM_YAMAHA                     = 37    # Yamaha Corporation of America
MM_EVEREX                     = 38    # Everex Systems, Inc
MM_ECHO                       = 39    # Echo Speech Corporation
MM_SIERRA                     = 40    # Sierra Semiconductor Corp
MM_CAT                        = 41    # Computer Aided Technologies
MM_APPS                       = 42    # APPS Software International
MM_DSP_GROUP                  = 43    # DSP Group, Inc
MM_MELABS                     = 44    # microEngineering Labs
MM_COMPUTER_FRIENDS           = 45    # Computer Friends, Inc.
MM_ESS                        = 46    # ESS Technology
MM_AUDIOFILE                  = 47    # Audio, Inc.
MM_MOTOROLA                   = 48    # Motorola, Inc.
MM_CANOPUS                    = 49    # Canopus, co., Ltd.
MM_EPSON                      = 50    # Seiko Epson Corporation
MM_TRUEVISION                 = 51    # Truevision
MM_AZTECH                     = 52    # Aztech Labs, Inc.
MM_VIDEOLOGIC                 = 53    # Videologic
MM_SCALACS                    = 54    # SCALACS
MM_KORG                       = 55    # Korg Inc.
MM_APT                        = 56    # Audio Processing Technology
MM_ICS                        = 57    # Integrated Circuit Systems, Inc.
MM_ITERATEDSYS                = 58    # Iterated Systems, Inc.
MM_METHEUS                    = 59    # Metheus
MM_LOGITECH                   = 60    # Logitech, Inc.
MM_WINNOV                     = 61    # Winnov, Inc.
MM_NCR                        = 62    # NCR Corporation
MM_EXAN                       = 63    # EXAN
MM_AST                        = 64    # AST Research Inc.
MM_WILLOWPOND                 = 65    # Willow Pond Corporation
MM_SONICFOUNDRY               = 66    # Sonic Foundry
MM_VITEC                      = 67    # Vitec Multimedia
MM_MOSCOM                     = 68    # MOSCOM Corporation
MM_SILICONSOFT                = 69    # Silicon Soft, Inc.
MM_SUPERMAC                   = 73    # Supermac
MM_AUDIOPT                    = 74    # Audio Processing Technology
MM_SPEECHCOMP                 = 76    # Speech Compression
MM_AHEAD                      = 77    # Ahead, Inc.
MM_DOLBY                      = 78    # Dolby Laboratories
MM_OKI                        = 79    # OKI
MM_AURAVISION                 = 80    # AuraVision Corporation
MM_OLIVETTI                   = 81    # Ing C. Olivetti  C., S.p.A.
MM_IOMAGIC                    = 82    # I/O Magic Corporation
MM_MATSUSHITA                 = 83    # Matsushita Electric Industrial Co., LTD.
MM_CONTROLRES                 = 84    # Control Resources Limited
MM_XEBEC                      = 85    # Xebec Multimedia Solutions Limited
MM_NEWMEDIA                   = 86    # New Media Corporation
MM_NMS                        = 87    # Natural MicroSystems
MM_LYRRUS                     = 88    # Lyrrus Inc.
MM_COMPUSIC                   = 89    # Compusic
MM_OPTI                       = 90    # OPTi Computers Inc.
MM_ADLACC                     = 91    # Adlib Accessories Inc.
MM_COMPAQ                     = 92    # Compaq Computer Corp.
MM_DIALOGIC                   = 93    # Dialogic Corporation
MM_INSOFT                     = 94    # InSoft, Inc.
MM_MPTUS                      = 95    # M.P. Technologies, Inc.
MM_WEITEK                     = 96    # Weitek
MM_LERNOUT_AND_HAUSPIE        = 97    # Lernout  Hauspie
MM_QCIAR                      = 98    # Quanta Computer Inc.
MM_APPLE                      = 99    # Apple Computer, Inc.
MM_DIGITAL                    = 100   # Digital Equipment Corporation
MM_MOTU                       = 101   # Mark of the Unicorn
MM_WORKBIT                    = 102   # Workbit Corporation
MM_OSITECH                    = 103   # Ositech Communications Inc.
MM_MIRO                       = 104   # miro Computer Products AG
MM_CIRRUSLOGIC                = 105   # Cirrus Logic
MM_ISOLUTION                  = 106   # ISOLUTION  B.V.
MM_HORIZONS                   = 107   # Horizons Technology, Inc
MM_CONCEPTS                   = 108   # Computer Concepts Ltd
MM_VTG                        = 109   # Voice Technologies Group, Inc.
MM_RADIUS                     = 110   # Radius
MM_ROCKWELL                   = 111   # Rockwell International
MM_XYz                        = 112   # Co. XYZ for testing
MM_OPCODE                     = 113   # Opcode Systems
MM_VOXWARE                    = 114   # Voxware Inc
MM_NORTHERN_TELECOM           = 115   # Northern Telecom Limited
MM_APICOM                     = 116   # APICOM
MM_GRANDE                     = 117   # Grande Software
MM_ADDX                       = 118   # ADDX
MM_WILDCAT                    = 119   # Wildcat Canyon Software
MM_RHETOREX                   = 120   # Rhetorex Inc
MM_BROOKTREE                  = 121   # Brooktree Corporation
MM_ENSONIQ                    = 125   # ENSONIQ Corporation
MM_FAST                       = 126   # ///FAST Multimedia AG
MM_NVIDIA                     = 127   # NVidia Corporation
MM_OKSORI                     = 128   # OKSORI Co., Ltd.
MM_DIACOUSTICS                = 129   # DiAcoustics, Inc.
MM_GULBRANSEN                 = 130   # Gulbransen, Inc.
MM_KAY_ELEMETRICS             = 131   # Kay Elemetrics, Inc.
MM_CRYSTAL                    = 132   # Crystal Semiconductor Corporation
MM_SPLASH_STUDIOS             = 133   # Splash Studios
MM_QUARTERDECK                = 134   # Quarterdeck Corporation
MM_TDK                        = 135   # TDK Corporation
MM_DIGITAL_AUDIO_LABS         = 136   # Digital Audio Labs, Inc.
MM_SEERSYS                    = 137   # Seer Systems, Inc.
MM_PICTURETEL                 = 138   # PictureTel Corporation
MM_ATT_MICROELECTRONICS       = 139   # ATT Microelectronics
MM_OSPREY                     = 140   # Osprey Technologies, Inc.
MM_MEDIATRIX                  = 141   # Mediatrix Peripherals
MM_SOUNDESIGNS                = 142   # SounDesignS M.C.S. Ltd.
MM_ALDIGITAL                  = 143   # A.L. Digital Ltd.
MM_SPECTRUM_SIGNAL_PROCESSING = 144   # Spectrum Signal Processing, Inc.
MM_ECS                        = 145   # Electronic Courseware Systems, Inc.
MM_AMD                        = 146   # AMD
MM_COREDYNAMICS               = 147   # Core Dynamics
MM_CANAM                      = 148   # CANAM Computers
MM_SOFTSOUND                  = 149   # Softsound, Ltd.
MM_NORRIS                     = 150   # Norris Communications, Inc.
MM_DDD                        = 151   # Danka Data Devices
MM_EUPHONICS                  = 152   # EuPhonics
MM_PRECEPT                    = 153   # Precept Software, Inc.
MM_CRYSTAL_NET                = 154   # Crystal Net Corporation
MM_CHROMATIC                  = 155   # Chromatic Research, Inc
MM_VOICEINFO                  = 156   # Voice Information Systems, Inc
MM_VIENNASYS                  = 157   # Vienna Systems
MM_CONNECTIX                  = 158   # Connectix Corporation
MM_GADGETLABS                 = 159   # Gadget Labs LLC
MM_FRONTIER                   = 160   # Frontier Design Group LLC
MM_VIONA                      = 161   # Viona Development GmbH
MM_CASIO                      = 162   # Casio Computer Co., LTD
MM_DIAMONDMM                  = 163   # Diamond Multimedia
MM_S3                         = 164   # S3
MM_FRAUNHOFER_IIS             = 172   # Fraunhofer

# MM_MICROSOFT product IDs



MM_MIDI_MAPPER     = 1   # MIDI Mapper
MM_WAVE_MAPPER     = 2   # Wave Mapper
MM_SNDBLST_MIDIOUT = 3   # Sound Blaster MIDI output port
MM_SNDBLST_MIDIIN  = 4   # Sound Blaster MIDI input port
MM_SNDBLST_SYNTH   = 5   # Sound Blaster internal synthesizer
MM_SNDBLST_WAVEOUT = 6   # Sound Blaster waveform output
MM_SNDBLST_WAVEIN  = 7   # Sound Blaster waveform input
MM_ADLIB           = 9   # Ad Lib-compatible synthesizer
MM_MPU401_MIDIOUT  = 10  # MPU401-compatible MIDI output port
MM_MPU401_MIDIIN   = 11  # MPU401-compatible MIDI input port
MM_PC_JOYSTICK     = 12  # Joystick adapter



MM_PCSPEAKER_WAVEOUT           = 13  # PC speaker waveform output
MM_MSFT_WSS_WAVEIN             = 14  # MS Audio Board waveform input
MM_MSFT_WSS_WAVEOUT            = 15  # MS Audio Board waveform output
MM_MSFT_WSS_FMSYNTH_STEREO     = 16  # MS Audio Board  Stereo FM synth
MM_MSFT_WSS_MIXER              = 17  # MS Audio Board Mixer Driver
MM_MSFT_WSS_OEM_WAVEIN         = 18  # MS OEM Audio Board waveform input
MM_MSFT_WSS_OEM_WAVEOUT        = 19  # MS OEM Audio Board waveform output
MM_MSFT_WSS_OEM_FMSYNTH_STEREO = 20  # MS OEM Audio Board Stereo FM Synth
MM_MSFT_WSS_AUX                = 21  # MS Audio Board Aux. Port
MM_MSFT_WSS_OEM_AUX            = 22  # MS OEM Audio Aux Port
MM_MSFT_GENERIC_WAVEIN         = 23  # MS Vanilla driver waveform input
MM_MSFT_GENERIC_WAVEOUT        = 24  # MS Vanilla driver wavefrom output
MM_MSFT_GENERIC_MIDIIN         = 25  # MS Vanilla driver MIDI in
MM_MSFT_GENERIC_MIDIOUT        = 26  # MS Vanilla driver MIDI  external out
MM_MSFT_GENERIC_MIDISYNTH      = 27  # MS Vanilla driver MIDI synthesizer
MM_MSFT_GENERIC_AUX_LINE       = 28  # MS Vanilla driver aux (line in)
MM_MSFT_GENERIC_AUX_MIC        = 29  # MS Vanilla driver aux (mic)
MM_MSFT_GENERIC_AUX_CD         = 30  # MS Vanilla driver aux (CD)
MM_MSFT_WSS_OEM_MIXER          = 31  # MS OEM Audio Board Mixer Driver
MM_MSFT_MSACM                  = 32  # MS Audio Compression Manager
MM_MSFT_ACM_MSADPCM            = 33  # MS ADPCM Codec
MM_MSFT_ACM_IMAADPCM           = 34  # IMA ADPCM Codec
MM_MSFT_ACM_MSFILTER           = 35  # MS Filter
MM_MSFT_ACM_GSM610             = 36  # GSM 610 codec
MM_MSFT_ACM_G711               = 37  # G.711 codec
MM_MSFT_ACM_PCM                = 38  # PCM converter

# Microsoft Windows Sound System drivers

MM_WSS_SB16_WAVEIN            = 39   # Sound Blaster 16 waveform input
MM_WSS_SB16_WAVEOUT           = 40   # Sound Blaster 16  waveform output
MM_WSS_SB16_MIDIIN            = 41   # Sound Blaster 16 midi-in
MM_WSS_SB16_MIDIOUT           = 42   # Sound Blaster 16 midi out
MM_WSS_SB16_SYNTH             = 43   # Sound Blaster 16 FM Synthesis
MM_WSS_SB16_AUX_LINE          = 44   # Sound Blaster 16 aux (line in)
MM_WSS_SB16_AUX_CD            = 45   # Sound Blaster 16 aux (CD)
MM_WSS_SB16_MIXER             = 46   # Sound Blaster 16 mixer device
MM_WSS_SBPRO_WAVEIN           = 47   # Sound Blaster Pro waveform input
MM_WSS_SBPRO_WAVEOUT          = 48   # Sound Blaster Pro waveform output
MM_WSS_SBPRO_MIDIIN           = 49   # Sound Blaster Pro midi in
MM_WSS_SBPRO_MIDIOUT          = 50   # Sound Blaster Pro midi out
MM_WSS_SBPRO_SYNTH            = 51   # Sound Blaster Pro FM synthesis

MM_WSS_SBPRO_AUX_CD           = 53   # Sound Blaster Pro aux (CD)
MM_WSS_SBPRO_MIXER            = 54   # Sound Blaster Pro mixer

MM_MSFT_WSS_NT_WAVEIN         = 55   # WSS NT wave in
MM_MSFT_WSS_NT_WAVEOUT        = 56   # WSS NT wave out
MM_MSFT_WSS_NT_FMSYNTH_STEREO = 57   # WSS NT FM synth
MM_MSFT_WSS_NT_MIXER          = 58   # WSS NT mixer
MM_MSFT_WSS_NT_AUX            = 59   # WSS NT aux

MM_MSFT_SB16_WAVEIN           = 60   # Sound Blaster 16 waveform input
MM_MSFT_SB16_WAVEOUT          = 61   # Sound Blaster 16  waveform output
MM_MSFT_SB16_MIDIIN           = 62   # Sound Blaster 16 midi-in
MM_MSFT_SB16_MIDIOUT          = 63   # Sound Blaster 16 midi out
MM_MSFT_SB16_SYNTH            = 64   # Sound Blaster 16 FM Synthesis
MM_MSFT_SB16_AUX_LINE         = 65   # Sound Blaster 16 aux (line in)
MM_MSFT_SB16_AUX_CD           = 66   # Sound Blaster 16 aux (CD)
MM_MSFT_SB16_MIXER            = 67   # Sound Blaster 16 mixer device
MM_MSFT_SBPRO_WAVEIN          = 68   # Sound Blaster Pro waveform input
MM_MSFT_SBPRO_WAVEOUT         = 69   # Sound Blaster Pro waveform output
MM_MSFT_SBPRO_MIDIIN          = 70   # Sound Blaster Pro midi in
MM_MSFT_SBPRO_MIDIOUT         = 71   # Sound Blaster Pro midi out
MM_MSFT_SBPRO_SYNTH           = 72   # Sound Blaster Pro FM synthesis

MM_MSFT_SBPRO_AUX_CD          = 74   # Sound Blaster Pro aux (CD)
MM_MSFT_SBPRO_MIXER           = 75   # Sound Blaster Pro mixer

MM_MSFT_MSOPL_SYNTH           = 76   # Yamaha OPL2/OPL3 compatible FM synthesis

MM_MSFT_VMDMS_LINE_WAVEIN     = 80   # Voice Modem Serial Line Wave Input
MM_MSFT_VMDMS_LINE_WAVEOUT    = 81   # Voice Modem Serial Line Wave Output
MM_MSFT_VMDMS_HANDSET_WAVEIN  = 82   # Voice Modem Serial Handset Wave Input
MM_MSFT_VMDMS_HANDSET_WAVEOUT = 83   # Voice Modem Serial Handset Wave Output
MM_MSFT_VMDMW_LINE_WAVEIN     = 84   # Voice Modem Wrapper Line Wave Input
MM_MSFT_VMDMW_LINE_WAVEOUT    = 85   # Voice Modem Wrapper Line Wave Output
MM_MSFT_VMDMW_HANDSET_WAVEIN  = 86   # Voice Modem Wrapper Handset Wave Input
MM_MSFT_VMDMW_HANDSET_WAVEOUT = 87   # Voice Modem Wrapper Handset Wave Output
MM_MSFT_VMDMW_MIXER           = 88   # Voice Modem Wrapper Mixer
MM_MSFT_VMDM_GAME_WAVEOUT     = 89   # Voice Modem Game Compatible Wave Device
MM_MSFT_VMDM_GAME_WAVEIN      = 90   # Voice Modem Game Compatible Wave Device

MM_MSFT_ACM_MSNAUDIO         = 91
MM_MSFT_ACM_MSG723           = 92

MM_MSFT_WDMAUDIO_WAVEOUT     = 100  # Generic id for WDM Audio drivers
MM_MSFT_WDMAUDIO_WAVEIN      = 101  # Generic id for WDM Audio drivers
MM_MSFT_WDMAUDIO_MIDIOUT     = 102  # Generic id for WDM Audio drivers
MM_MSFT_WDMAUDIO_MIDIIN      = 103  # Generic id for WDM Audio drivers
MM_MSFT_WDMAUDIO_MIXER       = 104  # Generic id for WDM Audio drivers


# MM_CREATIVE product IDs
MM_CREATIVE_SB15_WAVEIN      = 1    # SB (r) 1.5 waveform input
MM_CREATIVE_SB20_WAVEIN      = 2
MM_CREATIVE_SBPRO_WAVEIN     = 3
MM_CREATIVE_SBP16_WAVEIN     = 4
MM_CREATIVE_PHNBLST_WAVEIN   = 5
MM_CREATIVE_SB15_WAVEOUT     = 101
MM_CREATIVE_SB20_WAVEOUT     = 102
MM_CREATIVE_SBPRO_WAVEOUT    = 103
MM_CREATIVE_SBP16_WAVEOUT    = 104
MM_CREATIVE_PHNBLST_WAVEOUT  = 105
MM_CREATIVE_MIDIOUT          = 201  # SB (r)
MM_CREATIVE_MIDIIN           = 202  # SB (r)
MM_CREATIVE_FMSYNTH_MONO     = 301  # SB (r)
MM_CREATIVE_FMSYNTH_STEREO   = 302  # SB Pro (r) stereo synthesizer
MM_CREATIVE_MIDI_AWE32       = 303
MM_CREATIVE_AUX_CD           = 401  # SB Pro (r) aux (CD)
MM_CREATIVE_AUX_LINE         = 402  # SB Pro (r) aux (Line in)
MM_CREATIVE_AUX_MIC          = 403  # SB Pro (r) aux (mic)
MM_CREATIVE_AUX_MASTER       = 404
MM_CREATIVE_AUX_PCSPK        = 405
MM_CREATIVE_AUX_WAVE         = 406
MM_CREATIVE_AUX_MIDI         = 407
MM_CREATIVE_SBPRO_MIXER      = 408
MM_CREATIVE_SB16_MIXER       = 409

# MM_MEDIAVISION product IDs

# Pro Audio Spectrum
MM_MEDIAVISION_PROAUDIO      = 0x010
MM_PROAUD_MIDIOUT            = (MM_MEDIAVISION_PROAUDIO+1)
MM_PROAUD_MIDIIN             = (MM_MEDIAVISION_PROAUDIO+2)
MM_PROAUD_SYNTH              = (MM_MEDIAVISION_PROAUDIO+3)
MM_PROAUD_WAVEOUT            = (MM_MEDIAVISION_PROAUDIO+4)
MM_PROAUD_WAVEIN             = (MM_MEDIAVISION_PROAUDIO+5)
MM_PROAUD_MIXER              = (MM_MEDIAVISION_PROAUDIO+6)
MM_PROAUD_AUX                = (MM_MEDIAVISION_PROAUDIO+7)

# Pro Audio Spectrum 16
MM_MEDIAVISION_PROAUDIO_16   = 0x060
MM_PROAUD_16_MIDIOUT         = (MM_MEDIAVISION_PROAUDIO_16+1)
MM_PROAUD_16_MIDIIN          = (MM_MEDIAVISION_PROAUDIO_16+2)
MM_PROAUD_16_SYNTH           = (MM_MEDIAVISION_PROAUDIO_16+3)
MM_PROAUD_16_WAVEOUT         = (MM_MEDIAVISION_PROAUDIO_16+4)
MM_PROAUD_16_WAVEIN          = (MM_MEDIAVISION_PROAUDIO_16+5)
MM_PROAUD_16_MIXER           = (MM_MEDIAVISION_PROAUDIO_16+6)
MM_PROAUD_16_AUX             = (MM_MEDIAVISION_PROAUDIO_16+7)

# Thunder Board
MM_MEDIAVISION_THUNDER = 0x020
MM_THUNDER_SYNTH       = (MM_MEDIAVISION_THUNDER+3)
MM_THUNDER_WAVEOUT     = (MM_MEDIAVISION_THUNDER+4)
MM_THUNDER_WAVEIN      = (MM_MEDIAVISION_THUNDER+5)
MM_THUNDER_AUX         = (MM_MEDIAVISION_THUNDER+7)

# Audio Port
MM_MEDIAVISION_TPORT = 0x040
MM_TPORT_WAVEOUT     = (MM_MEDIAVISION_TPORT+1)
MM_TPORT_WAVEIN      = (MM_MEDIAVISION_TPORT+2)
MM_TPORT_SYNTH       = (MM_MEDIAVISION_TPORT+3)

# Pro Audio Spectrum Plus
MM_MEDIAVISION_PROAUDIO_PLUS = 0x050
MM_PROAUD_PLUS_MIDIOUT       = (MM_MEDIAVISION_PROAUDIO_PLUS+1)
MM_PROAUD_PLUS_MIDIIN        = (MM_MEDIAVISION_PROAUDIO_PLUS+2)
MM_PROAUD_PLUS_SYNTH         = (MM_MEDIAVISION_PROAUDIO_PLUS+3)
MM_PROAUD_PLUS_WAVEOUT       = (MM_MEDIAVISION_PROAUDIO_PLUS+4)
MM_PROAUD_PLUS_WAVEIN        = (MM_MEDIAVISION_PROAUDIO_PLUS+5)
MM_PROAUD_PLUS_MIXER         = (MM_MEDIAVISION_PROAUDIO_PLUS+6)
MM_PROAUD_PLUS_AUX           = (MM_MEDIAVISION_PROAUDIO_PLUS+7)

# Pro Audio Studio 16
MM_MEDIAVISION_PROSTUDIO_16 = 0x060
MM_STUDIO_16_MIDIOUT        = (MM_MEDIAVISION_PROSTUDIO_16+1)
MM_STUDIO_16_MIDIIN         = (MM_MEDIAVISION_PROSTUDIO_16+2)
MM_STUDIO_16_SYNTH          = (MM_MEDIAVISION_PROSTUDIO_16+3)
MM_STUDIO_16_WAVEOUT        = (MM_MEDIAVISION_PROSTUDIO_16+4)
MM_STUDIO_16_WAVEIN         = (MM_MEDIAVISION_PROSTUDIO_16+5)
MM_STUDIO_16_MIXER          = (MM_MEDIAVISION_PROSTUDIO_16+6)
MM_STUDIO_16_AUX            = (MM_MEDIAVISION_PROSTUDIO_16+7)

# CDPC
MM_MEDIAVISION_CDPC = 0x070
MM_CDPC_MIDIOUT     = (MM_MEDIAVISION_CDPC+1)
MM_CDPC_MIDIIN      = (MM_MEDIAVISION_CDPC+2)
MM_CDPC_SYNTH       = (MM_MEDIAVISION_CDPC+3)
MM_CDPC_WAVEOUT     = (MM_MEDIAVISION_CDPC+4)
MM_CDPC_WAVEIN      = (MM_MEDIAVISION_CDPC+5)
MM_CDPC_MIXER       = (MM_MEDIAVISION_CDPC+6)
MM_CDPC_AUX         = (MM_MEDIAVISION_CDPC+7)

# Opus MV 1208 Chipsent
MM_MEDIAVISION_OPUS1208 = 0x080
MM_OPUS401_MIDIOUT      = (MM_MEDIAVISION_OPUS1208+1)
MM_OPUS401_MIDIIN       = (MM_MEDIAVISION_OPUS1208+2)
MM_OPUS1208_SYNTH       = (MM_MEDIAVISION_OPUS1208+3)
MM_OPUS1208_WAVEOUT     = (MM_MEDIAVISION_OPUS1208+4)
MM_OPUS1208_WAVEIN      = (MM_MEDIAVISION_OPUS1208+5)
MM_OPUS1208_MIXER       = (MM_MEDIAVISION_OPUS1208+6)
MM_OPUS1208_AUX         = (MM_MEDIAVISION_OPUS1208+7)

# Opus MV 1216 chipset
MM_MEDIAVISION_OPUS1216 = 0x090
MM_OPUS1216_MIDIOUT     = (MM_MEDIAVISION_OPUS1216+1)
MM_OPUS1216_MIDIIN      = (MM_MEDIAVISION_OPUS1216+2)
MM_OPUS1216_SYNTH       = (MM_MEDIAVISION_OPUS1216+3)
MM_OPUS1216_WAVEOUT     = (MM_MEDIAVISION_OPUS1216+4)
MM_OPUS1216_WAVEIN      = (MM_MEDIAVISION_OPUS1216+5)
MM_OPUS1216_MIXER       = (MM_MEDIAVISION_OPUS1216+6)
MM_OPUS1216_AUX         = (MM_MEDIAVISION_OPUS1216+7)

# MM_ARTISOFT product IDs
MM_ARTISOFT_SBWAVEIN  = 1   # Artisoft sounding Board waveform input
MM_ARTISOFT_SBWAVEOUT = 2   # Artisoft sounding Board waveform output

# MM_IBM product IDs
MM_MMOTION_WAVEAUX    = 1   # IBM M-Motion Auxiliary Device
MM_MMOTION_WAVEOUT    = 2   # IBM M-Motion Waveform output
MM_MMOTION_WAVEIN     = 3   # IBM M-Motion  Waveform Input
MM_IBM_PCMCIA_WAVEIN  = 11  # IBM waveform input
MM_IBM_PCMCIA_WAVEOUT = 12  # IBM Waveform output
MM_IBM_PCMCIA_SYNTH   = 13  # IBM Midi Synthesis
MM_IBM_PCMCIA_MIDIIN  = 14  # IBM external MIDI in
MM_IBM_PCMCIA_MIDIOUT = 15  # IBM external MIDI out
MM_IBM_PCMCIA_AUX     = 16  # IBM auxiliary control
MM_IBM_THINKPAD200    = 17
MM_IBM_MWAVE_WAVEIN   = 18
MM_IBM_MWAVE_WAVEOUT  = 19
MM_IBM_MWAVE_MIXER    = 20
MM_IBM_MWAVE_MIDIIN   = 21
MM_IBM_MWAVE_MIDIOUT  = 22
MM_IBM_MWAVE_AUX      = 23
MM_IBM_WC_MIDIOUT     = 30
MM_IBM_WC_WAVEOUT     = 31
MM_IBM_WC_MIXEROUT    = 33

# MM_VOCALTEC product IDs
MM_VOCALTEC_WAVEOUT = 1
MM_VOCALTEC_WAVEIN  = 2

# MM_ROLAND product IDs
MM_ROLAND_RAP10_MIDIOUT  = 10   # MM_ROLAND_RAP10
MM_ROLAND_RAP10_MIDIIN   = 11   # MM_ROLAND_RAP10
MM_ROLAND_RAP10_SYNTH    = 12   # MM_ROLAND_RAP10
MM_ROLAND_RAP10_WAVEOUT  = 13   # MM_ROLAND_RAP10
MM_ROLAND_RAP10_WAVEIN   = 14   # MM_ROLAND_RAP10
MM_ROLAND_MPU401_MIDIOUT = 15
MM_ROLAND_MPU401_MIDIIN  = 16
MM_ROLAND_SMPU_MIDIOUTA  = 17
MM_ROLAND_SMPU_MIDIOUTB  = 18
MM_ROLAND_SMPU_MIDIINA   = 19
MM_ROLAND_SMPU_MIDIINB   = 20
MM_ROLAND_SC7_MIDIOUT    = 21
MM_ROLAND_SC7_MIDIIN     = 22
MM_ROLAND_SERIAL_MIDIOUT = 23
MM_ROLAND_SERIAL_MIDIIN  = 24
MM_ROLAND_SCP_MIDIOUT    = 38
MM_ROLAND_SCP_MIDIIN     = 39
MM_ROLAND_SCP_WAVEOUT    = 40
MM_ROLAND_SCP_WAVEIN     = 41
MM_ROLAND_SCP_MIXER      = 42
MM_ROLAND_SCP_AUX        = 48

# MM_DSP_SOLUTIONS product IDs
MM_DSP_SOLUTIONS_WAVEOUT = 1
MM_DSP_SOLUTIONS_WAVEIN  = 2
MM_DSP_SOLUTIONS_SYNTH   = 3
MM_DSP_SOLUTIONS_AUX     = 4

# MM_WANGLABS product IDs
MM_WANGLABS_WAVEIN1  = 1       # Input audio wave on CPU board models: Exec 4010, 4030, 3450; PC 251/25c, pc 461/25s , pc 461/33c
MM_WANGLABS_WAVEOUT1 = 2

# MM_TANDY product IDs
MM_TANDY_VISWAVEIN       = 1
MM_TANDY_VISWAVEOUT      = 2
MM_TANDY_VISBIOSSYNTH    = 3
MM_TANDY_SENS_MMAWAVEIN  = 4
MM_TANDY_SENS_MMAWAVEOUT = 5
MM_TANDY_SENS_MMAMIDIIN  = 6
MM_TANDY_SENS_MMAMIDIOUT = 7
MM_TANDY_SENS_VISWAVEOUT = 8
MM_TANDY_PSSJWAVEIN      = 9
MM_TANDY_PSSJWAVEOUT     = 10

# product IDs
MM_INTELOPD_WAVEIN    = 1       # HID2 WaveAudio Driver
MM_INTELOPD_WAVEOUT   = 101     # HID2
MM_INTELOPD_AUX       = 401     # HID2 for mixing
MM_INTEL_NSPMODEMLINE = 501

# MM_INTERACTIVE product IDs
MM_INTERACTIVE_WAVEIN  = 0x045
MM_INTERACTIVE_WAVEOUT = 0x045

# MM_YAMAHA product IDs
MM_YAMAHA_GSS_SYNTH       = 0x001
MM_YAMAHA_GSS_WAVEOUT     = 0x002
MM_YAMAHA_GSS_WAVEIN      = 0x003
MM_YAMAHA_GSS_MIDIOUT     = 0x004
MM_YAMAHA_GSS_MIDIIN      = 0x005
MM_YAMAHA_GSS_AUX         = 0x006
MM_YAMAHA_SERIAL_MIDIOUT  = 0x007
MM_YAMAHA_SERIAL_MIDIIN   = 0x008
MM_YAMAHA_OPL3SA_WAVEOUT  = 0x010
MM_YAMAHA_OPL3SA_WAVEIN   = 0x011
MM_YAMAHA_OPL3SA_FMSYNTH  = 0x012
MM_YAMAHA_OPL3SA_YSYNTH   = 0x013
MM_YAMAHA_OPL3SA_MIDIOUT  = 0x014
MM_YAMAHA_OPL3SA_MIDIIN   = 0x015
MM_YAMAHA_OPL3SA_MIXER    = 0x017
MM_YAMAHA_OPL3SA_JOYSTICK = 0x018

# MM_EVEREX product IDs
MM_EVEREX_CARRIER = 0x001

# MM_ECHO product IDs
MM_ECHO_SYNTH   = 0x001
MM_ECHO_WAVEOUT = 0x002
MM_ECHO_WAVEIN  = 0x003
MM_ECHO_MIDIOUT = 0x004
MM_ECHO_MIDIIN  = 0x005
MM_ECHO_AUX     = 0x006

# MM_SIERRA product IDs
MM_SIERRA_ARIA_MIDIOUT      = 0x014
MM_SIERRA_ARIA_MIDIIN       = 0x015
MM_SIERRA_ARIA_SYNTH        = 0x016
MM_SIERRA_ARIA_WAVEOUT      = 0x017
MM_SIERRA_ARIA_WAVEIN       = 0x018
MM_SIERRA_ARIA_AUX          = 0x019
MM_SIERRA_ARIA_AUX2         = 0x020
MM_SIERRA_QUARTET_WAVEIN    = 0x050
MM_SIERRA_QUARTET_WAVEOUT   = 0x051
MM_SIERRA_QUARTET_MIDIIN    = 0x052
MM_SIERRA_QUARTET_MIDIOUT   = 0x053
MM_SIERRA_QUARTET_SYNTH     = 0x054
MM_SIERRA_QUARTET_AUX_CD    = 0x055
MM_SIERRA_QUARTET_AUX_LINE  = 0x056
MM_SIERRA_QUARTET_AUX_MODEM = 0x057
MM_SIERRA_QUARTET_MIXER     = 0x058

# MM_CAT product IDs
MM_CAT_WAVEOUT = 1

# MM_DSP_GROUP product IDs
MM_DSP_GROUP_TRUESPEECH = 0x001

# MM_MELABS product IDs
MM_MELABS_MIDI2GO = 0x001

# MM_ESS product IDs
MM_ESS_AMWAVEOUT       = 0x001
MM_ESS_AMWAVEIN        = 0x002
MM_ESS_AMAUX           = 0x003
MM_ESS_AMSYNTH         = 0x004
MM_ESS_AMMIDIOUT       = 0x005
MM_ESS_AMMIDIIN        = 0x006
MM_ESS_MIXER           = 0x007
MM_ESS_AUX_CD          = 0x008
MM_ESS_MPU401_MIDIOUT  = 0x009
MM_ESS_MPU401_MIDIIN   = 0x00A
MM_ESS_ES488_WAVEOUT   = 0x010
MM_ESS_ES488_WAVEIN    = 0x011
MM_ESS_ES488_MIXER     = 0x012
MM_ESS_ES688_WAVEOUT   = 0x013
MM_ESS_ES688_WAVEIN    = 0x014
MM_ESS_ES688_MIXER     = 0x015
MM_ESS_ES1488_WAVEOUT  = 0x016
MM_ESS_ES1488_WAVEIN   = 0x017
MM_ESS_ES1488_MIXER    = 0x018
MM_ESS_ES1688_WAVEOUT  = 0x019
MM_ESS_ES1688_WAVEIN   = 0x01A
MM_ESS_ES1688_MIXER    = 0x01B
MM_ESS_ES1788_WAVEOUT  = 0x01C
MM_ESS_ES1788_WAVEIN   = 0x01D
MM_ESS_ES1788_MIXER    = 0x01E
MM_ESS_ES1888_WAVEOUT  = 0x01F
MM_ESS_ES1888_WAVEIN   = 0x020
MM_ESS_ES1888_MIXER    = 0x021
MM_ESS_ES1868_WAVEOUT  = 0x022
MM_ESS_ES1868_WAVEIN   = 0x023
MM_ESS_ES1868_MIXER    = 0x024
MM_ESS_ES1878_WAVEOUT  = 0x025
MM_ESS_ES1878_WAVEIN   = 0x026
MM_ESS_ES1878_MIXER    = 0x027

# product IDs
MM_EPS_FMSND = 1

# MM_TRUEVISION product IDs
MM_TRUEVISION_WAVEIN1  = 1
MM_TRUEVISION_WAVEOUT1 = 2

# MM_AZTECH product IDs
MM_AZTECH_MIDIOUT          = 3
MM_AZTECH_MIDIIN           = 4
MM_AZTECH_WAVEIN           = 17
MM_AZTECH_WAVEOUT          = 18
MM_AZTECH_FMSYNTH          = 20
MM_AZTECH_MIXER            = 21
MM_AZTECH_PRO16_WAVEIN     = 33
MM_AZTECH_PRO16_WAVEOUT    = 34
MM_AZTECH_PRO16_FMSYNTH    = 38
MM_AZTECH_DSP16_WAVEIN     = 65
MM_AZTECH_DSP16_WAVEOUT    = 66
MM_AZTECH_DSP16_FMSYNTH    = 68
MM_AZTECH_DSP16_WAVESYNTH  = 70
MM_AZTECH_NOVA16_WAVEIN    = 71
MM_AZTECH_NOVA16_WAVEOUT   = 72
MM_AZTECH_NOVA16_MIXER     = 73
MM_AZTECH_WASH16_WAVEIN    = 74
MM_AZTECH_WASH16_WAVEOUT   = 75
MM_AZTECH_WASH16_MIXER     = 76
MM_AZTECH_AUX_CD           = 401
MM_AZTECH_AUX_LINE         = 402
MM_AZTECH_AUX_MIC          = 403
MM_AZTECH_AUX              = 404

# MM_VIDEOLOGIC product IDs
MM_VIDEOLOGIC_MSWAVEIN  = 1
MM_VIDEOLOGIC_MSWAVEOUT = 2

# MM_KORG product IDs
MM_KORG_PCIF_MIDIOUT = 1
MM_KORG_PCIF_MIDIIN  = 2

# MM_APT product IDs
MM_APT_ACE100CD = 1

# MM_ICS product IDs
MM_ICS_WAVEDECK_WAVEOUT           = 1     # MS WSS compatible card and driver
MM_ICS_WAVEDECK_WAVEIN            = 2
MM_ICS_WAVEDECK_MIXER             = 3
MM_ICS_WAVEDECK_AUX               = 4
MM_ICS_WAVEDECK_SYNTH             = 5
MM_ICS_WAVEDEC_SB_WAVEOUT         = 6
MM_ICS_WAVEDEC_SB_WAVEIN          = 7
MM_ICS_WAVEDEC_SB_FM_MIDIOUT      = 8
MM_ICS_WAVEDEC_SB_MPU401_MIDIOUT  = 9
MM_ICS_WAVEDEC_SB_MPU401_MIDIIN   = 10
MM_ICS_WAVEDEC_SB_MIXER           = 11
MM_ICS_WAVEDEC_SB_AUX             = 12
MM_ICS_2115_LITE_MIDIOUT          = 13
MM_ICS_2120_LITE_MIDIOUT          = 14

# MM_ITERATEDSYS product IDs
MM_ITERATEDSYS_FUFCODEC = 1

# MM_METHEUS product IDs
MM_METHEUS_ZIPPER = 1

# MM_WINNOV product IDs
MM_WINNOV_CAVIAR_WAVEIN    = 1
MM_WINNOV_CAVIAR_WAVEOUT   = 2
MM_WINNOV_CAVIAR_VIDC      = 3
MM_WINNOV_CAVIAR_CHAMPAGNE = 4       # Fourcc is CHAM
MM_WINNOV_CAVIAR_YUV8      = 5       # Fourcc is YUV8

# MM_NCR product IDs
MM_NCR_BA_WAVEIN  = 1
MM_NCR_BA_WAVEOUT = 2
MM_NCR_BA_SYNTH   = 3
MM_NCR_BA_AUX     = 4
MM_NCR_BA_MIXER   = 5

# MM_VITEC product IDs
MM_VITEC_VMAKER = 1
MM_VITEC_VMPRO  = 2

# MM_MOSCOM product IDs
MM_MOSCOM_VPC2400_IN  = 1   # Four Port Voice Processing / Voice Recognition Board
MM_MOSCOM_VPC2400_OUT = 2   # VPC2400

# MM_SILICONSOFT product IDs
MM_SILICONSOFT_SC1_WAVEIN         = 1   # Waveform in , high sample rate
MM_SILICONSOFT_SC1_WAVEOUT        = 2   # Waveform out , high sample rate
MM_SILICONSOFT_SC2_WAVEIN         = 3   # Waveform in 2 channels, high sample rate
MM_SILICONSOFT_SC2_WAVEOUT        = 4   # Waveform out 2 channels, high sample rate
MM_SILICONSOFT_SOUNDJR2_WAVEOUT   = 5   # Waveform out, self powered, efficient
MM_SILICONSOFT_SOUNDJR2PR_WAVEIN  = 6   # Waveform in, self powered, efficient
MM_SILICONSOFT_SOUNDJR2PR_WAVEOUT = 7   # Waveform out 2 channels, self powered, efficient
MM_SILICONSOFT_SOUNDJR3_WAVEOUT   = 8   # Waveform in 2 channels, self powered, efficient

# MM_OLIVETTI product IDs
MM_OLIVETTI_WAVEIN     = 1
MM_OLIVETTI_WAVEOUT    = 2
MM_OLIVETTI_MIXER      = 3
MM_OLIVETTI_AUX        = 4
MM_OLIVETTI_MIDIIN     = 5
MM_OLIVETTI_MIDIOUT    = 6
MM_OLIVETTI_SYNTH      = 7
MM_OLIVETTI_JOYSTICK   = 8
MM_OLIVETTI_ACM_GSM    = 9
MM_OLIVETTI_ACM_ADPCM  = 10
MM_OLIVETTI_ACM_CELP   = 11
MM_OLIVETTI_ACM_SBC    = 12
MM_OLIVETTI_ACM_OPR    = 13

# MM_IOMAGIC product IDs

# The I/O Magic Tempo is a PCMCIA Type 2 audio card featuring wave audio
#  record and playback, FM synthesizer, and MIDI output.  The I/O Magic
#  Tempo WaveOut device supports mono and stereo PCM playback at rates
#  of 7350, 11025, 22050, and  44100 samples

MM_IOMAGIC_TEMPO_WAVEOUT = 1
MM_IOMAGIC_TEMPO_WAVEIN  = 2
MM_IOMAGIC_TEMPO_SYNTH   = 3
MM_IOMAGIC_TEMPO_MIDIOUT = 4
MM_IOMAGIC_TEMPO_MXDOUT  = 5
MM_IOMAGIC_TEMPO_AUXOUT  = 6

# MM_MATSUSHITA product IDs
MM_MATSUSHITA_WAVEIN         = 1
MM_MATSUSHITA_WAVEOUT        = 2
MM_MATSUSHITA_FMSYNTH_STEREO = 3
MM_MATSUSHITA_MIXER          = 4
MM_MATSUSHITA_AUX            = 5

# MM_NEWMEDIA product IDs
MM_NEWMEDIA_WAVJAMMER = 1       # WSS Compatible sound card.

# MM_LYRRUS product IDs

# Bridge is a MIDI driver that allows the the Lyrrus G-VOX hardware to
#  communicate with Windows base transcription and sequencer applications.
#  The driver also provides a mechanism for the user to configure the system
#  to their personal playing style.

MM_LYRRUS_BRIDGE_GUITAR = 1

# MM_OPTI product IDs
MM_OPTI_M16_FMSYNTH_STEREO = 0x00001
MM_OPTI_M16_MIDIIN         = 0x00002
MM_OPTI_M16_MIDIOUT        = 0x00003
MM_OPTI_M16_WAVEIN         = 0x00004
MM_OPTI_M16_WAVEOUT        = 0x00005
MM_OPTI_M16_MIXER          = 0x00006
MM_OPTI_M16_AUX            = 0x00007
MM_OPTI_P16_FMSYNTH_STEREO = 0x00010
MM_OPTI_P16_MIDIIN         = 0x00011
MM_OPTI_P16_MIDIOUT        = 0x00012
MM_OPTI_P16_WAVEIN         = 0x00013
MM_OPTI_P16_WAVEOUT        = 0x00014
MM_OPTI_P16_MIXER          = 0x00015
MM_OPTI_P16_AUX            = 0x00016
MM_OPTI_M32_WAVEIN         = 0x00020
MM_OPTI_M32_WAVEOUT        = 0x00021
MM_OPTI_M32_MIDIIN         = 0x00022
MM_OPTI_M32_MIDIOUT        = 0x00023
MM_OPTI_M32_SYNTH_STEREO   = 0x00024
MM_OPTI_M32_MIXER          = 0x00025
MM_OPTI_M32_AUX            = 0x00026

# Product IDs for     MM_ADDX    -  ADDX
MM_ADDX_PCTV_DIGITALMIX = 1       # MM_ADDX_PCTV_DIGITALMIX
MM_ADDX_PCTV_WAVEIN     = 2       # MM_ADDX_PCTV_WAVEIN
MM_ADDX_PCTV_WAVEOUT    = 3       # MM_ADDX_PCTV_WAVEOUT
MM_ADDX_PCTV_MIXER      = 4       # MM_ADDX_PCTV_MIXER
MM_ADDX_PCTV_AUX_CD     = 5       # MM_ADDX_PCTV_AUX_CD
MM_ADDX_PCTV_AUX_LINE   = 6       # MM_ADDX_PCTV_AUX_LINE

# Product IDs for     MM_AHEAD    -  Ahead, Inc.
MM_AHEAD_MULTISOUND   = 1
MM_AHEAD_SOUNDBLASTER = 2
MM_AHEAD_PROAUDIO     = 3
MM_AHEAD_GENERIC      = 4

# Product IDs for     MM_AMD    -  AMD
MM_AMD_INTERWAVE_WAVEIN           = 1
MM_AMD_INTERWAVE_WAVEOUT          = 2
MM_AMD_INTERWAVE_SYNTH            = 3
MM_AMD_INTERWAVE_MIXER1           = 4
MM_AMD_INTERWAVE_MIXER2           = 5
MM_AMD_INTERWAVE_JOYSTICK         = 6
MM_AMD_INTERWAVE_EX_CD            = 7
MM_AMD_INTERWAVE_MIDIIN           = 8
MM_AMD_INTERWAVE_MIDIOUT          = 9
MM_AMD_INTERWAVE_AUX1             = 10
MM_AMD_INTERWAVE_AUX2             = 11
MM_AMD_INTERWAVE_AUX_MIC          = 12
MM_AMD_INTERWAVE_AUX_CD           = 13
MM_AMD_INTERWAVE_MONO_IN          = 14
MM_AMD_INTERWAVE_MONO_OUT         = 15
MM_AMD_INTERWAVE_EX_TELEPHONY     = 16
MM_AMD_INTERWAVE_WAVEOUT_BASE     = 17
MM_AMD_INTERWAVE_WAVEOUT_TREBLE   = 18
MM_AMD_INTERWAVE_STEREO_ENHANCED  = 19

# Product IDs for     MM_AST    -  AST Research Inc.
MM_AST_MODEMWAVE_WAVEIN  = 13
MM_AST_MODEMWAVE_WAVEOUT = 14

# Product IDs for     MM_BROOKTREE    -  Brooktree Corporation
MM_BTV_WAVEIN          = 1       # Brooktree PCM Wave Audio In
MM_BTV_WAVEOUT         = 2       # Brooktree PCM Wave Audio Out
MM_BTV_MIDIIN          = 3       # Brooktree MIDI In
MM_BTV_MIDIOUT         = 4       # Brooktree MIDI out
MM_BTV_MIDISYNTH       = 5       # Brooktree MIDI FM synth
MM_BTV_AUX_LINE        = 6       # Brooktree Line Input
MM_BTV_AUX_MIC         = 7       # Brooktree Microphone Input
MM_BTV_AUX_CD          = 8       # Brooktree CD Input
MM_BTV_DIGITALIN       = 9       # Brooktree PCM Wave in with subcode information
MM_BTV_DIGITALOUT      = 10      # Brooktree PCM Wave out with subcode information
MM_BTV_MIDIWAVESTREAM  = 11      # Brooktree WaveStream
MM_BTV_MIXER           = 12      # Brooktree WSS Mixer driver

# Product IDs for     MM_CANAM    -  CANAM Computers
MM_CANAM_CBXWAVEOUT = 1
MM_CANAM_CBXWAVEIN  = 2

# Product IDs for     MM_CASIO    -  Casio Computer Co., LTD
MM_CASIO_WP150_MIDIOUT = 1       # wp150
MM_CASIO_WP150_MIDIIN  = 2

# Product IDs for     MM_COMPAQ    -  Compaq Computer Corp.
MM_COMPAQ_BB_WAVEIN  = 1
MM_COMPAQ_BB_WAVEOUT = 2
MM_COMPAQ_BB_WAVEAUX = 3

# Product IDs for     MM_COREDYNAMICS    -  Core Dynamics
MM_COREDYNAMICS_DYNAMIXHR           = 1       # DynaMax Hi-Rez
MM_COREDYNAMICS_DYNASONIX_SYNTH     = 2       # DynaSonix
MM_COREDYNAMICS_DYNASONIX_MIDI_IN   = 3
MM_COREDYNAMICS_DYNASONIX_MIDI_OUT  = 4
MM_COREDYNAMICS_DYNASONIX_WAVE_IN   = 5
MM_COREDYNAMICS_DYNASONIX_WAVE_OUT  = 6
MM_COREDYNAMICS_DYNASONIX_AUDIO_IN  = 7
MM_COREDYNAMICS_DYNASONIX_AUDIO_OUT = 8
MM_COREDYNAMICS_DYNAGRAFX_VGA       = 9       # DynaGrfx
MM_COREDYNAMICS_DYNAGRAFX_WAVE_IN   = 10
MM_COREDYNAMICS_DYNAGRAFX_WAVE_OUT  = 11

# Product IDs for     MM_CRYSTAL    -  Crystal Semiconductor Corporation
MM_CRYSTAL_CS4232_WAVEIN         = 1
MM_CRYSTAL_CS4232_WAVEOUT        = 2
MM_CRYSTAL_CS4232_WAVEMIXER      = 3
MM_CRYSTAL_CS4232_WAVEAUX_AUX1   = 4
MM_CRYSTAL_CS4232_WAVEAUX_AUX2   = 5
MM_CRYSTAL_CS4232_WAVEAUX_LINE   = 6
MM_CRYSTAL_CS4232_WAVEAUX_MONO   = 7
MM_CRYSTAL_CS4232_WAVEAUX_MASTER = 8
MM_CRYSTAL_CS4232_MIDIIN         = 9
MM_CRYSTAL_CS4232_MIDIOUT        = 10
MM_CRYSTAL_CS4232_INPUTGAIN_AUX1 = 13
MM_CRYSTAL_CS4232_INPUTGAIN_LOOP = 14

# Product IDs for     MM_DDD    -  Danka Data Devices
MM_DDD_MIDILINK_MIDIIN  = 1
MM_DDD_MIDILINK_MIDIOUT = 2

# Product IDs for     MM_DIACOUSTICS    -  DiAcoustics, Inc.
MM_DIACOUSTICS_DRUM_ACTION = 1       # Drum Action

# Product IDs for     MM_DIAMONDMM    -  Diamond Multimedia
MM_DIMD_PLATFORM = 0       # Freedom Audio
MM_DIMD_DIRSOUND = 1
MM_DIMD_VIRTMPU  = 2
MM_DIMD_VIRTSB   = 3
MM_DIMD_VIRTJOY  = 4
MM_DIMD_WAVEIN   = 5
MM_DIMD_WAVEOUT  = 6
MM_DIMD_MIDIIN   = 7
MM_DIMD_MIDIOUT  = 8
MM_DIMD_AUX_LINE = 9
MM_DIMD_MIXER    = 10

# Product IDs for     MM_DIGITAL_AUDIO_LABS    -  Digital Audio Labs, Inc.
MM_DIGITAL_AUDIO_LABS_V8   = 0x010
MM_DIGITAL_AUDIO_LABS_CPRO = 0x011

# Product IDs for     MM_DIGITAL    -  Digital Equipment Corporation
MM_DIGITAL_AV320_WAVEIN  = 1       # Digital Audio Video Compression Board
MM_DIGITAL_AV320_WAVEOUT = 2       # Digital Audio Video Compression Board

# Product IDs for     MM_ECS    -  Electronic Courseware Systems, Inc.
MM_ECS_AADF_MIDI_IN      = 10
MM_ECS_AADF_MIDI_OUT     = 11
MM_ECS_AADF_WAVE2MIDI_IN = 12

# Product IDs for     MM_ENSONIQ    -  ENSONIQ Corporation
MM_ENSONIQ_SOUNDSCAPE     = 0x010    # ENSONIQ Soundscape
MM_SOUNDSCAPE_WAVEOUT     = MM_ENSONIQ_SOUNDSCAPE+1
MM_SOUNDSCAPE_WAVEOUT_AUX = MM_ENSONIQ_SOUNDSCAPE+2
MM_SOUNDSCAPE_WAVEIN      = MM_ENSONIQ_SOUNDSCAPE+3
MM_SOUNDSCAPE_MIDIOUT     = MM_ENSONIQ_SOUNDSCAPE+4
MM_SOUNDSCAPE_MIDIIN      = MM_ENSONIQ_SOUNDSCAPE+5
MM_SOUNDSCAPE_SYNTH       = MM_ENSONIQ_SOUNDSCAPE+6
MM_SOUNDSCAPE_MIXER       = MM_ENSONIQ_SOUNDSCAPE+7
MM_SOUNDSCAPE_AUX         = MM_ENSONIQ_SOUNDSCAPE+8

# Product IDs for     MM_FRONTIER    -  Frontier Design Group LLC
MM_FRONTIER_WAVECENTER_MIDIIN  = 1       # WaveCenter
MM_FRONTIER_WAVECENTER_MIDIOUT = 2
MM_FRONTIER_WAVECENTER_WAVEIN  = 3
MM_FRONTIER_WAVECENTER_WAVEOUT = 4

# Product IDs for     MM_GADGETLABS    -  Gadget Labs LLC
MM_GADGETLABS_WAVE44_WAVEIN  = 1
MM_GADGETLABS_WAVE44_WAVEOUT = 2
MM_GADGETLABS_WAVE42_WAVEIN  = 3
MM_GADGETLABS_WAVE42_WAVEOUT = 4
MM_GADGETLABS_WAVE4_MIDIIN   = 5
MM_GADGETLABS_WAVE4_MIDIOUT  = 6

# Product IDs for     MM_KAY_ELEMETRICS    -  Kay Elemetrics, Inc.
MM_KAY_ELEMETRICS_CSL          = 0x04300
MM_KAY_ELEMETRICS_CSL_DAT      = 0x04308
MM_KAY_ELEMETRICS_CSL_4CHANNEL = 0x04309

# Product IDs for     MM_LERNOUT_AND_HAUSPIE    -  Lernout  Hauspie
MM_LERNOUT_ANDHAUSPIE_LHCODECACM = 1

# Product IDs for     MM_MPTUS    -  M.P. Technologies, Inc.
MM_MPTUS_SPWAVEOUT = 1       # Sound Pallette

# Product IDs for     MM_MOTU    -  Mark of the Unicorn
MM_MOTU_MTP_MIDIOUT_ALL        = 100
MM_MOTU_MTP_MIDIIN_1           = 101
MM_MOTU_MTP_MIDIOUT_1          = 101
MM_MOTU_MTP_MIDIIN_2           = 102
MM_MOTU_MTP_MIDIOUT_2          = 102
MM_MOTU_MTP_MIDIIN_3           = 103
MM_MOTU_MTP_MIDIOUT_3          = 103
MM_MOTU_MTP_MIDIIN_4           = 104
MM_MOTU_MTP_MIDIOUT_4          = 104
MM_MOTU_MTP_MIDIIN_5           = 105
MM_MOTU_MTP_MIDIOUT_5          = 105
MM_MOTU_MTP_MIDIIN_6           = 106
MM_MOTU_MTP_MIDIOUT_6          = 106
MM_MOTU_MTP_MIDIIN_7           = 107
MM_MOTU_MTP_MIDIOUT_7          = 107
MM_MOTU_MTP_MIDIIN_8           = 108
MM_MOTU_MTP_MIDIOUT_8          = 108

MM_MOTU_MTPII_MIDIOUT_ALL      = 200
MM_MOTU_MTPII_MIDIIN_SYNC      = 200
MM_MOTU_MTPII_MIDIIN_1         = 201
MM_MOTU_MTPII_MIDIOUT_1        = 201
MM_MOTU_MTPII_MIDIIN_2         = 202
MM_MOTU_MTPII_MIDIOUT_2        = 202
MM_MOTU_MTPII_MIDIIN_3         = 203
MM_MOTU_MTPII_MIDIOUT_3        = 203
MM_MOTU_MTPII_MIDIIN_4         = 204
MM_MOTU_MTPII_MIDIOUT_4        = 204
MM_MOTU_MTPII_MIDIIN_5         = 205
MM_MOTU_MTPII_MIDIOUT_5        = 205
MM_MOTU_MTPII_MIDIIN_6         = 206
MM_MOTU_MTPII_MIDIOUT_6        = 206
MM_MOTU_MTPII_MIDIIN_7         = 207
MM_MOTU_MTPII_MIDIOUT_7        = 207
MM_MOTU_MTPII_MIDIIN_8         = 208
MM_MOTU_MTPII_MIDIOUT_8        = 208
MM_MOTU_MTPII_NET_MIDIIN_1     = 209
MM_MOTU_MTPII_NET_MIDIOUT_1    = 209
MM_MOTU_MTPII_NET_MIDIIN_2     = 210
MM_MOTU_MTPII_NET_MIDIOUT_2    = 210
MM_MOTU_MTPII_NET_MIDIIN_3     = 211
MM_MOTU_MTPII_NET_MIDIOUT_3    = 211
MM_MOTU_MTPII_NET_MIDIIN_4     = 212
MM_MOTU_MTPII_NET_MIDIOUT_4    = 212
MM_MOTU_MTPII_NET_MIDIIN_5     = 213
MM_MOTU_MTPII_NET_MIDIOUT_5    = 213
MM_MOTU_MTPII_NET_MIDIIN_6     = 214
MM_MOTU_MTPII_NET_MIDIOUT_6    = 214
MM_MOTU_MTPII_NET_MIDIIN_7     = 215
MM_MOTU_MTPII_NET_MIDIOUT_7    = 215
MM_MOTU_MTPII_NET_MIDIIN_8     = 216
MM_MOTU_MTPII_NET_MIDIOUT_8    = 216

MM_MOTU_MXP_MIDIIN_MIDIOUT_ALL = 300
MM_MOTU_MXP_MIDIIN_SYNC        = 300
MM_MOTU_MXP_MIDIIN_MIDIIN_1    = 301
MM_MOTU_MXP_MIDIIN_MIDIOUT_1   = 301
MM_MOTU_MXP_MIDIIN_MIDIIN_2    = 302
MM_MOTU_MXP_MIDIIN_MIDIOUT_2   = 302
MM_MOTU_MXP_MIDIIN_MIDIIN_3    = 303
MM_MOTU_MXP_MIDIIN_MIDIOUT_3   = 303
MM_MOTU_MXP_MIDIIN_MIDIIN_4    = 304
MM_MOTU_MXP_MIDIIN_MIDIOUT_4   = 304
MM_MOTU_MXP_MIDIIN_MIDIIN_5    = 305
MM_MOTU_MXP_MIDIIN_MIDIOUT_5   = 305
MM_MOTU_MXP_MIDIIN_MIDIIN_6    = 306
MM_MOTU_MXP_MIDIIN_MIDIOUT_6   = 306

MM_MOTU_MXPMPU_MIDIOUT_ALL     = 400
MM_MOTU_MXPMPU_MIDIIN_SYNC     = 400
MM_MOTU_MXPMPU_MIDIIN_1        = 401
MM_MOTU_MXPMPU_MIDIOUT_1       = 401
MM_MOTU_MXPMPU_MIDIIN_2        = 402
MM_MOTU_MXPMPU_MIDIOUT_2       = 402
MM_MOTU_MXPMPU_MIDIIN_3        = 403
MM_MOTU_MXPMPU_MIDIOUT_3       = 403
MM_MOTU_MXPMPU_MIDIIN_4        = 404
MM_MOTU_MXPMPU_MIDIOUT_4       = 404
MM_MOTU_MXPMPU_MIDIIN_5        = 405
MM_MOTU_MXPMPU_MIDIOUT_5       = 405
MM_MOTU_MXPMPU_MIDIIN_6        = 406
MM_MOTU_MXPMPU_MIDIOUT_6       = 406

MM_MOTU_MXN_MIDIOUT_ALL        = 500
MM_MOTU_MXN_MIDIIN_SYNC        = 500
MM_MOTU_MXN_MIDIIN_1           = 501
MM_MOTU_MXN_MIDIOUT_1          = 501
MM_MOTU_MXN_MIDIIN_2           = 502
MM_MOTU_MXN_MIDIOUT_2          = 502
MM_MOTU_MXN_MIDIIN_3           = 503
MM_MOTU_MXN_MIDIOUT_3          = 503
MM_MOTU_MXN_MIDIIN_4           = 504
MM_MOTU_MXN_MIDIOUT_4          = 504

MM_MOTU_FLYER_MIDI_IN_SYNC     = 600
MM_MOTU_FLYER_MIDI_IN_A        = 601
MM_MOTU_FLYER_MIDI_OUT_A       = 601
MM_MOTU_FLYER_MIDI_IN_B        = 602
MM_MOTU_FLYER_MIDI_OUT_B       = 602

MM_MOTU_PKX_MIDI_IN_SYNC       = 700
MM_MOTU_PKX_MIDI_IN_A          = 701
MM_MOTU_PKX_MIDI_OUT_A         = 701
MM_MOTU_PKX_MIDI_IN_B          = 702
MM_MOTU_PKX_MIDI_OUT_B         = 702

MM_MOTU_DTX_MIDI_IN_SYNC       = 800
MM_MOTU_DTX_MIDI_IN_A          = 801
MM_MOTU_DTX_MIDI_OUT_A         = 801
MM_MOTU_DTX_MIDI_IN_B          = 802
MM_MOTU_DTX_MIDI_OUT_B         = 802

MM_MOTU_MTPAV_MIDIOUT_ALL      = 900
MM_MOTU_MTPAV_MIDIIN_SYNC      = 900
MM_MOTU_MTPAV_MIDIIN_1         = 901
MM_MOTU_MTPAV_MIDIOUT_1        = 901
MM_MOTU_MTPAV_MIDIIN_2         = 902
MM_MOTU_MTPAV_MIDIOUT_2        = 902
MM_MOTU_MTPAV_MIDIIN_3         = 903
MM_MOTU_MTPAV_MIDIOUT_3        = 903
MM_MOTU_MTPAV_MIDIIN_4         = 904
MM_MOTU_MTPAV_MIDIOUT_4        = 904
MM_MOTU_MTPAV_MIDIIN_5         = 905
MM_MOTU_MTPAV_MIDIOUT_5        = 905
MM_MOTU_MTPAV_MIDIIN_6         = 906
MM_MOTU_MTPAV_MIDIOUT_6        = 906
MM_MOTU_MTPAV_MIDIIN_7         = 907
MM_MOTU_MTPAV_MIDIOUT_7        = 907
MM_MOTU_MTPAV_MIDIIN_8         = 908
MM_MOTU_MTPAV_MIDIOUT_8        = 908
MM_MOTU_MTPAV_NET_MIDIIN_1     = 909
MM_MOTU_MTPAV_NET_MIDIOUT_1    = 909
MM_MOTU_MTPAV_NET_MIDIIN_2     = 910
MM_MOTU_MTPAV_NET_MIDIOUT_2    = 910
MM_MOTU_MTPAV_NET_MIDIIN_3     = 911
MM_MOTU_MTPAV_NET_MIDIOUT_3    = 911
MM_MOTU_MTPAV_NET_MIDIIN_4     = 912
MM_MOTU_MTPAV_NET_MIDIOUT_4    = 912
MM_MOTU_MTPAV_NET_MIDIIN_5     = 913
MM_MOTU_MTPAV_NET_MIDIOUT_5    = 913
MM_MOTU_MTPAV_NET_MIDIIN_6     = 914
MM_MOTU_MTPAV_NET_MIDIOUT_6    = 914
MM_MOTU_MTPAV_NET_MIDIIN_7     = 915
MM_MOTU_MTPAV_NET_MIDIOUT_7    = 915
MM_MOTU_MTPAV_NET_MIDIIN_8     = 916
MM_MOTU_MTPAV_NET_MIDIOUT_8    = 916
MM_MOTU_MTPAV_MIDIIN_ADAT      = 917
MM_MOTU_MTPAV_MIDIOUT_ADAT     = 917


# Product IDs for     MM_MIRO    -  miro Computer Products AG
MM_MIRO_MOVIEPRO     = 1       # miroMOVIE pro
MM_MIRO_VIDEOD1      = 2       # miroVIDEO D1
MM_MIRO_VIDEODC1TV   = 3       # miroVIDEO DC1 tv
MM_MIRO_VIDEOTD      = 4       # miroVIDEO 10/20 TD
MM_MIRO_DC30_WAVEOUT = 5
MM_MIRO_DC30_WAVEIN  = 6
MM_MIRO_DC30_MIX     = 7

# Product IDs for     MM_NEC    -  NEC
MM_NEC_73_86_SYNTH    = 5
MM_NEC_73_86_WAVEOUT  = 6
MM_NEC_73_86_WAVEIN   = 7
MM_NEC_26_SYNTH       = 9
MM_NEC_MPU401_MIDIOUT = 10
MM_NEC_MPU401_MIDIIN  = 11
MM_NEC_JOYSTICK       = 12

# Product IDs for     MM_NORRIS    -  Norris Communications, Inc.
MM_NORRIS_VOICELINK = 1

# Product IDs for     MM_NORTHERN_TELECOM    -  Northern Telecom Limited
MM_NORTEL_MPXAC_WAVEIN  = 1       # MPX Audio Card Wave Input Device
MM_NORTEL_MPXAC_WAVEOUT = 2       # MPX Audio Card Wave Output Device

# Product IDs for     MM_NVIDIA    -  NVidia Corporation
MM_NVIDIA_WAVEOUT  = 1
MM_NVIDIA_WAVEIN   = 2
MM_NVIDIA_MIDIOUT  = 3
MM_NVIDIA_MIDIIN   = 4
MM_NVIDIA_GAMEPORT = 5
MM_NVIDIA_MIXER    = 6
MM_NVIDIA_AUX      = 7

# Product IDs for     MM_OKSORI    -  OKSORI Co., Ltd.
MM_OKSORI_BASE           = 0                   # Oksori Base
MM_OKSORI_OSR8_WAVEOUT   = MM_OKSORI_BASE+1   # Oksori 8bit Wave out
MM_OKSORI_OSR8_WAVEIN    = MM_OKSORI_BASE+2   # Oksori 8bit Wave in
MM_OKSORI_OSR16_WAVEOUT  = MM_OKSORI_BASE+3   # Oksori 16 bit Wave out
MM_OKSORI_OSR16_WAVEIN   = MM_OKSORI_BASE+4   # Oksori 16 bit Wave in
MM_OKSORI_FM_OPL4        = MM_OKSORI_BASE+5   # Oksori FM Synth Yamaha OPL4
MM_OKSORI_MIX_MASTER     = MM_OKSORI_BASE+6   # Oksori DSP Mixer - Master Volume
MM_OKSORI_MIX_WAVE       = MM_OKSORI_BASE+7   # Oksori DSP Mixer - Wave Volume
MM_OKSORI_MIX_FM         = MM_OKSORI_BASE+8   # Oksori DSP Mixer - FM Volume
MM_OKSORI_MIX_LINE       = MM_OKSORI_BASE+9   # Oksori DSP Mixer - Line Volume
MM_OKSORI_MIX_CD         = MM_OKSORI_BASE+10  # Oksori DSP Mixer - CD Volume
MM_OKSORI_MIX_MIC        = MM_OKSORI_BASE+11  # Oksori DSP Mixer - MIC Volume
MM_OKSORI_MIX_ECHO       = MM_OKSORI_BASE+12  # Oksori DSP Mixer - Echo Volume
MM_OKSORI_MIX_AUX1       = MM_OKSORI_BASE+13  # Oksori AD1848 - AUX1 Volume
MM_OKSORI_MIX_LINE1      = MM_OKSORI_BASE+14  # Oksori AD1848 - LINE1 Volume
MM_OKSORI_EXT_MIC1       = MM_OKSORI_BASE+15  # Oksori External - One Mic Connect
MM_OKSORI_EXT_MIC2       = MM_OKSORI_BASE+16  # Oksori External - Two Mic Connect
MM_OKSORI_MIDIOUT        = MM_OKSORI_BASE+17  # Oksori MIDI Out Device
MM_OKSORI_MIDIIN         = MM_OKSORI_BASE+18  # Oksori MIDI In Device
MM_OKSORI_MPEG_CDVISION  = MM_OKSORI_BASE+19  # Oksori CD-Vision MPEG Decoder

# Product IDs for     MM_OSITECH    -  Ositech Communications Inc.
MM_OSITECH_TRUMPCARD = 1       # Trumpcard

# Product IDs for     MM_OSPREY    -  Osprey Technologies, Inc.
MM_OSPREY_1000WAVEIN  = 1
MM_OSPREY_1000WAVEOUT = 2

# Product IDs for     MM_QUARTERDECK    -  Quarterdeck Corporation
MM_QUARTERDECK_LHWAVEIN  = 0      # Quarterdeck L0x0 Codec Wave In
MM_QUARTERDECK_LHWAVEOUT = 1      # Quarterdeck L0x0 Codec Wave Out

# Product IDs for     MM_RHETOREX    -  Rhetorex Inc
MM_RHETOREX_WAVEIN  = 1
MM_RHETOREX_WAVEOUT = 2

# Product IDs for     MM_ROCKWELL    -  Rockwell International
MM_VOICEMIXER = 1
ROCKWELL_WA1_WAVEIN     = 100
ROCKWELL_WA1_WAVEOUT    = 101
ROCKWELL_WA1_SYNTH      = 102
ROCKWELL_WA1_MIXER      = 103
ROCKWELL_WA1_MPU401_IN  = 104
ROCKWELL_WA1_MPU401_OUT = 105
ROCKWELL_WA2_WAVEIN     = 200
ROCKWELL_WA2_WAVEOUT    = 201
ROCKWELL_WA2_SYNTH      = 202
ROCKWELL_WA2_MIXER      = 203
ROCKWELL_WA2_MPU401_IN  = 204
ROCKWELL_WA2_MPU401_OUT = 205

# Product IDs for     MM_S3    -  S3
MM_S3_WAVEOUT = 0x01
MM_S3_WAVEIN  = 0x02
MM_S3_MIDIOUT = 0x03
MM_S3_MIDIIN  = 0x04
MM_S3_FMSYNTH = 0x05
MM_S3_MIXER   = 0x06
MM_S3_AUX     = 0x07

# Product IDs for     MM_SEERSYS    -  Seer Systems, Inc.
MM_SEERSYS_SEERSYNTH = 1
MM_SEERSYS_SEERWAVE  = 2
MM_SEERSYS_SEERMIX   = 3

# Product IDs for     MM_SOFTSOUND    -  Softsound, Ltd.
MM_SOFTSOUND_CODEC = 1

# Product IDs for     MM_SOUNDESIGNS    -  SounDesignS M.C.S. Ltd.
MM_SOUNDESIGNS_WAVEIN  = 1
MM_SOUNDESIGNS_WAVEOUT = 2

# Product IDs for     MM_SPECTRUM_SIGNAL_PROCESSING    -  Spectrum Signal Processing, Inc.
MM_SSP_SNDFESWAVEIN   = 1   # Sound Festa Wave In Device
MM_SSP_SNDFESWAVEOUT  = 2   # Sound Festa Wave Out Device
MM_SSP_SNDFESMIDIIN   = 3   # Sound Festa MIDI In Device
MM_SSP_SNDFESMIDIOUT  = 4   # Sound Festa MIDI Out Device
MM_SSP_SNDFESSYNTH    = 5   # Sound Festa MIDI Synth Device
MM_SSP_SNDFESMIX      = 6   # Sound Festa Mixer Device
MM_SSP_SNDFESAUX      = 7   # Sound Festa Auxilliary Device

# Product IDs for     MM_TDK    -  TDK Corporation
MM_TDK_MW_MIDI_SYNTH   = 1
MM_TDK_MW_MIDI_IN      = 2
MM_TDK_MW_MIDI_OUT     = 3
MM_TDK_MW_WAVE_IN      = 4
MM_TDK_MW_WAVE_OUT     = 5
MM_TDK_MW_AUX          = 6
MM_TDK_MW_MIXER        = 10
MM_TDK_MW_AUX_MASTER   = 100
MM_TDK_MW_AUX_BASS     = 101
MM_TDK_MW_AUX_TREBLE   = 102
MM_TDK_MW_AUX_MIDI_VOL = 103
MM_TDK_MW_AUX_WAVE_VOL = 104
MM_TDK_MW_AUX_WAVE_RVB = 105
MM_TDK_MW_AUX_WAVE_CHR = 106
MM_TDK_MW_AUX_VOL      = 107
MM_TDK_MW_AUX_RVB      = 108
MM_TDK_MW_AUX_CHR      = 109

# Product IDs for     MM_TURTLE_BEACH    -  Turtle Beach, Inc.
MM_TBS_TROPEZ_WAVEIN  = 37
MM_TBS_TROPEZ_WAVEOUT = 38
MM_TBS_TROPEZ_AUX1    = 39
MM_TBS_TROPEZ_AUX2    = 40
MM_TBS_TROPEZ_LINE    = 41

# Product IDs for     MM_VIENNASYS    -  Vienna Systems
MM_VIENNASYS_TSP_WAVE_DRIVER = 1

# Product IDs for     MM_VIONA    -  Viona Development GmbH
MM_VIONA_QVINPCI_MIXER    = 1       # Q-Motion PCI II/Bravado 2000
MM_VIONA_QVINPCI_WAVEIN   = 2
MM_VIONAQVINPCI_WAVEOUT   = 3
MM_VIONA_BUSTER_MIXER     = 4       # Buster
MM_VIONA_CINEMASTER_MIXER = 5       # Cinemaster
MM_VIONA_CONCERTO_MIXER   = 6       # Concerto

# Product IDs for     MM_WILDCAT    -  Wildcat Canyon Software
MM_WILDCAT_AUTOSCOREMIDIIN = 1       # Autoscore

# Product IDs for     MM_WILLOWPOND    -  Willow Pond Corporation
MM_WILLOWPOND_FMSYNTH_STEREO  = 20
MM_WILLOWPOND_SNDPORT_WAVEIN  = 100
MM_WILLOWPOND_SNDPORT_WAVEOUT = 101
MM_WILLOWPOND_SNDPORT_MIXER   = 102
MM_WILLOWPOND_SNDPORT_AUX     = 103
MM_WILLOWPOND_PH_WAVEIN       = 104
MM_WILLOWPOND_PH_WAVEOUT      = 105
MM_WILLOWPOND_PH_MIXER        = 106
MM_WILLOWPOND_PH_AUX          = 107

# Product IDs for     MM_WORKBIT    -  Workbit Corporation
MM_WORKBIT_MIXER    = 1      # Harmony Mixer
MM_WORKBIT_WAVEOUT  = 2      # Harmony Mixer
MM_WORKBIT_WAVEIN   = 3      # Harmony Mixer
MM_WORKBIT_MIDIIN   = 4      # Harmony Mixer
MM_WORKBIT_MIDIOUT  = 5      # Harmony Mixer
MM_WORKBIT_FMSYNTH  = 6      # Harmony Mixer
MM_WORKBIT_AUX      = 7      # Harmony Mixer
MM_WORKBIT_JOYSTICK = 8

# Product IDs for     MM_FRAUNHOFER_IIS -  Fraunhofer
MM_FHGIIS_MPEGLAYER3 = 10



# End of constants from mmreg.h ===============================================

# Constants from wingdi.h =====================================================

# Binary raster ops
R2_BLACK       = 1  #  0
R2_NOTMERGEPEN = 2  # DPon
R2_MASKNOTPEN  = 3  # DPna
R2_NOTCOPYPEN  = 4  # PN
R2_MASKPENNOT  = 5  # PDna
R2_NOT         = 6  # Dn
R2_XORPEN      = 7  # DPx
R2_NOTMASKPEN  = 8  # DPan
R2_MASKPEN     = 9  # DPa
R2_NOTXORPEN   = 10 # DPxn
R2_NOP         = 11 # D
R2_MERGENOTPEN = 12 # DPno
R2_COPYPEN     = 13 # P
R2_MERGEPENNOT = 14 # PDno
R2_MERGEPEN    = 15 # DPo
R2_WHITE       = 16 #  1
R2_LAST        = 16

# Ternary raster operations
SRCCOPY     = 0x000CC0020 # (DWORD) dest = source
SRCPAINT    = 0x000EE0086 # (DWORD) dest = source or dest
SRCAND      = 0x0008800C6 # (DWORD) dest = source AND dest
SRCINVERT   = 0x000660046 # (DWORD) dest = source XOR dest

NOTSRCCOPY  = 0x000330008 # (DWORD) dest = (NOT source)
NOTSRCERASE = 0x0001100A6 # (DWORD) dest = (NOT src) AND (NOT dest)
MERGECOPY   = 0x000C000CA # (DWORD) dest = (source AND pattern)
MERGEPAINT  = 0x000BB0226 # (DWORD) dest = (NOT source) or dest
PATCOPY     = 0x000F00021 # (DWORD) dest = pattern
PATPAINT    = 0x000FB0A09 # (DWORD) dest = DPSnoo
PATINVERT   = 0x0005A0049 # (DWORD) dest = pattern XOR dest
DSTINVERT   = 0x000550009 # (DWORD) dest = (NOT dest)
BLACKNESS   = 0x000000042 # (DWORD) dest = BLACK
WHITENESS   = 0x000FF0062 # (DWORD) dest = WHITE

GDI_ERROR   = 0x0FFFFFFFF
HGDI_ERROR  = 0x0FFFFFFFF

# Region Flags
ERRORAPI      = 0
NULLREGION    = 1
SIMPLEREGION  = 2
COMPLEXREGION = 3

# CombineRgn() Styles
RGN_AND  = 1
RGN_OR   = 2
RGN_XOR  = 3
RGN_DIFF = 4
RGN_COPY = 5
RGN_MIN  = RGN_AND
RGN_MAX  = RGN_COPY

# StretchBlt() Modes
BLACKONWHITE      = 1
WHITEONBLACK      = 2
COLORONCOLOR      = 3
HALFTONE          = 4
MAXSTRETCHBLTMODE = 4

# New StretchBlt() Modes
STRETCH_ANDSCANS    = BLACKONWHITE
STRETCH_ORSCANS     = WHITEONBLACK
STRETCH_DELETESCANS = COLORONCOLOR
STRETCH_HALFTONE    = HALFTONE

# PolyFill() Modes
ALTERNATE     = 1
WINDING       = 2
POLYFILL_LAST = 2

# Text Alignment Options
TA_NOUPDATECP = 0
TA_UPDATECP   = 1

TA_LEFT       = 0
TA_RIGHT      = 2
TA_CENTER     = 6

TA_TOP        = 0
TA_BOTTOM     = 8
TA_BASELINE   = 24
TA_RTLREADING = 256
TA_MASK       = TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING

VTA_BASELINE  = TA_BASELINE
VTA_LEFT      = TA_BOTTOM
VTA_RIGHT     = TA_TOP
VTA_CENTER    = TA_CENTER
VTA_BOTTOM    = TA_RIGHT
VTA_TOP       = TA_LEFT

ETO_GRAYED         = 1
ETO_OPAQUE         = 2
ETO_CLIPPED        = 4
ETO_GLYPH_INDEX    = 0x00010
ETO_RTLREADING     = 0x00080
ETO_NUMERICSLOCAL  = 0x00400
ETO_NUMERICSLATIN  = 0x00800
ETO_IGNORELANGUAGE = 0x01000
ETO_PDY            = 0x02000

ASPECT_FILTERING = 0x00001

# Bounds Accumulation APIs
#
DCB_RESET      = 0x00001
DCB_ACCUMULATE = 0x00002
DCB_DIRTY      = DCB_ACCUMULATE
DCB_SET        = DCB_RESET or DCB_ACCUMULATE
DCB_ENABLE     = 0x00004
DCB_DISABLE    = 0x00008

# Metafile Functions
META_SETBKCOLOR            = 0x0201
META_SETBKMODE             = 0x0102
META_SETMAPMODE            = 0x0103
META_SETROP2               = 0x0104
META_SETRELABS             = 0x0105
META_SETPOLYFILLMODE       = 0x0106
META_SETSTRETCHBLTMODE     = 0x0107
META_SETTEXTCHAREXTRA      = 0x0108
META_SETTEXTCOLOR          = 0x0209
META_SETTEXTJUSTIFICATION  = 0x020A
META_SETWINDOWORG          = 0x020B
META_SETWINDOWEXT          = 0x020C
META_SETVIEWPORTORG        = 0x020D
META_SETVIEWPORTEXT        = 0x020E
META_OFFSETWINDOWORG       = 0x020F
META_SCALEWINDOWEXT        = 0x0410
META_OFFSETVIEWPORTORG     = 0x0211
META_SCALEVIEWPORTEXT      = 0x0412
META_LINETO                = 0x0213
META_MOVETO                = 0x0214
META_EXCLUDECLIPRECT       = 0x0415
META_INTERSECTCLIPRECT     = 0x0416
META_ARC                   = 0x0817
META_ELLIPSE               = 0x0418
META_FLOODFILL             = 0x0419
META_PIE                   = 0x081A
META_RECTANGLE             = 0x041B
META_ROUNDRECT             = 0x061C
META_PATBLT                = 0x061D
META_SAVEDC                = 0x001E
META_SETPIXEL              = 0x041F
META_OFFSETCLIPRGN         = 0x0220
META_TEXTOUT               = 0x0521
META_BITBLT                = 0x0922
META_STRETCHBLT            = 0x0B23
META_POLYGON               = 0x0324
META_POLYLINE              = 0x0325
META_ESCAPE                = 0x0626
META_RESTOREDC             = 0x0127
META_FILLREGION            = 0x0228
META_FRAMEREGION           = 0x0429
META_INVERTREGION          = 0x012A
META_PAINTREGION           = 0x012B
META_SELECTCLIPREGION      = 0x012C
META_SELECTOBJECT          = 0x012D
META_SETTEXTALIGN          = 0x012E
META_CHORD                 = 0x0830
META_SETMAPPERFLAGS        = 0x0231
META_EXTTEXTOUT            = 0x0A32
META_SETDIBTODEV           = 0x0D33
META_SELECTPALETTE         = 0x0234
META_REALIZEPALETTE        = 0x0035
META_ANIMATEPALETTE        = 0x0436
META_SETPALENTRIES         = 0x0037
META_POLYPOLYGON           = 0x0538
META_RESIZEPALETTE         = 0x0139
META_DIBBITBLT             = 0x0940
META_DIBSTRETCHBLT         = 0x0B41
META_DIBCREATEPATTERNBRUSH = 0x0142
META_STRETCHDIB            = 0x0F43
META_EXTFLOODFILL          = 0x0548
META_DELETEOBJECT          = 0x01F0
META_CREATEPALETTE         = 0x00F7
META_CREATEPATTERNBRUSH    = 0x01F9
META_CREATEPENINDIRECT     = 0x02FA
META_CREATEFONTINDIRECT    = 0x02FB
META_CREATEBRUSHINDIRECT   = 0x02FC
META_CREATEREGION          = 0x06FF


# GDI Escapes
NEWFRAME            = 1
AbortDocC           = 2
NEXTBAND            = 3
SETCOLORTABLE       = 4
GETCOLORTABLE       = 5
FLUSHOUTPUT         = 6
DRAFTMODE           = 7
QUERYESCSUPPORT     = 8
SETABORTPROC        = 9
StartDocC           = 10
EndDocC             = 11
GETPHYSPAGESIZE     = 12
GETPRINTINGOFFSET   = 13
GETSCALINGFACTOR    = 14
MFCOMMENT           = 15
GETPENWIDTH         = 16
SETCOPYCOUNT        = 17
SELECTPAPERSOURCE   = 18
DEVICEDATA          = 19
PASSTHROUGH         = 19
GETTECHNOLGY        = 20
GETTECHNOLOGY       = 20
SETLINECAP          = 21
SETLINEJOIN         = 22
SetMiterLimitC      = 23
BANDINFO            = 24
DRAWPATTERNRECT     = 25
GETVECTORPENSIZE    = 26
GETVECTORBRUSHSIZE  = 27
ENABLEDUPLEX        = 28
GETSETPAPERBINS     = 29
GETSETPRINTORIENT   = 30
ENUMPAPERBINS       = 31
SETDIBSCALING       = 32
EPSPRINTING         = 33
ENUMPAPERMETRICS    = 34
GETSETPAPERMETRICS  = 35
POSTSCRIPT_DATA     = 37
POSTSCRIPT_IGNORE   = 38
MOUSETRAILS         = 39
GETDEVICEUNITS      = 42

GETEXTENDEDTEXTMETRICS = 256
GETEXTENTTABLE         = 257
GETPAIRKERNTABLE       = 258
GETTRACKKERNTABLE      = 259
ExtTextOutC            = 512
GETFACENAME            = 513
DOWNLOADFACE           = 514
ENABLERELATIVEWIDTHS   = 768
ENABLEPAIRKERNING      = 769
SETKERNTRACK           = 770
SETALLJUSTVALUES       = 771
SETCHARSET             = 772

STRETCHBLTC            = 2048  # STRETCHBLT constant conflicted with STRETCHBLT function
GETSETSCREENPARAMS     = 3072
QUERYDIBSUPPORT        = 3073
BEGIN_PATH             = 4096
CLIP_TO_PATH           = 4097
END_PATH               = 4098
EXT_DEVICE_CAPS        = 4099
RESTORE_CTM            = 4100
SAVE_CTM               = 4101
SET_ARC_DIRECTION      = 4102
SET_BACKGROUND_COLOR   = 4103
SET_POLY_MODE          = 4104
SET_SCREEN_ANGLE       = 4105
SET_SPREAD             = 4106
TRANSFORM_CTM          = 4107
SET_CLIP_BOX           = 4108
SET_BOUNDS             = 4109
SET_MIRROR_MODE        = 4110
OPENCHANNEL            = 4110
DOWNLOADHEADER         = 4111
CLOSECHANNEL           = 4112
POSTSCRIPT_PASSTHROUGH = 4115
ENCAPSULATED_POSTSCRIPT= 4116

POSTSCRIPT_IDENTIFY    = 4117   # new escape for NT5 pscript driver
POSTSCRIPT_INJECTION   = 4118   # new escape for NT5 pscript driver

# Parameters for POSTSCRIPT_IDENTIFY escape
#
PSIDENT_GDICENTRIC = 0
PSIDENT_PSCENTRIC  = 1

# Constants for PSINJECTDATA.Flags field
#
PSINJECT_APPEND  = 0
PSINJECT_REPLACE = 1

#
# Constants for PSINJECTDATA.InjectionPoint field
#

#
# The data injected at these points coexist with the output emitted
# by the driver for the same points.
#
PSINJECT_BEGINSTREAM     = 0
PSINJECT_PSADOBE         = 1
PSINJECT_COMMENTS        = 2
PSINJECT_BEGINDEFAULTS   = 3
PSINJECT_ENDDEFAULTS     = 4
PSINJECT_BEGINPROLOG     = 5
PSINJECT_ENDPROLOG       = 6
PSINJECT_BEGINSETUP      = 7
PSINJECT_ENDSETUP        = 8
PSINJECT_ENDPAGECOMMENTS = 9
PSINJECT_BEGINPAGESETUP  = 10
PSINJECT_ENDPAGESETUP    = 11
PSINJECT_SHOWPAGE        = 12
PSINJECT_PAGETRAILER     = 13
PSINJECT_TRAILER         = 14
PSINJECT_EOF             = 15
PSINJECT_ENDSTREAM       = 16
PSINJECT_VMSAVE          = 17
PSINJECT_VMRESTORE       = 18

# The data injected at these points are appended to the output
# emitted by the driver for the same points. It will go into
# the document trailer section. They must be in the form of:
#    + resource-type resource-names

PSINJECT_DOCNEEDEDRES   = 19
PSINJECT_DOCSUPPLIEDRES = 20

# The data injected at these points replaces the output emitted
# by the driver for the same points.

PSINJECT_PAGES       = 21
PSINJECT_PAGEORDER   = 22
PSINJECT_ORIENTATION = 23
PSINJECT_BOUNDINGBOX = 24
PSINJECT_PAGENUMBER  = 25
PSINJECT_PAGEBBOX    = 26

PSINJECT_MAX         = 27


# Flag returned from QUERYDIBSUPPORT
QDI_SETDIBITS   = 1
QDI_GETDIBITS   = 2
QDI_DIBTOSCREEN = 4
QDI_STRETCHDIB  = 8

# Spooler Error Codes
SP_NOTREPORTED = 0x04000
SP_ERROR       = -1
SP_APPABORT    = -2
SP_USERABORT   = -3
SP_OUTOFDISK   = -4
SP_OUTOFMEMORY = -5

PR_JOBSTATUS = 0x00000

# Object Definitions for EnumObjects()
OBJ_PEN         = 1
OBJ_BRUSH       = 2
OBJ_DC          = 3
OBJ_METADC      = 4
OBJ_PAL         = 5
OBJ_FONT        = 6
OBJ_BITMAP      = 7
OBJ_REGION      = 8
OBJ_METAFILE    = 9
OBJ_MEMDC       = 10
OBJ_EXTPEN      = 11
OBJ_ENHMETADC   = 12
OBJ_ENHMETAFILE = 13

# xform stuff
MWT_IDENTITY      = 1
MWT_LEFTMULTIPLY  = 2
MWT_RIGHTMULTIPLY = 3

MWT_MIN = MWT_IDENTITY
MWT_MAX = MWT_RIGHTMULTIPLY

# Image Color Matching color definitions

CS_ENABLE           = 0x000000001
CS_DISABLE          = 0x000000002
CS_DELETE_TRANSFORM = 0x000000003

# Logcolorspace signature

LCS_SIGNATURE = 0x050534f43     # "PSOC"

# Logcolorspace lcsType values

LCS_sRGB                = 0x073524742  # "sRGB"
LCS_WINDOWS_COLOR_SPACE = 0x057696e20  # "Win "  # Windows default color space

LCS_CALIBRATED_RGB      = 0x000000000
LCS_DEVICE_RGB          = 0x000000001
LCS_DEVICE_CMYK         = 0x000000002

LCS_GM_BUSINESS         = 0x000000001
LCS_GM_GRAPHICS         = 0x000000002
LCS_GM_IMAGES           = 0x000000004
LCS_GM_ABS_COLORIMETRIC = 0x000000008

# ICM Defines for results from CheckColorInGamut()
CM_OUT_OF_GAMUT = 255
CM_IN_GAMUT     = 0

# UpdateICMRegKey Constants
ICM_ADDPROFILE          = 1
ICM_DELETEPROFILE       = 2
ICM_QUERYPROFILE        = 3
ICM_SETDEFAULTPROFILE   = 4
ICM_REGISTERICMATCHER   = 5
ICM_UNREGISTERICMATCHER = 6
ICM_QUERYMATCH          = 7

# Values for bV5CSType
PROFILE_LINKED   = 0x04c494e4b  # "LINK"
PROFILE_EMBEDDED = 0x04d424544  # "MBED"

# constants for the biCompression field
BI_RGB       = 0
BI_RLE8      = 1
BI_RLE4      = 2
BI_BITFIELDS = 3

TCI_SRCCHARSET  = 1
TCI_SRCCODEPAGE = 2
TCI_SRCFONTSIG  = 3

TMPF_FIXED_PITCH = 0x001
TMPF_VECTOR      = 0x002
TMPF_DEVICE      = 0x008
TMPF_TRUETYPE    = 0x004

# ntmFlags field flags
NTM_REGULAR        = 0x000000040
NTM_BOLD           = 0x000000020
NTM_ITALIC         = 0x000000001

NTM_NONNEGATIVE_AC = 0x000010000
NTM_OPENTYPE       = 0x000020000
NTM_MULTIPLEMASTER = 0x000040000
NTM_MM_INSTANCE    = 0x000080000
NTM_TYPE1          = 0x000100000
NTM_DSIG           = 0x000200000

LF_FULLFACESIZE = 64

OUT_DEFAULT_PRECIS        = 0
OUT_STRING_PRECIS         = 1
OUT_CHARACTER_PRECIS      = 2
OUT_STROKE_PRECIS         = 3
OUT_TT_PRECIS             = 4
OUT_DEVICE_PRECIS         = 5
OUT_RASTER_PRECIS         = 6
OUT_TT_ONLY_PRECIS        = 7
OUT_OUTLINE_PRECIS        = 8
OUT_SCREEN_OUTLINE_PRECIS = 9

CLIP_DEFAULT_PRECIS   = 0
CLIP_CHARACTER_PRECIS = 1
CLIP_STROKE_PRECIS    = 2
CLIP_MASK             = 0x0F
CLIP_LH_ANGLES        = 16
CLIP_TT_ALWAYS        = 32
CLIP_EMBEDDED         = 128

DEFAULT_QUALITY        = 0
DRAFT_QUALITY          = 1
PROOF_QUALITY          = 2
NONANTIALIASED_QUALITY = 3
ANTIALIASED_QUALITY    = 4

DEFAULT_PITCH   = 0
FIXED_PITCH     = 1
VARIABLE_PITCH  = 2
MONO_FONT       = 8

ANSI_CHARSET        = 0
DEFAULT_CHARSET     = 1
SYMBOL_CHARSET      = 2
SHIFTJIS_CHARSET    = 128
HANGEUL_CHARSET     = 129
HANGUL_CHARSET      = 129
CHINESEBIG5_CHARSET = 136
OEM_CHARSET         = 255

JOHAB_CHARSET       = 130
HEBREW_CHARSET      = 177
ARABIC_CHARSET      = 178
GREEK_CHARSET       = 161
TURKISH_CHARSET     = 162
THAI_CHARSET        = 222
EASTEUROPE_CHARSET  = 238
RUSSIAN_CHARSET     = 204

MAC_CHARSET         = 77
BALTIC_CHARSET      = 186

FS_LATIN1      = 0x000000001
FS_LATIN2      = 0x000000002
FS_CYRILLIC    = 0x000000004
FS_GREEK       = 0x000000008
FS_TURKISH     = 0x000000010
FS_HEBREW      = 0x000000020
FS_ARABIC      = 0x000000040
FS_BALTIC      = 0x000000080
FS_THAI        = 0x000010000
FS_JISJAPAN    = 0x000020000
FS_CHINESESIMP = 0x000040000
FS_WANSUNG     = 0x000080000
FS_CHINESETRAD = 0x000100000
FS_JOHAB       = 0x000200000
FS_SYMBOL      = 0x080000000

# Font Families
#
FF_DONTCARE = 0    # Don#t care or don#t know.
FF_ROMAN    = 16   # Variable stroke width, serifed.

# Times Roman, Century Schoolbook, etc.
FF_SWISS    = 32   # Variable stroke width, sans-serifed.

# Helvetica, Swiss, etc.
FF_MODERN   = 48   # Constant stroke width, serifed or sans-serifed.

# Pica, Elite, Courier, etc.
FF_SCRIPT     = 64 # Cursive, etc.
FF_DECORATIVE = 80 # Old English, etc.

# Font Weights
FW_DONTCARE   = 0
FW_THIN       = 100
FW_EXTRALIGHT = 200
FW_LIGHT      = 300
FW_NORMAL     = 400
FW_MEDIUM     = 500
FW_SEMIBOLD   = 600
FW_BOLD       = 700
FW_EXTRABOLD  = 800
FW_HEAVY      = 900

FW_ULTRALIGHT = FW_EXTRALIGHT
FW_REGULAR    = FW_NORMAL
FW_DEMIBOLD   = FW_SEMIBOLD
FW_ULTRABOLD  = FW_EXTRABOLD
FW_BLACK      = FW_HEAVY

PANOSE_COUNT               = 10
PAN_FAMILYTYPE_INDEX       = 0
PAN_SERIFSTYLE_INDEX       = 1
PAN_WEIGHT_INDEX           = 2
PAN_PROPORTION_INDEX       = 3
PAN_CONTRAST_INDEX         = 4
PAN_STROKEVARIATION_INDEX  = 5
PAN_ARMSTYLE_INDEX         = 6
PAN_LETTERFORM_INDEX       = 7
PAN_MIDLINE_INDEX          = 8
PAN_XHEIGHT_INDEX          = 9

PAN_CULTURE_LATIN          = 0

PAN_ANY                     = 0  # Any
PAN_NO_FIT                  = 1  # No Fit

PAN_FAMILY_TEXT_DISPLAY     = 2  # Text and Display
PAN_FAMILY_SCRIPT           = 3  # Script
PAN_FAMILY_DECORATIVE       = 4  # Decorative
PAN_FAMILY_PICTORIAL        = 5  # Pictorial

PAN_SERIF_COVE              = 2  # Cove
PAN_SERIF_OBTUSE_COVE       = 3  # Obtuse Cove
PAN_SERIF_SQUARE_COVE       = 4  # Square Cove
PAN_SERIF_OBTUSE_SQUARE_COVE= 5  # Obtuse Square Cove
PAN_SERIF_SQUARE            = 6  # Square
PAN_SERIF_THIN              = 7  # Thin
PAN_SERIF_BONE              = 8  # Bone
PAN_SERIF_EXAGGERATED       = 9  # Exaggerated
PAN_SERIF_TRIANGLE          = 10 # Triangle
PAN_SERIF_NORMAL_SANS       = 11 # Normal Sans
PAN_SERIF_OBTUSE_SANS       = 12 # Obtuse Sans
PAN_SERIF_PERP_SANS         = 13 # Prep Sans
PAN_SERIF_FLARED            = 14 # Flared
PAN_SERIF_ROUNDED           = 15 # Rounded

PAN_WEIGHT_VERY_LIGHT       = 2  # Very Light
PAN_WEIGHT_LIGHT            = 3  # Light
PAN_WEIGHT_THIN             = 4  # Thin
PAN_WEIGHT_BOOK             = 5  # Book
PAN_WEIGHT_MEDIUM           = 6  # Medium
PAN_WEIGHT_DEMI             = 7  # Demi
PAN_WEIGHT_BOLD             = 8  # Bold
PAN_WEIGHT_HEAVY            = 9  # Heavy
PAN_WEIGHT_BLACK            = 10 # Black
PAN_WEIGHT_NORD             = 11 # Nord

PAN_PROP_OLD_STYLE          = 2  # Old Style
PAN_PROP_MODERN             = 3  # Modern
PAN_PROP_EVEN_WIDTH         = 4  # Even Width
PAN_PROP_EXPANDED           = 5  # Expanded
PAN_PROP_CONDENSED          = 6  # Condensed
PAN_PROP_VERY_EXPANDED      = 7  # Very Expanded
PAN_PROP_VERY_CONDENSED     = 8  # Very Condensed
PAN_PROP_MONOSPACED         = 9  # Monospaced

PAN_CONTRAST_NONE           = 2  # None
PAN_CONTRAST_VERY_LOW       = 3  # Very Low
PAN_CONTRAST_LOW            = 4  # Low
PAN_CONTRAST_MEDIUM_LOW     = 5  # Medium Low
PAN_CONTRAST_MEDIUM         = 6  # Medium
PAN_CONTRAST_MEDIUM_HIGH    = 7  # Mediim High
PAN_CONTRAST_HIGH           = 8  # High
PAN_CONTRAST_VERY_HIGH      = 9  # Very High

PAN_STROKE_GRADUAL_DIAG     = 2  # Gradual/Diagonal
PAN_STROKE_GRADUAL_TRAN     = 3  # Gradual/Transitional
PAN_STROKE_GRADUAL_VERT     = 4  # Gradual/Vertical
PAN_STROKE_GRADUAL_HORZ     = 5  # Gradual/Horizontal
PAN_STROKE_RAPID_VERT       = 6  # Rapid/Vertical
PAN_STROKE_RAPID_HORZ       = 7  # Rapid/Horizontal
PAN_STROKE_INSTANT_VERT     = 8  # Instant/Vertical

PAN_STRAIGHT_ARMS_HORZ          = 2  # Straight Arms/Horizontal
PAN_STRAIGHT_ARMS_WEDGE         = 3  # Straight Arms/Wedge
PAN_STRAIGHT_ARMS_VERT          = 4  # Straight Arms/Vertical
PAN_STRAIGHT_ARMS_SINGLE_SERIF  = 5  # Straight Arms/Single-Serif
PAN_STRAIGHT_ARMS_DOUBLE_SERIF  = 6  # Straight Arms/Double-Serif
PAN_BENT_ARMS_HORZ              = 7  # Non-Straight Arms/Horizontal
PAN_BENT_ARMS_WEDGE             = 8  # Non-Straight Arms/Wedge
PAN_BENT_ARMS_VERT              = 9  # Non-Straight Arms/Vertical
PAN_BENT_ARMS_SINGLE_SERIF      = 10 # Non-Straight Arms/Single-Serif
PAN_BENT_ARMS_DOUBLE_SERIF      = 11 # Non-Straight Arms/Double-Serif

PAN_LETT_NORMAL_CONTACT     = 2  # Normal/Contact
PAN_LETT_NORMAL_WEIGHTED    = 3  # Normal/Weighted
PAN_LETT_NORMAL_BOXED       = 4  # Normal/Boxed
PAN_LETT_NORMAL_FLATTENED   = 5  # Normal/Flattened
PAN_LETT_NORMAL_ROUNDED     = 6  # Normal/Rounded
PAN_LETT_NORMAL_OFF_CENTER  = 7  # Normal/Off Center
PAN_LETT_NORMAL_SQUARE      = 8  # Normal/Square
PAN_LETT_OBLIQUE_CONTACT    = 9  # Oblique/Contact
PAN_LETT_OBLIQUE_WEIGHTED   = 10 # Oblique/Weighted
PAN_LETT_OBLIQUE_BOXED      = 11 # Oblique/Boxed
PAN_LETT_OBLIQUE_FLATTENED  = 12 # Oblique/Flattened
PAN_LETT_OBLIQUE_ROUNDED    = 13 # Oblique/Rounded
PAN_LETT_OBLIQUE_OFF_CENTER = 14 # Oblique/Off Center
PAN_LETT_OBLIQUE_SQUARE     = 15 # Oblique/Square

PAN_MIDLINE_STANDARD_TRIMMED = 2  # Standard/Trimmed
PAN_MIDLINE_STANDARD_POINTED = 3  # Standard/Pointed
PAN_MIDLINE_STANDARD_SERIFED = 4  # Standard/Serifed
PAN_MIDLINE_HIGH_TRIMMED     = 5  # High/Trimmed
PAN_MIDLINE_HIGH_POINTED     = 6  # High/Pointed
PAN_MIDLINE_HIGH_SERIFED     = 7  # High/Serifed
PAN_MIDLINE_CONSTANT_TRIMMED = 8  # Constant/Trimmed
PAN_MIDLINE_CONSTANT_POINTED = 9  # Constant/Pointed
PAN_MIDLINE_CONSTANT_SERIFED = 10 # Constant/Serifed
PAN_MIDLINE_LOW_TRIMMED      = 11 # Low/Trimmed
PAN_MIDLINE_LOW_POINTED      = 12 # Low/Pointed
PAN_MIDLINE_LOW_SERIFED      = 13 # Low/Serifed

PAN_XHEIGHT_CONSTANT_SMALL  = 2  # Constant/Small
PAN_XHEIGHT_CONSTANT_STD    = 3  # Constant/Standard
PAN_XHEIGHT_CONSTANT_LARGE  = 4  # Constant/Large
PAN_XHEIGHT_DUCKING_SMALL   = 5  # Ducking/Small
PAN_XHEIGHT_DUCKING_STD     = 6  # Ducking/Standard
PAN_XHEIGHT_DUCKING_LARGE   = 7  # Ducking/Large

ELF_VENDOR_SIZE   = 4

ELF_VERSION       = 0
ELF_CULTURE_LATIN = 0

# EnumFonts Masks
RASTER_FONTTYPE   = 0x01
DEVICE_FONTTYPE   = 0x02
TRUETYPE_FONTTYPE = 0x04

# palette entry flags
PC_RESERVED   = 0x001  # palette index used for animation
PC_EXPLICIT   = 0x002  # palette index is explicit to device
PC_NOCOLLAPSE = 0x004  # do not match color to system palette

# Background Modes
TRANSPARENT = 1
OPAQUE      = 2
BKMODE_LAST = 2

# Graphics Modes
GM_COMPATIBLE = 1
GM_ADVANCED   = 2
GM_LAST       = 2

# PolyDraw and GetPath point types
PT_CLOSEFIGURE = 0x001
PT_LINETO      = 0x002
PT_BEZIERTO    = 0x004
PT_MOVETO      = 0x006

# Mapping Modes
MM_TEXT         = 1
MM_LOMETRIC     = 2
MM_HIMETRIC     = 3
MM_LOENGLISH    = 4
MM_HIENGLISH    = 5
MM_TWIPS        = 6
MM_ISOTROPIC    = 7
MM_ANISOTROPIC  = 8

# Min and Max Mapping Mode values
MM_MIN            = MM_TEXT
MM_MAX            = MM_ANISOTROPIC
MM_MAX_FIXEDSCALE = MM_TWIPS

# Coordinate Modes
ABSOLUTE = 1
RELATIVE = 2

# Stock Logical Objects
WHITE_BRUSH         = 0
LTGRAY_BRUSH        = 1
GRAY_BRUSH          = 2
DKGRAY_BRUSH        = 3
BLACK_BRUSH         = 4
NULL_BRUSH          = 5
HOLLOW_BRUSH        = NULL_BRUSH
WHITE_PEN           = 6
BLACK_PEN           = 7
NULL_PEN            = 8
OEM_FIXED_FONT      = 10
ANSI_FIXED_FONT     = 11
ANSI_VAR_FONT       = 12
SYSTEM_FONT         = 13
DEVICE_DEFAULT_FONT = 14
DEFAULT_PALETTE     = 15
SYSTEM_FIXED_FONT   = 16

DEFAULT_GUI_FONT    = 17

DC_BRUSH            = 18
DC_PEN              = 19

STOCK_LAST          = 19  # depending on Windows version, may be 16, 17 or 19

CLR_INVALID         = 0x0FFFFFFFF  # some Microsoft docs claim this is 0x0FFFF, but it#s not

# Brush Styles
BS_SOLID            = 0
BS_NULL             = 1
BS_HOLLOW           = BS_NULL
BS_HATCHED          = 2
BS_PATTERN          = 3
BS_INDEXED          = 4
BS_DIBPATTERN       = 5
BS_DIBPATTERNPT     = 6
BS_PATTERN8X8       = 7
BS_DIBPATTERN8X8    = 8
BS_MONOPATTERN      = 9

# Hatch Styles
HS_HORIZONTAL       = 0     # -----
HS_VERTICAL         = 1     # |||||
HS_FDIAGONAL        = 2     # \\\\\
HS_BDIAGONAL        = 3     # -----
HS_CROSS            = 4     # +++++
HS_DIAGCROSS        = 5     # xxxxx
HS_FDIAGONAL1       = 6
HS_BDIAGONAL1       = 7
HS_SOLID            = 8
HS_DENSE1           = 9
HS_DENSE2           = 10
HS_DENSE3           = 11
HS_DENSE4           = 12
HS_DENSE5           = 13
HS_DENSE6           = 14
HS_DENSE7           = 15
HS_DENSE8           = 16
HS_NOSHADE          = 17
HS_HALFTONE         = 18
HS_SOLIDCLR         = 19
HS_DITHEREDCLR      = 20
HS_SOLIDTEXTCLR     = 21
HS_DITHEREDTEXTCLR  = 22
HS_SOLIDBKCLR       = 23
HS_DITHEREDBKCLR    = 24
HS_API_MAX          = 25

# Pen Styles
PS_SOLID            = 0
PS_DASH             = 1     # -------
PS_DOT              = 2     # .......
PS_DASHDOT          = 3     # _._._._
PS_DASHDOTDOT       = 4     # _.._.._
PS_NULL             = 5
PS_INSIDEFRAME      = 6
PS_USERSTYLE        = 7
PS_ALTERNATE        = 8
PS_STYLE_MASK       = 0x00000000F

PS_ENDCAP_ROUND     = 0x000000000
PS_ENDCAP_SQUARE    = 0x000000100
PS_ENDCAP_FLAT      = 0x000000200
PS_ENDCAP_MASK      = 0x000000F00

PS_JOIN_ROUND       = 0x000000000
PS_JOIN_BEVEL       = 0x000001000
PS_JOIN_MITER       = 0x000002000
PS_JOIN_MASK        = 0x00000F000

PS_COSMETIC         = 0x000000000
PS_GEOMETRIC        = 0x000010000
PS_TYPE_MASK        = 0x0000F0000

AD_COUNTERCLOCKWISE = 1
AD_CLOCKWISE        = 2

# Device Parameters for GetDeviceCaps()
DRIVERVERSION  = 0    # Device driver version
TECHNOLOGY     = 2    # Device classification
HORZSIZE       = 4    # Horizontal size in millimeters
VERTSIZE       = 6    # Vertical size in millimeters
HORZRES        = 8    # Horizontal width in pixels
VERTRES        = 10   # Vertical width in pixels
BITSPIXEL      = 12   # Number of bits per pixel
PLANES         = 14   # Number of planes
NUMBRUSHES     = 16   # Number of brushes the device has
NUMPENS        = 18   # Number of pens the device has
NUMMARKERS     = 20   # Number of markers the device has
NUMFONTS       = 22   # Number of fonts the device has
NUMCOLORS      = 24   # Number of colors the device supports
PDEVICESIZE    = 26   # Size required for device descriptor
CURVECAPS      = 28   # Curve capabilities
LINECAPS       = 30   # Line capabilities
POLYGONALCAPS  = 32   # Polygonal capabilities
TEXTCAPS       = 34   # Text capabilities
CLIPCAPS       = 36   # Clipping capabilities
RASTERCAPS     = 38   # Bitblt capabilities
ASPECTX        = 40   # Length of the X leg
ASPECTY        = 42   # Length of the Y leg
ASPECTXY       = 44   # Length of the hypotenuse

SHADEBLENDCAPS = 45   # Shading and blending caps

LOGPIXELSX     = 88   # Logical pixels/inch in X
LOGPIXELSY     = 90   # Logical pixels/inch in Y

SIZEPALETTE    = 104  # Number of entries in physical palette
NUMRESERVED    = 106  # Number of reserved entries in palette
COLORRES       = 108  # Actual color resolution

# Printing related DeviceCaps. These replace the appropriate Escapes
PHYSICALWIDTH   = 110  # Physical Width in device units
PHYSICALHEIGHT  = 111  # Physical Height in device units
PHYSICALOFFSETX = 112  # Physical Printable Area x margin
PHYSICALOFFSETY = 113  # Physical Printable Area y margin
SCALINGFACTORX  = 114  # Scaling factor x
SCALINGFACTORY  = 115  # Scaling factor y

# Display driver specific
VREFRESH       = 116  # Current vertical refresh rate of the
                       # display device (for displays only) in Hz
DESKTOPVERTRES = 117  # Horizontal width of entire desktop in pixels
DESKTOPHORZRES = 118  # Vertical height of entire desktop in pixels
BLTALIGNMENT   = 119  # Preferred blt alignment

# Device Capability Masks:

# Device Technologies
DT_PLOTTER    = 0     # Vector plotter
DT_RASDISPLAY = 1     # Raster display
DT_RASPRINTER = 2     # Raster printer
DT_RASCAMERA  = 3     # Raster camera
DT_CHARSTREAM = 4     # Character-stream, PLP
DT_METAFILE   = 5     # Metafile, VDM
DT_DISPFILE   = 6     # Display-file

# Curve Capabilities
CC_NONE       = 0     # Curves not supported
CC_CIRCLES    = 1     # Can do circles
CC_PIE        = 2     # Can do pie wedges
CC_CHORD      = 4     # Can do chord arcs
CC_ELLIPSES   = 8     # Can do ellipese
CC_WIDE       = 16    # Can do wide lines
CC_STYLED     = 32    # Can do styled lines
CC_WIDESTYLED = 64    # Can do wide styled lines
CC_INTERIORS  = 128   # Can do interiors
CC_ROUNDRECT  = 256   #

# Line Capabilities
LC_NONE       = 0     # Lines not supported
LC_POLYLINE   = 2     # Can do polylines
LC_MARKER     = 4     # Can do markers
LC_POLYMARKER = 8     # Can do polymarkers
LC_WIDE       = 16    # Can do wide lines
LC_STYLED     = 32    # Can do styled lines
LC_WIDESTYLED = 64    # Can do wide styled lines
LC_INTERIORS  = 128   # Can do interiors

# Polygonal Capabilities
PC_NONE         = 0     # Polygonals not supported
PC_POLYGON      = 1     # Can do polygons
PC_RECTANGLE    = 2     # Can do rectangles
PC_WINDPOLYGON  = 4     # Can do winding polygons
PC_TRAPEZOID    = 4     # Can do trapezoids
PC_SCANLINE     = 8     # Can do scanlines
PC_WIDE         = 16    # Can do wide borders
PC_STYLED       = 32    # Can do styled borders
PC_WIDESTYLED   = 64    # Can do wide styled borders
PC_INTERIORS    = 128   # Can do interiors
PC_POLYPOLYGON  = 256   # Can do polypolygons
PC_PATHS        = 512   # Can do paths

# Clipping Capabilities
CP_NONE         = 0     # No clipping of output
CP_RECTANGLE    = 1     # Output clipped to rects
CP_REGION       = 2     # obsolete

# Text Capabilities
TC_OP_CHARACTER = 0x000000001  # Can do OutputPrecision   CHARACTER
TC_OP_STROKE    = 0x000000002  # Can do OutputPrecision   STROKE
TC_CP_STROKE    = 0x000000004  # Can do ClipPrecision     STROKE
TC_CR_90        = 0x000000008  # Can do CharRotAbility    90
TC_CR_ANY       = 0x000000010  # Can do CharRotAbility    ANY
TC_SF_X_YINDEP  = 0x000000020  # Can do ScaleFreedom      X_YINDEPENDENT
TC_SA_DOUBLE    = 0x000000040  # Can do ScaleAbility      DOUBLE
TC_SA_INTEGER   = 0x000000080  # Can do ScaleAbility      INTEGER
TC_SA_CONTIN    = 0x000000100  # Can do ScaleAbility      CONTINUOUS
TC_EA_DOUBLE    = 0x000000200  # Can do EmboldenAbility   DOUBLE
TC_IA_ABLE      = 0x000000400  # Can do ItalisizeAbility  ABLE
TC_UA_ABLE      = 0x000000800  # Can do UnderlineAbility  ABLE
TC_SO_ABLE      = 0x000001000  # Can do StrikeOutAbility  ABLE
TC_RA_ABLE      = 0x000002000  # Can do RasterFontAble    ABLE
TC_VA_ABLE      = 0x000004000  # Can do VectorFontAble    ABLE
TC_RESERVED     = 0x000008000
TC_SCROLLBLT    = 0x000010000  # Don#t do text scroll with blt

# Raster Capabilities
RC_NONE         = 0
RC_BITBLT       = 1       # Can do standard BLT.
RC_BANDING      = 2       # Device requires banding support
RC_SCALING      = 4       # Device requires scaling support
RC_BITMAP64     = 8       # Device can support >64K bitmap
RC_GDI20_OUTPUT = 0x000000010  # has 2.0 output calls
RC_GDI20_STATE  = 0x000000020
RC_SAVEBITMAP   = 0x000000040
RC_DI_BITMAP    = 0x000000080  # supports DIB to memory
RC_PALETTE      = 0x000000100  # supports a palette
RC_DIBTODEV     = 0x000000200  # supports DIBitsToDevice
RC_BIGFONT      = 0x000000400  # supports >64K fonts
RC_STRETCHBLT   = 0x000000800  # supports StretchBlt
RC_FLOODFILL    = 0x000001000  # supports FloodFill
RC_STRETCHDIB   = 0x000002000  # supports StretchDIBits
RC_OP_DX_OUTPUT = 0x000004000
RC_DEVBITS      = 0x000008000

# Shading and blending caps
SB_NONE          = 0x000000000
SB_CONST_ALPHA   = 0x000000001
SB_PIXEL_ALPHA   = 0x000000002
SB_PREMULT_ALPHA = 0x000000004

SB_GRAD_RECT     = 0x000000010
SB_GRAD_TRI      = 0x000000020

# DIB color table identifiers
DIB_RGB_COLORS      = 0 # color table in RGBs
DIB_PAL_COLORS      = 1 # color table in palette indices
DIB_PAL_INDICES     = 2 # No color table indices into surf palette
DIB_PAL_PHYSINDICES = 2 # No color table indices into surf palette
DIB_PAL_LOGINDICES  = 4 # No color table indices into DC palette

# constants for Get/SetSystemPaletteUse()
SYSPAL_ERROR       = 0
SYSPAL_STATIC      = 1
SYSPAL_NOSTATIC    = 2
SYSPAL_NOSTATIC256 = 3

# constants for CreateDIBitmap
CBM_CREATEDIB      = 2     # create DIB bitmap
CBM_INIT           = 4     # initialize bitmap

# ExtFloodFill style flags
FLOODFILLBORDER    = 0
FLOODFILLSURFACE   = 1

# size of a device name string
CCHDEVICENAME = 32

# size of a form name string
CCHFORMNAME = 32

# current version of specification
# depending on Windows version, may be 0x00401, 0x00400, or 0x00320
DM_SPECVERSION = 0x00401

# field selection bits
DM_ORIENTATION      = 0x000000001
DM_PAPERSIZE        = 0x000000002
DM_PAPERLENGTH      = 0x000000004
DM_PAPERWIDTH       = 0x000000008
DM_SCALE            = 0x000000010
DM_POSITION         = 0x000000020
DM_COPIES           = 0x000000100
DM_DEFAULTSOURCE    = 0x000000200
DM_PRINTQUALITY     = 0x000000400
DM_COLOR            = 0x000000800
DM_DUPLEX           = 0x000001000
DM_YRESOLUTION      = 0x000002000
DM_TTOPTION         = 0x000004000
DM_COLLATE          = 0x000008000
DM_FORMNAME         = 0x000010000
DM_LOGPIXELS        = 0x000020000
DM_BITSPERPEL       = 0x000040000
DM_PELSWIDTH        = 0x000080000
DM_PELSHEIGHT       = 0x000100000
DM_DISPLAYFLAGS     = 0x000200000
DM_DISPLAYFREQUENCY = 0x000400000
DM_ICMMETHOD        = 0x000800000  # *** MSDN claims a different value here!
DM_ICMINTENT        = 0x001000000  # *** MSDN claims a different value here!
DM_MEDIATYPE        = 0x002000000  # *** MSDN claims a different value here!
DM_DITHERTYPE       = 0x004000000  # *** MSDN claims a different value here!
DM_PANNINGWIDTH     = 0x008000000
DM_PANNINGHEIGHT    = 0x010000000

# orientation selections
DMORIENT_PORTRAIT  = 1
DMORIENT_LANDSCAPE = 2

# paper selections
DMPAPER_LETTER              = 1
DMPAPER_FIRST               = DMPAPER_LETTER  # Letter 8 1/2 x 11 in
DMPAPER_LETTERSMALL         = 2    # Letter Small 8 1/2 x 11 in
DMPAPER_TABLOID             = 3    # Tabloid 11 x 17 in
DMPAPER_LEDGER              = 4    # Ledger 17 x 11 in
DMPAPER_LEGAL               = 5    # Legal 8 1/2 x 14 in
DMPAPER_STATEMENT           = 6    # Statement 5 1/2 x 8 1/2 in
DMPAPER_EXECUTIVE           = 7    # Executive 7 1/4 x 10 1/2 in
DMPAPER_A3                  = 8    # A3 297 x 420 mm
DMPAPER_A4                  = 9    # A4 210 x 297 mm
DMPAPER_A4SMALL             = 10   # A4 Small 210 x 297 mm
DMPAPER_A5                  = 11   # A5 148 x 210 mm
DMPAPER_B4                  = 12   # B4 250 x 354
DMPAPER_B5                  = 13   # B5 182 x 257 mm
DMPAPER_FOLIO               = 14   # Folio 8 1/2 x 13 in
DMPAPER_QUARTO              = 15   # Quarto 215 x 275 mm
DMPAPER_10X14               = 16   # 10x014 in
DMPAPER_11X17               = 17   # 11x17 in
DMPAPER_NOTE                = 18   # Note 8 1/2 x 11 in
DMPAPER_ENV_9               = 19   # Envelope #9 3 7/8 x 8 7/8
DMPAPER_ENV_10              = 20   # Envelope #10 4 1/8 x 9 1/2
DMPAPER_ENV_11              = 21   # Envelope #11 4 1/2 x 10 3/8
DMPAPER_ENV_12              = 22   # Envelope #12 4 \276 x 11
DMPAPER_ENV_14              = 23   # Envelope #14 5 x 11 1/2
DMPAPER_CSHEET              = 24   # C size sheet
DMPAPER_DSHEET              = 25   # D size sheet
DMPAPER_ESHEET              = 26   # E size sheet
DMPAPER_ENV_DL              = 27   # Envelope DL 110 x 220mm
DMPAPER_ENV_C5              = 28   # Envelope C5 162 x 229 mm
DMPAPER_ENV_C3              = 29   # Envelope C3  324 x 458 mm
DMPAPER_ENV_C4              = 30   # Envelope C4  229 x 324 mm
DMPAPER_ENV_C6              = 31   # Envelope C6  114 x 162 mm
DMPAPER_ENV_C65             = 32   # Envelope C65 114 x 229 mm
DMPAPER_ENV_B4              = 33   # Envelope B4  250 x 353 mm
DMPAPER_ENV_B5              = 34   # Envelope B5  176 x 250 mm
DMPAPER_ENV_B6              = 35   # Envelope B6  176 x 125 mm
DMPAPER_ENV_ITALY           = 36   # Envelope 110 x 230 mm
DMPAPER_ENV_MONARCH         = 37   # Envelope Monarch 3.875 x 7.5 in
DMPAPER_ENV_PERSONAL        = 38   # 6 3/4 Envelope 3 5/8 x 6 1/2 in
DMPAPER_FANFOLD_US          = 39   # US Std Fanfold 14 7/8 x 11 in
DMPAPER_FANFOLD_STD_GERMAN  = 40   # German Std Fanfold 8 1/2 x 12 in
DMPAPER_FANFOLD_LGL_GERMAN  = 41   # German Legal Fanfold 8 1/2 x 13 in

DMPAPER_ISO_B4              = 42   # B4 (ISO) 250 x 353 mm
DMPAPER_JAPANESE_POSTCARD   = 43   # Japanese Postcard 100 x 148 mm
DMPAPER_9X11                = 44   # 9 x 11 in
DMPAPER_10X11               = 45   # 10 x 11 in
DMPAPER_15X11               = 46   # 15 x 11 in
DMPAPER_ENV_INVITE          = 47   # Envelope Invite 220 x 220 mm
DMPAPER_RESERVED_48         = 48   # RESERVED--DO NOT USE
DMPAPER_RESERVED_49         = 49   # RESERVED--DO NOT USE
DMPAPER_LETTER_EXTRA        = 50   # Letter Extra 9 \275 x 12 in
DMPAPER_LEGAL_EXTRA         = 51   # Legal Extra 9 \275 x 15 in
DMPAPER_TABLOID_EXTRA       = 52   # Tabloid Extra 11.69 x 18 in
DMPAPER_A4_EXTRA            = 53   # A4 Extra 9.27 x 12.69 in
DMPAPER_LETTER_TRANSVERSE   = 54   # Letter Transverse 8 \275 x 11 in
DMPAPER_A4_TRANSVERSE       = 55   # A4 Transverse 210 x 297 mm
DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 # Letter Extra Transverse 9\275 x 12 in
DMPAPER_A_PLUS              = 57   # SuperA/SuperA/A4 227 x 356 mm
DMPAPER_B_PLUS              = 58   # SuperB/SuperB/A3 305 x 487 mm
DMPAPER_LETTER_PLUS         = 59   # Letter Plus 8.5 x 12.69 in
DMPAPER_A4_PLUS             = 60   # A4 Plus 210 x 330 mm
DMPAPER_A5_TRANSVERSE       = 61   # A5 Transverse 148 x 210 mm
DMPAPER_B5_TRANSVERSE       = 62   # B5 (JIS) Transverse 182 x 257 mm
DMPAPER_A3_EXTRA            = 63   # A3 Extra 322 x 445 mm
DMPAPER_A5_EXTRA            = 64   # A5 Extra 174 x 235 mm
DMPAPER_B5_EXTRA            = 65   # B5 (ISO) Extra 201 x 276 mm
DMPAPER_A2                  = 66   # A2 420 x 594 mm
DMPAPER_A3_TRANSVERSE       = 67   # A3 Transverse 297 x 420 mm
DMPAPER_A3_EXTRA_TRANSVERSE = 68   # A3 Extra Transverse 322 x 445 mm

DMPAPER_DBL_JAPANESE_POSTCARD = 69 # Japanese Double Postcard 200 x 148 mm
DMPAPER_A6                  = 70  # A6 105 x 148 mm
DMPAPER_JENV_KAKU2          = 71  # Japanese Envelope Kaku #2
DMPAPER_JENV_KAKU3          = 72  # Japanese Envelope Kaku #3
DMPAPER_JENV_CHOU3          = 73  # Japanese Envelope Chou #3
DMPAPER_JENV_CHOU4          = 74  # Japanese Envelope Chou #4
DMPAPER_LETTER_ROTATED      = 75  # Letter Rotated 11 x 8 1/2 11 in
DMPAPER_A3_ROTATED          = 76  # A3 Rotated 420 x 297 mm
DMPAPER_A4_ROTATED          = 77  # A4 Rotated 297 x 210 mm
DMPAPER_A5_ROTATED          = 78  # A5 Rotated 210 x 148 mm
DMPAPER_B4_JIS_ROTATED      = 79  # B4 (JIS) Rotated 364 x 257 mm
DMPAPER_B5_JIS_ROTATED      = 80  # B5 (JIS) Rotated 257 x 182 mm
DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 # Japanese Postcard Rotated 148 x 100 mm
DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 # Double Japanese Postcard Rotated 148 x 200 mm
DMPAPER_A6_ROTATED          = 83  # A6 Rotated 148 x 105 mm
DMPAPER_JENV_KAKU2_ROTATED  = 84  # Japanese Envelope Kaku #2 Rotated
DMPAPER_JENV_KAKU3_ROTATED  = 85  # Japanese Envelope Kaku #3 Rotated
DMPAPER_JENV_CHOU3_ROTATED  = 86  # Japanese Envelope Chou #3 Rotated
DMPAPER_JENV_CHOU4_ROTATED  = 87  # Japanese Envelope Chou #4 Rotated
DMPAPER_B6_JIS              = 88  # B6 (JIS) 128 x 182 mm
DMPAPER_B6_JIS_ROTATED      = 89  # B6 (JIS) Rotated 182 x 128 mm
DMPAPER_12X11               = 90  # 12 x 11 in
DMPAPER_JENV_YOU4           = 91  # Japanese Envelope You #4
DMPAPER_JENV_YOU4_ROTATED   = 92  # Japanese Envelope You #4 Rotated
DMPAPER_P16K                = 93  # PRC 16K 146 x 215 mm
DMPAPER_P32K                = 94  # PRC 32K 97 x 151 mm
DMPAPER_P32KBIG             = 95  # PRC 32K(Big) 97 x 151 mm
DMPAPER_PENV_1              = 96  # PRC Envelope #1 102 x 165 mm
DMPAPER_PENV_2              = 97  # PRC Envelope #2 102 x 176 mm
DMPAPER_PENV_3              = 98  # PRC Envelope #3 125 x 176 mm
DMPAPER_PENV_4              = 99  # PRC Envelope #4 110 x 208 mm
DMPAPER_PENV_5              = 100 # PRC Envelope #5 110 x 220 mm
DMPAPER_PENV_6              = 101 # PRC Envelope #6 120 x 230 mm
DMPAPER_PENV_7              = 102 # PRC Envelope #7 160 x 230 mm
DMPAPER_PENV_8              = 103 # PRC Envelope #8 120 x 309 mm
DMPAPER_PENV_9              = 104 # PRC Envelope #9 229 x 324 mm
DMPAPER_PENV_10             = 105 # PRC Envelope #10 324 x 458 mm
DMPAPER_P16K_ROTATED        = 106 # PRC 16K Rotated
DMPAPER_P32K_ROTATED        = 107 # PRC 32K Rotated
DMPAPER_P32KBIG_ROTATED     = 108 # PRC 32K(Big) Rotated
DMPAPER_PENV_1_ROTATED      = 109 # PRC Envelope #1 Rotated 165 x 102 mm
DMPAPER_PENV_2_ROTATED      = 110 # PRC Envelope #2 Rotated 176 x 102 mm
DMPAPER_PENV_3_ROTATED      = 111 # PRC Envelope #3 Rotated 176 x 125 mm
DMPAPER_PENV_4_ROTATED      = 112 # PRC Envelope #4 Rotated 208 x 110 mm
DMPAPER_PENV_5_ROTATED      = 113 # PRC Envelope #5 Rotated 220 x 110 mm
DMPAPER_PENV_6_ROTATED      = 114 # PRC Envelope #6 Rotated 230 x 120 mm
DMPAPER_PENV_7_ROTATED      = 115 # PRC Envelope #7 Rotated 230 x 160 mm
DMPAPER_PENV_8_ROTATED      = 116 # PRC Envelope #8 Rotated 309 x 120 mm
DMPAPER_PENV_9_ROTATED      = 117 # PRC Envelope #9 Rotated 324 x 229 mm
DMPAPER_PENV_10_ROTATED     = 118 # PRC Envelope #10 Rotated 458 x 324 mm

# Depending on the Windows version, DMPAPER_LAST may be equal to any of
# DMPAPER_FANFOLD_LGL_GERMAN, DMPAPER_A3_EXTRA_TRANSVERSE, or
# DMPAPER_PENV_10_ROTATED (so far)... we use the most recent, here.
#
DMPAPER_LAST = DMPAPER_PENV_10_ROTATED

DMPAPER_USER                = 256

# bin selections
DMBIN_UPPER         = 1
DMBIN_FIRST         = DMBIN_UPPER

DMBIN_ONLYONE       = 1
DMBIN_LOWER         = 2
DMBIN_MIDDLE        = 3
DMBIN_MANUAL        = 4
DMBIN_ENVELOPE      = 5
DMBIN_ENVMANUAL     = 6
DMBIN_AUTO          = 7
DMBIN_TRACTOR       = 8
DMBIN_SMALLFMT      = 9
DMBIN_LARGEFMT      = 10
DMBIN_LARGECAPACITY = 11
DMBIN_CASSETTE      = 14
DMBIN_FORMSOURCE    = 15
DMBIN_LAST          = DMBIN_FORMSOURCE

DMBIN_USER          = 256  # device specific bins start here

# print qualities
DMRES_DRAFT  = -1
DMRES_LOW    = -2
DMRES_MEDIUM = -3
DMRES_HIGH   = -4

# color enable/disable for color printers
DMCOLOR_MONOCHROME = 1
DMCOLOR_COLOR      = 2

# duplex enable
DMDUP_SIMPLEX    = 1
DMDUP_VERTICAL   = 2
DMDUP_HORIZONTAL = 3

# TrueType options
DMTT_BITMAP           = 1  # print TT fonts as graphics
DMTT_DOWNLOAD         = 2  # download TT fonts as soft fonts
DMTT_SUBDEV           = 3  # substitute device fonts for TT fonts
DMTT_DOWNLOAD_OUTLINE = 4  # download TT fonts as outline soft fonts

# Collation selections
DMCOLLATE_FALSE = 0
DMCOLLATE_TRUE  = 1

# DEVMODE dmDisplayFlags flags

DM_GRAYSCALE            = 1
DM_INTERLACED           = 2

DMDISPLAYFLAGS_TEXTMODE = 4

# ICM methods
DMICMMETHOD_NONE   = 1     # ICM disabled
DMICMMETHOD_SYSTEM = 2     # ICM handled by system
DMICMMETHOD_DRIVER = 3     # ICM handled by driver
DMICMMETHOD_DEVICE = 4     # ICM handled by device
DMICMMETHOD_USER   = 256   # Device-specific methods start here

# ICM Intents
DMICM_SATURATE         = 1   # Maximize color saturation
DMICM_CONTRAST         = 2   # Maximize color contrast
DMICM_COLORIMETRIC     = 3   # Use specific color metric
DMICM_ABS_COLORIMETRIC = 4   # Use specific color metric
DMICM_USER             = 256 # Device-specific intents start here

# Media types
DMMEDIA_STANDARD     = 1   # Standard paper
DMMEDIA_GLOSSY       = 2   # Glossy paper
DMMEDIA_TRANSPARENCY = 3   # Transparency
DMMEDIA_USER         = 256 # Device-specific media start here

# Dither types
DMDITHER_NONE           = 1   # No dithering
DMDITHER_COARSE         = 2   # Dither with a coarse brush
DMDITHER_FINE           = 3   # Dither with a fine brush
DMDITHER_LINEART        = 4   # LineArt dithering
DMDITHER_ERRORDIFFUSION = 5   # LineArt dithering
DMDITHER_RESERVED6      = 6   # LineArt dithering
DMDITHER_RESERVED7      = 7   # LineArt dithering
DMDITHER_RESERVED8      = 8   # LineArt dithering
DMDITHER_RESERVED9      = 9   # LineArt dithering
DMDITHER_GRAYSCALE      = 10  # Device does grayscaling
DMDITHER_USER           = 256 # Device-specific dithers start here

DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x000000001
DISPLAY_DEVICE_MULTI_DRIVER        = 0x000000002
DISPLAY_DEVICE_PRIMARY_DEVICE      = 0x000000004
DISPLAY_DEVICE_MIRRORING_DRIVER    = 0x000000008
DISPLAY_DEVICE_VGA_COMPATIBLE      = 0x000000010

# GetRegionData/ExtCreateRegion

RDH_RECTANGLES = 1

# GetGlyphOutline constants
GGO_METRICS      = 0
GGO_BITMAP       = 1
GGO_NATIVE       = 2
GGO_BEZIER       = 3
GGO_GRAY2_BITMAP = 4
GGO_GRAY4_BITMAP = 5
GGO_GRAY8_BITMAP = 6
GGO_GLYPH_INDEX  = 0x00080

TT_POLYGON_TYPE = 24

TT_PRIM_LINE    = 1
TT_PRIM_QSPLINE = 2
TT_PRIM_CSPLINE = 3

GCP_DBCS            = 0x000000001
GCP_REORDER         = 0x000000002
GCP_USEKERNING      = 0x000000008
GCP_GLYPHSHAPE      = 0x000000010
GCP_LIGATE          = 0x000000020
GCP_DIACRITIC       = 0x000000100
GCP_KASHIDA         = 0x000000400
GCP_ERROR           = 0x000008000
FLI_MASK            = 0x00000103B

GCP_JUSTIFY         = 0x000010000
GCP_NODIACRITICS    = 0x000020000
FLI_GLYPHS          = 0x000040000
GCP_CLASSIN         = 0x000080000
GCP_MAXEXTENT       = 0x000100000
GCP_JUSTIFYIN       = 0x000200000
GCP_DISPLAYZWG      = 0x000400000
GCP_SYMSWAPOFF      = 0x000800000
GCP_NUMERICOVERRIDE = 0x001000000
GCP_NEUTRALOVERRIDE = 0x002000000
GCP_NUMERICSLATIN   = 0x004000000
GCP_NUMERICSLOCAL   = 0x008000000

GCPCLASS_LATIN                  = 1
GCPCLASS_HEBREW                 = 2
GCPCLASS_ARABIC                 = 2
GCPCLASS_NEUTRAL                = 3
GCPCLASS_LOCALNUMBER            = 4
GCPCLASS_LATINNUMBER            = 5
GCPCLASS_LATINNUMERICTERMINATOR = 6
GCPCLASS_LATINNUMERICSEPARATOR  = 7
GCPCLASS_NUMERICSEPARATOR       = 8
GCPCLASS_PREBOUNDRTL            = 0x080
GCPCLASS_PREBOUNDLTR            = 0x040
GCPCLASS_POSTBOUNDLTR           = 0x020
GCPCLASS_POSTBOUNDRTL           = 0x010

GCPGLYPH_LINKBEFORE = 0x000008000
GCPGLYPH_LINKAFTER  = 0x000004000

# bits defined in wFlags of RASTERIZER_STATUS
TT_AVAILABLE    = 0x00001
TT_ENABLED      = 0x00002

# pixel types
PFD_TYPE_RGBA       = 0
PFD_TYPE_COLORINDEX = 1

# layer types
PFD_MAIN_PLANE     = 0
PFD_OVERLAY_PLANE  = 1
PFD_UNDERLAY_PLANE = -1

# PIXELFORMATDESCRIPTOR flags
PFD_DOUBLEBUFFER          = 0x000000001
PFD_STEREO                = 0x000000002
PFD_DRAW_TO_WINDOW        = 0x000000004
PFD_DRAW_TO_BITMAP        = 0x000000008
PFD_SUPPORT_GDI           = 0x000000010
PFD_SUPPORT_OPENGL        = 0x000000020
PFD_GENERIC_FORMAT        = 0x000000040
PFD_NEED_PALETTE          = 0x000000080
PFD_NEED_SYSTEM_PALETTE   = 0x000000100
PFD_SWAP_EXCHANGE         = 0x000000200
PFD_SWAP_COPY             = 0x000000400
PFD_SWAP_LAYER_BUFFERS    = 0x000000800
PFD_GENERIC_ACCELERATED   = 0x000001000
PFD_SUPPORT_DIRECTDRAW    = 0x000002000

# PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only
PFD_DEPTH_DONTCARE        = 0x020000000
PFD_DOUBLEBUFFER_DONTCARE = 0x040000000
PFD_STEREO_DONTCARE       = 0x080000000

# mode selections for the device mode function
DM_UPDATE      = 1
DM_COPY        = 2
DM_PROMPT      = 4
DM_MODIFY      = 8

DM_IN_BUFFER   = DM_MODIFY
DM_IN_PROMPT   = DM_PROMPT
DM_OUT_BUFFER  = DM_COPY
DM_OUT_DEFAULT = DM_UPDATE

# device capabilities indices
DC_FIELDS            = 1
DC_PAPERS            = 2
DC_PAPERSIZE         = 3
DC_MINEXTENT         = 4
DC_MAXEXTENT         = 5
DC_BINS              = 6
DC_DUPLEX            = 7
DC_SIZE              = 8
DC_EXTRA             = 9
DC_VERSION           = 10
DC_DRIVER            = 11
DC_BINNAMES          = 12
DC_ENUMRESOLUTIONS   = 13
DC_FILEDEPENDENCIES  = 14
DC_TRUETYPE          = 15
DC_PAPERNAMES        = 16
DC_ORIENTATION       = 17
DC_COPIES            = 18
DC_BINADJUST         = 19
DC_EMF_COMPLIANT     = 20
DC_DATATYPE_PRODUCED = 21
DC_COLLATE           = 22
DC_MANUFACTURER      = 23
DC_MODEL             = 24

DC_COLORDEVICE       = 23
DC_NUP               = 24
DC_PERSONALITY       = 25
DC_PRINTRATE         = 26
DC_PRINTRATEUNIT     = 27
PRINTRATEUNIT_PPM  = 1
PRINTRATEUNIT_CPS  = 2
PRINTRATEUNIT_LPM  = 3
PRINTRATEUNIT_IPM  = 4
DC_PRINTERMEM        = 28
DC_MEDIAREADY        = 29

# bit fields of the return value (DWORD) for DC_TRUETYPE
DCTT_BITMAP           = 0x000000001
DCTT_DOWNLOAD         = 0x000000002
DCTT_SUBDEV           = 0x000000004
DCTT_DOWNLOAD_OUTLINE = 0x000000008

# return values for DC_BINADJUST
DCBA_FACEUPNONE     = 0x00000
DCBA_FACEUPCENTER   = 0x00001
DCBA_FACEUPLEFT     = 0x00002
DCBA_FACEUPRIGHT    = 0x00003
DCBA_FACEDOWNNONE   = 0x00100
DCBA_FACEDOWNCENTER = 0x00101
DCBA_FACEDOWNLEFT   = 0x00102
DCBA_FACEDOWNRIGHT  = 0x00103

# flags for GetGlyphIndices
GGI_MARK_NONEXISTING_GLYPHS = 0x00001

STAMP_DESIGNVECTOR = 0x008007664   # (0x8000000 + #d# + (#v# << 8))
STAMP_AXESLIST     = 0x008006C61   # (0x8000000 + #a# + (#l# << 8))
MM_MAX_NUMAXES     = 16

FR_PRIVATE  = 0x010
FR_NOT_ENUM = 0x020

# The actual size of the DESIGNVECTOR and ENUMLOGFONTEXDV structures
# is determined by dvNumAxes,
# MM_MAX_NUMAXES only detemines the maximal size allowed

MM_MAX_AXES_NAMELEN = 16

# currently defined blend function

AC_SRC_OVER             = 0x000

# alpha format flags

AC_SRC_NO_PREMULT_ALPHA = 0x001
AC_SRC_NO_ALPHA         = 0x002
AC_DST_NO_PREMULT_ALPHA = 0x010
AC_DST_NO_ALPHA         = 0x020

# gradient drawing modes
#
GRADIENT_FILL_RECT_H   = 0x000000000
GRADIENT_FILL_RECT_V   = 0x000000001
GRADIENT_FILL_TRIANGLE = 0x000000002
GRADIENT_FILL_OP_FLAG  = 0x0000000ff


# Flags value for COLORADJUSTMENT
CA_NEGATIVE   = 0x00001
CA_LOG_FILTER = 0x00002

# IlluminantIndex values
ILLUMINANT_DEVICE_DEFAULT = 0
ILLUMINANT_A              = 1
ILLUMINANT_B              = 2
ILLUMINANT_C              = 3
ILLUMINANT_D50            = 4
ILLUMINANT_D55            = 5
ILLUMINANT_D65            = 6
ILLUMINANT_D75            = 7
ILLUMINANT_F2             = 8
ILLUMINANT_MAX_INDEX      = ILLUMINANT_F2

ILLUMINANT_TUNGSTEN       = ILLUMINANT_A
ILLUMINANT_DAYLIGHT       = ILLUMINANT_C
ILLUMINANT_FLUORESCENT    = ILLUMINANT_F2
ILLUMINANT_NTSC           = ILLUMINANT_C

# Min and max for RedGamma, GreenGamma, BlueGamma
RGB_GAMMA_MIN = 2500
RGB_GAMMA_MAX = 65000

# Min and max for ReferenceBlack and ReferenceWhite
REFERENCE_WHITE_MIN = 6000
REFERENCE_WHITE_MAX = 10000
REFERENCE_BLACK_MIN = 0
REFERENCE_BLACK_MAX = 4000

# Min and max for Contrast, Brightness, Colorfulness, RedGreenTint
COLOR_ADJ_MIN = -100
COLOR_ADJ_MAX = 100

DI_APPBANDING            = 0x000000001
DI_ROPS_READ_DESTINATION = 0x000000002

FONTMAPPER_MAX = 10

ICM_OFF            = 1
ICM_ON             = 2
ICM_QUERY          = 3
ICM_DONE_OUTSIDEDC = 4



ENHMETA_SIGNATURE = 0x0464D4520

# Stock object flag used in the object handle index in the enhanced
# metafile records.
# E.g. The object xHandle index (META_STOCK_OBJECT or BLACK_BRUSH)
# represents the stock object BLACK_BRUSH.

ENHMETA_STOCK_OBJECT = 0x080000000

# Enhanced metafile record types.

EMR_HEADER                  = 1
EMR_POLYBEZIER              = 2
EMR_POLYGON                 = 3
EMR_POLYLINE                = 4
EMR_POLYBEZIERTO            = 5
EMR_POLYLINETO              = 6
EMR_POLYPOLYLINE            = 7
EMR_POLYPOLYGON             = 8
EMR_SETWINDOWEXTEX          = 9
EMR_SETWINDOWORGEX          = 10
EMR_SETVIEWPORTEXTEX        = 11
EMR_SETVIEWPORTORGEX        = 12
EMR_SETBRUSHORGEX           = 13
EMR_EOF                     = 14
EMR_SETPIXELV               = 15
EMR_SETMAPPERFLAGS          = 16
EMR_SETMAPMODE              = 17
EMR_SETBKMODE               = 18
EMR_SETPOLYFILLMODE         = 19
EMR_SETROP2                 = 20
EMR_SETSTRETCHBLTMODE       = 21
EMR_SETTEXTALIGN            = 22
EMR_SETCOLORADJUSTMENT      = 23
EMR_SETTEXTCOLOR            = 24
EMR_SETBKCOLOR              = 25
EMR_OFFSETCLIPRGN           = 26
EMR_MOVETOEX                = 27
EMR_SETMETARGN              = 28
EMR_EXCLUDECLIPRECT         = 29
EMR_INTERSECTCLIPRECT       = 30
EMR_SCALEVIEWPORTEXTEX      = 31
EMR_SCALEWINDOWEXTEX        = 32
EMR_SAVEDC                  = 33
EMR_RESTOREDC               = 34
EMR_SETWORLDTRANSFORM       = 35
EMR_MODIFYWORLDTRANSFORM    = 36
EMR_SELECTOBJECT            = 37
EMR_CREATEPEN               = 38
EMR_CREATEBRUSHINDIRECT     = 39
EMR_DELETEOBJECT            = 40
EMR_ANGLEARC                = 41
EMR_ELLIPSE                 = 42
EMR_RECTANGLE               = 43
EMR_ROUNDRECT               = 44
EMR_ARC                     = 45
EMR_CHORD                   = 46
EMR_PIE                     = 47
EMR_SELECTPALETTE           = 48
EMR_CREATEPALETTE           = 49
EMR_SETPALETTEENTRIES       = 50
EMR_RESIZEPALETTE           = 51
EMR_REALIZEPALETTE          = 52
EMR_EXTFLOODFILL            = 53
EMR_LINETO                  = 54
EMR_ARCTO                   = 55
EMR_POLYDRAW                = 56
EMR_SETARCDIRECTION         = 57
EMR_SETMITERLIMIT           = 58
EMR_BEGINPATH               = 59
EMR_ENDPATH                 = 60
EMR_CLOSEFIGURE             = 61
EMR_FILLPATH                = 62
EMR_STROKEANDFILLPATH       = 63
EMR_STROKEPATH              = 64
EMR_FLATTENPATH             = 65
EMR_WIDENPATH               = 66
EMR_SELECTCLIPPATH          = 67
EMR_ABORTPATH               = 68

EMR_GDICOMMENT              = 70
EMR_FILLRGN                 = 71
EMR_FRAMERGN                = 72
EMR_INVERTRGN               = 73
EMR_PAINTRGN                = 74
EMR_EXTSELECTCLIPRGN        = 75
EMR_BITBLT                  = 76
EMR_STRETCHBLT              = 77
EMR_MASKBLT                 = 78
EMR_PLGBLT                  = 79
EMR_SETDIBITSTODEVICE       = 80
EMR_STRETCHDIBITS           = 81
EMR_EXTCREATEFONTINDIRECTW  = 82
EMR_EXTTEXTOUTA             = 83
EMR_EXTTEXTOUTW             = 84
EMR_POLYBEZIER16            = 85
EMR_POLYGON16               = 86
EMR_POLYLINE16              = 87
EMR_POLYBEZIERTO16          = 88
EMR_POLYLINETO16            = 89
EMR_POLYPOLYLINE16          = 90
EMR_POLYPOLYGON16           = 91
EMR_POLYDRAW16              = 92
EMR_CREATEMONOBRUSH         = 93
EMR_CREATEDIBPATTERNBRUSHPT = 94
EMR_EXTCREATEPEN            = 95
EMR_POLYTEXTOUTA            = 96
EMR_POLYTEXTOUTW            = 97

EMR_SETICMMODE              = 98
EMR_CREATECOLORSPACE        = 99
EMR_SETCOLORSPACE           = 100
EMR_DELETECOLORSPACE        = 101
EMR_GLSRECORD               = 102
EMR_GLSBOUNDEDRECORD        = 103
EMR_PIXELFORMAT             = 104

EMR_DRAWESCAPE              = 105
EMR_EXTESCAPE               = 106
EMR_STARTDOC                = 107
EMR_SMALLTEXTOUT            = 108
EMR_FORCEUFIMAPPING         = 109
EMR_NAMEDESCAPE             = 110
EMR_COLORCORRECTPALETTE     = 111
EMR_SETICMPROFILEA          = 112
EMR_SETICMPROFILEW          = 113
EMR_ALPHABLEND              = 114
EMR_ALPHADIBBLEND           = 115
EMR_TRANSPARENTBLT          = 116
EMR_TRANSPARENTDIB          = 117
EMR_GRADIENTFILL            = 118
EMR_SETLINKEDUFIS           = 119
EMR_SETTEXTJUSTIFICATION    = 120

EMR_MIN                     = 1
EMR_MAX                     = 120 # depending on Windows version, may be 97, 104, or 120 (so far)

SETICMPROFILE_EMBEDED = 0x000000001

GDICOMMENT_IDENTIFIER       = 0x043494447
GDICOMMENT_WINDOWS_METAFILE = 0x080000001
GDICOMMENT_BEGINGROUP       = 0x000000002
GDICOMMENT_ENDGROUP         = 0x000000003
GDICOMMENT_MULTIFORMATS     = 0x040000004
EPS_SIGNATURE               = 0x046535045



WGL_FONT_LINES    = 0
WGL_FONT_POLYGONS = 1

# LAYERPLANEDESCRIPTOR flags
LPD_DOUBLEBUFFER   = 0x000000001
LPD_STEREO         = 0x000000002
LPD_SUPPORT_GDI    = 0x000000010
LPD_SUPPORT_OPENGL = 0x000000020
LPD_SHARE_DEPTH    = 0x000000040
LPD_SHARE_STENCIL  = 0x000000080
LPD_SHARE_ACCUM    = 0x000000100
LPD_SWAP_EXCHANGE  = 0x000000200
LPD_SWAP_COPY      = 0x000000400
LPD_TRANSPARENT    = 0x000001000

LPD_TYPE_RGBA       = 0
LPD_TYPE_COLORINDEX = 1

# wglSwapLayerBuffers flags
WGL_SWAP_MAIN_PLANE = 0x000000001
WGL_SWAP_OVERLAY1   = 0x000000002
WGL_SWAP_OVERLAY2   = 0x000000004
WGL_SWAP_OVERLAY3   = 0x000000008
WGL_SWAP_OVERLAY4   = 0x000000010
WGL_SWAP_OVERLAY5   = 0x000000020
WGL_SWAP_OVERLAY6   = 0x000000040
WGL_SWAP_OVERLAY7   = 0x000000080
WGL_SWAP_OVERLAY8   = 0x000000100
WGL_SWAP_OVERLAY9   = 0x000000200
WGL_SWAP_OVERLAY10  = 0x000000400
WGL_SWAP_OVERLAY11  = 0x000000800
WGL_SWAP_OVERLAY12  = 0x000001000
WGL_SWAP_OVERLAY13  = 0x000002000
WGL_SWAP_OVERLAY14  = 0x000004000
WGL_SWAP_OVERLAY15  = 0x000008000
WGL_SWAP_UNDERLAY1  = 0x000010000
WGL_SWAP_UNDERLAY2  = 0x000020000
WGL_SWAP_UNDERLAY3  = 0x000040000
WGL_SWAP_UNDERLAY4  = 0x000080000
WGL_SWAP_UNDERLAY5  = 0x000100000
WGL_SWAP_UNDERLAY6  = 0x000200000
WGL_SWAP_UNDERLAY7  = 0x000400000
WGL_SWAP_UNDERLAY8  = 0x000800000
WGL_SWAP_UNDERLAY9  = 0x001000000
WGL_SWAP_UNDERLAY10 = 0x002000000
WGL_SWAP_UNDERLAY11 = 0x004000000
WGL_SWAP_UNDERLAY12 = 0x008000000
WGL_SWAP_UNDERLAY13 = 0x010000000
WGL_SWAP_UNDERLAY14 = 0x020000000
WGL_SWAP_UNDERLAY15 = 0x040000000

WGL_SWAPMULTIPLE_MAX = 16

# End of constants from wingdi.h ==============================================

# Constants from shellapi.h ===================================================

# AppBar stuff
ABM_NEW              = 0x000000000
ABM_REMOVE           = 0x000000001
ABM_QUERYPOS         = 0x000000002
ABM_SETPOS           = 0x000000003
ABM_GETSTATE         = 0x000000004
ABM_GETTASKBARPOS    = 0x000000005
ABM_ACTIVATE         = 0x000000006    # lParam == TRUE/FALSE means activate/deactivate
ABM_GETAUTOHIDEBAR   = 0x000000007
ABM_SETAUTOHIDEBAR   = 0x000000008    # this can fail at any time.  MUST check the result
                                      # lParam = TRUE/FALSE  Set/Unset
                                      # uEdge = what edge
ABM_WINDOWPOSCHANGED = 0x000000009
ABM_SETSTATE         = 0x00000000A

# these are put in the wparam of callback messages
ABN_STATECHANGE   = 0
ABN_POSCHANGED    = 1
ABN_FULLSCREENAPP = 2
ABN_WINDOWARRANGE = 3 # lParam == TRUE means hide

# flags for get state

ABS_AUTOHIDE    = 1
ABS_ALWAYSONTOP = 2

ABE_LEFT   = 0
ABE_TOP    = 1
ABE_RIGHT  = 2
ABE_BOTTOM = 3

# Shell File Operations

FO_MOVE   = 1
FO_COPY   = 2
FO_DELETE = 3
FO_RENAME = 4

FOF_MULTIDESTFILES        = 0x000001
FOF_CONFIRMMOUSE          = 0x000002
FOF_SILENT                = 0x000004  # don#t create progress/report
FOF_RENAMEONCOLLISION     = 0x000008
FOF_NOCONFIRMATION        = 0x000010  # Don#t prompt the user.
FOF_WANTMAPPINGHANDLE     = 0x000020  # Fill in SHFILEOPSTRUCT.hNameMappings
                                      # Must be freed using SHFreeNameMappings
FOF_ALLOWUNDO             = 0x000040
FOF_FILESONLY             = 0x000080  # on *.*, do only files
FOF_SIMPLEPROGRESS        = 0x000100  # means don#t show names of files
FOF_NOCONFIRMMKDIR        = 0x000200  # don#t confirm making any needed dirs
FOF_NOERRORUI             = 0x000400  # don#t put up error UI
FOF_NOCOPYSECURITYATTRIBS = 0x000800  # don#t copy NT file Security Attributes
FOF_NORECURSION           = 0x001000  # don#t recurse into directories.
FOF_NO_CONNECTED_ELEMENTS = 0x002000  # don#t operate on connected file elements.
FOF_WANTNUKEWARNING       = 0x004000  # during delete operation, warn if nuking instead of recycling (partially overrides FOF_NOCONFIRMATION)
FOF_NORECURSEREPARSE      = 0x008000  # treat reparse points as objects, not containers

PO_DELETE     = 0x00013   # printer is being deleted
PO_RENAME     = 0x00014   # printer is being renamed
PO_PORTCHANGE = 0x00020   # port this printer connected to is being changed
                          # if this id is set, the strings received by
                          # the copyhook are a doubly-null terminated
                          # list of strings.  The first is the printer
                          # name and the second is the printer port.
PO_REN_PORT   = 0x00034   # PO_RENAME and PO_PORTCHANGE at same time.

# regular WinExec() codes
SE_ERR_FNF          = 2      # file not found
SE_ERR_PNF          = 3      # path not found
SE_ERR_ACCESSDENIED = 5      # access denied
SE_ERR_OOM          = 8      # out of memory
SE_ERR_DLLNOTFOUND  = 32

SE_ERR_SHARE            = 26
SE_ERR_ASSOCINCOMPLETE  = 27
SE_ERR_DDETIMEOUT       = 28
SE_ERR_DDEFAIL          = 29
SE_ERR_DDEBUSY          = 30
SE_ERR_NOASSOC          = 31

# Note CLASSKEY overrides CLASSNAME
SEE_MASK_CLASSNAME      = 0x000000001
SEE_MASK_CLASSKEY       = 0x000000003

# Note INVOKEIDLIST overrides IDLIST
SEE_MASK_IDLIST            = 0x000000004
SEE_MASK_INVOKEIDLIST      = 0x00000000C
SEE_MASK_ICON              = 0x000000010
SEE_MASK_HOTKEY            = 0x000000020
SEE_MASK_NOCLOSEPROCESS    = 0x000000040
SEE_MASK_CONNECTNETDRV     = 0x000000080
SEE_MASK_FLAG_DDEWAIT      = 0x000000100
SEE_MASK_DOENVSUBST        = 0x000000200
SEE_MASK_FLAG_NO_UI        = 0x000000400
SEE_MASK_UNICODE           = 0x000004000
SEE_MASK_NO_CONSOLE        = 0x000008000
SEE_MASK_ASYNCOK           = 0x000100000
SEE_MASK_HMONITOR          = 0x000200000
SEE_MASK_NOQUERYCLASSSTORE = 0x001000000
SEE_MASK_WAITFORINPUTIDLE  = 0x002000000
SEE_MASK_FLAG_LOG_USAGE    = 0x004000000
SEE_MASK_NOZONECHECKS      = 0x000800000

# flags for SHEmptyRecycleBin
SHERB_NOCONFIRMATION = 0x000000001
SHERB_NOPROGRESSUI   = 0x000000002
SHERB_NOSOUND        = 0x000000004

NIN_SELECT           = WM_USER
NINF_KEY             = 1
NIN_KEYSELECT        = NIN_SELECT or NINF_KEY
NIN_BALLOONSHOW      = WM_USER + 2
NIN_BALLOONHIDE      = WM_USER + 3
NIN_BALLOONTIMEOUT   = WM_USER + 4
NIN_BALLOONUSERCLICK = WM_USER + 5

NIM_ADD        = 0x000000000
NIM_MODIFY     = 0x000000001
NIM_DELETE     = 0x000000002
NIM_SETFOCUS   = 0x000000003
NIM_SETVERSION = 0x000000004

NIF_MESSAGE = 0x000000001
NIF_ICON    = 0x000000002
NIF_TIP     = 0x000000004
NIF_STATE   = 0x000000008
NIF_INFO    = 0x000000010
NIF_GUID    = 0x000000020

NIS_HIDDEN     = 0x000000001
NIS_SHAREDICON = 0x000000002

# Notify Icon Infotip flags
NIIF_NONE      = 0x000000000
# icon flags are mutually exclusive
# and take only the lowest 2 bits
NIIF_INFO      = 0x000000001
NIIF_WARNING   = 0x000000002
NIIF_ERROR     = 0x000000003
NIIF_ICON_MASK = 0x00000000F
NIIF_NOSOUND   = 0x000000010

SHGFI_ICON              = 0x000000100  # get icon
SHGFI_DISPLAYNAME       = 0x000000200  # get display name
SHGFI_TYPENAME          = 0x000000400  # get type name
SHGFI_ATTRIBUTES        = 0x000000800  # get attributes
SHGFI_ICONLOCATION      = 0x000001000  # get icon location
SHGFI_EXETYPE           = 0x000002000  # return exe type
SHGFI_SYSICONINDEX      = 0x000004000  # get system icon index
SHGFI_LINKOVERLAY       = 0x000008000  # put a link overlay on icon
SHGFI_SELECTED          = 0x000010000  # show icon in selected state
SHGFI_ATTR_SPECIFIED    = 0x000020000  # get only specified attributes

SHGFI_LARGEICON         = 0x000000000  # get large icon
SHGFI_SMALLICON         = 0x000000001  # get small icon
SHGFI_OPENICON          = 0x000000002  # get open icon
SHGFI_SHELLICONSIZE     = 0x000000004  # get shell size icon
SHGFI_PIDL              = 0x000000008  # pszPath is a pidl
SHGFI_USEFILEATTRIBUTES = 0x000000010  # use passed dwFileAttribute

SHGFI_ADDOVERLAYS       = 0x000000020  # apply the appropriate overlays
SHGFI_OVERLAYINDEX      = 0x000000040  # Get the index of the overlay
                                       # in the upper 8 bits of the iIcon

SHGNLI_PIDL             = 0x000000001  # pszLinkTo is a pidl
SHGNLI_PREFIXNAME       = 0x000000002  # Make name "Shortcut to xxx"
SHGNLI_NOUNIQUE         = 0x000000004  # don#t do the unique name generation
SHGNLI_NOLNK            = 0x000000008  # don#t add ".lnk" extension

# Printer stuff
#
PRINTACTION_OPEN             = 0
PRINTACTION_PROPERTIES       = 1
PRINTACTION_NETINSTALL       = 2
PRINTACTION_NETINSTALLLINK   = 3
PRINTACTION_TESTPAGE         = 4
PRINTACTION_OPENNETPRN       = 5
PRINTACTION_DOCUMENTDEFAULTS = 6
PRINTACTION_SERVERPROPERTIES = 7

OFFLINE_STATUS_LOCAL      = 0x00001  # If open, it#s open locally
OFFLINE_STATUS_REMOTE     = 0x00002  # If open, it#s open remotely
OFFLINE_STATUS_INCOMPLETE = 0x00004  # The local copy is currently imcomplete.
                                     # The file will not be available offline
                                     # until it has been synchronized.

SHIL_LARGE      = 0  # normally 32x32
SHIL_SMALL      = 1  # normally 16x16
SHIL_EXTRALARGE = 2
SHIL_SYSSMALL   = 3  # like SHIL_SMALL, but tracks system small icon metric correctly

SHIL_LAST       = SHIL_SYSSMALL

# End of constants from shellapi.h ============================================

# Constants from shlobj.h =====================================================

# QueryContextMenu uFlags
CMF_NORMAL              = 0x000000000
CMF_DEFAULTONLY         = 0x000000001
CMF_VERBSONLY           = 0x000000002
CMF_EXPLORE             = 0x000000004
CMF_NOVERBS             = 0x000000008
CMF_CANRENAME           = 0x000000010
CMF_NODEFAULT           = 0x000000020
CMF_INCLUDESTATIC       = 0x000000040
CMF_EXTENDEDVERBS       = 0x000000100      # rarely used verbs
CMF_RESERVED            = 0x0ffff0000   # View specific


# GetCommandString uFlags
GCS_VERBA        = 0x000000000     # canonical verb
GCS_HELPTEXTA    = 0x000000001     # help text (for status bar)
GCS_VALIDATEA    = 0x000000002     # validate command exists
GCS_VERBW        = 0x000000004     # canonical verb (unicode)
GCS_HELPTEXTW    = 0x000000005     # help text (unicode version)
GCS_VALIDATEW    = 0x000000006     # validate command exists (unicode)
GCS_UNICODE      = 0x000000004     # for bit testing - Unicode string

GCS_VERB      = GCS_VERBA
GCS_HELPTEXT  = GCS_HELPTEXTA
GCS_VALIDATE  = GCS_VALIDATEA

CMDSTR_NEWFOLDER   = "NewFolder"
CMDSTR_VIEWLIST    = "ViewList"
CMDSTR_VIEWDETAILS = "ViewDetails"

CMIC_MASK_HOTKEY         = SEE_MASK_HOTKEY
CMIC_MASK_ICON           = SEE_MASK_ICON
CMIC_MASK_FLAG_NO_UI     = SEE_MASK_FLAG_NO_UI
CMIC_MASK_UNICODE        = SEE_MASK_UNICODE
CMIC_MASK_NO_CONSOLE     = SEE_MASK_NO_CONSOLE
#CMIC_MASK_HASLINKNAME    = SEE_MASK_HASLINKNAME  ** not defined by Microsoft!
#CMIC_MASK_FLAG_SEP_VDM   = SEE_MASK_FLAG_SEPVDM  ** not defined by Microsoft!
#CMIC_MASK_HASTITLE       = SEE_MASK_HASTITLE     ** not defined by Microsoft!
CMIC_MASK_ASYNCOK        = SEE_MASK_ASYNCOK
CMIC_MASK_SHIFT_DOWN     = 0x010000000
CMIC_MASK_CONTROL_DOWN   = 0x020000000
CMIC_MASK_FLAG_LOG_USAGE = SEE_MASK_FLAG_LOG_USAGE
CMIC_MASK_NOZONECHECKS   = SEE_MASK_NOZONECHECKS

CMIC_MASK_PTINVOKE      = 0x020000000

CSIDL_FLAG_PFTI_TRACKTARGET = CSIDL_FLAG_DONT_VERIFY

# GetIconLocation() input flags

GIL_OPENICON    = 0x00001  # allows containers to specify an "open" look
GIL_FORSHELL    = 0x00002  # icon is to be displayed in a ShellFolder
GIL_ASYNC       = 0x00020  # this is an async extract, return E_PENDING
GIL_DEFAULTICON = 0x00040  # get the default icon location if the final one takes too long to get
GIL_FORSHORTCUT = 0x00080  # the icon is for a shortcut to the object

# GetIconLocation() return flags

GIL_SIMULATEDOC = 0x00001  # simulate this document icon for this
GIL_PERINSTANCE = 0x00002  # icons from this class are per instance (each file has its own)
GIL_PERCLASS    = 0x00004  # icons from this class per class (shared for all files of this type)
GIL_NOTFILENAME = 0x00008  # location is not a filename, must call ::ExtractIcon
GIL_DONTCACHE   = 0x00010  # this icon should not be cached

ISIOI_ICONFILE  = 0x000000001  # path is returned through pwszIconFile
ISIOI_ICONINDEX = 0x000000002  # icon index in pwszIconFile is returned through pIndex

OI_ASYNC = 0x0FFFFEEEE

IDO_SHGIOI_SHARE    = 0x00FFFFFFF
IDO_SHGIOI_LINK     = 0x00FFFFFFE
IDO_SHGIOI_SLOWFILE = 0x00FFFFFFFD

# IShellLinkDataList::GetFlags()/SetFlags()
# SHELL_LINK_DATA_FLAGS enumerated type
SLDF_HAS_ID_LIST        = 0x000000001    # Shell link saved with ID list
SLDF_HAS_LINK_INFO      = 0x000000002    # Shell link saved with LinkInfo
SLDF_HAS_NAME           = 0x000000004
SLDF_HAS_RELPATH        = 0x000000008
SLDF_HAS_WORKINGDIR     = 0x000000010
SLDF_HAS_ARGS           = 0x000000020
SLDF_HAS_ICONLOCATION   = 0x000000040
SLDF_UNICODE            = 0x000000080    # the strings are unicode
SLDF_FORCE_NO_LINKINFO  = 0x000000100    # don#t create a LINKINFO (make a dumb link)
SLDF_HAS_EXP_SZ         = 0x000000200    # the link contains expandable env strings
SLDF_RUN_IN_SEPARATE    = 0x000000400    # Run the 16-bit target exe in a separate VDM/WOW
SLDF_HAS_LOGO3ID        = 0x000000800    # this link is a special Logo3/MSICD link
SLDF_HAS_DARWINID       = 0x000001000    # this link is a special Darwin link
SLDF_RUNAS_USER         = 0x000002000    # Run this link as a different user
SLDF_HAS_EXP_ICON_SZ    = 0x000004000    # contains expandable env string for icon path
SLDF_NO_PIDL_ALIAS      = 0x000008000    # don#t ever resolve to a logical location
SLDF_FORCE_UNCNAME      = 0x000010000    # make GetPath() prefer the UNC name to the local name
SLDF_RUN_WITH_SHIMLAYER = 0x000020000    # Launch the target of this link w/ shim layer active
SLDF_RESERVED           = 0x080000000    # Reserved-- so we can use the low word as an index value in the future

NT_CONSOLE_PROPS_SIG    = 0x0A0000002
NT_FE_CONSOLE_PROPS_SIG = 0x0A0000004
EXP_DARWIN_ID_SIG       = 0x0A0000006
# BUGBUG (reinerf) - this has the same value as EXP_SZ_ICON_SIG!!!
EXP_LOGO3_ID_SIG        = 0x0A0000007

EXP_SPECIAL_FOLDER_SIG  = 0x0A0000005   # LPEXP_SPECIAL_FOLDER
EXP_SZ_LINK_SIG         = 0x0A0000001   # LPEXP_SZ_LINK (target)
EXP_SZ_ICON_SIG         = 0x0A0000007   # LPEXP_SZ_LINK (icon)

# Define File View Show Info Flags.
FVSIF_RECT      = 0x000000001   # The rect variable has valid data.
FVSIF_PINNED    = 0x000000002   # We should Initialize pinned

FVSIF_NEWFAILED = 0x008000000   # The new file passed back failed
                                # to be viewed.

FVSIF_NEWFILE   = 0x080000000   # A new file to view has been returned
FVSIF_CANVIEWIT = 0x040000000   # The viewer can view it.

FCIDM_SHVIEWFIRST  = 0x000000
FCIDM_SHVIEWLAST   = 0x007fff
FCIDM_BROWSERFIRST = 0x00a000
FCIDM_BROWSERLAST  = 0x00bf00
FCIDM_GLOBALFIRST  = 0x008000
FCIDM_GLOBALLAST   = 0x009fff

#
# Global submenu IDs and separator IDs
#
FCIDM_MENU_FILE             = FCIDM_GLOBALFIRST + 0x00000
FCIDM_MENU_EDIT             = FCIDM_GLOBALFIRST + 0x00040
FCIDM_MENU_VIEW             = FCIDM_GLOBALFIRST + 0x00080
FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST + 0x00081
FCIDM_MENU_TOOLS            = FCIDM_GLOBALFIRST + 0x000c0 # for Win9x compat
FCIDM_MENU_TOOLS_SEP_GOTO   = FCIDM_GLOBALFIRST + 0x000c1 # for Win9x compat
FCIDM_MENU_HELP             = FCIDM_GLOBALFIRST + 0x00100
FCIDM_MENU_FIND             = FCIDM_GLOBALFIRST + 0x00140
FCIDM_MENU_EXPLORE          = FCIDM_GLOBALFIRST + 0x00150
FCIDM_MENU_FAVORITES        = FCIDM_GLOBALFIRST + 0x00170

# control IDs known to the view

FCIDM_TOOLBAR      = FCIDM_BROWSERFIRST
FCIDM_STATUS       = FCIDM_BROWSERFIRST + 1

# The resource id of the offline cursor
# This cursor is avaialble in shdocvw.dll
IDC_OFFLINE_HAND = 103

CDBOSC_SETFOCUS    = 0x000000000
CDBOSC_KILLFOCUS   = 0x000000001
CDBOSC_SELCHANGE   = 0x000000002
CDBOSC_RENAME      = 0x000000003
CDBOSC_STATECHANGE = 0x000000004

CDB2N_CONTEXTMENU_DONE  = 0x000000001
CDB2N_CONTEXTMENU_START = 0x000000002

# GetViewFlags
CDB2GVF_SHOWALLFILES = 0x000000001

# Browsing for directory.
BIF_RETURNONLYFSDIRS   = 0x00001  # For finding a folder to start document searching
BIF_DONTGOBELOWDOMAIN  = 0x00002  # For starting the Find Computer
BIF_STATUSTEXT         = 0x00004  # Top of the dialog has 2 lines of text for BROWSEINFO.lpszTitle and one line if
                                  # this flag is set.  Passing the message BFFM_SETSTATUSTEXTA to the hwnd can set the
                                  # rest of the text.  This is not used with BIF_USENEWUI and BROWSEINFO.lpszTitle gets
                                  # all three lines of text.
BIF_RETURNFSANCESTORS  = 0x00008
BIF_EDITBOX            = 0x00010   # Add an editbox to the dialog
BIF_VALIDATE           = 0x00020   # insist on valid result (or CANCEL)

BIF_NEWDIALOGSTYLE     = 0x00040   # Use the new dialog layout with the ability to resize
                                   # Caller needs to call OleInitialize() before using this API

BIF_USENEWUI           = BIF_NEWDIALOGSTYLE or BIF_EDITBOX

BIF_BROWSEINCLUDEURLS  = 0x00080   # Allow URLs to be displayed or entered. (Requires BIF_USENEWUI)

BIF_BROWSEFORCOMPUTER  = 0x000001000  # Browsing for Computers.
BIF_BROWSEFORPRINTER   = 0x000002000  # Browsing for Printers
BIF_BROWSEINCLUDEFILES = 0x000004000  # Browsing for Everything
BIF_SHAREABLE          = 0x000008000  # sharable resources displayed (remote shares, requires BIF_USENEWUI)

# message from browser
BFFM_INITIALIZED      = 1
BFFM_SELCHANGED       = 2
BFFM_VALIDATEFAILEDA  = 3   # lParam:szPath ret:1(cont),0(EndDialog)
BFFM_VALIDATEFAILEDW  = 4   # lParam:wzPath ret:1(cont),0(EndDialog)

# messages to browser
BFFM_SETSTATUSTEXTA   = WM_USER + 100
BFFM_ENABLEOK         = WM_USER + 101
BFFM_SETSELECTIONA    = WM_USER + 102
BFFM_SETSELECTIONW    = WM_USER + 103
BFFM_SETSTATUSTEXTW   = WM_USER + 104
BFFM_SETOKTEXT        = WM_USER + 105  # Unicode only
BFFM_SETEXPANDED      = WM_USER + 106  # Unicode only

BFFM_SETSTATUSTEXT  = BFFM_SETSTATUSTEXTA
BFFM_SETSELECTION   = BFFM_SETSELECTIONA
BFFM_VALIDATEFAILED = BFFM_VALIDATEFAILEDA

# SHAddToRecentDocs
SHARD_PIDL    = 0x000000001
SHARD_PATHA   = 0x000000002
SHARD_PATHW   = 0x000000003

SHARD_PATH  = SHARD_PATHA

ISHCUTCMDID_DOWNLOADICON      = 0
ISHCUTCMDID_INTSHORTCUTCREATE = 1
CMDID_INTSHORTCUTCREATE       = ISHCUTCMDID_INTSHORTCUTCREATE

# Flags for IProgressDialog::StartProgressDialog() (dwFlags)
PROGDLG_NORMAL        = 0x000000000 # default normal progress dlg behavior
PROGDLG_MODAL         = 0x000000001 # the dialog is modal to its hwndParent (default is modeless)
PROGDLG_AUTOTIME      = 0x000000002 # automatically updates the "Line3" text with the "time remaining" (you can#t call SetLine3 if you pass this!)
PROGDLG_NOTIME        = 0x000000004 # we don#t show the "time remaining" if this is set. We need this if dwTotal < dwCompleted for sparse files
PROGDLG_NOMINIMIZE    = 0x000000008 # Do not have a minimize button in the caption bar.
PROGDLG_NOPROGRESSBAR = 0x000000010 # Don#t display the progress bar

# Time Actions (dwTimerAction)
PDTIMER_RESET     = 0x000000001       # Reset the timer so the progress will be calculated from now until the first ::SetProgress() is called so

# flags for RemoveToolbar
DWFRF_NORMAL           = 0x00000
DWFRF_DELETECONFIGDATA = 0x00001

# flags for AddToolbar
DWFAF_HIDDEN = 0x00001   # add hidden

# Convenient state values
IRTIR_TASK_NOT_RUNNING = 0
IRTIR_TASK_RUNNING     = 1
IRTIR_TASK_SUSPENDED   = 2
IRTIR_TASK_PENDING     = 3
IRTIR_TASK_FINISHED    = 4

COMPONENT_TOP = 0x03fffffff  # izOrder value meaning component is at the top

# iCompType values
COMP_TYPE_HTMLDOC = 0
COMP_TYPE_PICTURE = 1
COMP_TYPE_WEBSITE = 2
COMP_TYPE_CONTROL = 3
COMP_TYPE_CFHTML  = 4
COMP_TYPE_MAX     = 4

# Defines for dwCurItemState
IS_NORMAL             = 0x000000001
IS_FULLSCREEN         = 0x000000002
IS_SPLIT              = 0x000000004
IS_VALIDSIZESTATEBITS = IS_NORMAL or IS_SPLIT or IS_FULLSCREEN  # The set of IS_* state bits which define the "size" of the component - these bits are mutually exclusive.
IS_VALIDSTATEBITS     = IS_NORMAL or IS_SPLIT or IS_FULLSCREEN or 0x080000000 or 0x040000000  # All of the currently defined IS_* bits.

# Flags for IActiveDesktop::ApplyChanges()
AD_APPLY_SAVE             = 0x000000001
AD_APPLY_HTMLGEN          = 0x000000002
AD_APPLY_REFRESH          = 0x000000004
AD_APPLY_ALL              = AD_APPLY_SAVE or AD_APPLY_HTMLGEN or AD_APPLY_REFRESH
AD_APPLY_FORCE            = 0x000000008
AD_APPLY_BUFFERED_REFRESH = 0x000000010
AD_APPLY_DYNAMICREFRESH   = 0x000000020

# Flags for IActiveDesktop::GetWallpaperOptions()
#           IActiveDesktop::SetWallpaperOptions()
WPSTYLE_CENTER  = 0
WPSTYLE_TILE    = 1
WPSTYLE_STRETCH = 2
WPSTYLE_MAX     = 3

SETWALLPAPER_DEFAULT = 0x0FFFFFFFF

# Flags for IActiveDesktop::ModifyComponent()
COMP_ELEM_TYPE          = 0x000000001
COMP_ELEM_CHECKED       = 0x000000002
COMP_ELEM_DIRTY         = 0x000000004
COMP_ELEM_NOSCROLL      = 0x000000008
COMP_ELEM_POS_LEFT      = 0x000000010
COMP_ELEM_POS_TOP       = 0x000000020
COMP_ELEM_SIZE_WIDTH    = 0x000000040
COMP_ELEM_SIZE_HEIGHT   = 0x000000080
COMP_ELEM_POS_ZINDEX    = 0x000000100
COMP_ELEM_SOURCE        = 0x000000200
COMP_ELEM_FRIENDLYNAME  = 0x000000400
COMP_ELEM_SUBSCRIBEDURL = 0x000000800
COMP_ELEM_ORIGINAL_CSI  = 0x000001000
COMP_ELEM_RESTORED_CSI  = 0x000002000
COMP_ELEM_CURITEMSTATE  = 0x000004000

COMP_ELEM_ALL = COMP_ELEM_TYPE or COMP_ELEM_CHECKED or COMP_ELEM_DIRTY or COMP_ELEM_NOSCROLL or COMP_ELEM_POS_LEFT or COMP_ELEM_SIZE_WIDTH or COMP_ELEM_SIZE_HEIGHT or COMP_ELEM_POS_ZINDEX or COMP_ELEM_SOURCE or COMP_ELEM_FRIENDLYNAME or COMP_ELEM_POS_TOP or COMP_ELEM_SUBSCRIBEDURL or COMP_ELEM_ORIGINAL_CSI or COMP_ELEM_RESTORED_CSI or COMP_ELEM_CURITEMSTATE

# Flags for IActiveDesktop::AddDesktopItemWithUI()
# enum tagDTI_ADTIWUI
DTI_ADDUI_DEFAULT       = 0x000000000
DTI_ADDUI_DISPSUBWIZARD = 0x000000001
DTI_ADDUI_POSITIONITEM  = 0x000000002

# Flags for IActiveDesktop::AddUrl()
ADDURL_SILENT = 0x00001

# Default positions for ADI
COMPONENT_DEFAULT_LEFT    = 0x00FFFF
COMPONENT_DEFAULT_TOP     = 0x00FFFF

MAX_COLUMN_NAME_LEN = 80
MAX_COLUMN_DESC_LEN = 128

SHCDF_UPDATEITEM = 0x000000001   # this flag is a hint that the file has changed since the last call to GetItemData

# FILEDESCRIPTOR.dwFlags field indicate which fields are to be used
# (enumerated type FD_FLAGS)
#
FD_CLSID      = 0x00001
FD_SIZEPOINT  = 0x00002
FD_ATTRIBUTES = 0x00004
FD_CREATETIME = 0x00008
FD_ACCESSTIME = 0x00010
FD_WRITESTIME = 0x00020
FD_FILESIZE   = 0x00040
FD_PROGRESSUI = 0x04000  # Show Progress UI w/Drag and Drop
FD_LINKUI     = 0x08000  # #link# UI is prefered

# File System Notification flags

SHCNE_RENAMEITEM       = 0x000000001
SHCNE_CREATE           = 0x000000002
SHCNE_DELETE           = 0x000000004
SHCNE_MKDIR            = 0x000000008
SHCNE_RMDIR            = 0x000000010
SHCNE_MEDIAINSERTED    = 0x000000020
SHCNE_MEDIAREMOVED     = 0x000000040
SHCNE_DRIVEREMOVED     = 0x000000080
SHCNE_DRIVEADD         = 0x000000100
SHCNE_NETSHARE         = 0x000000200
SHCNE_NETUNSHARE       = 0x000000400
SHCNE_ATTRIBUTES       = 0x000000800
SHCNE_UPDATEDIR        = 0x000001000
SHCNE_UPDATEITEM       = 0x000002000
SHCNE_SERVERDISCONNECT = 0x000004000
SHCNE_UPDATEIMAGE      = 0x000008000
SHCNE_DRIVEADDGUI      = 0x000010000
SHCNE_RENAMEFOLDER     = 0x000020000
SHCNE_FREESPACE        = 0x000040000

# SHCNE_EXTENDED_EVENT: the extended event is identified in dwItem1,
# packed in LPITEMIDLIST format (same as SHCNF_DWORD packing).
# Additional information can be passed in the dwItem2 parameter
# of SHChangeNotify (called "pidl2" below), which if present, must also
# be in LPITEMIDLIST format.
#
# Unlike the standard events, the extended events are ORDINALs, so we
# don#t run out of bits.  Extended events follow the SHCNEE_* naming
# convention.
#
# The dwItem2 parameter varies according to the extended event.

SHCNE_EXTENDED_EVENT   = 0x004000000

SHCNE_ASSOCCHANGED     = 0x008000000

SHCNE_DISKEVENTS       = 0x00002381F
SHCNE_GLOBALEVENTS     = 0x00C0581E0 # Events that dont match pidls first
SHCNE_ALLEVENTS        = 0x07FFFFFFF
SHCNE_INTERRUPT        = 0x080000000  # The presence of this flag indicates
                                       # that the event was generated by an
                                       # interrupt.  It is stripped out before
                                       # the clients of SHCNNotify_ see it.

# SHCNE_EXTENDED_EVENT extended events.  These events are ordinals.
# This is not a bitfield.

SHCNEE_ORDERCHANGED  = 2 # pidl2 is the changed folder
SHCNEE_MSI_CHANGE    = 4 # pidl2 is a SHChangeProductKeyAsIDList
SHCNEE_MSI_UNINSTALL = 5 # pidl2 is a SHChangeProductKeyAsIDList


# Flags
# uFlags  SHCNF_TYPE is an ID which indicates what dwItem1 and dwItem2 mean
SHCNF_IDLIST      = 0x00000     # LPITEMIDLIST
SHCNF_PATHA       = 0x00001     # path name
SHCNF_PRINTERA    = 0x00002     # printer friendly name
SHCNF_DWORD       = 0x00003     # DWORD
SHCNF_PATHW       = 0x00005     # path name
SHCNF_PRINTERW    = 0x00006     # printer friendly name
SHCNF_TYPE        = 0x000FF
SHCNF_FLUSH       = 0x01000
SHCNF_FLUSHNOWAIT = 0x02000

QITIPF_DEFAULT       = 0x000000000
QITIPF_USENAME       = 0x000000001
QITIPF_LINKNOTARGET  = 0x000000002
QITIPF_LINKUSETARGET = 0x000000004
QITIPF_USESLOWTIP    = 0x000000008  # Flag says it#s OK to take a long time generating tip

QIF_CACHED           = 0x000000001
QIF_DONTEXPANDFOLDER = 0x000000002

SHGDFIL_FINDDATA      = 1
SHGDFIL_NETRESOURCE   = 2
SHGDFIL_DESCRIPTIONID = 3

SHDID_ROOT_REGITEM        = 1
SHDID_FS_FILE             = 2
SHDID_FS_DIRECTORY        = 3
SHDID_FS_OTHER            = 4
SHDID_COMPUTER_DRIVE35    = 5
SHDID_COMPUTER_DRIVE525   = 6
SHDID_COMPUTER_REMOVABLE  = 7
SHDID_COMPUTER_FIXED      = 8
SHDID_COMPUTER_NETDRIVE   = 9
SHDID_COMPUTER_CDROM      = 10
SHDID_COMPUTER_RAMDISK    = 11
SHDID_COMPUTER_OTHER      = 12
SHDID_NET_DOMAIN          = 13
SHDID_NET_SERVER          = 14
SHDID_NET_SHARE           = 15
SHDID_NET_RESTOFNET       = 16
SHDID_NET_OTHER           = 17
SHDID_COMPUTER_IMAGING    = 18
SHDID_COMPUTER_AUDIO      = 19
SHDID_COMPUTER_SHAREDDOCS = 20

PID_IS_URL         = 2
PID_IS_NAME        = 4
PID_IS_WORKINGDIR  = 5
PID_IS_HOTKEY      = 6
PID_IS_SHOWCMD     = 7
PID_IS_ICONINDEX   = 8
PID_IS_ICONFILE    = 9
PID_IS_WHATSNEW    = 10
PID_IS_AUTHOR      = 11
PID_IS_DESCRIPTION = 12
PID_IS_COMMENT     = 13

# PROPIDs for Internet Sites (FMTID_InternetSite) to be used with
# IPropertySetStorage/IPropertyStorage
#
# The known property ids and their variant types are:
#     PID_INTSITE_WHATSNEW     [VT_LPWSTR]   What#s New text
#     PID_INTSITE_AUTHOR       [VT_LPWSTR]   Author
#     PID_INTSITE_LASTVISIT    [VT_FILETIME] Time site was last visited
#     PID_INTSITE_LASTMOD      [VT_FILETIME] Time site was last modified
#     PID_INTSITE_VISITCOUNT   [VT_UI4]      Number of times user has visited
#     PID_INTSITE_DESCRIPTION  [VT_LPWSTR]   Description text of site
#     PID_INTSITE_COMMENT      [VT_LPWSTR]   User annotated comment
#     PID_INTSITE_RECURSE      [VT_UI4]      Levels to recurse (0-3)
#     PID_INTSITE_WATCH        [VT_UI4]      PIDISM_ flags
#     PID_INTSITE_SUBSCRIPTION [VT_UI8]      Subscription cookie
#     PID_INTSITE_URL          [VT_LPWSTR]   URL
#     PID_INTSITE_TITLE        [VT_LPWSTR]   Title
#     PID_INTSITE_CODEPAGE     [VT_UI4]      Codepage of the document
#     PID_INTSITE_TRACKING     [VT_UI4]      Tracking
#     PID_INTSITE_ICONINDEX    [VT_I4]       Retrieve the index to the icon
#     PID_INTSITE_ICONFILE     [VT_LPWSTR]   Retrieve the file containing the icon index.

PID_INTSITE_WHATSNEW     = 2
PID_INTSITE_AUTHOR       = 3
PID_INTSITE_LASTVISIT    = 4
PID_INTSITE_LASTMOD      = 5
PID_INTSITE_VISITCOUNT   = 6
PID_INTSITE_DESCRIPTION  = 7
PID_INTSITE_COMMENT      = 8
PID_INTSITE_FLAGS        = 9
PID_INTSITE_CONTENTLEN   = 10
PID_INTSITE_CONTENTCODE  = 11
PID_INTSITE_RECURSE      = 12
PID_INTSITE_WATCH        = 13
PID_INTSITE_SUBSCRIPTION = 14
PID_INTSITE_URL          = 15
PID_INTSITE_TITLE        = 16
PID_INTSITE_CODEPAGE     = 18
PID_INTSITE_TRACKING     = 19
PID_INTSITE_ICONINDEX    = 20
PID_INTSITE_ICONFILE     = 21

# Flags for PID_IS_FLAGS
PIDISF_RECENTLYCHANGED  = 0x000000001
PIDISF_CACHEDSTICKY     = 0x000000002
PIDISF_CACHEIMAGES      = 0x000000010
PIDISF_FOLLOWALLLINKS   = 0x000000020

# Values for PID_INTSITE_WATCH
PIDISM_GLOBAL    = 0       # Monitor based on global setting
PIDISM_WATCH     = 1       # User says watch
PIDISM_DONTWATCH = 2       # User says don#t watch

SSF_SHOWALLOBJECTS       = 0x000000001
SSF_SHOWEXTENSIONS       = 0x000000002
SSF_SHOWCOMPCOLOR        = 0x000000008
SSF_SHOWSYSFILES         = 0x000000020
SSF_DOUBLECLICKINWEBVIEW = 0x000000080
SSF_SHOWATTRIBCOL        = 0x000000100
SSF_DESKTOPHTML          = 0x000000200
SSF_WIN95CLASSIC         = 0x000000400
SSF_DONTPRETTYPATH       = 0x000000800
SSF_SHOWINFOTIP          = 0x000002000
SSF_MAPNETDRVBUTTON      = 0x000001000
SSF_NOCONFIRMRECYCLE     = 0x000008000
SSF_HIDEICONS            = 0x000004000

SHPPFW_NONE           = 0x000000000
SHPPFW_DIRCREATE      = 0x000000001        # Create the directory if it doesn#t exist without asking the user.
SHPPFW_DEFAULT        = SHPPFW_DIRCREATE # May change
SHPPFW_ASKDIRCREATE   = 0x000000002        # Create the directory if it doesn#t exist after asking the user.
SHPPFW_IGNOREFILENAME = 0x000000004        # Ignore the last item in pszPath because it#s a file.  Example: pszPath="C:\DirA\DirB", only use "C:\DirA".
SHPPFW_NOWRITECHECK   = 0x000000008        # Caller only needs to read from the drive, so don#t check if it#s READ ONLY.
SHPPFW_MEDIACHECKONLY = 0x000000010        # do the retrys on the media (or net path), return errors if the file can#t be found

# End of constants from shlobj.h ==============================================

#* WM_PRINT flags
PRF_CHECKVISIBLE    = 0x000000001
PRF_NONCLIENT       = 0x000000002
PRF_CLIENT          = 0x000000004
PRF_ERASEBKGND      = 0x000000008
PRF_CHILDREN        = 0x000000010
PRF_OWNED           = 0x000000020

#* 3D border styles
BDR_RAISEDOUTER     = 0x00001
BDR_SUNKENOUTER     = 0x00002
BDR_RAISEDINNER     = 0x00004
BDR_SUNKENINNER     = 0x00008

BDR_OUTER           = 0x00003
BDR_RAISED          = 0x00005
BDR_SUNKEN          = 0x0000A
BDR_INNER           = 0x0000C

EDGE_RAISED         = BDR_RAISEDOUTER or BDR_RAISEDINNER
EDGE_SUNKEN         = BDR_SUNKENOUTER or BDR_SUNKENINNER
EDGE_ETCHED         = BDR_SUNKENOUTER or BDR_RAISEDINNER
EDGE_BUMP           = BDR_RAISEDOUTER or BDR_SUNKENINNER

#* Border flags
BF_LEFT             = 0x00001
BF_TOP              = 0x00002
BF_RIGHT            = 0x00004
BF_BOTTOM           = 0x00008

BF_TOPLEFT          = BF_TOP or BF_LEFT
BF_TOPRIGHT         = BF_TOP or BF_RIGHT
BF_BOTTOMLEFT       = BF_BOTTOM or BF_LEFT
BF_BOTTOMRIGHT      = BF_BOTTOM or BF_RIGHT
BF_RECT             = BF_LEFT or BF_TOP or BF_RIGHT or BF_BOTTOM

BF_DIAGONAL         = 0x00010

# For diagonal lines, the BF_RECT flags specify the end point of the
# vector bounded by the rectangle parameter.
BF_DIAGONAL_ENDTOPRIGHT    = BF_DIAGONAL or BF_TOP or BF_RIGHT
BF_DIAGONAL_ENDTOPLEFT     = BF_DIAGONAL or BF_TOP or BF_LEFT
BF_DIAGONAL_ENDBOTTOMLEFT  = BF_DIAGONAL or BF_BOTTOM or BF_LEFT
BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL or BF_BOTTOM or BF_RIGHT

BF_MIDDLE  = 0x000000800  #* Fill in the middle
BF_SOFT    = 0x000001000  #* For softer buttons
BF_ADJUST  = 0x000002000  #* Calculate the space left over
BF_FLAT    = 0x000004000  #* For flat rather than 3D borders
BF_MONO    = 0x000008000  #* For monochrome borders

# flags for HIGHCONTRAST dwFlags field
HCF_HIGHCONTRASTON  = 0x000000001
HCF_AVAILABLE       = 0x000000002
HCF_HOTKEYACTIVE    = 0x000000004
HCF_CONFIRMHOTKEY   = 0x000000008
HCF_HOTKEYSOUND     = 0x000000010
HCF_INDICATOR       = 0x000000020
HCF_HOTKEYAVAILABLE = 0x000000040

# flags for ChangeDisplaySettings
CDS_UPDATEREGISTRY  = 0x000000001
CDS_TEST            = 0x000000002
CDS_FULLSCREEN      = 0x000000004
CDS_GLOBAL          = 0x000000008
CDS_SET_PRIMARY     = 0x000000010
CDS_VIDEOPARAMETERS = 0x000000020
CDS_RESET           = 0x040000000
CDS_NORESET         = 0x010000000


TVOUT_INC = 1

VP_COMMAND_GET          = 0x00001  # size set, return caps.
                                   # returned Flags = 0 if not supported.
VP_COMMAND_SET          = 0x00002  # size and params set.

VP_FLAGS_TV_MODE        = 0x00001
VP_FLAGS_TV_STANDARD    = 0x00002
VP_FLAGS_FLICKER        = 0x00004
VP_FLAGS_OVERSCAN       = 0x00008
VP_FLAGS_MAX_UNSCALED   = 0x00010  # do not use on SET
VP_FLAGS_POSITION       = 0x00020
VP_FLAGS_BRIGHTNESS     = 0x00040
VP_FLAGS_CONTRAST       = 0x00080
VP_FLAGS_COPYPROTECT    = 0x00100

VP_MODE_WIN_GRAPHICS    = 0x00001
VP_MODE_TV_PLAYBACK     = 0x00002  # optimize for TV video playback

VP_TV_STANDARD_NTSC_M   = 0x000000001  #       75 IRE Setup
VP_TV_STANDARD_NTSC_M_J = 0x000000002  # Japan,  0 IRE Setup
VP_TV_STANDARD_PAL_B    = 0x000000004
VP_TV_STANDARD_PAL_D    = 0x000000008
VP_TV_STANDARD_PAL_H    = 0x000000010
VP_TV_STANDARD_PAL_I    = 0x000000020
VP_TV_STANDARD_PAL_M    = 0x000000040
VP_TV_STANDARD_PAL_N    = 0x000000080
VP_TV_STANDARD_SECAM_B  = 0x000000100
VP_TV_STANDARD_SECAM_D  = 0x000000200
VP_TV_STANDARD_SECAM_G  = 0x000000400
VP_TV_STANDARD_SECAM_H  = 0x000000800
VP_TV_STANDARD_SECAM_K  = 0x000001000
VP_TV_STANDARD_SECAM_K1 = 0x000002000
VP_TV_STANDARD_SECAM_L  = 0x000004000
VP_TV_STANDARD_WIN_VGA  = 0x000008000
# and the rest
VP_TV_STANDARD_NTSC_433 = 0x000010000
VP_TV_STANDARD_PAL_G    = 0x000020000
VP_TV_STANDARD_PAL_60   = 0x000040000
VP_TV_STANDARD_SECAM_L1 = 0x000080000

VP_CP_TYPE_APS_TRIGGER  = 0x00001  # DVD trigger bits only
VP_CP_TYPE_MACROVISION  = 0x00002  # full macrovision data available

VP_CP_CMD_ACTIVATE      = 0x00001  # CP command type
VP_CP_CMD_DEACTIVATE    = 0x00002
VP_CP_CMD_CHANGE        = 0x00004


# Return values for ChangeDisplaySettings
DISP_CHANGE_SUCCESSFUL  =  0
DISP_CHANGE_RESTART     =  1
DISP_CHANGE_FAILED      = -1
DISP_CHANGE_BADMODE     = -2
DISP_CHANGE_NOTUPDATED  = -3
DISP_CHANGE_BADFLAGS    = -4
DISP_CHANGE_BADPARAM    = -5
DISP_CHANGE_BADDUALVIEW = -6

ENUM_CURRENT_SETTINGS  = 0x0FFFFFFFF
ENUM_REGISTRY_SETTINGS = 0x0FFFFFFFE

# Flags for EnumDisplaySettingsEx
EDS_RAWMODE = 0x000000002



# Scroll Bar Constants
SB_HORZ = 0
SB_VERT = 1
SB_CTL  = 2
SB_BOTH = 3

# Scroll Bar Commands
SB_LINEUP        = 0
SB_LINELEFT      = 0
SB_LINEDOWN      = 1
SB_LINERIGHT     = 1
SB_PAGEUP        = 2
SB_PAGELEFT      = 2
SB_PAGEDOWN      = 3
SB_PAGERIGHT     = 3
SB_THUMBPOSITION = 4
SB_THUMBTRACK    = 5
SB_TOP           = 6
SB_LEFT          = 6
SB_BOTTOM        = 7
SB_RIGHT         = 7
SB_ENDSCROLL     = 8



SIF_RANGE           = 0x00001
SIF_PAGE            = 0x00002
SIF_POS             = 0x00004
SIF_DISABLENOSCROLL = 0x00008
SIF_TRACKPOS        = 0x00010
SIF_ALL             = SIF_RANGE or SIF_PAGE or SIF_POS or SIF_TRACKPOS



# ShowWindow() Commands
SW_HIDE            = 0
SW_SHOWNORMAL      = 1
SW_NORMAL          = 1
SW_SHOWMINIMIZED   = 2
SW_SHOWMAXIMIZED   = 3
SW_MAXIMIZE        = 3
SW_SHOWNOACTIVATE  = 4
SW_SHOW            = 5
SW_MINIMIZE        = 6
SW_SHOWMINNOACTIVE = 7
SW_SHOWNA          = 8
SW_RESTORE         = 9
SW_SHOWDEFAULT     = 10
SW_FORCEMINIMIZE   = 11
SW_MAX             = 11

# Old ShowWindow() Commands
HIDE_WINDOW         = 0
SHOW_OPENWINDOW     = 1
SHOW_ICONWINDOW     = 2
SHOW_FULLSCREEN     = 3
SHOW_OPENNOACTIVATE = 4

# Identifiers for the WM_SHOWWINDOW message
SW_PARENTCLOSING = 1
SW_OTHERZOOM     = 2
SW_PARENTOPENING = 3
SW_OTHERUNZOOM   = 4



# AnimateWindow() Commands
AW_HOR_POSITIVE = 0x000000001
AW_HOR_NEGATIVE = 0x000000002
AW_VER_POSITIVE = 0x000000004
AW_VER_NEGATIVE = 0x000000008
AW_CENTER       = 0x000000010
AW_HIDE         = 0x000010000
AW_ACTIVATE     = 0x000020000
AW_SLIDE        = 0x000040000
AW_BLEND        = 0x000080000

# WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags
KF_EXTENDED = 0x000000100
KF_DLGMODE  = 0x000000800
KF_MENUMODE = 0x000001000
KF_ALTDOWN  = 0x000002000
KF_REPEAT   = 0x000004000
KF_UP       = 0x000008000



# Virtual Keys, Standard Set
VK_LBUTTON  = 0x001
VK_RBUTTON  = 0x002
VK_CANCEL   = 0x003
VK_MBUTTON  = 0x004    # NOT contiguous with L RBUTTON
VK_XBUTTON1 = 0x005    # NOT contiguous with L  RBUTTON
VK_XBUTTON2 = 0x006    # NOT contiguous with L  RBUTTON
VK_BACK     = 0x008
VK_TAB      = 0x009
VK_LINEFEED = 0x00A
VK_CLEAR    = 0x00C
VK_RETURN   = 0x00D
VK_SHIFT    = 0x010
VK_CONTROL  = 0x011
VK_MENU     = 0x012
VK_PAUSE    = 0x013
VK_CAPITAL  = 0x014
VK_KANA     = 0x015
VK_HANGEUL  = 0x015  # old name - should be here for compatibility
VK_HANGUL   = 0x015
VK_JUNJA    = 0x017
VK_FINAL    = 0x018
VK_HANJA    = 0x019
VK_KANJI    = 0x019
VK_ESCAPE   = 0x01B
VK_CONVERT    = 0x01C
VK_NONCONVERT = 0x01D
VK_ACCEPT     = 0x01E
VK_MODECHANGE = 0x01F
VK_SPACE    = 0x020
VK_PGUP     = 0x021
VK_PRIOR    = 0x021
VK_NEXT     = 0x022
VK_PGDN     = 0x022
VK_END      = 0x023
VK_HOME     = 0x024
VK_LEFT     = 0x025
VK_UP       = 0x026
VK_RIGHT    = 0x027
VK_DOWN     = 0x028
VK_SELECT   = 0x029
VK_PRINT    = 0x02A
VK_EXECUTE  = 0x02B
VK_SNAPSHOT = 0x02C
VK_INSERT   = 0x02D
VK_DELETE   = 0x02E
VK_HELP     = 0x02F
VK_0        = 0x030
VK_1        = 0x031
VK_2        = 0x032
VK_3        = 0x033
VK_4        = 0x034
VK_5        = 0x035
VK_6        = 0x036
VK_7        = 0x037
VK_8        = 0x038
VK_9        = 0x039
VK_A        = 0x041
VK_B        = 0x042
VK_C        = 0x043
VK_D        = 0x044
VK_E        = 0x045
VK_F        = 0x046
VK_G        = 0x047
VK_H        = 0x048
VK_I        = 0x049
VK_J        = 0x04A
VK_K        = 0x04B
VK_L        = 0x04C
VK_M        = 0x04D
VK_N        = 0x04E
VK_O        = 0x04F
VK_P        = 0x050
VK_Q        = 0x051
VK_R        = 0x052
VK_S        = 0x053
VK_T        = 0x054
VK_U        = 0x055
VK_V        = 0x056
VK_W        = 0x057
VK_X        = 0x058
VK_Y        = 0x059
VK_Z        = 0x05A
VK_LWIN     = 0x05B
VK_RWIN     = 0x05C
VK_APPS     = 0x05D
VK_SLEEP    = 0x05F
VK_NUMPAD0  = 0x060
VK_NUMPAD1  = 0x061
VK_NUMPAD2  = 0x062
VK_NUMPAD3  = 0x063
VK_NUMPAD4  = 0x064
VK_NUMPAD5  = 0x065
VK_NUMPAD6  = 0x066
VK_NUMPAD7  = 0x067
VK_NUMPAD8  = 0x068
VK_NUMPAD9  = 0x069
VK_MULTIPLY = 0x06A
VK_ADD      = 0x06B
VK_SEPARATOR= 0x06C
VK_SUBTRACT = 0x06D
VK_DECIMAL  = 0x06E
VK_DIVIDE   = 0x06F
VK_F1       = 0x070
VK_F2       = 0x071
VK_F3       = 0x072
VK_F4       = 0x073
VK_F5       = 0x074
VK_F6       = 0x075
VK_F7       = 0x076
VK_F8       = 0x077
VK_F9       = 0x078
VK_F10      = 0x079
VK_F11      = 0x07A
VK_F12      = 0x07B
VK_F13      = 0x07C
VK_F14      = 0x07D
VK_F15      = 0x07E
VK_F16      = 0x07F
VK_F17      = 0x080
VK_F18      = 0x081
VK_F19      = 0x082
VK_F20      = 0x083
VK_F21      = 0x084
VK_F22      = 0x085
VK_F23      = 0x086
VK_F24      = 0x087
VK_NUMLOCK  = 0x090
VK_SCROLL   = 0x091

# NEC PC-9800 kbd definitions

VK_OEM_NEC_EQUAL  = 0x092   # "=" key on numpad

# Fujitsu/OASYS kbd definitions

VK_OEM_FJ_JISHO   = 0x092   # "Dictionary" key
VK_OEM_FJ_MASSHOU = 0x093   # "Unregister word" key
VK_OEM_FJ_TOUROKU = 0x094   # "Register word" key
VK_OEM_FJ_LOYA    = 0x095   # "Left OYAYUBI" key
VK_OEM_FJ_ROYA    = 0x096   # "Right OYAYUBI" key

# VK_L*  VK_R* - left and right Alt, Ctrl and Shift virtual keys.
# Used only as parameters to GetAsyncKeyState() and GetKeyState().
# No other API or message will distinguish left and right keys in this way.

VK_LSHIFT   = 0x0A0
VK_RSHIFT   = 0x0A1
VK_LCONTROL = 0x0A2
VK_RCONTROL = 0x0A3
VK_LMENU    = 0x0A4
VK_RMENU    = 0x0A5
VK_BROWSER_BACK        = 0x0A6
VK_BROWSER_FORWARD     = 0x0A7
VK_BROWSER_REFRESH     = 0x0A8
VK_BROWSER_STOP        = 0x0A9
VK_BROWSER_SEARCH      = 0x0AA
VK_BROWSER_FAVORITES   = 0x0AB
VK_BROWSER_HOME        = 0x0AC
VK_VOLUME_MUTE         = 0x0AD
VK_VOLUME_DOWN         = 0x0AE
VK_VOLUME_UP           = 0x0AF
VK_MEDIA_NEXT_TRACK    = 0x0B0
VK_MEDIA_PREV_TRACK    = 0x0B1
VK_MEDIA_STOP          = 0x0B2
VK_MEDIA_PLAY_PAUSE    = 0x0B3
VK_LAUNCH_MAIL         = 0x0B4
VK_LAUNCH_MEDIA_SELECT = 0x0B5
VK_LAUNCH_APP1         = 0x0B6
VK_LAUNCH_APP2         = 0x0B7
VK_OEM_1        = 0x0BA   # ";:" for US
VK_OEM_PLUS     = 0x0BB   # "+" any country
VK_OEM_COMMA    = 0x0BC   # "," any country
VK_OEM_MINUS    = 0x0BD   # "-" any country
VK_OEM_PERIOD   = 0x0BE   # "." any country
VK_OEM_2        = 0x0BF   # "/" for US
VK_OEM_3        = 0x0C0   # "`~" for US
VK_OEM_4        = 0x0DB  # "[{" for US
VK_OEM_5        = 0x0DC  # "\|" for US
VK_OEM_6        = 0x0DD  # "]}" for US
VK_OEM_7        = 0x0DE  # """" for US
VK_OEM_8        = 0x0DF
VK_OEM_AX       = 0x0E1  # "AX" key on Japanese AX kbd
VK_OEM_102      = 0x0E2  # "<>" or "\|" on RT 102-key kbd.
VK_ICO_HELP     = 0x0E3  # Help key on ICO
VK_ICO_00       = 0x0E4  # 00 key on ICO
VK_PROCESSKEY   = 0x0E5
VK_ICO_CLEAR    = 0x0E6
VK_PACKET       = 0x0E7

# Nokia/Ericsson definitions

VK_OEM_RESET    = 0x0E9
VK_OEM_JUMP     = 0x0EA
VK_OEM_PA1      = 0x0EB
VK_OEM_PA2      = 0x0EC
VK_OEM_PA3      = 0x0ED
VK_OEM_WSCTRL   = 0x0EE
VK_OEM_CUSEL    = 0x0EF
VK_OEM_ATTN     = 0x0F0
VK_OEM_FINISH   = 0x0F1
VK_OEM_COPY     = 0x0F2
VK_OEM_AUTO     = 0x0F3
VK_OEM_ENLW     = 0x0F4
VK_OEM_BACKTAB  = 0x0F5

VK_ATTN         = 0x0F6
VK_CRSEL        = 0x0F7
VK_EXSEL        = 0x0F8
VK_EREOF        = 0x0F9
VK_PLAY         = 0x0FA
VK_ZOOM         = 0x0FB
VK_NONAME       = 0x0FC
VK_PA1          = 0x0FD
VK_OEM_CLEAR    = 0x0FE



# SetWindowsHook() codes
WH_MIN             = -1
WH_MSGFILTER       = -1
WH_JOURNALRECORD   = 0
WH_JOURNALPLAYBACK = 1
WH_KEYBOARD        = 2
WH_GETMESSAGE      = 3
WH_CALLWNDPROC     = 4
WH_CBT             = 5
WH_SYSMSGFILTER    = 6
WH_MOUSE           = 7
WH_HARDWARE        = 8
WH_DEBUG           = 9
WH_SHELL           = 10
WH_FOREGROUNDIDLE  = 11
WH_CALLWNDPROCRET  = 12
WH_KEYBOARD_LL     = 13
WH_MOUSE_LL        = 14
WH_MAX             = 14   # depending on Windows version

WH_MINHOOK         = WH_MIN
WH_MAXHOOK         = WH_MAX

# Hook Codes
HC_ACTION      = 0
HC_GETNEXT     = 1
HC_SKIP        = 2
HC_NOREMOVE    = 3
HC_NOREM       = HC_NOREMOVE
HC_SYSMODALON  = 4
HC_SYSMODALOFF = 5

# CBT Hook Codes
HCBT_MOVESIZE     = 0
HCBT_MINMAX       = 1
HCBT_QS           = 2
HCBT_CREATEWND    = 3
HCBT_DESTROYWND   = 4
HCBT_ACTIVATE     = 5
HCBT_CLICKSKIPPED = 6
HCBT_KEYSKIPPED   = 7
HCBT_SYSCOMMAND   = 8
HCBT_SETFOCUS     = 9

HSHELL_WINDOWCREATED       = 1
HSHELL_WINDOWDESTROYED     = 2
HSHELL_ACTIVATESHELLWINDOW = 3
HSHELL_WINDOWACTIVATED     = 4
HSHELL_GETMINRECT          = 5
HSHELL_REDRAW              = 6
HSHELL_TASKMAN             = 7
HSHELL_LANGUAGE            = 8
HSHELL_ACCESSIBILITYSTATE  = 11
HSHELL_APPCOMMAND          = 12
HSHELL_WINDOWREPLACED      = 13

# wparam for HSHELL_ACCESSIBILITYSTATE
ACCESS_STICKYKEYS = 0x00001
ACCESS_FILTERKEYS = 0x00002
ACCESS_MOUSEKEYS  = 0x00003

# cmd for HSHELL_APPCOMMAND and WM_APPCOMMAND
APPCOMMAND_BROWSER_BACKWARD     = 1
APPCOMMAND_BROWSER_FORWARD      = 2
APPCOMMAND_BROWSER_REFRESH      = 3
APPCOMMAND_BROWSER_STOP         = 4
APPCOMMAND_BROWSER_SEARCH       = 5
APPCOMMAND_BROWSER_FAVORITES    = 6
APPCOMMAND_BROWSER_HOME         = 7
APPCOMMAND_VOLUME_MUTE          = 8
APPCOMMAND_VOLUME_DOWN          = 9
APPCOMMAND_VOLUME_UP            = 10
APPCOMMAND_MEDIA_NEXTTRACK      = 11
APPCOMMAND_MEDIA_PREVIOUSTRACK  = 12
APPCOMMAND_MEDIA_STOP           = 13
APPCOMMAND_MEDIA_PLAY_PAUSE     = 14
APPCOMMAND_LAUNCH_MAIL          = 15
APPCOMMAND_LAUNCH_MEDIA_SELECT  = 16
APPCOMMAND_LAUNCH_APP1          = 17
APPCOMMAND_LAUNCH_APP2          = 18
APPCOMMAND_BASS_DOWN            = 19
APPCOMMAND_BASS_BOOST           = 20
APPCOMMAND_BASS_UP              = 21
APPCOMMAND_TREBLE_DOWN          = 22
APPCOMMAND_TREBLE_UP            = 23
APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24
APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25
APPCOMMAND_MICROPHONE_VOLUME_UP   = 26
APPCOMMAND_HELP                   = 27
APPCOMMAND_FIND                   = 28
APPCOMMAND_NEW                    = 29
APPCOMMAND_OPEN                   = 30
APPCOMMAND_CLOSE                  = 31
APPCOMMAND_SAVE                   = 32
APPCOMMAND_PRINT                  = 33
APPCOMMAND_UNDO                   = 34
APPCOMMAND_REDO                   = 35
APPCOMMAND_COPY                   = 36
APPCOMMAND_CUT                    = 37
APPCOMMAND_PASTE                  = 38
APPCOMMAND_REPLY_TO_MAIL          = 39
APPCOMMAND_FORWARD_MAIL           = 40
APPCOMMAND_SEND_MAIL              = 41
APPCOMMAND_SPELL_CHECK            = 42
APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43
APPCOMMAND_MIC_ON_OFF_TOGGLE      = 44
APPCOMMAND_CORRECTION_LIST        = 45
APPCOMMAND_MEDIA_PLAY             = 46
APPCOMMAND_MEDIA_PAUSE            = 47
APPCOMMAND_MEDIA_RECORD           = 48
APPCOMMAND_MEDIA_FAST_FORWARD     = 49
APPCOMMAND_MEDIA_REWIND           = 50
APPCOMMAND_MEDIA_CHANNEL_UP       = 51
APPCOMMAND_MEDIA_CHANNEL_DOWN     = 52

FAPPCOMMAND_MOUSE = 0x008000
FAPPCOMMAND_KEY   = 0
FAPPCOMMAND_OEM   = 0x001000
FAPPCOMMAND_MASK  = 0x00F000

# Low level hook flags

LLKHF_EXTENDED = KF_EXTENDED / 256
LLKHF_INJECTED = 0x000000010
LLKHF_ALTDOWN  = KF_ALTDOWN / 256
LLKHF_UP       = KF_UP / 256
LLMHF_INJECTED = 0x000000001

# Keyboard Layout API
HKL_PREV = 0
HKL_NEXT = 1

KLF_ACTIVATE       = 0x000000001
KLF_SUBSTITUTE_OK  = 0x000000002
KLF_UNLOADPREVIOUS = 0x000000004
KLF_REORDER        = 0x000000008
KLF_REPLACELANG    = 0x000000010
KLF_NOTELLSHELL    = 0x000000080
KLF_SETFORPROCESS  = 0x000000100
KLF_SHIFTLOCK      = 0x000010000
KLF_RESET          = 0x040000000

# Bits in wParam of WM_INPUTLANGCHANGEREQUEST message
INPUTLANGCHANGE_SYSCHARSET = 0x00001
INPUTLANGCHANGE_FORWARD    = 0x00002
INPUTLANGCHANGE_BACKWARD   = 0x00004

# Size of KeyboardLayoutName (number of characters), including nul terminator
KL_NAMELENGTH = 9

# Values for resolution parameter of GetMouseMovePointsEx
GMMP_USE_DISPLAY_POINTS         = 1
GMMP_USE_HIGH_RESOLUTION_POINTS = 2



# Desktop-specific access flags
DESKTOP_READOBJECTS      = 0x00001
DESKTOP_CREATEWINDOW     = 0x00002
DESKTOP_CREATEMENU       = 0x00004
DESKTOP_HOOKCONTROL      = 0x00008
DESKTOP_JOURNALRECORD    = 0x00010
DESKTOP_JOURNALPLAYBACK  = 0x00020
DESKTOP_ENUMERATE        = 0x00040
DESKTOP_WRITEOBJECTS     = 0x00080
DESKTOP_SWITCHDESKTOP    = 0x00100

# Desktop-specific control flags
DF_ALLOWOTHERACCOUNTHOOK = 0x00001





# Windowstation-specific access flags
WINSTA_ENUMDESKTOPS      = 0x00001
WINSTA_READATTRIBUTES    = 0x00002
WINSTA_ACCESSCLIPBOARD   = 0x00004
WINSTA_CREATEDESKTOP     = 0x00008
WINSTA_WRITEATTRIBUTES   = 0x00010
WINSTA_ACCESSGLOBALATOMS = 0x00020
WINSTA_EXITWINDOWS       = 0x00040
WINSTA_ENUMERATE         = 0x00100
WINSTA_READSCREEN        = 0x00200

# Windowstation-specific attribute flags
WSF_VISIBLE              = 0x00001





UOI_FLAGS    = 1
UOI_NAME     = 2
UOI_TYPE     = 3
UOI_USER_SID = 4





# Window field offsets for GetWindowLong() and GetWindowWord()
GWL_WNDPROC    = -4
GWL_HINSTANCE  = -6
GWL_HWNDPARENT = -8
GWL_STYLE      = -16
GWL_EXSTYLE    = -20
GWL_USERDATA   = -21
GWL_ID         = -12

GWLP_WNDPROC    = -4
GWLP_HINSTANCE  = -6
GWLP_HWNDPARENT = -8
GWLP_USERDATA   = -21
GWLP_ID         = -12

# Class field offsets for GetClassLong() and GetClassWord()
GCL_MENUNAME      = -8
GCL_HBRBACKGROUND = -10
GCL_HCURSOR       = -12
GCL_HICON         = -14
GCL_HMODULE       = -16
GCL_CBWNDEXTRA    = -18
GCL_CBCLSEXTRA    = -20
GCL_WNDPROC       = -24
GCL_STYLE         = -26
GCW_ATOM          = -32
GCL_HICONSM       = -34

GCLP_MENUNAME      = -8
GCLP_HBRBACKGROUND = -10
GCLP_HCURSOR       = -12
GCLP_HICON         = -14
GCLP_HMODULE       = -16
GCLP_WNDPROC       = -24
GCLP_HICONSM       = -34


# codes passed in WPARAM for WM_WTSSESSION_CHANGE

WTS_CONSOLE_CONNECT        = 1
WTS_CONSOLE_DISCONNECT     = 2
WTS_REMOTE_CONNECT         = 3
WTS_REMOTE_DISCONNECT      = 4
WTS_SESSION_LOGON          = 5
WTS_SESSION_LOGOFF         = 6
WTS_SESSION_LOCK           = 7
WTS_SESSION_UNLOCK         = 8
WTS_SESSION_REMOTE_CONTROL = 9

# WH_MSGFILTER Filter Proc Codes
MSGF_DIALOGBOX  = 0
MSGF_MESSAGEBOX = 1
MSGF_MENU       = 2
MSGF_MOVE       = 3
MSGF_SIZE       = 4
MSGF_SCROLLBAR  = 5
MSGF_NEXTWINDOW = 6
MSGF_MAX        = 8
MSGF_USER       = 4096

# NOTE: All Message Numbers below 0x00400 are RESERVED.

# Window Messages
WM_NULL     = 0x00
WM_CREATE   = 0x01
WM_DESTROY  = 0x02
WM_MOVE     = 0x03
WM_SIZE     = 0x05

WM_ACTIVATE = 0x06
#
# WM_ACTIVATE state values

WA_INACTIVE    = 0
WA_ACTIVE      = 1
WA_CLICKACTIVE = 2

WM_SETFOCUS         = 0x07
WM_KILLFOCUS        = 0x08
WM_ENABLE           = 0x0A
WM_SETREDRAW        = 0x0B
WM_SETTEXT          = 0x0C
WM_GETTEXT          = 0x0D
WM_GETTEXTLENGTH    = 0x0E
WM_PAINT            = 0x0F
WM_CLOSE            = 0x010
WM_QUERYENDSESSION  = 0x011
WM_QUIT             = 0x012
WM_QUERYOPEN        = 0x013
WM_ERASEBKGND       = 0x014
WM_SYSCOLORCHANGE   = 0x015
WM_ENDSESSION       = 0x016
WM_SHOWWINDOW       = 0x018
WM_WININICHANGE     = 0x01A
WM_SETTINGCHANGE    = WM_WININICHANGE
WM_DEVMODECHANGE    = 0x01B
WM_ACTIVATEAPP      = 0x01C
WM_FONTCHANGE       = 0x01D
WM_TIMECHANGE       = 0x01E
WM_CANCELMODE       = 0x01F
WM_SETCURSOR        = 0x020
WM_MOUSEACTIVATE    = 0x021
WM_CHILDACTIVATE    = 0x022
WM_QUEUESYNC        = 0x023
WM_GETMINMAXINFO    = 0x024
WM_PAINTICON        = 0x026
WM_ICONERASEBKGND   = 0x027
WM_NEXTDLGCTL       = 0x028
WM_SPOOLERSTATUS    = 0x02A
WM_DRAWITEM         = 0x02B
WM_MEASUREITEM      = 0x02C
WM_DELETEITEM       = 0x02D
WM_VKEYTOITEM       = 0x02E
WM_CHARTOITEM       = 0x02F
WM_SETFONT          = 0x030
WM_GETFONT          = 0x031
WM_SETHOTKEY        = 0x032
WM_GETHOTKEY        = 0x033
WM_QUERYDRAGICON    = 0x037
WM_COMPAREITEM      = 0x039
WM_GETOBJECT        = 0x03D
WM_COMPACTING       = 0x041
WM_OTHERWINDOWCREATED   = 0x042  # no longer suported
WM_OTHERWINDOWDESTROYED = 0x043  # no longer suported
WM_COMMNOTIFY           = 0x044  # no longer suported
WM_WINDOWPOSCHANGING = 0x046
WM_WINDOWPOSCHANGED  = 0x047
WM_POWER             = 0x048

# notifications passed in low word of lParam on WM_COMMNOTIFY messages
CN_RECEIVE  = 0x01
CN_TRANSMIT = 0x02
CN_EVENT    = 0x04

# wParam for WM_POWER window message and DRV_POWER driver notification
PWR_OK             = 1
PWR_FAIL           = -1
PWR_SUSPENDREQUEST = 1
PWR_SUSPENDRESUME  = 2
PWR_CRITICALRESUME = 3

WM_COPYDATA                   = 0x04A
WM_CANCELJOURNAL              = 0x04B
WM_NOTIFY                     = 0x04E
WM_INPUTLANGUAGECHANGEREQUEST = 0x050
WM_INPUTLANGCHANGEREQUEST     = 0x050
WM_INPUTLANGUAGECHANGE        = 0x051
WM_INPUTLANGCHANGE            = 0x051
WM_TCARD                      = 0x052
WM_HELP                       = 0x053
WM_USERCHANGED                = 0x054
WM_NOTIFYFORMAT               = 0x055

WM_CONTEXTMENU      = 0x007B
WM_STYLECHANGING    = 0x007C
WM_STYLECHANGED     = 0x007D
WM_DISPLAYCHANGE    = 0x007E

WM_GETICON          = 0x007F
WM_SETICON          = 0x0080
WM_NCCREATE         = 0x0081
WM_NCDESTROY        = 0x0082
WM_NCCALCSIZE       = 0x0083
WM_NCHITTEST        = 0x0084
WM_NCPAINT          = 0x0085
WM_NCACTIVATE       = 0x0086
WM_GETDLGCODE       = 0x0087
WM_SYNCPAINT        = 0x0088
WM_NCMOUSEMOVE      = 0x00A0
WM_NCLBUTTONDOWN    = 0x00A1
WM_NCLBUTTONUP      = 0x00A2
WM_NCLBUTTONDBLCLK  = 0x00A3
WM_NCRBUTTONDOWN    = 0x00A4
WM_NCRBUTTONUP      = 0x00A5
WM_NCRBUTTONDBLCLK  = 0x00A6
WM_NCMBUTTONDOWN    = 0x00A7
WM_NCMBUTTONUP      = 0x00A8
WM_NCMBUTTONDBLCLK  = 0x00A9
WM_NCXBUTTONDOWN    = 0x00AB
WM_NCXBUTTONUP      = 0x00AC
WM_NCXBUTTONDBLCLK  = 0x00AD
WM_INPUT            = 0x00FF
WM_KEYFIRST         = 0x0100
WM_KEYDOWN          = 0x0100
WM_KEYUP            = 0x0101
WM_CHAR             = 0x0102
WM_DEADCHAR         = 0x0103
WM_SYSKEYDOWN       = 0x0104
WM_SYSKEYUP         = 0x0105
WM_SYSCHAR          = 0x0106
WM_SYSDEADCHAR      = 0x0107
WM_UNICHAR          = 0x00109
WM_KEYLAST          = 0x00109
UNICODE_NOCHAR      = 0x00FFFF
WM_INITDIALOG       = 0x0110
WM_COMMAND          = 0x0111
WM_SYSCOMMAND       = 0x0112
WM_TIMER            = 0x0113
WM_HSCROLL          = 0x0114
WM_VSCROLL          = 0x0115
WM_INITMENU         = 0x0116
WM_INITMENUPOPUP    = 0x0117
WM_MENUSELECT       = 0x011F
WM_MENUCHAR         = 0x0120
WM_ENTERIDLE        = 0x0121
WM_MENURBUTTONUP    = 0x00122
WM_MENUDRAG         = 0x00123
WM_MENUGETOBJECT    = 0x00124
WM_UNINITMENUPOPUP  = 0x00125
WM_MENUCOMMAND      = 0x00126
WM_CHANGEUISTATE    = 0x00127
WM_UPDATEUISTATE    = 0x00128
WM_QUERYUISTATE     = 0x00129
WM_CTLCOLORMSGBOX   = 0x0132
WM_CTLCOLOREDIT     = 0x0133
WM_CTLCOLORLISTBOX  = 0x0134
WM_CTLCOLORBTN      = 0x0135
WM_CTLCOLORDLG      = 0x0136
WM_CTLCOLORSCROLLBAR= 0x0137
WM_CTLCOLORSTATIC   = 0x0138
WM_MOUSEFIRST       = 0x0200
WM_MOUSEMOVE        = 0x0200
WM_LBUTTONDOWN      = 0x0201
WM_LBUTTONUP        = 0x0202
WM_LBUTTONDBLCLK    = 0x0203
WM_RBUTTONDOWN      = 0x0204
WM_RBUTTONUP        = 0x0205
WM_RBUTTONDBLCLK    = 0x0206
WM_MBUTTONDOWN      = 0x0207
WM_MBUTTONUP        = 0x0208
WM_MBUTTONDBLCLK    = 0x0209
WM_MOUSEWHEEL       = 0x020A
WM_XBUTTONDOWN      = 0x020B
WM_XBUTTONUP        = 0x020C
WM_XBUTTONDBLCLK    = 0x020D
WM_MOUSELAST        = 0x020D
WM_PARENTNOTIFY     = 0x0210
WM_ENTERMENULOOP    = 0x0211
WM_EXITMENULOOP     = 0x0212

WM_SIZING           = 0x0214
WM_CAPTURECHANGED   = 0x0215
WM_MOVING           = 0x0216

WM_POWERBROADCAST   = 0x0218
WM_DEVICECHANGE     = 0x0219
WM_MDICREATE        = 0x0220
WM_MDIDESTROY       = 0x0221
WM_MDIACTIVATE      = 0x0222
WM_MDIRESTORE       = 0x0223
WM_MDINEXT          = 0x0224
WM_MDIMAXIMIZE      = 0x0225
WM_MDITILE          = 0x0226
WM_MDICASCADE       = 0x0227
WM_MDIICONARRANGE   = 0x0228
WM_MDIGETACTIVE     = 0x0229
WM_MDISETMENU       = 0x0230
WM_ENTERSIZEMOVE    = 0x0231
WM_EXITSIZEMOVE     = 0x0232
WM_DROPFILES        = 0x0233
WM_MDIREFRESHMENU   = 0x0234

WM_MOUSEHOVER        = 0x02A1
WM_MOUSELEAVE        = 0x02A3
WM_WTSSESSION_CHANGE = 0x002B1
WM_TABLET_FIRST      = 0x002c0
WM_TABLET_LAST       = 0x002df

WM_CUT              = 0x0300
WM_COPY             = 0x0301
WM_PASTE            = 0x0302
WM_CLEAR            = 0x0303
WM_UNDO             = 0x0304
WM_RENDERFORMAT     = 0x0305
WM_RENDERALLFORMATS = 0x0306
WM_DESTROYCLIPBOARD = 0x0307
WM_DRAWCLIPBOARD    = 0x0308
WM_PAINTCLIPBOARD   = 0x0309
WM_VSCROLLCLIPBOARD = 0x030A
WM_SIZECLIPBOARD    = 0x030B
WM_ASKCBFORMATNAME  = 0x030C
WM_CHANGECBCHAIN    = 0x030D
WM_HSCROLLCLIPBOARD = 0x030E
WM_QUERYNEWPALETTE  = 0x030F
WM_PALETTEISCHANGING= 0x0310
WM_PALETTECHANGED   = 0x0311
WM_HOTKEY           = 0x0312
WM_PRINT            = 0x0317
WM_PRINTCLIENT      = 0x0318
WM_APPCOMMAND       = 0x0319
WM_THEMECHANGED     = 0x031A

WM_HANDHELDFIRST    = 0x00358
WM_HANDHELDLAST     = 0x0035F
WM_AFXFIRST         = 0x00360
WM_AFXLAST          = 0x0037F

WM_PENWINFIRST      = 0x0380
WM_PENWINLAST       = 0x038F

WM_APP              = 0x008000

WMSZ_LEFT        = 1
WMSZ_RIGHT       = 2
WMSZ_TOP         = 3
WMSZ_TOPLEFT     = 4
WMSZ_TOPRIGHT    = 5
WMSZ_BOTTOM      = 6
WMSZ_BOTTOMLEFT  = 7
WMSZ_BOTTOMRIGHT = 8

PBT_APMQUERYSUSPEND         = 0x00000
PBT_APMQUERYSTANDBY         = 0x00001
PBT_APMQUERYSUSPENDFAILED   = 0x00002
PBT_APMQUERYSTANDBYFAILED   = 0x00003
PBT_APMSUSPEND              = 0x00004
PBT_APMSTANDBY              = 0x00005
PBT_APMRESUMECRITICAL       = 0x00006
PBT_APMRESUMESUSPEND        = 0x00007
PBT_APMRESUMESTANDBY        = 0x00008
PBTF_APMRESUMEFROMFAILURE   = 0x000000001
PBT_APMBATTERYLOW           = 0x00009
PBT_APMPOWERSTATUSCHANGE    = 0x0000A
PBT_APMOEMEVENT             = 0x0000B
PBT_APMRESUMEAUTOMATIC      = 0x00012

# Broadcast Special Message Recipient list
BSM_ALLCOMPONENTS       = 0x000000000
BSM_VXDS                = 0x000000001
BSM_NETDRIVER           = 0x000000002
BSM_INSTALLABLEDRIVERS  = 0x000000004
BSM_APPLICATIONS        = 0x000000008
BSM_ALLDESKTOPS         = 0x000000010

# Broadcast Special Message Flags
BSF_QUERY               = 0x000000001
BSF_IGNORECURRENTTASK   = 0x000000002
BSF_FLUSHDISK           = 0x000000004
BSF_NOHANG              = 0x000000008
BSF_POSTMESSAGE         = 0x000000010
BSF_FORCEIFHUNG         = 0x000000020
BSF_NOTIMEOUTIFNOTHUNG  = 0x000000040
BSF_ALLOWSFW            = 0x000000080
BSF_SENDNOTIFYMESSAGE   = 0x000000100
BSF_RETURNHDESK         = 0x000000200
BSF_LUID                = 0x000000400

BROADCAST_QUERY_DENY    = 0x0424D5144  # Return this value to deny a query.

DEVICE_NOTIFY_WINDOW_HANDLE         = 0x000000000
DEVICE_NOTIFY_SERVICE_HANDLE        = 0x000000001
DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x000000004

# WM_SETICON / WM_GETICON Type Codes
ICON_SMALL  = 0
ICON_BIG    = 1
ICON_SMALL2 = 2

# WM_SYNCTASK Commands
ST_BEGINSWP = 0
ST_ENDSWP   = 1

# WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
HTERROR       = -2
HTTRANSPARENT = -1
HTNOWHERE     = 0
HTCLIENT      = 1
HTCAPTION     = 2
HTSYSMENU     = 3
HTGROWBOX     = 4
HTSIZE        = HTGROWBOX
HTMENU        = 5
HTHSCROLL     = 6
HTVSCROLL     = 7
HTMINBUTTON   = 8
HTMAXBUTTON   = 9
HTLEFT        = 10
HTRIGHT       = 11
HTTOP         = 12
HTTOPLEFT     = 13
HTTOPRIGHT    = 14
HTBOTTOM      = 15
HTBOTTOMLEFT  = 16
HTBOTTOMRIGHT = 17
HTBORDER      = 18
HTREDUCE      = HTMINBUTTON
HTZOOM        = HTMAXBUTTON
HTSIZEFIRST   = HTLEFT
HTSIZELAST    = HTBOTTOMRIGHT
HTOBJECT      = 19
HTCLOSE       = 20
HTHELP        = 21

# SendMessageTimeout values
SMTO_NORMAL             = 0x00000
SMTO_BLOCK              = 0x00001
SMTO_ABORTIFHUNG        = 0x00002
SMTO_NOTIMEOUTIFNOTHUNG = 0x00008

# WM_MOUSEACTIVATE Return Codes
MA_ACTIVATE         = 1
MA_ACTIVATEANDEAT   = 2
MA_NOACTIVATE       = 3
MA_NOACTIVATEANDEAT = 4

# WM_SIZE message wParam values
SIZE_RESTORED  = 0
SIZE_MINIMIZED = 1
SIZE_MAXIMIZED = 2
SIZE_MAXSHOW   = 3
SIZE_MAXHIDE   = 4

# Obsolete constant names
SIZENORMAL     = SIZE_RESTORED
SIZEICONIC     = SIZE_MINIMIZED
SIZEFULLSCREEN = SIZE_MAXIMIZED
SIZEZOOMSHOW   = SIZE_MAXSHOW
SIZEZOOMHIDE   = SIZE_MAXHIDE

# WM_NCCALCSIZE return flags
WVR_ALIGNTOP    = 0x010
WVR_ALIGNLEFT   = 0x020
WVR_ALIGNBOTTOM = 0x040
WVR_ALIGNRIGHT  = 0x080
WVR_HREDRAW     = 0x0100
WVR_VREDRAW     = 0x0200
WVR_REDRAW      = WVR_HREDRAW or WVR_VREDRAW
WVR_VALIDRECTS  = 0x0400

# Key State Masks for Mouse Messages
MK_LBUTTON  = 0x00001
MK_RBUTTON  = 0x00002
MK_SHIFT    = 0x00004
MK_CONTROL  = 0x00008
MK_MBUTTON  = 0x00010
MK_XBUTTON1 = 0x00020
MK_XBUTTON2 = 0x00040

TME_HOVER     = 0x000000001
TME_LEAVE     = 0x000000002
TME_NONCLIENT = 0x000000010
TME_QUERY     = 0x040000000
TME_CANCEL    = 0x080000000
HOVER_DEFAULT = 0x0FFFFFFFF

# Window Styles
WS_OVERLAPPED      = 0x00
WS_POPUP           = 0x080000000
WS_CHILD           = 0x040000000
WS_MINIMIZE        = 0x020000000
WS_VISIBLE         = 0x010000000
WS_DISABLED        = 0x008000000
WS_CLIPSIBLINGS    = 0x004000000
WS_CLIPCHILDREN    = 0x002000000
WS_MAXIMIZE        = 0x001000000
WS_CAPTION         = 0x000C00000  # WS_BORDER or WS_DLGFRAME
WS_BORDER          = 0x000800000
WS_DLGFRAME        = 0x000400000
WS_VSCROLL         = 0x000200000
WS_HSCROLL         = 0x000100000
WS_SYSMENU         = 0x000080000
WS_THICKFRAME      = 0x000040000
WS_GROUP           = 0x000020000
WS_TABSTOP         = 0x000010000
WS_MINIMIZEBOX     = 0x000020000
WS_MAXIMIZEBOX     = 0x000010000
WS_TILED           = WS_OVERLAPPED
WS_ICONIC          = WS_MINIMIZE
WS_SIZEBOX         = WS_THICKFRAME
WS_OVERLAPPEDWIN   = WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME
WS_OVERLAPPEDWINDOW= WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX
WS_TILEDWINDOW     = WS_OVERLAPPEDWINDOW
WS_POPUPWINDOW     = WS_POPUP or WS_BORDER or WS_SYSMENU
WS_CHILDWINDOW     = WS_CHILD

WS_EX_DLGMODALFRAME   = 0x000000001
WS_EX_NOPARENTNOTIFY  = 0x000000004
WS_EX_TOPMOST         = 0x000000008
WS_EX_ACCEPTFILES     = 0x000000010
WS_EX_TRANSPARENT     = 0x000000020
WS_EX_MDICHILD        = 0x000000040
WS_EX_TOOLWINDOW      = 0x000000080
WS_EX_SMCAPTION       = 0x000000080
WS_EX_WINDOWEDGE      = 0x000000100
WS_EX_CLIENTEDGE      = 0x000000200
WS_EX_CONTEXTHELP     = 0x000000400
WS_EX_RIGHT           = 0x000001000
WS_EX_LEFT            = 0x000000000
WS_EX_RTLREADING      = 0x000002000
WS_EX_LTRREADING      = 0x000000000
WS_EX_LEFTSCROLLBAR   = 0x000004000
WS_EX_RIGHTSCROLLBAR  = 0x000000000
WS_EX_CONTROLPARENT   = 0x000010000
WS_EX_STATICEDGE      = 0x000020000
WS_EX_APPWINDOW       = 0x000040000
WS_EX_OVERLAPPEDWINDOW= WS_EX_WINDOWEDGE or WS_EX_CLIENTEDGE
WS_EX_PALETTEWINDOW   = WS_EX_WINDOWEDGE or WS_EX_TOOLWINDOW or WS_EX_TOPMOST
WS_EX_LAYERED         = 0x000080000
WS_EX_NOINHERITLAYOUT = 0x000100000
WS_EX_LAYOUTRTL       = 0x000400000
WS_EX_COMPOSITED      = 0x002000000
WS_EX_NOACTIVATE      = 0x008000000

CS_VREDRAW         = 0x01
CS_HREDRAW         = 0x02
CS_KEYCVTWINDOW    = 0x04
CS_DBLCLKS         = 0x08
CS_OWNDC           = 0x020
CS_CLASSDC         = 0x040
CS_PARENTDC        = 0x080
CS_NOKEYCVT        = 0x0100
CS_NOCLOSE         = 0x0200
CS_SAVEBITS        = 0x0800
CS_BYTEALIGNCLIENT = 0x000001000
CS_BYTEALIGNWINDOW = 0x000002000
CS_PUBLICCLASS     = 0x000004000
CS_GLOBALCLASS     = CS_PUBLICCLASS
CS_IME             = 0x000010000
CS_DROPSHADOW      = 0x000020000

CF_TEXT            =  1
CF_BITMAP          =  2
CF_METAFILEPICT    =  3
CF_SYLK            =  4
CF_DIF             =  5
CF_TIFF            =  6
CF_OEMTEXT         =  7
CF_DIB             =  8
CF_PALETTE         =  9
CF_PENDATA         = 10
CF_RIFF            = 11
CF_WAVE            = 12
CF_UNICODETEXT     = 13
CF_ENHMETAFILE     = 14
CF_HDROP           = 15
CF_LOCALE          = 16
CF_DIBV5           = 17
CF_MAX             = 18   # varies by Windows version

CF_OWNERDISPLAY    = 0x00080
CF_DSPTEXT         = 0x00081
CF_DSPBITMAP       = 0x00082
CF_DSPMETAFILEPICT = 0x00083
CF_DSPENHMETAFILE  = 0x0008E

CF_PRIVATEFIRST    = 0x00200
CF_PRIVATELAST     = 0x002FF

CF_GDIOBJFIRST     = 0x00300
CF_GDIOBJLAST      = 0x003FF

FVIRTKEY   = 0x01        # Assumed to be == TRUE
FNOINVERT  = 0x02
FSHIFT     = 0x04
FCONTROL   = 0x08
FALT       = 0x010

WPF_SETMINPOSITION       = 0x00001
WPF_RESTORETOMAXIMIZED   = 0x00002
WPF_ASYNCWINDOWPLACEMENT = 0x00004

# Owner draw control types
ODT_MENU      = 1
ODT_LISTBOX   = 2
ODT_COMBOBOX  = 3
ODT_BUTTON    = 4
ODT_STATIC    = 5

# Owner draw actions
ODA_DRAWENTIRE = 0x01
ODA_SELECT     = 0x02
ODA_FOCUS      = 0x04

# Owner draw state
ODS_SELECTED     = 0x00001
ODS_GRAYED       = 0x00002
ODS_DISABLED     = 0x00004
ODS_CHECKED      = 0x00008
ODS_FOCUS        = 0x00010
ODS_DEFAULT      = 0x00020
ODS_COMBOBOXEDIT = 0x01000
ODS_HOTLIGHT     = 0x00040
ODS_INACTIVE     = 0x00080
ODS_NOACCEL      = 0x00100
ODS_NOFOCUSRECT  = 0x00200

# GetQueueStatus flags
QS_KEY            = 0x00001
QS_MOUSEMOVE      = 0x00002
QS_MOUSEBUTTON    = 0x00004
QS_POSTMESSAGE    = 0x00008
QS_TIMER          = 0x00010
QS_PAINT          = 0x00020
QS_SENDMESSAGE    = 0x00040
QS_HOTKEY         = 0x00080
QS_ALLPOSTMESSAGE = 0x00100
QS_RAWINPUT       = 0x00400
QS_MOUSE          = QS_MOUSEMOVE or QS_MOUSEBUTTON
QS_INPUT          = QS_MOUSE or QS_KEY
QS_INPUTXP        = QS_MOUSE or QS_KEY or QS_RAWINPUT # Windows XP and later
QS_ALLEVENTS      = QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY
QS_ALLINPUT       = QS_INPUT or QS_POSTMESSAGE or QS_TIMER or QS_PAINT or QS_HOTKEY or QS_SENDMESSAGE

# PeekMessage() Options
PM_NOREMOVE  = 0x00000
PM_REMOVE    = 0x00001
PM_NOYIELD   = 0x00002
PM_QS_INPUT       = QS_INPUT * 256
PM_QS_POSTMESSAGE = (QS_POSTMESSAGE or QS_HOTKEY or QS_TIMER) * 256
PM_QS_PAINT       = QS_PAINT * 256
PM_QS_SENDMESSAGE = QS_SENDMESSAGE * 256

IDHOT_SNAPWINDOW  = -1    # SHIFT-PRINTSCRN
IDHOT_SNAPDESKTOP = -2    # PRINTSCRN

ENDSESSION_LOGOFF = 0x080000000

EWX_LOGOFF      = 0x00000
EWX_SHUTDOWN    = 0x00001
EWX_REBOOT      = 0x00002
EWX_FORCE       = 0x00004
EWX_POWEROFF    = 0x00008
EWX_FORCEIFHUNG = 0x00010

READAPI    = 0        # Flags for _lopen
WRITEAPI   = 1
READ_WRITE = 2

# Special HWND value for use with PostMessage and SendMessage
HWND_BROADCAST = 0x0FFFFFFFF

# InSendMessageEx return value
ISMEX_NOSEND   = 0x000000000
ISMEX_SEND     = 0x000000001
ISMEX_NOTIFY   = 0x000000002
ISMEX_CALLBACK = 0x000000004
ISMEX_REPLIED  = 0x000000008

CW_USEDEFAULT  = 0x080000000

CWP_ALL             = 0x00000
CWP_SKIPINVISIBLE   = 0x00001
CWP_SKIPDISABLED    = 0x00002
CWP_SKIPTRANSPARENT = 0x00004

# SetWindowPos Flags
SWP_NOSIZE         = 0x00001
SWP_NOMOVE         = 0x00002
SWP_NOZORDER       = 0x00004
SWP_NOREDRAW       = 0x00008
SWP_NOACTIVATE     = 0x00010
SWP_FRAMECHANGED   = 0x00020  # The frame changed: send WM_NCCALCSIZE
SWP_SHOWWINDOW     = 0x00040
SWP_HIDEWINDOW     = 0x00080
SWP_NOCOPYBITS     = 0x00100
SWP_NOOWNERZORDER  = 0x00200  # Don#t do owner Z ordering
SWP_NOSENDCHANGING = 0x00400  # Don#t send WM_WINDOWPOSCHANGING
SWP_DRAWFRAME      = SWP_FRAMECHANGED
SWP_NOREPOSITION   = SWP_NOOWNERZORDER
SWP_DEFERERASE     = 0x02000
SWP_ASYNCWINDOWPOS = 0x04000

HWND_DESKTOP   = 0

HWND_TOP       = 0
HWND_BOTTOM    = 1
HWND_TOPMOST   = 0x0FFFFFFFF
HWND_NOTOPMOST = 0x0FFFFFFFE
HWND_MESSAGE   = 0x0FFFFFFFD

DLGWINDOWEXTRA = 30        # Window extra bytes needed for private dialog classes

KEYEVENTF_EXTENDEDKEY = 0x00001
KEYEVENTF_KEYUP       = 0x00002
KEYEVENTF_UNICODE     = 0x00004
KEYEVENTF_SCANCODE    = 0x00008

MOUSEEVENTF_MOVE       = 0x01 # mouse move
MOUSEEVENTF_LEFTDOWN   = 0x02 # left button down
MOUSEEVENTF_LEFTUP     = 0x04 # left button up
MOUSEEVENTF_RIGHTDOWN  = 0x08 # right button down
MOUSEEVENTF_RIGHTUP    = 0x010 # right button up
MOUSEEVENTF_MIDDLEDOWN = 0x020 # middle button down
MOUSEEVENTF_MIDDLEUP   = 0x040 # middle button up
MOUSEEVENTF_WHEEL      = 0x00800 # wheel button rolled
MOUSEEVENTF_ABSOLUTE   = 0x000008000 # absolute move

# GetSystemMetrics() codes
SM_CXSCREEN            = 0
SM_CYSCREEN            = 1
SM_CXVSCROLL           = 2
SM_CYHSCROLL           = 3
SM_CYCAPTION           = 4
SM_CXBORDER            = 5
SM_CYBORDER            = 6
SM_CXDLGFRAME          = 7
SM_CYDLGFRAME          = 8
SM_CYVTHUMB            = 9
SM_CXHTHUMB            = 10
SM_CXICON              = 11
SM_CYICON              = 12
SM_CXCURSOR            = 13
SM_CYCURSOR            = 14
SM_CYMENU              = 15
SM_CXFULLSCREEN        = 16
SM_CYFULLSCREEN        = 17
SM_CYKANJIWINDOW       = 18
SM_MOUSEPRESENT        = 19
SM_CYVSCROLL           = 20
SM_CXHSCROLL           = 21
SM_DEBUG               = 22
SM_SWAPBUTTON          = 23
SM_RESERVED1           = 24
SM_RESERVED2           = 25
SM_RESERVED3           = 26
SM_RESERVED4           = 27
SM_CXMIN               = 28
SM_CYMIN               = 29
SM_CXSIZE              = 30
SM_CYSIZE              = 31
SM_CXFRAME             = 32
SM_CYFRAME             = 33
SM_CXMINTRACK          = 34
SM_CYMINTRACK          = 35
SM_CXDOUBLECLK         = 36
SM_CYDOUBLECLK         = 37
SM_CXICONSPACING       = 38
SM_CYICONSPACING       = 39
SM_MENUDROPALIGNMENT   = 40
SM_PENWINDOWS          = 41
SM_DBCSENABLED         = 42
SM_CMOUSEBUTTONS       = 43

SM_CXFIXEDFRAME        = SM_CXDLGFRAME  # win40 name change
SM_CYFIXEDFRAME        = SM_CYDLGFRAME  # win40 name change
SM_CXSIZEFRAME         = SM_CXFRAME     # win40 name change
SM_CYSIZEFRAME         = SM_CYFRAME     # win40 name change

SM_SECURE              = 44
SM_CXEDGE              = 45
SM_CYEDGE              = 46
SM_CXMINSPACING        = 47
SM_CYMINSPACING        = 48
SM_CXSMICON            = 49
SM_CYSMICON            = 50
SM_CYSMCAPTION         = 51
SM_CXSMSIZE            = 52
SM_CYSMSIZE            = 53
SM_CXMENUSIZE          = 54
SM_CYMENUSIZE          = 55
SM_ARRANGE             = 56
SM_CXMINIMIZED         = 57
SM_CYMINIMIZED         = 58
SM_CXMAXTRACK          = 59
SM_CYMAXTRACK          = 60
SM_CXMAXIMIZED         = 61
SM_CYMAXIMIZED         = 62
SM_NETWORK             = 63
SM_CLEANBOOT           = 67
SM_CXDRAG              = 68
SM_CYDRAG              = 69
SM_SHOWSOUNDS          = 70
SM_CXMENUCHECK         = 71   # Use instead of GetMenuCheckMarkDimensions()
SM_CYMENUCHECK         = 72
SM_SLOWMACHINE         = 73
SM_MIDEASTENABLED      = 74
SM_MOUSEWHEELPRESENT   = 75
SM_XVIRTUALSCREEN      = 76
SM_YVIRTUALSCREEN      = 77
SM_CXVIRTUALSCREEN     = 78
SM_CYVIRTUALSCREEN     = 79
SM_CMONITORS           = 80
SM_SAMEDISPLAYFORMAT   = 81
SM_IMMENABLED          = 82
SM_CXFOCUSBORDER       = 83
SM_CYFOCUSBORDER       = 84
SM_TABLETPC            = 86
SM_MEDIACENTER         = 87
SM_CMETRICS            = 88   # varies by Windows version
SM_REMOTESESSION       = 0x01000
SM_SHUTTINGDOWN        = 0x02000
SM_REMOTECONTROL       = 0x02001

PMB_ACTIVE = 0x000000001

# return codes for WM_MENUCHAR
MNC_IGNORE  = 0
MNC_CLOSE   = 1
MNC_EXECUTE = 2
MNC_SELECT  = 3

MNS_NOCHECK      = 0x080000000
MNS_MODELESS     = 0x040000000
MNS_DRAGDROP     = 0x020000000
MNS_AUTODISMISS  = 0x010000000
MNS_NOTIFYBYPOS  = 0x008000000
MNS_CHECKORBMP   = 0x004000000

MIM_MAXHEIGHT       = 0x000000001
MIM_BACKGROUND      = 0x000000002
MIM_HELPID          = 0x000000004
MIM_MENUDATA        = 0x000000008
MIM_STYLE           = 0x000000010
MIM_APPLYTOSUBMENUS = 0x080000000

# WM_MENUDRAG return values
MND_CONTINUE = 0
MND_ENDMENU  = 1

# MENUGETOBJECTINFO dwFlags values
MNGOF_TOPGAP     = 0x000000001
MNGOF_BOTTOMGAP  = 0x000000002

# WM_MENUGETOBJECT return values
MNGO_NOINTERFACE = 0x000000000
MNGO_NOERROR     = 0x000000001

HBMMENU_CALLBACK        = 0x0FFFFFFFF # BITS(-1)
HBMMENU_SYSTEM          =  1
HBMMENU_MBAR_RESTORE    =  2
HBMMENU_MBAR_MINIMIZE   =  3
HBMMENU_MBAR_CLOSE      =  5
HBMMENU_MBAR_CLOSE_D    =  6
HBMMENU_MBAR_MINIMIZE_D =  7
HBMMENU_POPUP_CLOSE     =  8
HBMMENU_POPUP_RESTORE   =  9
HBMMENU_POPUP_MAXIMIZE  = 10
HBMMENU_POPUP_MINIMIZE  = 11

# Flags for TrackPopupMenu
TPM_LEFTBUTTON   = 0x00000
TPM_RIGHTBUTTON  = 0x00002
TPM_LEFTALIGN    = 0x00000
TPM_CENTERALIGN  = 0x00004
TPM_RIGHTALIGN   = 0x00008

TPM_TOPALIGN     = 0x00000
TPM_VCENTERALIGN = 0x00010
TPM_BOTTOMALIGN  = 0x00020

TPM_HORIZONTAL   = 0x00000  # Horz alignment matters more
TPM_VERTICAL     = 0x00040  # Vert alignment matters more
TPM_NONOTIFY     = 0x00080  # Don#t send any notification msgs
TPM_RETURNCMD    = 0x00100

TPM_RECURSE         = 0x000001
TPM_HORPOSANIMATION = 0x000400
TPM_HORNEGANIMATION = 0x000800
TPM_VERPOSANIMATION = 0x001000
TPM_VERNEGANIMATION = 0x002000
TPM_NOANIMATION     = 0x004000
TPM_LAYOUTRTL       = 0x008000

# DrawText() Format Flags
DT_TOP                  = 0x00
DT_LEFT                 = 0x00
DT_CENTER               = 0x01
DT_RIGHT                = 0x02
DT_VCENTER              = 0x04
DT_BOTTOM               = 0x08
DT_WORDBREAK            = 0x010
DT_SINGLELINE           = 0x020
DT_EXPANDTABS           = 0x040
DT_TABSTOP              = 0x080
DT_NOCLIP               = 0x0100
DT_EXTERNALLEADING      = 0x0200
DT_CALCRECT             = 0x0400
DT_NOPREFIX             = 0x0800
DT_INTERNAL             = 0x01000
DT_EDITCONTROL          = 0x000002000
DT_PATH_ELLIPSIS        = 0x000004000
DT_END_ELLIPSIS         = 0x000008000
DT_MODIFYSTRING         = 0x000010000
DT_RTLREADING           = 0x000020000
DT_WORD_ELLIPSIS        = 0x000040000
DT_NOFULLWIDTHCHARBREAK = 0x000080000
DT_HIDEPREFIX           = 0x000100000
DT_PREFIXONLY           = 0x000200000

# Monolithic state-drawing routine
# Image type
DST_COMPLEX    = 0x000000000
DST_TEXT       = 0x000000001
DST_PREFIXTEXT = 0x000000002
DST_ICON       = 0x000000003
DST_BITMAP     = 0x000000004

# State type
DSS_NORMAL     = 0x000000000
DSS_UNION      = 0x000000010  # Gray string appearance
DSS_DISABLED   = 0x000000020
DSS_MONO       = 0x000000080
DSS_HIDEPREFIX = 0x000000200
DSS_PREFIXONLY = 0x000000400
DSS_RIGHT      = 0x000008000

DCX_WINDOW          = 0x01
DCX_CACHE           = 0x02
DCX_NORESETATTRS    = 0x04
DCX_CLIPCHILDREN    = 0x08
DCX_CLIPSIBLINGS    = 0x010
DCX_PARENTCLIP      = 0x020

DCX_EXCLUDERGN      = 0x040
DCX_INTERSECTRGN    = 0x080

DCX_EXCLUDEUPDATE   = 0x0100
DCX_INTERSECTUPDATE = 0x0200

DCX_LOCKWINDOWUPDATE= 0x0400

DCX_NORECOMPUTE     = 0x0100000
DCX_VALIDATE        = 0x0200000

RDW_INVALIDATE      = 0x01
RDW_INTERNALPAINT   = 0x02
RDW_ERASE           = 0x04

RDW_VALIDATE        = 0x08
RDW_NOINTERNALPAINT = 0x010
RDW_NOERASE         = 0x020

RDW_NOCHILDREN      = 0x040
RDW_ALLCHILDREN     = 0x080

RDW_UPDATENOW       = 0x0100
RDW_ERASENOW        = 0x0200

RDW_FRAME           = 0x0400
RDW_NOFRAME         = 0x0800

SW_SCROLLCHILDREN = 0x00001
SW_INVALIDATE     = 0x00002
SW_ERASE          = 0x00004
SW_SMOOTHSCROLL   = 0x00010

# EnableScrollBar() flags
ESB_ENABLE_BOTH   = 0x00
ESB_DISABLE_BOTH  = 0x03

ESB_DISABLE_LEFT  = 0x01
ESB_DISABLE_RIGHT = 0x02

ESB_DISABLE_UP    = 0x01
ESB_DISABLE_DOWN  = 0x02

ESB_DISABLE_LTUP  = ESB_DISABLE_LEFT
ESB_DISABLE_RTDN  = ESB_DISABLE_RIGHT

# MessageBox() Flags
MB_OK                        = 0x000000000
MB_OKCANCEL                  = 0x000000001
MB_ABORTRETRYIGNORE          = 0x000000002
MB_YESNOCANCEL               = 0x000000003
MB_YESNO                     = 0x000000004
MB_RETRYCANCEL               = 0x000000005
MB_CANCELTRYCONTINUE         = 0x000000006

MB_ICONHAND                  = 0x000000010
MB_ICONQUESTION              = 0x000000020
MB_ICONEXCLAMATION           = 0x000000030
MB_ICONASTERISK              = 0x000000040

MB_USERICON                  = 0x000000080
MB_ICONWARNING               = MB_ICONEXCLAMATION
MB_ICONERROR                 = MB_ICONHAND

MB_ICONINFORMATION           = MB_ICONASTERISK
MB_ICONSTOP                  = MB_ICONHAND

MB_DEFBUTTON1                = 0x000000000
MB_DEFBUTTON2                = 0x000000100
MB_DEFBUTTON3                = 0x000000200
MB_DEFBUTTON4                = 0x000000300

MB_APPLMODAL                 = 0x000000000
MB_SYSTEMMODAL               = 0x000001000
MB_TASKMODAL                 = 0x000002000
MB_HELP                      = 0x000004000  # Help Button

MB_NOFOCUS                   = 0x000008000
MB_SETFOREGROUND             = 0x000010000
MB_DEFAULT_DESKTOP_ONLY      = 0x000020000

MB_TOPMOST                   = 0x000040000
MB_RIGHT                     = 0x000080000
MB_RTLREADING                = 0x000100000

MB_SERVICE_NOTIFICATION      = 0x000200000
MB_SERVICE_NOTIFICATION_NT3X = 0x000040000

MB_TYPEMASK                  = 0x00000000F
MB_ICONMASK                  = 0x0000000F0
MB_DEFMASK                   = 0x000000F00
MB_MODEMASK                  = 0x000003000
MB_MISCMASK                  = 0x00000C000

# Color Types
CTLCOLOR_MSGBOX    = 0
CTLCOLOR_EDIT      = 1
CTLCOLOR_LISTBOX   = 2
CTLCOLOR_BTN       = 3
CTLCOLOR_DLG       = 4
CTLCOLOR_SCROLLBAR = 5
CTLCOLOR_STATIC    = 6
CTLCOLOR_MAX       = 8   # three bits max

COLOR_SCROLLBAR           = 0
COLOR_BACKGROUND          = 1
COLOR_ACTIVECAPTION       = 2
COLOR_INACTIVECAPTION     = 3
COLOR_MENU                = 4
COLOR_MSGBOX              = 4
COLOR_WINDOW              = 5
COLOR_WINDOWFRAME         = 6
COLOR_MENUTEXT            = 7
COLOR_MSGBOXTEXT          = 7
COLOR_WINDOWTEXT          = 8
COLOR_CAPTIONTEXT         = 9
COLOR_ACTIVEBORDER        = 10
COLOR_INACTIVEBORDER      = 11
COLOR_APPWORKSPACE        = 12
COLOR_HIGHLIGHT           = 13
COLOR_HIGHLIGHTTEXT       = 14
COLOR_BTNFACE             = 15
COLOR_BTNSHADOW           = 16
COLOR_GRAYTEXT            = 17
COLOR_BTNTEXT             = 18
COLOR_INACTIVECAPTIONTEXT = 19
COLOR_BTNHIGHLIGHT        = 20

COLOR_3DDKSHADOW          = 21
COLOR_3DLIGHT             = 22
COLOR_INFOTEXT            = 23
COLOR_INFOBK              = 24

COLOR_HOTLIGHT                = 26
COLOR_GRADIENTACTIVECAPTION   = 27
COLOR_GRADIENTINACTIVECAPTION = 28
COLOR_MENUHILIGHT             = 29
COLOR_MENUBAR                 = 30

COLOR_DESKTOP             = COLOR_BACKGROUND
COLOR_3DFACE              = COLOR_BTNFACE
COLOR_3DSHADOW            = COLOR_BTNSHADOW
COLOR_3DHIGHLIGHT         = COLOR_BTNHIGHLIGHT
COLOR_3DHILIGHT           = COLOR_BTNHIGHLIGHT
COLOR_BTNHILIGHT          = COLOR_BTNHIGHLIGHT

# GetWindow() Constants
GW_HWNDFIRST    = 0
GW_HWNDLAST     = 1
GW_HWNDNEXT     = 2
GW_HWNDPREV     = 3
GW_OWNER        = 4
GW_CHILD        = 5
GW_ENABLEDPOPUP = 6
GW_MAX          = 6

# Menu flags for Add/Check/EnableMenuItem()
MF_INSERT          = 0x00
MF_CHANGE          = 0x080
MF_APPEND          = 0x0100
MF_DELETE          = 0x0200
MF_REMOVE          = 0x01000

MF_BYCOMMAND       = 0x00
MF_BYPOSITION      = 0x0400

MF_SEPARATOR       = 0x0800

MF_ENABLED         = 0x00
MF_GRAYED          = 0x01
MF_DISABLED        = 0x02

MF_UNCHECKED       = 0x00
MF_CHECKED         = 0x08
MF_USECHECKBITMAPS = 0x0200

MF_STRING          = 0x00
MF_BITMAP          = 0x04
MF_OWNERDRAW       = 0x0100

MF_POPUP           = 0x010
MF_MENUBARBREAK    = 0x020
MF_MENUBREAK       = 0x040

MF_UNHILITE        = 0x00
MF_HILITE          = 0x080

MF_DEFAULT         = 0x000001000
MF_SYSMENU         = 0x000002000
MF_HELP            = 0x000004000
MF_RIGHTJUSTIFY    = 0x000004000
MF_MOUSESELECT     = 0x000008000

MF_END             = 0x080

MFT_STRING         = MF_STRING
MFT_BITMAP         = MF_BITMAP
MFT_MENUBARBREAK   = MF_MENUBARBREAK
MFT_MENUBREAK      = MF_MENUBREAK
MFT_OWNERDRAW      = MF_OWNERDRAW
MFT_RADIOCHECK     = 0x000000200
MFT_SEPARATOR      = MF_SEPARATOR
MFT_RIGHTORDER     = 0x000002000
MFT_RIGHTJUSTIFY   = MF_RIGHTJUSTIFY

# Menu flags for Add/Check/EnableMenuItem()
MFS_GRAYED    = 0x000000003
MFS_DISABLED  = MFS_GRAYED
MFS_CHECKED   = MF_CHECKED
MFS_HILITE    = MF_HILITE
MFS_ENABLED   = MF_ENABLED
MFS_UNCHECKED = MF_UNCHECKED
MFS_UNHILITE  = MF_UNHILITE
MFS_DEFAULT   = MF_DEFAULT

# System Menu Command Values
SC_SIZE         = 0x0F000
SC_MOVE         = 0x0F010
SC_MINIMIZE     = 0x0F020
SC_MAXIMIZE     = 0x0F030
SC_NEXTWINDOW   = 0x0F040
SC_PREVWINDOW   = 0x0F050
SC_CLOSE        = 0x0F060
SC_VSCROLL      = 0x0F070
SC_HSCROLL      = 0x0F080
SC_MOUSEMENU    = 0x0F090
SC_KEYMENU      = 0x0F100
SC_ARRANGE      = 0x0F110
SC_RESTORE      = 0x0F120
SC_TASKLIST     = 0x0F130
SC_SCREENSAVE   = 0x0F140
SC_HOTKEY       = 0x0F150
SC_DEFAULT      = 0x0F160
SC_MONITORPOWER = 0x0F170
SC_CONTEXTHELP  = 0x0F180
SC_SEPARATOR    = 0x0F00F

# Obsolete names
SC_ICON        = SC_MINIMIZE
SC_ZOOM        = SC_MAXIMIZE

# Standard Cursor IDs
IDC_ARROW        = 32512
IDC_IBEAM        = 32513
IDC_WAIT         = 32514
IDC_CROSS        = 32515
IDC_UPARROW      = 32516
IDC_SIZE         = 32640
IDC_ICON         = 32641
IDC_SIZENWSE     = 32642
IDC_SIZENESW     = 32643
IDC_SIZEWE       = 32644
IDC_SIZENS       = 32645
IDC_SIZEALL      = 32646
IDC_NO           = 32648
IDC_HAND         = 32649
IDC_APPSTARTING  = 32650
IDC_HELP         = 32651

# OEM Resource Ordinal Numbers
OBM_CLOSE        = 32754
OBM_UPARROW      = 32753
OBM_DNARROW      = 32752
OBM_RGARROW      = 32751
OBM_LFARROW      = 32750
OBM_REDUCE       = 32749
OBM_ZOOM         = 32748
OBM_RESTORE      = 32747
OBM_REDUCED      = 32746
OBM_ZOOMD        = 32745
OBM_RESTORED     = 32744
OBM_UPARROWD     = 32743
OBM_DNARROWD     = 32742
OBM_RGARROWD     = 32741
OBM_LFARROWD     = 32740
OBM_MNARROW      = 32739
OBM_COMBO        = 32738
OBM_UPARROWI     = 32737
OBM_DNARROWI     = 32736
OBM_RGARROWI     = 32735
OBM_LFARROWI     = 32734

OBM_OLD_CLOSE    = 32767
OBM_SIZE         = 32766
OBM_OLD_UPARROW  = 32765
OBM_OLD_DNARROW  = 32764
OBM_OLD_RGARROW  = 32763
OBM_OLD_LFARROW  = 32762
OBM_BTSIZE       = 32761
OBM_CHECK        = 32760
OBM_CHECKBOXES   = 32759
OBM_BTNCORNERS   = 32758
OBM_OLD_REDUCE   = 32757
OBM_OLD_ZOOM     = 32756
OBM_OLD_RESTORE  = 32755

OCR_NORMAL      = 32512
OCR_IBEAM       = 32513
OCR_WAIT        = 32514
OCR_CROSS       = 32515
OCR_UP          = 32516
OCR_SIZE        = 32640   # OBSOLETE: use OCR_SIZEALL
OCR_ICON        = 32641   # OBSOLETE: use OCR_NORMAL
OCR_SIZENWSE    = 32642
OCR_SIZENESW    = 32643
OCR_SIZEWE      = 32644
OCR_SIZENS      = 32645
OCR_SIZEALL     = 32646
OCR_ICOCUR      = 32647   # OBSOLETE: use OIC_WINLOGO
OCR_NO          = 32648
OCR_HAND        = 32649
OCR_APPSTARTING = 32650

OIC_SAMPLE      = 32512
OIC_HAND        = 32513
OIC_QUES        = 32514
OIC_BANG        = 32515
OIC_NOTE        = 32516
OIC_WINLOGO     = 32517
OIC_WARNING     = OIC_BANG
OIC_ERROR       = OIC_HAND
OIC_INFORMATION = OIC_NOTE

ORD_LANGDRIVER = 1 # The ordinal number for the entry point of language drivers.

# Standard Icon IDs
IDI_APPLICATION = 32512
IDI_HAND        = 32513
IDI_ERROR       = IDI_HAND
IDI_QUESTION    = 32514
IDI_EXCLAMATION = 32515
IDI_WARNING     = IDI_EXCLAMATION
IDI_ASTERISK    = 32516
IDI_INFORMATION = IDI_ASTERISK
IDI_WINLOGO     = 32517

# Dialog Box Command IDs
IDOK       = 1
IDCANCEL   = 2
IDABORT    = 3
IDRETRY    = 4
IDIGNORE   = 5
IDYES      = 6
IDNO       = 7
IDCLOSE    = 8
IDHELP     = 9
IDTRYAGAIN = 10
IDCONTINUE = 11

IDTIMEOUT  = 32000


# Control Manager Structures and Definitions

# Edit Control Styles
ES_LEFT        = 0x00
ES_CENTER      = 0x01
ES_RIGHT       = 0x02
ES_MULTILINE   = 0x04
ES_UPPERCASE   = 0x08
ES_LOWERCASE   = 0x010
ES_PASSWORD    = 0x020
ES_AUTOVSCROLL = 0x040
ES_AUTOHSCROLL = 0x080
ES_NOHIDESEL   = 0x0100
ES_OEMCONVERT  = 0x0400
ES_READONLY    = 0x0800
ES_WANTRETURN  = 0x01000
ES_NUMBER      = 0x02000

# Edit Control Notification Codes
EN_SETFOCUS  = 0x0100
EN_KILLFOCUS = 0x0200
EN_CHANGE    = 0x0300
EN_UPDATE    = 0x0400
EN_ERRSPACE  = 0x0500
EN_MAXTEXT   = 0x0501
EN_HSCROLL   = 0x0601
EN_VSCROLL   = 0x0602

EN_ALIGN_LTR_EC     = 0x00700
EN_ALIGN_RTL_EC     = 0x00701

# Edit control EM_SETMARGIN parameters
EC_LEFTMARGIN  = 0x000000001
EC_RIGHTMARGIN = 0x000000002
EC_USEFONTINFO = 0x00000FFFF

# wParam of EM_GET/SETIMESTATUS
EMSIS_COMPOSITIONSTRING        = 0x00001

# lParam for EMSIS_COMPOSITIONSTRING
EIMES_GETCOMPSTRATONCE         = 0x00001
EIMES_CANCELCOMPSTRINFOCUS     = 0x00002
EIMES_COMPLETECOMPSTRKILLFOCUS = 0x00004

# Edit Control Messages
EM_GETSEL              = 0x0B0
EM_SETSEL              = 0x0B1
EM_GETRECT             = 0x0B2
EM_SETRECT             = 0x0B3
EM_SETRECTNP           = 0x0B4
EM_SCROLL              = 0x0B5
EM_LINESCROLL          = 0x0B6
EM_SCROLLCARET         = 0x0B7
EM_GETMODIFY           = 0x0B8
EM_SETMODIFY           = 0x0B9
EM_GETLINECOUNT        = 0x0BA
EM_LINEINDEX           = 0x0BB
EM_SETHANDLE           = 0x0BC
EM_GETHANDLE           = 0x0BD
EM_GETTHUMB            = 0x0BE
EM_LINELENGTH          = 0x0C1
EM_REPLACESEL          = 0x0C2
EM_GETLINE             = 0x0C4
EM_LIMITTEXT           = 0x0C5
EM_CANUNDO             = 0x0C6
EM_UNDO                = 0x0C7
EM_FMTLINES            = 0x0C8
EM_LINEFROMCHAR        = 0x0C9
EM_SETTABSTOPS         = 0x0CB
EM_SETPASSWORDCHAR     = 0x0CC
EM_EMPTYUNDOBUFFER     = 0x0CD
EM_GETFIRSTVISIBLELINE = 0x0CE
EM_SETREADONLY         = 0x0CF
EM_SETWORDBREAKPROC    = 0x0D0
EM_GETWORDBREAKPROC    = 0x0D1
EM_GETPASSWORDCHAR     = 0x0D2
EM_SETMARGINS          = 0x0D3
EM_GETMARGINS          = 0x0D4
EM_SETLIMITTEXT        = EM_LIMITTEXT
EM_GETLIMITTEXT        = 0x0D5
EM_POSFROMCHAR         = 0x0D6
EM_CHARFROMPOS         = 0x0D7
EM_SETIMESTATUS        = 0x0D8
EM_GETIMESTATUS        = 0x0D9

# EDITWORDBREAKPROC code values
WB_LEFT        = 0
WB_RIGHT       = 1
WB_ISDELIMITER = 2

# Button Control Styles
BS_TEXT            = 0x00
BS_PUSHBUTTON      = 0x00
BS_DEFPUSHBUTTON   = 0x01
BS_DEFAULT         = BS_DEFPUSHBUTTON
BS_CHECKBOX        = 0x02
BS_AUTOCHECKBOX    = 0x03
BS_RADIOBUTTON     = 0x04
BS_3STATE          = 0x05
BS_AUTO3STATE      = 0x06
BS_GROUPBOX        = 0x07
BS_USERBUTTON      = 0x08
BS_AUTORADIOBUTTON = 0x09
BS_OWNERDRAW       = 0x0B
BS_LEFTTEXT        = 0x020
BS_ICON            = 0x040
BS_BITMAP          = 0x080
BS_LEFT            = 0x0100
BS_RIGHT           = 0x0200
BS_CENTER          = 0x0300
BS_TOP             = 0x0400
BS_BOTTOM          = 0x0800
BS_VCENTER         = 0x0C00
BS_PUSHLIKE        = 0x000001000
BS_MULTILINE       = 0x000002000
BS_NOTIFY          = 0x000004000
BS_FLAT            = 0x000008000
BS_RIGHTBUTTON     = BS_LEFTTEXT

# User Button Notification Codes
BN_CLICKED        = 0
BN_PAINT          = 1
BN_HILITE         = 2
BN_UNHILITE       = 3
BN_DISABLE        = 4
BN_DOUBLECLICKED  = 5
BN_SETFOCUS       = 6
BN_KILLFOCUS      = 7
BN_DBLCLK         = BN_DOUBLECLICKED

# Button Control Messages
BST_UNCHECKED     = 0x000
BST_CHECKED       = 0x001
BST_INDETERMINATE = 0x002
BST_PUSHED        = 0x004

BM_GETCHECK = 0x0F0
BM_SETCHECK = 0x0F1
BM_GETSTATE = 0x0F2
BM_SETSTATE = 0x0F3
BM_SETSTYLE = 0x0F4
BM_CLICK    = 0x0F5
BM_GETIMAGE = 0x0F6
BM_SETIMAGE = 0x0F7

# Static Control Constants
SS_LEFT            = 0x000000000
SS_CENTER          = 0x000000001
SS_RIGHT           = 0x000000002
SS_ICON            = 0x000000003
SS_BLACKRECT       = 0x000000004
SS_GRAYRECT        = 0x000000005
SS_WHITERECT       = 0x000000006
SS_BLACKFRAME      = 0x000000007
SS_GRAYFRAME       = 0x000000008
SS_WHITEFRAME      = 0x000000009
SS_USERITEM        = 0x00000000A
SS_SIMPLE          = 0x00000000B
SS_LEFTNOWORDWRAP  = 0x00000000C
SS_NOWORDWRAP      = SS_LEFTNOWORDWRAP
SS_OWNERDRAW       = 0x00000000D
SS_BITMAP          = 0x00000000E
SS_ENHMETAFILE     = 0x00000000F
SS_ETCHEDHORZ      = 0x000000010
SS_ETCHEDVERT      = 0x000000011
SS_ETCHEDFRAME     = 0x000000012
SS_REALSIZECONTROL = 0x000000040
SS_NOPREFIX        = 0x000000080  # Don#t do "" character translation
SS_NOTIFY          = 0x000000100
SS_CENTERIMAGE     = 0x000000200
SS_RIGHTJUST       = 0x000000400
SS_REALSIZEIMAGE   = 0x000000800
SS_REALSIZE        = SS_REALSIZEIMAGE
SS_SUNKEN          = 0x000001000
SS_ENDELLIPSIS     = 0x000004000
SS_PATHELLIPSIS    = 0x000008000
SS_WORDELLIPSIS    = 0x00000C000
SS_ELLIPSISMASK    = 0x00000C000

# Static Control Mesages
STM_SETICON  = 0x0170
STM_GETICON  = 0x0171
STM_SETIMAGE = 0x0172
STM_GETIMAGE = 0x0173
STM_MSGMAX   = 0x0174

STN_CLICKED  = 0
STN_DBLCLK   = 1
STN_ENABLE   = 2
STN_DISABLE  = 3

WC_DIALOG = 8002

# Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
DWL_MSGRESULT = 0
DWL_DLGPROC   = 4
DWL_USER      = 8

# DlgDirList, DlgDirListComboBox flags values
DDL_READWRITE = 0x00
DDL_READONLY  = 0x01
DDL_HIDDEN    = 0x02
DDL_SYSTEM    = 0x04
DDL_DIRECTORY = 0x010
DDL_ARCHIVE   = 0x020

DDL_POSTMSGS  = 0x000002000
DDL_DRIVES    = 0x000004000
DDL_EXCLUSIVE = 0x000008000

# Dialog Styles
DS_ABSALIGN      = 0x00001
DS_SYSMODAL      = 0x00002
DS_3DLOOK        = 0x00004
DS_FIXEDSYS      = 0x00008
DS_NOFAILCREATE  = 0x00010
DS_LOCALEDIT     = 0x00020 # Edit items get Local storage.
DS_SETFONT       = 0x00040 # User specified font for Dlg controls
DS_MODALFRAME    = 0x00080 # Can be combined with WS_CAPTION
DS_NOIDLEMSG     = 0x00100 # WM_ENTERIDLE message will not be sent
DS_SETFOREGROUND = 0x00200 # not in win3.1
DS_CONTROL       = 0x00400
DS_CENTER        = 0x00800
DS_CENTERMOUSE   = 0x01000
DS_CONTEXTHELP   = 0x02000

DM_GETDEFID      = WM_USER + 0
DM_SETDEFID      = WM_USER + 1
DM_REPOSITION    = WM_USER + 2
DC_HASDEFID      = 0x0534B

# Dialog Codes
DLGC_WANTARROWS      = 0x01    # Control wants arrow keys
DLGC_WANTTAB         = 0x02    # Control wants tab keys
DLGC_WANTALLKEYS     = 0x04    # Control wants all keys
DLGC_WANTMESSAGE     = 0x04    # Pass message to control
DLGC_HASSETSEL       = 0x08    # Understands EM_SETSEL message
DLGC_DEFPUSHBUTTON   = 0x010   # Default pushbutton
DLGC_UNDEFPUSHBUTTON = 0x020   # Non-default pushbutton
DLGC_RADIOBUTTON     = 0x040   # Radio button
DLGC_WANTCHARS       = 0x080   # Want WM_CHAR messages
DLGC_STATIC          = 0x0100  # Static item: don#t include
DLGC_BUTTON          = 0x02000 # Button item: can be checked

LB_CTLCODE  = 0

# Listbox Return Values
LB_OKAY     = 0
LB_ERR      = -1
LB_ERRSPACE = -2

# The idStaticPath parameter to DlgDirList can have the following values
# ORed if the list box should show other details of the files along with
# the name of the files;
# all other details also will be returned

# Listbox Notification Codes
LBN_ERRSPACE  = -2
LBN_SELCHANGE = 1
LBN_DBLCLK    = 2
LBN_SELCANCEL = 3
LBN_SETFOCUS  = 4
LBN_KILLFOCUS = 5

# Listbox messages
LB_ADDSTRING          = 0x0180
LB_INSERTSTRING       = 0x0181
LB_DELETESTRING       = 0x0182
LB_SELITEMRANGEEX     = 0x0183
LB_RESETCONTENT       = 0x0184
LB_SETSEL             = 0x0185
LB_SETCURSEL          = 0x0186
LB_GETSEL             = 0x0187
LB_GETCURSEL          = 0x0188
LB_GETTEXT            = 0x0189
LB_GETTEXTLEN         = 0x018A
LB_GETCOUNT           = 0x018B
LB_SELECTSTRING       = 0x018C
LB_DIR                = 0x018D
LB_GETTOPINDEX        = 0x018E
LB_FINDSTRING         = 0x018F
LB_GETSELCOUNT        = 0x0190
LB_GETSELITEMS        = 0x0191
LB_SETTABSTOPS        = 0x0192
LB_GETHORIZONTALEXTENT= 0x0193
LB_SETHORIZONTALEXTENT= 0x0194
LB_SETCOLUMNWIDTH     = 0x0195
LB_ADDFILE            = 0x0196
LB_SETTOPINDEX        = 0x0197
LB_GETITEMRECT        = 0x0198
LB_GETITEMDATA        = 0x0199
LB_SETITEMDATA        = 0x019A
LB_SELITEMRANGE       = 0x019B
LB_SETANCHORINDEX     = 0x019C
LB_GETANCHORINDEX     = 0x019D
LB_SETCARETINDEX      = 0x019E
LB_GETCARETINDEX      = 0x019F
LB_SETITEMHEIGHT      = 0x01A0
LB_GETITEMHEIGHT      = 0x01A1
LB_FINDSTRINGEXACT    = 0x01A2
LB_SETLOCALE          = 0x01A5
LB_GETLOCALE          = 0x01A6
LB_SETCOUNT           = 0x01A7
LB_INITSTORAGE        = 0x01A8
LB_ITEMFROMPOINT      = 0x01A9
LB_MULTIPLEADDSTRING  = 0x01B1
LB_GETLISTBOXINFO     = 0x01B2
LB_MSGMAX             = 0x01B3  # depends on Windows version

# Listbox Styles
LBS_NOTIFY            = 0x01
LBS_SORT              = 0x02
LBS_NOREDRAW          = 0x04
LBS_MULTIPLESEL       = 0x08
LBS_OWNERDRAWFIXED    = 0x010
LBS_OWNERDRAWVARIABLE = 0x020
LBS_HASSTRINGS        = 0x040
LBS_USETABSTOPS       = 0x080
LBS_NOINTEGRALHEIGHT  = 0x0100
LBS_MULTICOLUMN       = 0x0200
LBS_WANTKEYBOARDINPUT = 0x0400
LBS_EXTENDEDSEL       = 0x0800
LBS_DISABLENOSCROLL   = 0x000001000
LBS_NODATA            = 0x000002000
LBS_NOSEL             = 0x000004000
LBS_STANDARD          = LBS_NOTIFY or LBS_SORT or WS_VSCROLL or WS_BORDER

# Combo Box return Values
CB_OKAY     = 0
CB_ERR      = -1
CB_ERRSPACE = -2

# Combo Box Notification Codes
CBN_ERRSPACE     = -1
CBN_SELCHANGE    = 1
CBN_DBLCLK       = 2
CBN_SETFOCUS     = 3
CBN_KILLFOCUS    = 4
CBN_EDITCHANGE   = 5
CBN_EDITUPDATE   = 6
CBN_DROPDOWN     = 7
CBN_CLOSEUP      = 8
CBN_SELENDOK     = 9
CBN_SELENDCANCEL = 10
CBN_SELCANCEL    = CBN_SELENDCANCEL

# Combo Box styles
CBS_SIMPLE            = 0x01
CBS_DROPDOWN          = 0x02
CBS_DROPDOWNLIST      = 0x03
CBS_OWNERDRAWFIXED    = 0x010
CBS_OWNERDRAWVARIABLE = 0x020
CBS_AUTOHSCROLL       = 0x040
CBS_OEMCONVERT        = 0x080
CBS_SORT              = 0x0100
CBS_HASSTRINGS        = 0x0200
CBS_NOINTEGRALHEIGHT  = 0x0400
CBS_DISABLENOSCROLL   = 0x0800
CBS_UPPERCASE         = 0x000002000
CBS_LOWERCASE         = 0x000004000

# Combo Box messages
CB_GETEDITSEL            = 0x0140
CB_LIMITTEXT             = 0x0141
CB_SETEDITSEL            = 0x0142
CB_ADDSTRING             = 0x0143
CB_DELETESTRING          = 0x0144
CB_DIR                   = 0x0145
CB_GETCOUNT              = 0x0146
CB_GETCURSEL             = 0x0147
CB_GETLBTEXT             = 0x0148
CB_GETLBTEXTLEN          = 0x0149
CB_INSERTSTRING          = 0x014A
CB_RESETCONTENT          = 0x014B
CB_FINDSTRING            = 0x014C
CB_SELECTSTRING          = 0x014D
CB_SETCURSEL             = 0x014E
CB_SHOWDROPDOWN          = 0x014F
CB_GETITEMDATA           = 0x0150
CB_SETITEMDATA           = 0x0151
CB_GETDROPPEDCONTROLRECT = 0x0152
CB_SETITEMHEIGHT         = 0x0153
CB_GETITEMHEIGHT         = 0x0154
CB_SETEXTENDEDUI         = 0x0155
CB_GETEXTENDEDUI         = 0x0156
CB_GETDROPPEDSTATE       = 0x0157
CB_FINDSTRINGEXACT       = 0x0158
CB_SETLOCALE             = 0x0159
CB_GETLOCALE             = 0x015A
CB_GETTOPINDEX           = 0x015B
CB_SETTOPINDEX           = 0x015C
CB_GETHORIZONTALEXTENT   = 0x015D
CB_SETHORIZONTALEXTENT   = 0x015E
CB_GETDROPPEDWIDTH       = 0x015F
CB_SETDROPPEDWIDTH       = 0x0160
CB_INITSTORAGE           = 0x0161
CB_MULTIPLEADDSTRING     = 0x0163
CB_GETCOMBOBOXINFO       = 0x0164
CB_MSGMAX                = 0x0165  # depends on Windows version

# Scroll Bar Styles
SBS_HORZ                    = 0x00
SBS_VERT                    = 0x01
SBS_TOPALIGN                = 0x02
SBS_LEFTALIGN               = 0x02
SBS_BOTTOMALIGN             = 0x04
SBS_RIGHTALIGN              = 0x04
SBS_SIZEBOXTOPLEFTALIGN     = 0x02
SBS_SIZEBOXBOTTOMRIGHTALIGN = 0x04
SBS_SIZEBOX                 = 0x08
SBS_SIZEGRIP                = 0x010

# Scroll bar messages
SBM_SETPOS           = 0x00E0 # not in win3.1
SBM_GETPOS           = 0x00E1 # not in win3.1
SBM_SETRANGE         = 0x00E2 # not in win3.1
SBM_SETRANGEREDRAW   = 0x00E6 # not in win3.1
SBM_GETRANGE         = 0x00E3 # not in win3.1
SBM_ENABLE_ARROWS    = 0x00E4 # not in win3.1
SBM_SETSCROLLINFO    = 0x00E9
SBM_GETSCROLLINFO    = 0x00EA
SBM_GETSCROLLBARINFO = 0x00EB

MDIS_ALLCHILDSTYLES = 0x01

# wParam values for WM_MDITILE and WM_MDICASCADE messages.
MDITILE_VERTICAL     = 0x00
MDITILE_HORIZONTAL   = 0x01
MDITILE_SKIPDISABLED = 0x02
MDITILE_ZORDER       = 0x04

# Commands to pass WinHelp()
HELP_CONTEXT      = 0x01    # Display topic in ulTopic
HELP_QUIT         = 0x02    # Terminate help
HELP_INDEX        = 0x03    # Display index
HELP_CONTENTS     = 0x03
HELP_HELPONHELP   = 0x04    # Display help on using help
HELP_SETINDEX     = 0x05    # Set current Index for multi index help
HELP_SETCONTENTS  = 0x05
HELP_CONTEXTPOPUP = 0x08
HELP_FORCEFILE    = 0x09
HELP_KEY          = 0x0101  # Display topic for keyword in offabData
HELP_COMMAND      = 0x0102
HELP_PARTIALKEY   = 0x0105
HELP_MULTIKEY     = 0x0201
HELP_SETWINPOS    = 0x0203
HELP_CONTEXTMENU  = 0x0000A
HELP_FINDER       = 0x0000B
HELP_WM_HELP      = 0x0000C
HELP_SETPOPUP_POS = 0x0000D

HELP_TCARD              = 0x000008000
HELP_TCARD_DATA         = 0x000000010
HELP_TCARD_OTHER_CALLER = 0x000000011

# These are in winhelp.h in Win95.
IDH_NO_HELP             = 28440
IDH_MISSING_CONTEXT     = 28441 # Control doesn#t have matching help context
IDH_GENERIC_HELP_BUTTON = 28442 # Property sheet help button
IDH_OK                  = 28443
IDH_CANCEL              = 28444
IDH_HELP                = 28445

GR_GDIOBJECTS  = 0  # Count of GDI objects
GR_USEROBJECTS = 1  # Count of USER objects

# dwFlags for SetWinEventHook
WINEVENT_OUTOFCONTEXT   = 0x00000  # Events are ASYNC
WINEVENT_SKIPOWNTHREAD  = 0x00001  # Don#t call back for events on installer#s thread
WINEVENT_SKIPOWNPROCESS = 0x00002  # Don#t call back for events on installer#s process
WINEVENT_INCONTEXT      = 0x00004  # Events are SYNC, this causes your dll to be injected into every process

# idObject values for WinEventProc and NotifyWinEvent
#
# hwnd + idObject can be used with OLEACC.DLL#s OleGetObjectFromWindow()
# to get an interface pointer to the container.  indexChild is the item
# within the container in question.  Setup a VARIANT with vt VT_I4 and
# lVal the indexChild and pass that in to all methods.  Then you
# are raring to go.
#
# Common object IDs (cookies, only for sending WM_GETOBJECT to get at the
# thing in question).  Positive IDs are reserved for apps (app specific),
# negative IDs are system things and are global, 0 means "just little old
# me".
#
CHILDID_SELF      = 0
INDEXID_OBJECT    = 0
INDEXID_CONTAINER = 0

# Reserved IDs for system objects
OBJID_WINDOW            = 0x000000000
OBJID_SYSMENU           = 0x0FFFFFFFF
OBJID_TITLEBAR          = 0x0FFFFFFFE
OBJID_MENU              = 0x0FFFFFFFD
OBJID_CLIENT            = 0x0FFFFFFFC
OBJID_VSCROLL           = 0x0FFFFFFFB
OBJID_HSCROLL           = 0x0FFFFFFFA
OBJID_SIZEGRIP          = 0x0FFFFFFF9
OBJID_CARET             = 0x0FFFFFFF8
OBJID_CURSOR            = 0x0FFFFFFF7
OBJID_ALERT             = 0x0FFFFFFF6
OBJID_SOUND             = 0x0FFFFFFF5
OBJID_QUERYCLASSNAMEIDX = 0x0FFFFFFF4
OBJID_NATIVEOM          = 0x0FFFFFFF0

# EVENT DEFINITION
EVENT_MIN           = 0x000000001
EVENT_MAX           = 0x07FFFFFFF

#  EVENT_SYSTEM_SOUND
#  Sent when a sound is played.  Currently nothing is generating this, we
#  this event when a system sound (for menus, etc) is played.  Apps
#  generate this, if accessible, when a private sound is played.  For
#  example, if Mail plays a "New Mail" sound.
#
#  System Sounds:
#  (Generated by PlaySoundEvent in USER itself)
#      hwnd            is NULL
#      idObject        is OBJID_SOUND
#      idChild         is sound child ID if one
#  App Sounds:
#  (PlaySoundEvent won#t generate notification; up to app)
#      hwnd + idObject gets interface pointer to Sound object
#      idChild identifies the sound in question
#  are going to be cleaning up the SOUNDSENTRY feature in the control panel
#  and will use this at that time.  Applications implementing WinEvents
#  are perfectly welcome to use it.  Clients of IAccessible* will simply
#  turn around and get back a non-visual object that describes the sound.
#
EVENT_SYSTEM_SOUND              = 0x00001

# EVENT_SYSTEM_ALERT
# System Alerts:
# (Generated by MessageBox() calls for example)
#      hwnd            is hwndMessageBox
#      idObject        is OBJID_ALERT
# App Alerts:
# (Generated whenever)
#      hwnd+idObject gets interface pointer to Alert
#
EVENT_SYSTEM_ALERT              = 0x00002

# EVENT_SYSTEM_FOREGROUND
# Sent when the foreground (active) window changes, even if it is changing
# to another window in the same thread as the previous one.
#      hwnd            is hwndNewForeground
#      idObject        is OBJID_WINDOW
#      idChild    is INDEXID_OBJECT
#
EVENT_SYSTEM_FOREGROUND         = 0x00003

# Menu
#      hwnd            is window (top level window or popup menu window)
#      idObject        is ID of control (OBJID_MENU, OBJID_SYSMENU, OBJID_SELF for popup)
#      idChild         is CHILDID_SELF
#
# EVENT_SYSTEM_MENUSTART
# EVENT_SYSTEM_MENUEND
# For MENUSTART, hwnd+idObject+idChild refers to the control with the menu bar,
#  or the control bringing up the context menu.
#
# Sent when entering into and leaving from menu mode (system, app bar, and
# track popups).
#
EVENT_SYSTEM_MENUSTART          = 0x00004
EVENT_SYSTEM_MENUEND            = 0x00005

# EVENT_SYSTEM_MENUPOPUPSTART
# EVENT_SYSTEM_MENUPOPUPEND
# Sent when a menu popup comes up and just before it is taken down.  Note
# that for a call to TrackPopupMenu(), a client will see EVENT_SYSTEM_MENUSTART
# followed almost immediately by EVENT_SYSTEM_MENUPOPUPSTART for the popup
# being shown.
#
# For MENUPOPUP, hwnd+idObject+idChild refers to the NEW popup coming up, not the
# parent item which is hierarchical.  You can get the parent menu/popup by
# asking for the accParent object.
#
EVENT_SYSTEM_MENUPOPUPSTART     = 0x00006
EVENT_SYSTEM_MENUPOPUPEND       = 0x00007

# EVENT_SYSTEM_CAPTURESTART
# EVENT_SYSTEM_CAPTUREEND
# Sent when a window takes the capture and releases the capture.
#
EVENT_SYSTEM_CAPTURESTART       = 0x00008
EVENT_SYSTEM_CAPTUREEND         = 0x00009

# Move Size
# EVENT_SYSTEM_MOVESIZESTART
# EVENT_SYSTEM_MOVESIZEEND
# Sent when a window enters and leaves move-size dragging mode.
#
EVENT_SYSTEM_MOVESIZESTART      = 0x0000A
EVENT_SYSTEM_MOVESIZEEND        = 0x0000B

# Context Help
# EVENT_SYSTEM_CONTEXTHELPSTART
# EVENT_SYSTEM_CONTEXTHELPEND
# Sent when a window enters and leaves context sensitive help mode.
#
EVENT_SYSTEM_CONTEXTHELPSTART   = 0x0000C
EVENT_SYSTEM_CONTEXTHELPEND     = 0x0000D

# Drag  Drop
# EVENT_SYSTEM_DRAGDROPSTART
# EVENT_SYSTEM_DRAGDROPEND
# Send the START notification just before going into dragdrop loop.  Send
# the END notification just after canceling out.
# Note that it is up to apps and OLE to generate this, since the system
# doesn#t know.  Like EVENT_SYSTEM_SOUND, it will be a while before this
# is prevalent.
#
EVENT_SYSTEM_DRAGDROPSTART      = 0x0000E
EVENT_SYSTEM_DRAGDROPEND        = 0x0000F

# Dialog
# Send the START notification right after the dialog is completely
#  initialized and visible.  Send the END right before the dialog
#  is hidden and goes away.
# EVENT_SYSTEM_DIALOGSTART
# EVENT_SYSTEM_DIALOGEND
#
EVENT_SYSTEM_DIALOGSTART        = 0x00010
EVENT_SYSTEM_DIALOGEND          = 0x00011

# EVENT_SYSTEM_SCROLLING
# EVENT_SYSTEM_SCROLLINGSTART
# EVENT_SYSTEM_SCROLLINGEND
# Sent when beginning and ending the tracking of a scrollbar in a window,
# and also for scrollbar controls.
#
EVENT_SYSTEM_SCROLLINGSTART     = 0x00012
EVENT_SYSTEM_SCROLLINGEND       = 0x00013

# Alt-Tab Window
# Send the START notification right after the switch window is initialized
# and visible.  Send the END right before it is hidden and goes away.
# EVENT_SYSTEM_SWITCHSTART
# EVENT_SYSTEM_SWITCHEND
#
EVENT_SYSTEM_SWITCHSTART        = 0x00014
EVENT_SYSTEM_SWITCHEND          = 0x00015

# EVENT_SYSTEM_MINIMIZESTART
# EVENT_SYSTEM_MINIMIZEEND
# Sent when a window minimizes and just before it restores.
#
EVENT_SYSTEM_MINIMIZESTART      = 0x00016
EVENT_SYSTEM_MINIMIZEEND        = 0x00017

EVENT_CONSOLE_CARET             = 0x04001
EVENT_CONSOLE_UPDATE_REGION     = 0x04002
EVENT_CONSOLE_UPDATE_SIMPLE     = 0x04003
EVENT_CONSOLE_UPDATE_SCROLL     = 0x04004
EVENT_CONSOLE_LAYOUT            = 0x04005
EVENT_CONSOLE_START_APPLICATION = 0x04006
EVENT_CONSOLE_END_APPLICATION   = 0x04007

# Flags for EVENT_CONSOLE_START/END_APPLICATION.
CONSOLE_APPLICATION_16BIT       = 0x00001

# Flags for EVENT_CONSOLE_CARET
CONSOLE_CARET_SELECTION         = 0x00001
CONSOLE_CARET_VISIBLE           = 0x00002

# Object events
#
# The system AND apps generate these.  The system generates these for
# real windows.  Apps generate these for objects within their window which
# act like a separate control, e.g. an item in a list view.
#
# When the system generate them, dwParam2 is always WMOBJID_SELF.  When
# apps generate them, apps put the has-meaning-to-the-app-only ID value
# in dwParam2.
# For all events, if you want detailed accessibility information, callers
# should
#    # Call AccessibleObjectFromWindow() with the hwnd, idObject parameters
#          of the event, and IID_IAccessible as the REFIID, to get back an
#          IAccessible* to talk to
#    # Initialize and fill in a VARIANT as VT_I4 with lVal the idChild
#          parameter of the event.
#    # If idChild isn#t zero, call get_accChild() in the container to see
#          if the child is an object in its own right.  If so, you will get
#          back an IDispatch* object for the child.  You should release the
#          parent, and call QueryInterface() on the child object to get its
#          IAccessible*.  Then you talk directly to the child.  Otherwise,
#          if get_accChild() returns you nothing, you should continue to
#          use the child VARIANT.  You will ask the container for the properties
#          of the child identified by the VARIANT.  In other words, the
#          child in this case is accessible but not a full-blown object.
#          Like a button on a titlebar which is#small# and has no children.
#
# For all EVENT_OBJECT events,
#      hwnd is the dude to Send the WM_GETOBJECT message to (unless NULL,
#          see above for system things)
#      idObject is the ID of the object that can resolve any queries a
#          client might have.  It#s a way to deal with windowless controls,
#          controls that are just drawn on the screen in some larger parent
#          window (like SDM), or standard frame elements of a window.
#      idChild is the piece inside of the object that is affected.  This
#          allows clients to access things that are too small to have full
#          blown objects in their own right.  Like the thumb of a scrollbar.
#          The hwnd/idObject pair gets you to the container, the dude you
#          probably want to talk to most of the time anyway.  The idChild
#          can then be passed into the acc properties to get the name/value
#          of it as needed.
#
# Example #1:
#      System propagating a listbox selection change
#      EVENT_OBJECT_SELECTION
#          hwnd == listbox hwnd
#          idObject == OBJID_WINDOW
#          idChild == new selected item, or CHILDID_SELF if
#              nothing now selected within container.
#      Word#97 propagating a listbox selection change
#          hwnd == SDM window
#          idObject == SDM ID to get at listbox#control#
#          idChild == new selected item, or CHILDID_SELF if
#              nothing
#
# Example #2:
#      System propagating a menu item selection on the menu bar
#      EVENT_OBJECT_SELECTION
#          hwnd == top level window
#          idObject == OBJID_MENU
#          idChild == ID of child menu bar item selected
#
# Example #3:
#      System propagating a dropdown coming off of said menu bar item
#      EVENT_OBJECT_CREATE
#          hwnd == popup item
#          idObject == OBJID_WINDOW
#          idChild == CHILDID_SELF
#
# Example #4:
#
# For EVENT_OBJECT_REORDER, the object referred to by hwnd/idObject is the
# PARENT container in which the zorder is occurring.  This is because if
# one child is zordering, all of them are changing their relative zorder.
#
EVENT_OBJECT_CREATE                 = 0x008000  # hwnd + ID + idChild is created item
EVENT_OBJECT_DESTROY                = 0x008001  # hwnd + ID + idChild is destroyed item
EVENT_OBJECT_SHOW                   = 0x008002  # hwnd + ID + idChild is shown item
EVENT_OBJECT_HIDE                   = 0x008003  # hwnd + ID + idChild is hidden item
EVENT_OBJECT_REORDER                = 0x008004  # hwnd + ID + idChild is parent of zordering children

# NOTE:
# Minimize the number of notifications!
#
# When you are hiding a parent object, obviously all child objects are no
# longer visible on screen.  They still have the same "visible" status,
# but are not truly visible.  Hence do not send HIDE notifications for the
# children also.  One implies all.  The same goes for SHOW.
#
EVENT_OBJECT_FOCUS                  = 0x008005  # hwnd + ID + idChild is focused item
EVENT_OBJECT_SELECTION              = 0x008006  # hwnd + ID + idChild is selected item (if only one), or idChild is OBJID_WINDOW if complex
EVENT_OBJECT_SELECTIONADD           = 0x008007  # hwnd + ID + idChild is item added
EVENT_OBJECT_SELECTIONREMOVE        = 0x008008  # hwnd + ID + idChild is item removed
EVENT_OBJECT_SELECTIONWITHIN        = 0x008009  # hwnd + ID + idChild is parent of changed selected items

# NOTES:
# There is only one "focused" child item in a parent.  This is the place
# keystrokes are going at a given moment.  Hence only send a notification
# about where the NEW focus is going.  A NEW item getting the focus already
# implies that the OLD item is losing it.
#
# SELECTION however can be multiple.  Hence the different SELECTION
# notifications.  Here#s when to use each:
#
# (1) Send a SELECTION notification in the simple single selection
#     case (like the focus) when the item with the selection is
#     merely moving to a different item within a container.  hwnd + ID
#     is the container control, idChildItem is the new child with the
#     selection.
#
# (2) Send a SELECTIONADD notification when a new item has simply been added
#     to the selection within a container.  This is appropriate when the
#     number of newly selected items is very small.  hwnd + ID is the
#     container control, idChildItem is the new child added to the selection.
#
# (3) Send a SELECTIONREMOVE notification when a new item has simply been
#     removed from the selection within a container.  This is appropriate
#     when the number of newly selected items is very small, just like
#     SELECTIONADD.  hwnd + ID is the container control, idChildItem is the
#     new child removed from the selection.
#
# (4) Send a SELECTIONWITHIN notification when the selected items within a
#     control have changed substantially.  Rather than propagate a large
#     number of changes to reflect removal for some items, addition of
#     others, just tell somebody who cares that a lot happened.  It will
#     be faster an easier for somebody watching to just turn around and
#     query the container control what the new bunch of selected items
#     are.

EVENT_OBJECT_STATECHANGE            = 0x00800A  # hwnd + ID + idChild is item w/ state change

# Examples of when to send an EVENT_OBJECT_STATECHANGE include
#    # It is being enabled/disabled (USER does for windows)
#    # It is being pressed/released (USER does for buttons)
#    # It is being checked/unchecked (USER does for radio/check buttons)
#
EVENT_OBJECT_LOCATIONCHANGE         = 0x00800B  # hwnd + ID + idChild is moved/sized item

# Note:
# A LOCATIONCHANGE is not sent for every child object when the parent
# changes shape/moves.  Send one notification for the topmost object
# that is changing.  For example, if the user resizes a top level window,
# USER will generate a LOCATIONCHANGE for it, but not for the menu bar,
# title bar, scrollbars, etc.  that are also changing shape/moving.
#
# In other words, it only generates LOCATIONCHANGE notifications for
# real windows that are moving/sizing.  It will not generate a LOCATIONCHANGE
# for every non-floating child window when the parent moves (the children are
# logically moving also on screen, but not relative to the parent).
#
# Now, if the app itself resizes child windows as a result of being
# sized, USER will generate LOCATIONCHANGEs for those dudes also because
# it doesn#t know better.
#
# Note also that USER will generate LOCATIONCHANGE notifications for two
# non-window sys objects:
#      (1) System caret
#      (2) Cursor
#
EVENT_OBJECT_NAMECHANGE             = 0x00800C  # hwnd + ID + idChild is item w/ name change
EVENT_OBJECT_DESCRIPTIONCHANGE      = 0x00800D  # hwnd + ID + idChild is item w/ desc change
EVENT_OBJECT_VALUECHANGE            = 0x00800E  # hwnd + ID + idChild is item w/ value change
EVENT_OBJECT_PARENTCHANGE           = 0x00800F  # hwnd + ID + idChild is item w/ new parent
EVENT_OBJECT_HELPCHANGE             = 0x008010  # hwnd + ID + idChild is item w/ help change
EVENT_OBJECT_DEFACTIONCHANGE        = 0x008011  # hwnd + ID + idChild is item w/ def action change
EVENT_OBJECT_ACCELERATORCHANGE      = 0x008012  # hwnd + ID + idChild is item w/ keybd accel change

# Child IDs

# System Sounds (idChild of system SOUND notification)
SOUND_SYSTEM_STARTUP          = 1
SOUND_SYSTEM_SHUTDOWN         = 2
SOUND_SYSTEM_BEEP             = 3
SOUND_SYSTEM_ERROR            = 4
SOUND_SYSTEM_QUESTION         = 5
SOUND_SYSTEM_WARNING          = 6
SOUND_SYSTEM_INFORMATION      = 7
SOUND_SYSTEM_MAXIMIZE         = 8
SOUND_SYSTEM_MINIMIZE         = 9
SOUND_SYSTEM_RESTOREUP        = 10
SOUND_SYSTEM_RESTOREDOWN      = 11
SOUND_SYSTEM_APPSTART         = 12
SOUND_SYSTEM_FAULT            = 13
SOUND_SYSTEM_APPEND           = 14
SOUND_SYSTEM_MENUCOMMAND      = 15
SOUND_SYSTEM_MENUPOPUP        = 16
CSOUND_SYSTEM                 = 16

# System Alerts (indexChild of system ALERT notification)
ALERT_SYSTEM_INFORMATIONAL    = 1       # MB_INFORMATION
ALERT_SYSTEM_WARNING          = 2       # MB_WARNING
ALERT_SYSTEM_ERROR            = 3       # MB_ERROR
ALERT_SYSTEM_QUERY            = 4       # MB_QUESTION
ALERT_SYSTEM_CRITICAL         = 5       # HardSysErrBox
CALERT_SYSTEM                 = 6

GUI_CARETBLINKING   = 0x000000001
GUI_INMOVESIZE      = 0x000000002
GUI_INMENUMODE      = 0x000000004
GUI_SYSTEMMENUMODE  = 0x000000008
GUI_POPUPMENUMODE   = 0x000000010
GUI_16BITTASK       = 0x000000020


STATE_SYSTEM_UNAVAILABLE     = 0x000000001  # Disabled
STATE_SYSTEM_SELECTED        = 0x000000002
STATE_SYSTEM_FOCUSED         = 0x000000004
STATE_SYSTEM_PRESSED         = 0x000000008
STATE_SYSTEM_CHECKED         = 0x000000010
STATE_SYSTEM_MIXED           = 0x000000020  # 3-state checkbox or toolbar button
STATE_SYSTEM_INDETERMINATE   = STATE_SYSTEM_MIXED
STATE_SYSTEM_READONLY        = 0x000000040
STATE_SYSTEM_HOTTRACKED      = 0x000000080
STATE_SYSTEM_DEFAULT         = 0x000000100
STATE_SYSTEM_EXPANDED        = 0x000000200
STATE_SYSTEM_COLLAPSED       = 0x000000400
STATE_SYSTEM_BUSY            = 0x000000800
STATE_SYSTEM_FLOATING        = 0x000001000  # Children "owned" not "contained" by parent
STATE_SYSTEM_MARQUEED        = 0x000002000
STATE_SYSTEM_ANIMATED        = 0x000004000
STATE_SYSTEM_INVISIBLE       = 0x000008000
STATE_SYSTEM_OFFSCREEN       = 0x000010000
STATE_SYSTEM_SIZEABLE        = 0x000020000
STATE_SYSTEM_MOVEABLE        = 0x000040000
STATE_SYSTEM_SELFVOICING     = 0x000080000
STATE_SYSTEM_FOCUSABLE       = 0x000100000
STATE_SYSTEM_SELECTABLE      = 0x000200000
STATE_SYSTEM_LINKED          = 0x000400000
STATE_SYSTEM_TRAVERSED       = 0x000800000
STATE_SYSTEM_MULTISELECTABLE = 0x001000000  # Supports multiple selection
STATE_SYSTEM_EXTSELECTABLE   = 0x002000000  # Supports extended selection
STATE_SYSTEM_ALERT_LOW       = 0x004000000  # This information is of low priority
STATE_SYSTEM_ALERT_MEDIUM    = 0x008000000  # This information is of medium priority
STATE_SYSTEM_ALERT_HIGH      = 0x010000000  # This information is of high priority
STATE_SYSTEM_PROTECTED       = 0x020000000  # access to this is restricted
STATE_SYSTEM_VALID           = 0x03FFFFFFF


CCHILDREN_TITLEBAR   = 5
CCHILDREN_SCROLLBAR  = 5

CURSOR_SHOWING    = 0x000000001

WS_ACTIVECAPTION  = 0x00001

# The input is in the regular message flow, the app is required to call
# DefWindowProc so that the system can perform clean ups.
RIM_INPUT     = 0

# The input is sink only. The app is expected
# to behave nicely, honoring RIM_FOREGROUND etc.
RIM_INPUTSINK = 1

# Type of the raw input
RIM_TYPEMOUSE    = 0
RIM_TYPEKEYBOARD = 1
RIM_TYPEHID      = 2

# Define the mouse button state indicators.

RI_MOUSE_LEFT_BUTTON_DOWN   = 0x00001  # Left Button changed to down.
RI_MOUSE_LEFT_BUTTON_UP     = 0x00002  # Left Button changed to up.
RI_MOUSE_RIGHT_BUTTON_DOWN  = 0x00004  # Right Button changed to down.
RI_MOUSE_RIGHT_BUTTON_UP    = 0x00008  # Right Button changed to up.
RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x00010  # Middle Button changed to down.
RI_MOUSE_MIDDLE_BUTTON_UP   = 0x00020  # Middle Button changed to up.

RI_MOUSE_BUTTON_1_DOWN      = RI_MOUSE_LEFT_BUTTON_DOWN
RI_MOUSE_BUTTON_1_UP        = RI_MOUSE_LEFT_BUTTON_UP
RI_MOUSE_BUTTON_2_DOWN      = RI_MOUSE_RIGHT_BUTTON_DOWN
RI_MOUSE_BUTTON_2_UP        = RI_MOUSE_RIGHT_BUTTON_UP
RI_MOUSE_BUTTON_3_DOWN      = RI_MOUSE_MIDDLE_BUTTON_DOWN
RI_MOUSE_BUTTON_3_UP        = RI_MOUSE_MIDDLE_BUTTON_UP

RI_MOUSE_BUTTON_4_DOWN      = 0x00040
RI_MOUSE_BUTTON_4_UP        = 0x00080
RI_MOUSE_BUTTON_5_DOWN      = 0x00100
RI_MOUSE_BUTTON_5_UP        = 0x00200

# If usButtonFlags has RI_MOUSE_WHEEL, the wheel delta is stored
# in usButtonData. Take it as a signed value.
RI_MOUSE_WHEEL              = 0x00400

# Define the mouse indicator flags.
MOUSE_MOVE_RELATIVE      = 0
MOUSE_MOVE_ABSOLUTE      = 1
MOUSE_VIRTUAL_DESKTOP    = 2  # the coordinates are mapped to the virtual desktop
MOUSE_ATTRIBUTES_CHANGED = 4  # requery for mouse attributes

# Define the keyboard overrun MakeCode.

KEYBOARD_OVERRUN_MAKE_CODE  = 0x000FF

# Define the keyboard input data Flags.
RI_KEY_MAKE             = 0x00000
RI_KEY_BREAK            = 0x00001
RI_KEY_E0               = 0x00002
RI_KEY_E1               = 0x00004
RI_KEY_TERMSRV_SET_LED  = 0x00008
RI_KEY_TERMSRV_SHADOW   = 0x00010

# Flags for GetRawInputData
RID_INPUT  = 0x010000003
RID_HEADER = 0x010000005

# Raw Input Device Information
RIDI_PREPARSEDDATA = 0x020000005
RIDI_DEVICENAME    = 0x020000007 # the return value is the character length, not the byte size
RIDI_DEVICEINFO    = 0x02000000b

RIDEV_REMOVE       = 0x000000001
RIDEV_EXCLUDE      = 0x000000010
RIDEV_PAGEONLY     = 0x000000020
RIDEV_NOLEGACY     = 0x000000030
RIDEV_CAPTUREMOUSE = 0x000000200  # effective when mouse nolegacy is specified, otherwise it would be an error
RIDEV_NOHOTKEYS    = 0x000000200  # effective for keyboard.
RIDEV_APPKEYS      = 0x000000400  # effective for keyboard.
RIDEV_EXMODEMASK   = 0x0000000F0

# Parameter for SystemParametersInfo()
SPI_GETBEEP               = 1
SPI_SETBEEP               = 2
SPI_GETMOUSE              = 3
SPI_SETMOUSE              = 4
SPI_GETBORDER             = 5
SPI_SETBORDER             = 6
SPI_GETKEYBOARDSPEED      = 10
SPI_SETKEYBOARDSPEED      = 11
SPI_LANGDRIVER            = 12
SPI_ICONHORIZONTALSPACING = 13
SPI_GETSCREENSAVETIMEOUT  = 14
SPI_SETSCREENSAVETIMEOUT  = 15
SPI_GETSCREENSAVEACTIVE   = 16
SPI_SETSCREENSAVEACTIVE   = 17
SPI_GETGRIDGRANULARITY    = 18
SPI_SETGRIDGRANULARITY    = 19
SPI_SETDESKWALLPAPER      = 20
SPI_SETDESKPATTERN        = 21
SPI_GETKEYBOARDDELAY      = 22
SPI_SETKEYBOARDDELAY      = 23
SPI_ICONVERTICALSPACING   = 24
SPI_GETICONTITLEWRAP      = 25
SPI_SETICONTITLEWRAP      = 26
SPI_GETMENUDROPALIGNMENT  = 27
SPI_SETMENUDROPALIGNMENT  = 28
SPI_SETDOUBLECLKWIDTH     = 29
SPI_SETDOUBLECLKHEIGHT    = 30
SPI_GETICONTITLELOGFONT   = 31
SPI_SETDOUBLECLICKTIME    = 32
SPI_SETMOUSEBUTTONSWAP    = 33
SPI_SETICONTITLELOGFONT   = 34
SPI_GETFASTTASKSWITCH     = 35
SPI_SETFASTTASKSWITCH     = 36
SPI_SETDRAGFULLWINDOWS    = 37
SPI_GETDRAGFULLWINDOWS    = 38
SPI_GETNONCLIENTMETRICS   = 41
SPI_SETNONCLIENTMETRICS   = 42
SPI_GETMINIMIZEDMETRICS   = 43
SPI_SETMINIMIZEDMETRICS   = 44
SPI_GETICONMETRICS        = 45
SPI_SETICONMETRICS        = 46
SPI_SETWORKAREA           = 47
SPI_GETWORKAREA           = 48
SPI_SETPENWINDOWS         = 49
SPI_GETFILTERKEYS         = 50
SPI_SETFILTERKEYS         = 51
SPI_GETTOGGLEKEYS         = 52
SPI_SETTOGGLEKEYS         = 53
SPI_GETMOUSEKEYS          = 54
SPI_SETMOUSEKEYS          = 55
SPI_GETSHOWSOUNDS         = 56
SPI_SETSHOWSOUNDS         = 57
SPI_GETSTICKYKEYS         = 58
SPI_SETSTICKYKEYS         = 59
SPI_GETACCESSTIMEOUT      = 60
SPI_SETACCESSTIMEOUT      = 61
SPI_GETSERIALKEYS         = 62
SPI_SETSERIALKEYS         = 63
SPI_GETSOUNDSENTRY        = 64
SPI_SETSOUNDSENTRY        = 65
SPI_GETHIGHCONTRAST       = 66
SPI_SETHIGHCONTRAST       = 67
SPI_GETKEYBOARDPREF       = 68
SPI_SETKEYBOARDPREF       = 69
SPI_GETSCREENREADER       = 70
SPI_SETSCREENREADER       = 71
SPI_GETANIMATION          = 72
SPI_SETANIMATION          = 73
SPI_GETFONTSMOOTHING      = 74
SPI_SETFONTSMOOTHING      = 75
SPI_SETDRAGWIDTH          = 76
SPI_SETDRAGHEIGHT         = 77
SPI_SETHANDHELD           = 78
SPI_GETLOWPOWERTIMEOUT    = 79
SPI_GETPOWEROFFTIMEOUT    = 80
SPI_SETLOWPOWERTIMEOUT    = 81
SPI_SETPOWEROFFTIMEOUT    = 82
SPI_GETLOWPOWERACTIVE     = 83
SPI_GETPOWEROFFACTIVE     = 84
SPI_SETLOWPOWERACTIVE     = 85
SPI_SETPOWEROFFACTIVE     = 86
SPI_SETCURSORS            = 87
SPI_SETICONS              = 88
SPI_GETDEFAULTINPUTLANG   = 89
SPI_SETDEFAULTINPUTLANG   = 90
SPI_SETLANGTOGGLE         = 91
SPI_GETWINDOWSEXTENSION   = 92
SPI_SETMOUSETRAILS        = 93
SPI_GETMOUSETRAILS        = 94
SPI_SCREENSAVERRUNNING    = 97
SPI_GETMOUSEHOVERWIDTH    = 98
SPI_SETMOUSEHOVERWIDTH    = 99
SPI_GETMOUSEHOVERHEIGHT   = 100
SPI_SETMOUSEHOVERHEIGHT   = 101
SPI_GETMOUSEHOVERTIME     = 102
SPI_SETMOUSEHOVERTIME     = 103
SPI_GETWHEELSCROLLLINES   = 104
SPI_SETWHEELSCROLLLINES   = 105
SPI_GETSHOWIMEUI          = 110
SPI_SETSHOWIMEUI          = 111

SPI_GETMOUSESPEED         = 112
SPI_SETMOUSESPEED         = 113
SPI_GETSCREENSAVERRUNNING = 114
SPI_GETDESKWALLPAPER      = 115

SPI_GETACTIVEWINDOWTRACKING      = 0x01000
SPI_SETACTIVEWINDOWTRACKING      = 0x01001
SPI_GETMENUANIMATION             = 0x01002
SPI_SETMENUANIMATION             = 0x01003
SPI_GETCOMBOBOXANIMATION         = 0x01004
SPI_SETCOMBOBOXANIMATION         = 0x01005
SPI_GETLISTBOXSMOOTHSCROLLING    = 0x01006
SPI_SETLISTBOXSMOOTHSCROLLING    = 0x01007
SPI_GETGRADIENTCAPTIONS          = 0x01008
SPI_SETGRADIENTCAPTIONS          = 0x01009
SPI_GETKEYBOARDCUES              = 0x0100A
SPI_SETKEYBOARDCUES              = 0x0100B
SPI_GETMENUUNDERLINES            = SPI_GETKEYBOARDCUES
SPI_SETMENUUNDERLINES            = SPI_SETKEYBOARDCUES
SPI_GETACTIVEWNDTRKZORDER        = 0x0100C
SPI_SETACTIVEWNDTRKZORDER        = 0x0100D
SPI_GETHOTTRACKING               = 0x0100E
SPI_SETHOTTRACKING               = 0x0100F
SPI_GETMENUFADE                  = 0x01012
SPI_SETMENUFADE                  = 0x01013
SPI_GETSELECTIONFADE             = 0x01014
SPI_SETSELECTIONFADE             = 0x01015
SPI_GETTOOLTIPANIMATION          = 0x01016
SPI_SETTOOLTIPANIMATION          = 0x01017
SPI_GETTOOLTIPFADE               = 0x01018
SPI_SETTOOLTIPFADE               = 0x01019
SPI_GETCURSORSHADOW              = 0x0101A
SPI_SETCURSORSHADOW              = 0x0101B
SPI_GETMOUSESONAR                = 0x0101C
SPI_SETMOUSESONAR                = 0x0101D
SPI_GETMOUSECLICKLOCK            = 0x0101E
SPI_SETMOUSECLICKLOCK            = 0x0101F
SPI_GETMOUSEVANISH               = 0x01020
SPI_SETMOUSEVANISH               = 0x01021
SPI_GETFLATMENU                  = 0x01022
SPI_SETFLATMENU                  = 0x01023
SPI_GETDROPSHADOW                = 0x01024
SPI_SETDROPSHADOW                = 0x01025
SPI_GETBLOCKSENDINPUTRESETS      = 0x01026
SPI_SETBLOCKSENDINPUTRESETS      = 0x01027

SPI_GETUIEFFECTS                 = 0x0103E
SPI_SETUIEFFECTS                 = 0x0103F

SPI_GETFOREGROUNDLOCKTIMEOUT     = 0x02000
SPI_SETFOREGROUNDLOCKTIMEOUT     = 0x02001
SPI_GETACTIVEWNDTRKTIMEOUT       = 0x02002
SPI_SETACTIVEWNDTRKTIMEOUT       = 0x02003
SPI_GETFOREGROUNDFLASHCOUNT      = 0x02004
SPI_SETFOREGROUNDFLASHCOUNT      = 0x02005
SPI_GETCARETWIDTH                = 0x02006
SPI_SETCARETWIDTH                = 0x02007

SPI_GETMOUSECLICKLOCKTIME        = 0x02008
SPI_SETMOUSECLICKLOCKTIME        = 0x02009
SPI_GETFONTSMOOTHINGTYPE         = 0x0200A
SPI_SETFONTSMOOTHINGTYPE         = 0x0200B

# constants for SPI_GETFONTSMOOTHINGTYPE and SPI_SETFONTSMOOTHINGTYPE:
FE_FONTSMOOTHINGSTANDARD         = 0x00001
FE_FONTSMOOTHINGCLEARTYPE        = 0x00002
FE_FONTSMOOTHINGDOCKING          = 0x08000

SPI_GETFONTSMOOTHINGCONTRAST     = 0x0200C
SPI_SETFONTSMOOTHINGCONTRAST     = 0x0200D

SPI_GETFOCUSBORDERWIDTH          = 0x0200E
SPI_SETFOCUSBORDERWIDTH          = 0x0200F
SPI_GETFOCUSBORDERHEIGHT         = 0x02010
SPI_SETFOCUSBORDERHEIGHT         = 0x02011
SPI_GETFONTSMOOTHINGORIENTATION  = 0x02012
SPI_SETFONTSMOOTHINGORIENTATION  = 0x02013

# constants for SPI_GETFONTSMOOTHINGORIENTATION and SPI_SETFONTSMOOTHINGORIENTATION:
FE_FONTSMOOTHINGORIENTATIONBGR   = 0x00000
FE_FONTSMOOTHINGORIENTATIONRGB   = 0x00001

WHEEL_DELTA      = 120
WHEEL_PAGESCROLL = 0x0FFFFFFFF
# XButton values are WORD flags
XBUTTON1 = 0x00001
XBUTTON2 = 0x00002
# Were there to be an XBUTTON3, its value would be 0x00004

# SystemParametersInfo flags
SPIF_UPDATEINIFILE    = 0x01
SPIF_SENDWININICHANGE = 0x02
SPIF_SENDCHANGE       = SPIF_SENDWININICHANGE

ARW_BOTTOMLEFT  = 0x00000
ARW_BOTTOMRIGHT = 0x00001
ARW_TOPLEFT     = 0x00002
ARW_TOPRIGHT    = 0x00003
ARW_STARTMASK   = 0x00003
ARW_STARTRIGHT  = 0x00001
ARW_STARTTOP    = 0x00002

ARW_LEFT        = 0x00000
ARW_RIGHT       = 0x00000
ARW_UP          = 0x00004
ARW_DOWN        = 0x00004
ARW_HIDE        = 0x00008

# flags for SERIALKEYS dwFlags field
SERKF_SERIALKEYSON = 0x000000001
SERKF_AVAILABLE    = 0x000000002
SERKF_INDICATOR    = 0x000000004

# FILTERKEYS dwFlags field
FKF_FILTERKEYSON    = 0x000000001
FKF_AVAILABLE       = 0x000000002
FKF_HOTKEYACTIVE    = 0x000000004
FKF_CONFIRMHOTKEY   = 0x000000008
FKF_HOTKEYSOUND     = 0x000000010
FKF_INDICATOR       = 0x000000020
FKF_CLICKON         = 0x000000040

# STICKYKEYS dwFlags field
SKF_STICKYKEYSON    = 0x000000001
SKF_AVAILABLE       = 0x000000002
SKF_HOTKEYACTIVE    = 0x000000004
SKF_CONFIRMHOTKEY   = 0x000000008
SKF_HOTKEYSOUND     = 0x000000010
SKF_INDICATOR       = 0x000000020
SKF_AUDIBLEFEEDBACK = 0x000000040
SKF_TRISTATE        = 0x000000080
SKF_TWOKEYSOFF      = 0x000000100
SKF_LALTLATCHED     = 0x010000000
SKF_LCTLLATCHED     = 0x004000000
SKF_LSHIFTLATCHED   = 0x001000000
SKF_RALTLATCHED     = 0x020000000
SKF_RCTLLATCHED     = 0x008000000
SKF_RSHIFTLATCHED   = 0x002000000
SKF_LWINLATCHED     = 0x040000000
SKF_RWINLATCHED     = 0x080000000
SKF_LALTLOCKED      = 0x000100000
SKF_LCTLLOCKED      = 0x000040000
SKF_LSHIFTLOCKED    = 0x000010000
SKF_RALTLOCKED      = 0x000200000
SKF_RCTLLOCKED      = 0x000080000
SKF_RSHIFTLOCKED    = 0x000020000
SKF_LWINLOCKED      = 0x000400000
SKF_RWINLOCKED      = 0x000800000

# MOUSEKEYS dwFlags field
MKF_MOUSEKEYSON     = 0x000000001
MKF_AVAILABLE       = 0x000000002
MKF_HOTKEYACTIVE    = 0x000000004
MKF_CONFIRMHOTKEY   = 0x000000008
MKF_HOTKEYSOUND     = 0x000000010
MKF_INDICATOR       = 0x000000020
MKF_MODIFIERS       = 0x000000040
MKF_REPLACENUMBERS  = 0x000000080
MKF_LEFTBUTTONSEL   = 0x010000000
MKF_RIGHTBUTTONSEL  = 0x020000000
MKF_LEFTBUTTONDOWN  = 0x001000000
MKF_RIGHTBUTTONDOWN = 0x002000000
MKF_MOUSEMODE       = 0x080000000

# ACCESSTIMEOUT dwFlags field
ATF_TIMEOUTON     = 0x000000001
ATF_ONOFFFEEDBACK = 0x000000002

# values for SOUNDSENTRY iFSGrafEffect field
SSGF_NONE    = 0
SSGF_DISPLAY = 3

# values for SOUNDSENTRY iFSTextEffect field
SSTF_NONE    = 0
SSTF_CHARS   = 1
SSTF_BORDER  = 2
SSTF_DISPLAY = 3

# values for SOUNDSENTRY iWindowsEffect field
SSWF_NONE    = 0
SSWF_TITLE   = 1
SSWF_WINDOW  = 2
SSWF_DISPLAY = 3
SSWF_CUSTOM  = 4

# SOUNDSENTRY dwFlags field
SSF_SOUNDSENTRYON = 0x000000001
SSF_AVAILABLE     = 0x000000002
SSF_INDICATOR     = 0x000000004

# TOGGLEKEYS dwFlags field
TKF_TOGGLEKEYSON  = 0x000000001
TKF_AVAILABLE     = 0x000000002
TKF_HOTKEYACTIVE  = 0x000000004
TKF_CONFIRMHOTKEY = 0x000000008
TKF_HOTKEYSOUND   = 0x000000010
TKF_INDICATOR     = 0x000000020

# SetLastErrorEx types.
SLE_ERROR      = 0x01
SLE_MINORERROR = 0x02
SLE_WARNING    = 0x03

# Multimonitor API.

MONITOR_DEFAULTTONULL    = 0x000000000
MONITOR_DEFAULTTOPRIMARY = 0x000000001
MONITOR_DEFAULTTONEAREST = 0x000000002

MONITORINFOF_PRIMARY = 0x000000001

# DDE window messages
WM_DDE_FIRST     = 0x03E0
WM_DDE_INITIATE  = WM_DDE_FIRST
WM_DDE_TERMINATE = WM_DDE_FIRST + 1
WM_DDE_ADVISE    = WM_DDE_FIRST + 2
WM_DDE_UNADVISE  = WM_DDE_FIRST + 3
WM_DDE_ACK       = WM_DDE_FIRST + 4
WM_DDE_DATA      = WM_DDE_FIRST + 5
WM_DDE_REQUEST   = WM_DDE_FIRST + 6
WM_DDE_POKE      = WM_DDE_FIRST + 7
WM_DDE_EXECUTE   = WM_DDE_FIRST + 8
WM_DDE_LAST      = WM_DDE_FIRST + 8

# conversation states (usState)
XST_NULL           = 0  # quiescent states
XST_INCOMPLETE     = 1
XST_CONNECTED      = 2
XST_INIT1          = 3  # mid-initiation states
XST_INIT2          = 4
XST_REQSENT        = 5  # active conversation states
XST_DATARCVD       = 6
XST_POKESENT       = 7
XST_POKEACKRCVD    = 8
XST_EXECSENT       = 9
XST_EXECACKRCVD    = 10
XST_ADVSENT        = 11
XST_UNADVSENT      = 12
XST_ADVACKRCVD     = 13
XST_UNADVACKRCVD   = 14
XST_ADVDATASENT    = 15
XST_ADVDATAACKRCVD = 16

# used in LOWORD(dwData1) of XTYP_ADVREQ callbacks...
CADV_LATEACK = 0x0FFFF

# conversation status bits (fsStatus)
ST_CONNECTED  = 0x01
ST_ADVISE     = 0x02
ST_ISLOCAL    = 0x04
ST_BLOCKED    = 0x08
ST_CLIENT     = 0x010
ST_TERMINATED = 0x020
ST_INLIST     = 0x040
ST_BLOCKNEXT  = 0x080
ST_ISSELF     = 0x0100

# DDE constants for wStatus field
DDE_FACK         = 0x000008000
DDE_FBUSY        = 0x000004000
DDE_FDEFERUPD    = 0x000004000
DDE_FACKREQ      = 0x000008000
DDE_FRELEASE     = 0x000002000
DDE_FREQUESTED   = 0x000001000
DDE_FAPPSTATUS   = 0x0FF
DDE_FNOTPROCESSED= 0x00

DDE_FACKRESERVED = not (DDE_FACK or DDE_FBUSY or DDE_FAPPSTATUS)
DDE_FADVRESERVED = not (DDE_FACKREQ or DDE_FDEFERUPD)
DDE_FDATRESERVED = not (DDE_FACKREQ or DDE_FRELEASE or DDE_FREQUESTED)
DDE_FPOKRESERVED = not (DDE_FRELEASE)

# codepage constants
CP_WINANSI    = 1004  # default codepage for windows old DDE convs.
CP_WINUNICODE = 1200

# transaction types
XTYPF_NOBLOCK = 0x02     # CBR_BLOCK will not work
XTYPF_NODATA  = 0x04     # DDE_FDEFERUPD
XTYPF_ACKREQ  = 0x08     # DDE_FACKREQ

XCLASS_MASK         = 0x00000FC00
XCLASS_BOOL         = 0x000001000
XCLASS_DATA         = 0x000002000
XCLASS_FLAGS        = 0x000004000
XCLASS_NOTIFICATION = 0x000008000

XTYP_ERROR           = 0x00 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK
XTYP_ADVDATA         = 0x010 or XCLASS_FLAGS
XTYP_ADVREQ          = 0x020 or XCLASS_DATA or XTYPF_NOBLOCK
XTYP_ADVSTART        = 0x030 or XCLASS_BOOL
XTYP_ADVSTOP         = 0x040 or XCLASS_NOTIFICATION
XTYP_EXECUTE         = 0x050 or XCLASS_FLAGS
XTYP_CONNECT         = 0x060 or XCLASS_BOOL or XTYPF_NOBLOCK
XTYP_CONNECT_CONFIRM = 0x070 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK
XTYP_XACT_COMPLETE   = 0x080 or XCLASS_NOTIFICATION
XTYP_POKE            = 0x090 or XCLASS_FLAGS
XTYP_REGISTER        = 0x0A0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK
XTYP_REQUEST         = 0x0B0 or XCLASS_DATA
XTYP_DISCONNECT      = 0x0C0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK
XTYP_UNREGISTER      = 0x0D0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK
XTYP_WILDCONNECT     = 0x0E0 or XCLASS_DATA or XTYPF_NOBLOCK

XTYP_MASK            = 0x0F0
XTYP_SHIFT           = 4  # shift to turn XTYP_ into an index

# Timeout constants
TIMEOUT_ASYNC = 0x0FFFF

# Transaction ID constants
QID_SYNC  = 0x0FFFF

CBR_BLOCK = 0x0FFFF

# Callback filter flags for use with standard apps.
CBF_FAIL_SELFCONNECTIONS   = 0x000001000
CBF_FAIL_CONNECTIONS       = 0x000002000
CBF_FAIL_ADVISES           = 0x000004000
CBF_FAIL_EXECUTES          = 0x000008000
CBF_FAIL_POKES             = 0x010000
CBF_FAIL_REQUESTS          = 0x020000
CBF_FAIL_ALLSVRXACTIONS    = 0x03F000

CBF_SKIP_CONNECT_CONFIRMS  = 0x040000
CBF_SKIP_REGISTRATIONS     = 0x080000
CBF_SKIP_UNREGISTRATIONS   = 0x0100000
CBF_SKIP_DISCONNECTS       = 0x0200000
CBF_SKIP_ALLNOTIFICATIONS  = 0x03C0000

# Application command flags
APPCMD_CLIENTONLY  = 0x010
APPCMD_FILTERINITS = 0x020
APPCMD_MASK        = 0x0FF0

# Application classification flags
APPCLASS_STANDARD  = 0x00
APPCLASS_MASK      = 0x0F

EC_ENABLEALL    = 0
EC_ENABLEONE    = ST_BLOCKNEXT
EC_DISABLE      = ST_BLOCKED
EC_QUERYWAITING = 2

DNS_REGISTER   = 0x01
DNS_UNREGISTER = 0x02
DNS_FILTERON   = 0x04
DNS_FILTEROFF  = 0x08

HDATA_APPOWNED = 0x01

DMLERR_NO_ERROR            = 0      # must be 0

DMLERR_FIRST               = 0x04000

DMLERR_ADVACKTIMEOUT       = 0x04000
DMLERR_BUSY                = 0x04001
DMLERR_DATAACKTIMEOUT      = 0x04002
DMLERR_DLL_NOT_INITIALIZED = 0x04003
DMLERR_DLL_USAGE           = 0x04004
DMLERR_EXECACKTIMEOUT      = 0x04005
DMLERR_INVALIDPARAMETER    = 0x04006
DMLERR_LOW_MEMORY          = 0x04007
DMLERR_MEMORY_ERROR        = 0x04008
DMLERR_NOTPROCESSED        = 0x04009
DMLERR_NO_CONV_ESTABLISHED = 0x0400A
DMLERR_POKEACKTIMEOUT      = 0x0400B
DMLERR_POSTMSG_FAILED      = 0x0400C
DMLERR_REENTRANCY          = 0x0400D
DMLERR_SERVER_DIED         = 0x0400E
DMLERR_SYS_ERROR           = 0x0400F
DMLERR_UNADVACKTIMEOUT     = 0x04010
DMLERR_UNFOUND_QUEUE_ID    = 0x04011

DMLERR_LAST                = 0x04011

MH_CREATE  = 1
MH_KEEP    = 2
MH_DELETE  = 3
MH_CLEANUP = 4

MAX_MONITORS     = 4
APPCLASS_MONITOR = 0x01
XTYP_MONITOR     = 0x0F0 or XCLASS_NOTIFICATION or XTYPF_NOBLOCK

# Callback filter flags for use with MONITOR apps - 0 implies no monitor callbacks
MF_HSZ_INFO  = 0x01000000
MF_SENDMSGS  = 0x02000000
MF_POSTMSGS  = 0x04000000
MF_CALLBACKS = 0x08000000
MF_ERRORS    = 0x010000000
MF_LINKS     = 0x020000000
MF_CONV      = 0x040000000

MF_MASK      = 0x0FF000000

# -------------------------
# MMSystem Section
# -------------------------

# This section defines all the support for Multimedia applications

# general constants
MAXPNAMELEN     = 32  # max product name length (including NULL)
MAXERRORLENGTH  = 128  # max error text length (including final NULL)

# values for wType field in MMTIME struct
TIME_MS       = 0x01     # time in Milliseconds
TIME_SAMPLES  = 0x02     # number of wave samples
TIME_BYTES    = 0x04     # current byte offset
TIME_SMPTE    = 0x08     # SMPTE time
TIME_MIDI     = 0x010    # MIDI time

MAX_JOYSTICKOEMVXDNAME  = 260

# Multimedia Window Messages
MM_JOY1MOVE       = 0x03A0  # joystick
MM_JOY2MOVE       = 0x03A1
MM_JOY1ZMOVE      = 0x03A2
MM_JOY2ZMOVE      = 0x03A3
MM_JOY1BUTTONDOWN = 0x03B5
MM_JOY2BUTTONDOWN = 0x03B6
MM_JOY1BUTTONUP   = 0x03B7
MM_JOY2BUTTONUP   = 0x03B8

MM_MCINOTIFY        = 0x03B9  # MCI
MM_MCISYSTEM_STRING = 0x03CA

MM_WOM_OPEN         = 0x03BB  # waveform output
MM_WOM_CLOSE        = 0x03BC
MM_WOM_DONE         = 0x03BD

MM_WIM_OPEN         = 0x03BE  # waveform input
MM_WIM_CLOSE        = 0x03BF
MM_WIM_DATA         = 0x03C0

MM_MIM_OPEN         = 0x03C1  # MIDI input
MM_MIM_CLOSE        = 0x03C2
MM_MIM_DATA         = 0x03C3
MM_MIM_LONGDATA     = 0x03C4
MM_MIM_ERROR        = 0x03C5
MM_MIM_LONGERROR    = 0x03C6

MM_MOM_OPEN         = 0x03C7  # MIDI output
MM_MOM_CLOSE        = 0x03C8
MM_MOM_DONE         = 0x03C9

# String resource number bases (internal use)

MMSYSERR_BASE = 0
WAVERR_BASE   = 32
MIDIERR_BASE  = 64
TIMERR_BASE   = 96   # was 128, changed to match Win 31 Sonic
JOYERR_BASE   = 160
MCIERR_BASE   = 256

MCI_STRING_OFFSET  = 512  # if this number is changed you MUST
                           # alter the MCI_DEVTYPE_... list below
MCI_VD_OFFSET      = 1024
MCI_CD_OFFSET      = 1088
MCI_WAVE_OFFSET    = 1152
MCI_SEQ_OFFSET     = 1216

# General error return values
MMSYSERR_NOERROR      = 0  # no error
MMSYSERR_ERROR        = MMSYSERR_BASE + 1  # unspecified error
MMSYSERR_BADDEVICEID  = MMSYSERR_BASE + 2  # device ID out of range
MMSYSERR_NOTENABLED   = MMSYSERR_BASE + 3  # driver failed enable
MMSYSERR_ALLOCATED    = MMSYSERR_BASE + 4  # device already allocated
MMSYSERR_INVALHANDLE  = MMSYSERR_BASE + 5  # device xHandle is invalid
MMSYSERR_NODRIVER     = MMSYSERR_BASE + 6  # no device driver present
MMSYSERR_NOMEM        = MMSYSERR_BASE + 7  # memory allocation error
MMSYSERR_NOTSUPPORTED = MMSYSERR_BASE + 8  # function isn#t supported
MMSYSERR_BADERRNUM    = MMSYSERR_BASE + 9  # error value out of range
MMSYSERR_INVALFLAG    = MMSYSERR_BASE + 10 # invalid flag passed
MMSYSERR_INVALPARAM   = MMSYSERR_BASE + 11 # invalid parameter passed
MMSYSERR_HANDLEBUSY   = MMSYSERR_BASE + 12 # xHandle being used
                                             # simultaneously on another
                                             # thread (eg callback)
MMSYSERR_INVALIDALIAS = MMSYSERR_BASE + 13 # "Specified alias not found in WIN.INI
MMSYSERR_LASTERROR    = MMSYSERR_BASE + 13 # last error in range
MM_MOM_POSITIONCB = 0x03CA     # Callback for MEVT_POSITIONCB
MM_MCISIGNAL      = 0x03CB
MM_MIM_MOREDATA   = 0x03CC     # MIM_DONE w/ pending events
MIDICAPS_STREAM = 0x08         # driver supports midiStreamOut directly

MEVT_F_SHORT    = 0x00
MEVT_F_LONG     = 0x080000000
MEVT_F_CALLBACK = 0x040000000
MIDISTRM_ERROR  = -2

#
# Structures and defines for midiStreamProperty
#
MIDIPROP_SET = 0x080000000
MIDIPROP_GET = 0x040000000

# These are intentionally both non-zero so the app cannot accidentally
# leave the operation off and happen to appear to work due to default
# action.

MIDIPROP_TIMEDIV = 0x01
MIDIPROP_TEMPO   = 0x02

MIXER_SHORT_NAME_CHARS = 16
MIXER_LONG_NAME_CHARS  = 64

#
#  MMRESULT error return values specific to the mixer API
#
#
MIXERR_BASE         = 1024
MIXERR_INVALLINE    = MIXERR_BASE + 0
MIXERR_INVALCONTROL = MIXERR_BASE + 1
MIXERR_INVALVALUE   = MIXERR_BASE + 2
MIXERR_LASTERROR    = MIXERR_BASE + 2


MIXER_OBJECTF_HANDLE    = 0x080000000
MIXER_OBJECTF_MIXER     = 0x00
MIXER_OBJECTF_HMIXER    = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIXER
MIXER_OBJECTF_WAVEOUT   = 0x010000000
MIXER_OBJECTF_HWAVEOUT  = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_WAVEOUT
MIXER_OBJECTF_WAVEIN    = 0x020000000
MIXER_OBJECTF_HWAVEIN   = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_WAVEIN
MIXER_OBJECTF_MIDIOUT   = 0x030000000
MIXER_OBJECTF_HMIDIOUT  = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIDIOUT
MIXER_OBJECTF_MIDIIN    = 0x040000000
MIXER_OBJECTF_HMIDIIN   = MIXER_OBJECTF_HANDLE or MIXER_OBJECTF_MIDIIN
MIXER_OBJECTF_AUX       = 0x050000000

MIXERLINE_LINEF_ACTIVE       = 0x01
MIXERLINE_LINEF_DISCONNECTED = 0x000008000
MIXERLINE_LINEF_SOURCE       = 0x080000000

#  MIXERLINE.dwComponentType

#  component types for destinations and sources

MIXERLINE_COMPONENTTYPE_DST_FIRST     = 0x00
MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = MIXERLINE_COMPONENTTYPE_DST_FIRST + 0
MIXERLINE_COMPONENTTYPE_DST_DIGITAL   = MIXERLINE_COMPONENTTYPE_DST_FIRST + 1
MIXERLINE_COMPONENTTYPE_DST_LINE      = MIXERLINE_COMPONENTTYPE_DST_FIRST + 2
MIXERLINE_COMPONENTTYPE_DST_MONITOR   = MIXERLINE_COMPONENTTYPE_DST_FIRST + 3
MIXERLINE_COMPONENTTYPE_DST_SPEAKERS  = MIXERLINE_COMPONENTTYPE_DST_FIRST + 4
MIXERLINE_COMPONENTTYPE_DST_HEADPHONES= MIXERLINE_COMPONENTTYPE_DST_FIRST + 5
MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 6
MIXERLINE_COMPONENTTYPE_DST_WAVEIN    = MIXERLINE_COMPONENTTYPE_DST_FIRST + 7
MIXERLINE_COMPONENTTYPE_DST_VOICEIN   = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8
MIXERLINE_COMPONENTTYPE_DST_LAST      = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8

MIXERLINE_COMPONENTTYPE_SRC_FIRST      = 0x01000
MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED  = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0
MIXERLINE_COMPONENTTYPE_SRC_DIGITAL    = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1
MIXERLINE_COMPONENTTYPE_SRC_LINE       = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2
MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3
MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER= MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4
MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC= MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5
MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE  = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6
MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER  = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7
MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT    = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8
MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY  = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9
MIXERLINE_COMPONENTTYPE_SRC_ANALOG     = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10
MIXERLINE_COMPONENTTYPE_SRC_LAST       = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10


#
#  MIXERLINE.Target.dwType
#
#
MIXERLINE_TARGETTYPE_UNDEFINED = 0
MIXERLINE_TARGETTYPE_WAVEOUT   = 1
MIXERLINE_TARGETTYPE_WAVEIN    = 2
MIXERLINE_TARGETTYPE_MIDIOUT   = 3
MIXERLINE_TARGETTYPE_MIDIIN    = 4
MIXERLINE_TARGETTYPE_AUX       = 5

MIXER_GETLINEINFOF_DESTINATION   = 0x00
MIXER_GETLINEINFOF_SOURCE        = 0x01
MIXER_GETLINEINFOF_LINEID        = 0x02
MIXER_GETLINEINFOF_COMPONENTTYPE = 0x03
MIXER_GETLINEINFOF_TARGETTYPE    = 0x04
MIXER_GETLINEINFOF_QUERYMASK     = 0x0F

MIXERCONTROL_CONTROLF_UNIFORM  = 0x01
MIXERCONTROL_CONTROLF_MULTIPLE = 0x02
MIXERCONTROL_CONTROLF_DISABLED = 0x080000000

#  MIXERCONTROL_CONTROLTYPE_xxx building block defines

MIXERCONTROL_CT_CLASS_MASK        = 0x0F0000000
MIXERCONTROL_CT_CLASS_CUSTOM      = 0x00
MIXERCONTROL_CT_CLASS_METER       = 0x010000000
MIXERCONTROL_CT_CLASS_SWITCH      = 0x020000000
MIXERCONTROL_CT_CLASS_NUMBER      = 0x030000000
MIXERCONTROL_CT_CLASS_SLIDER      = 0x040000000
MIXERCONTROL_CT_CLASS_FADER       = 0x050000000
MIXERCONTROL_CT_CLASS_TIME        = 0x060000000
MIXERCONTROL_CT_CLASS_LIST        = 0x070000000
MIXERCONTROL_CT_SUBCLASS_MASK     = 0x0F000000
MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = 0x00
MIXERCONTROL_CT_SC_SWITCH_BUTTON  = 0x01000000
MIXERCONTROL_CT_SC_METER_POLLED   = 0x00
MIXERCONTROL_CT_SC_TIME_MICROSECS = 0x00
MIXERCONTROL_CT_SC_TIME_MILLISECS = 0x01000000
MIXERCONTROL_CT_SC_LIST_SINGLE    = 0x00
MIXERCONTROL_CT_SC_LIST_MULTIPLE  = 0x01000000
MIXERCONTROL_CT_UNITS_MASK        = 0x0FF0000
MIXERCONTROL_CT_UNITS_CUSTOM      = 0x00
MIXERCONTROL_CT_UNITS_BOOLEAN     = 0x010000
MIXERCONTROL_CT_UNITS_SIGNED      = 0x020000
MIXERCONTROL_CT_UNITS_UNSIGNED    = 0x030000
MIXERCONTROL_CT_UNITS_DECIBELS    = 0x040000 # in 10ths
MIXERCONTROL_CT_UNITS_PERCENT     = 0x050000 # in 10ths
#
#  Commonly used control types for specifying MIXERCONTROL.dwControlType
#
MIXERCONTROL_CONTROLTYPE_CUSTOM        = MIXERCONTROL_CT_CLASS_CUSTOM or MIXERCONTROL_CT_UNITS_CUSTOM
MIXERCONTROL_CONTROLTYPE_BOOLEANMETER  = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_BOOLEAN
MIXERCONTROL_CONTROLTYPE_SIGNEDMETER   = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_SIGNED
MIXERCONTROL_CONTROLTYPE_PEAKMETER     = MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1
MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = MIXERCONTROL_CT_CLASS_METER or MIXERCONTROL_CT_SC_METER_POLLED or MIXERCONTROL_CT_UNITS_UNSIGNED
MIXERCONTROL_CONTROLTYPE_BOOLEAN       = MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BOOLEAN or MIXERCONTROL_CT_UNITS_BOOLEAN
MIXERCONTROL_CONTROLTYPE_ONOFF         = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1
MIXERCONTROL_CONTROLTYPE_MUTE          = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2
MIXERCONTROL_CONTROLTYPE_MONO          = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3
MIXERCONTROL_CONTROLTYPE_LOUDNESS      = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4
MIXERCONTROL_CONTROLTYPE_STEREOENH     = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5
MIXERCONTROL_CONTROLTYPE_BUTTON        = MIXERCONTROL_CT_CLASS_SWITCH or MIXERCONTROL_CT_SC_SWITCH_BUTTON or MIXERCONTROL_CT_UNITS_BOOLEAN
MIXERCONTROL_CONTROLTYPE_DECIBELS      = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_DECIBELS
MIXERCONTROL_CONTROLTYPE_SIGNED        = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_SIGNED
MIXERCONTROL_CONTROLTYPE_UNSIGNED      = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_UNSIGNED
MIXERCONTROL_CONTROLTYPE_PERCENT       = MIXERCONTROL_CT_CLASS_NUMBER or MIXERCONTROL_CT_UNITS_PERCENT
MIXERCONTROL_CONTROLTYPE_SLIDER        = MIXERCONTROL_CT_CLASS_SLIDER or MIXERCONTROL_CT_UNITS_SIGNED
MIXERCONTROL_CONTROLTYPE_PAN           = MIXERCONTROL_CONTROLTYPE_SLIDER + 1
MIXERCONTROL_CONTROLTYPE_QSOUNDPAN     = MIXERCONTROL_CONTROLTYPE_SLIDER + 2
MIXERCONTROL_CONTROLTYPE_FADER         = MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CT_UNITS_UNSIGNED
MIXERCONTROL_CONTROLTYPE_VOLUME        = MIXERCONTROL_CONTROLTYPE_FADER + 1
MIXERCONTROL_CONTROLTYPE_BASS          = MIXERCONTROL_CONTROLTYPE_FADER + 2
MIXERCONTROL_CONTROLTYPE_TREBLE        = MIXERCONTROL_CONTROLTYPE_FADER + 3
MIXERCONTROL_CONTROLTYPE_EQUALIZER     = MIXERCONTROL_CONTROLTYPE_FADER + 4
MIXERCONTROL_CONTROLTYPE_SINGLESELECT  = MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_SINGLE or MIXERCONTROL_CT_UNITS_BOOLEAN
MIXERCONTROL_CONTROLTYPE_MUX           = MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1
MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT= MIXERCONTROL_CT_CLASS_LIST or MIXERCONTROL_CT_SC_LIST_MULTIPLE or MIXERCONTROL_CT_UNITS_BOOLEAN
MIXERCONTROL_CONTROLTYPE_MIXER         = MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1
MIXERCONTROL_CONTROLTYPE_MICROTIME     = MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MICROSECS or MIXERCONTROL_CT_UNITS_UNSIGNED
MIXERCONTROL_CONTROLTYPE_MILLITIME     = MIXERCONTROL_CT_CLASS_TIME or MIXERCONTROL_CT_SC_TIME_MILLISECS or MIXERCONTROL_CT_UNITS_UNSIGNED
#
MIXER_GETLINECONTROLSF_ALL       = 0x00
MIXER_GETLINECONTROLSF_ONEBYID   = 0x01
MIXER_GETLINECONTROLSF_ONEBYTYPE = 0x02
MIXER_GETLINECONTROLSF_QUERYMASK = 0x0F

MIXER_GETCONTROLDETAILSF_VALUE     = 0x00
MIXER_GETCONTROLDETAILSF_LISTTEXT  = 0x01
MIXER_GETCONTROLDETAILSF_QUERYMASK = 0x0F

MIXER_SETCONTROLDETAILSF_VALUE     = 0x00
MIXER_SETCONTROLDETAILSF_CUSTOM    = 0x01
MIXER_SETCONTROLDETAILSF_QUERYMASK = 0x0F

# constants used with JOYINFOEX
JOY_BUTTON5   = 0x010
JOY_BUTTON6   = 0x020
JOY_BUTTON7   = 0x040
JOY_BUTTON8   = 0x080
JOY_BUTTON9   = 0x0100
JOY_BUTTON10  = 0x0200
JOY_BUTTON11  = 0x0400
JOY_BUTTON12  = 0x0800
JOY_BUTTON13  = 0x000001000
JOY_BUTTON14  = 0x000002000
JOY_BUTTON15  = 0x000004000
JOY_BUTTON16  = 0x000008000
JOY_BUTTON17  = 0x010000
JOY_BUTTON18  = 0x020000
JOY_BUTTON19  = 0x040000
JOY_BUTTON20  = 0x080000
JOY_BUTTON21  = 0x0100000
JOY_BUTTON22  = 0x0200000
JOY_BUTTON23  = 0x0400000
JOY_BUTTON24  = 0x0800000
JOY_BUTTON25  = 0x01000000
JOY_BUTTON26  = 0x02000000
JOY_BUTTON27  = 0x04000000
JOY_BUTTON28  = 0x08000000
JOY_BUTTON29  = 0x010000000
JOY_BUTTON30  = 0x020000000
JOY_BUTTON31  = 0x040000000
JOY_BUTTON32  = 0x080000000

# constants used with JOYINFOEX structure
JOY_POVCENTERED    = -1
JOY_POVFORWARD     = 0
JOY_POVRIGHT       = 9000
JOY_POVBACKWARD    = 18000
JOY_POVLEFT        = 27000
JOY_RETURNX        = 0x01
JOY_RETURNY        = 0x02
JOY_RETURNZ        = 0x04
JOY_RETURNR        = 0x08
JOY_RETURNU        = 0x010            # axis 5
JOY_RETURNV        = 0x020            # axis 6
JOY_RETURNPOV      = 0x040
JOY_RETURNBUTTONS  = 0x080
JOY_RETURNRAWDATA  = 0x0100
JOY_RETURNPOVCTS   = 0x0200
JOY_RETURNCENTERED = 0x0400
JOY_USEDEADZONE    = 0x0800
JOY_RETURNALL      = JOY_RETURNX or JOY_RETURNY or JOY_RETURNZ or JOY_RETURNR or JOY_RETURNU or JOY_RETURNV or JOY_RETURNPOV or JOY_RETURNBUTTONS
JOY_CAL_READALWAYS = 0x010000
JOY_CAL_READXYONLY = 0x020000
JOY_CAL_READ3      = 0x040000
JOY_CAL_READ4      = 0x080000
JOY_CAL_READXONLY  = 0x0100000
JOY_CAL_READYONLY  = 0x0200000
JOY_CAL_READ5      = 0x0400000
JOY_CAL_READ6      = 0x0800000
JOY_CAL_READZONLY  = 0x01000000
JOY_CAL_READRONLY  = 0x02000000
JOY_CAL_READUONLY  = 0x04000000
JOY_CAL_READVONLY  = 0x08000000

WAVE_FORMAT_QUERY        = 0x01
SND_PURGE                = 0x040  # purge non-static events for task
SND_APPLICATION          = 0x080  # look for application specific association
WAVE_MAPPED              = 0x04
WAVE_FORMAT_DIRECT       = 0x08
WAVE_FORMAT_DIRECT_QUERY = WAVE_FORMAT_QUERY or WAVE_FORMAT_DIRECT
MIM_MOREDATA             = MM_MIM_MOREDATA
MOM_POSITIONCB           = MM_MOM_POSITIONCB

# flags for dwFlags parm of midiInOpen()
MIDI_IO_STATUS = 0x000000020

# Driver messages
DRV_LOAD            = 0x01
DRV_ENABLE          = 0x02
DRV_OPEN            = 0x03
DRV_CLOSE           = 0x04
DRV_DISABLE         = 0x05
DRV_FREE            = 0x06
DRV_CONFIGURE       = 0x07
DRV_QUERYCONFIGURE  = 0x08
DRV_INSTALL         = 0x09
DRV_REMOVE          = 0x0A
DRV_EXITSESSION     = 0x0B
DRV_POWER           = 0x0F
DRV_RESERVED        = 0x0800
DRV_USER            = 0x04000

# Supported return values for DRV_CONFIGURE message
DRVCNF_CANCEL  = 0x00
DRVCNF_OK      = 0x01
DRVCNF_RESTART = 0x02

# return values from DriverProc() function
DRV_CANCEL    = DRVCNF_CANCEL
DRV_OK        = DRVCNF_OK
DRV_RESTART   = DRVCNF_RESTART

DRV_MCI_FIRST = DRV_RESERVED
DRV_MCI_LAST  = DRV_RESERVED + 0x0FFF

# Driver callback support

# flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and
# midiOutOpen() to specify the type of the dwCallback parameter.
CALLBACK_TYPEMASK = 0x070000        # callback type mask
CALLBACK_NULL     = 0x00            # no callback
CALLBACK_WINDOW   = 0x010000        # dwCallback is a HWND
CALLBACK_TASK     = 0x020000        # dwCallback is a HTASK
CALLBACK_FUNCTION = 0x030000        # dwCallback is a FARPROC
CALLBACK_THREAD   = CALLBACK_TASK # thread ID replaces 16 bit task
CALLBACK_EVENT    = 0x000050000     # dwCallback is an EVENT Handle

# flag values for uFlags parameter
SND_SYNC           = 0x00         # play synchronously (default)
SND_ASYNC          = 0x01         # play asynchronously

SND_NODEFAULT      = 0x02         # silence not default, if sound not found

SND_MEMORY         = 0x04         # lpszSoundName points to a memory file
SND_ALIAS          = 0x010000     # name is a WIN.INI [sounds] entry
SND_FILENAME       = 0x020000     # name is a file name
SND_RESOURCE       = 0x040004     # name is a resource name or atom
SND_ALIAS_ID       = 0x0110000    # name is a WIN.INI [sounds] entry identifier

SND_ALIAS_START    = 0  # must be > 4096 to keep strings in same section of resource file

SND_LOOP           = 0x08         # loop the sound until next sndPlaySound
SND_NOSTOP         = 0x010        # don#t stop any currently playing sound
SND_VALID          = 0x01F        # valid flags          / ;Internal /

SND_NOWAIT         = 0x02000      # don#t wait if the driver is busy

SND_VALIDFLAGS     = 0x017201F    # Set of valid flag bits.  Anything outside
# this range will raise an error
SND_RESERVED       = 0x0FF000000  # In particular these flags are reserved

SND_TYPE_MASK      = 0x0170007

# waveform audio error return values
WAVERR_BADFORMAT    = WAVERR_BASE + 0    # unsupported wave format
WAVERR_STILLPLAYING = WAVERR_BASE + 1    # still something playing
WAVERR_UNPREPARED   = WAVERR_BASE + 2    # header not prepared
WAVERR_SYNC         = WAVERR_BASE + 3    # device is synchronous
WAVERR_LASTERROR    = WAVERR_BASE + 3    # last error in range

# wave callback messages
WOM_OPEN   = MM_WOM_OPEN
WOM_CLOSE  = MM_WOM_CLOSE
WOM_DONE   = MM_WOM_DONE
WIM_OPEN   = MM_WIM_OPEN
WIM_CLOSE  = MM_WIM_CLOSE
WIM_DATA   = MM_WIM_DATA

# device ID for wave device mapper
WAVE_MAPPER = -1

# flags for dwFlags parameter in waveOutOpen() and waveInOpen()

WAVE_ALLOWSYNC = 0x000000002
WAVE_VALID     = 0x000000003    # ;Internal

# flags for dwFlags field of WAVEHDR
WHDR_DONE      = 0x000000001   # done bit
WHDR_PREPARED  = 0x000000002   # set if this header has been prepared
WHDR_BEGINLOOP = 0x000000004   # loop start block
WHDR_ENDLOOP   = 0x000000008   # loop end block
WHDR_INQUEUE   = 0x000000010   # reserved for driver
WHDR_VALID     = 0x00000001F   # valid flags      / ;Internal /

# flags for dwSupport field of WAVEOUTCAPS
WAVECAPS_PITCH        = 0x000000001   # supports pitch control
WAVECAPS_PLAYBACKRATE = 0x000000002   # supports playback rate control
WAVECAPS_VOLUME       = 0x000000004   # supports volume control
WAVECAPS_LRVOLUME     = 0x000000008   # separate left-right volume control
WAVECAPS_SYNC         = 0x000000010   #

# defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
WAVE_INVALIDFORMAT = 0x000000000   # invalid format
WAVE_FORMAT_1M08   = 0x000000001   # 11.025 kHz, Mono,   8-bit
WAVE_FORMAT_1S08   = 0x000000002   # 11.025 kHz, Stereo, 8-bit
WAVE_FORMAT_1M16   = 0x000000004   # 11.025 kHz, Mono,   16-bit
WAVE_FORMAT_1S16   = 0x000000008   # 11.025 kHz, Stereo, 16-bit
WAVE_FORMAT_2M08   = 0x000000010   # 22.05  kHz, Mono,   8-bit
WAVE_FORMAT_2S08   = 0x000000020   # 22.05  kHz, Stereo, 8-bit
WAVE_FORMAT_2M16   = 0x000000040   # 22.05  kHz, Mono,   16-bit
WAVE_FORMAT_2S16   = 0x000000080   # 22.05  kHz, Stereo, 16-bit
WAVE_FORMAT_4M08   = 0x000000100   # 44.1   kHz, Mono,   8-bit
WAVE_FORMAT_4S08   = 0x000000200   # 44.1   kHz, Stereo, 8-bit
WAVE_FORMAT_4M16   = 0x000000400   # 44.1   kHz, Mono,   16-bit
WAVE_FORMAT_4S16   = 0x000000800   # 44.1   kHz, Stereo, 16-bit

# flags for wFormatTag field of WAVEFORMAT
WAVE_FORMAT_PCM = 1  # Needed in resource files so outside #ifndef RC_INVOKED

# MIDI error return values
MIDIERR_UNPREPARED   = MIDIERR_BASE + 0   # header not prepared
MIDIERR_STILLPLAYING = MIDIERR_BASE + 1   # still something playing
MIDIERR_NOMAP        = MIDIERR_BASE + 2   # no current map
MIDIERR_NOTREADY     = MIDIERR_BASE + 3   # hardware is still busy
MIDIERR_NODEVICE     = MIDIERR_BASE + 4   # port no longer connected
MIDIERR_INVALIDSETUP = MIDIERR_BASE + 5   # invalid setup
MIDIERR_LASTERROR    = MIDIERR_BASE + 5   # last error in range

# MIDI callback messages
MIM_OPEN      = MM_MIM_OPEN
MIM_CLOSE     = MM_MIM_CLOSE
MIM_DATA      = MM_MIM_DATA
MIM_LONGDATA  = MM_MIM_LONGDATA
MIM_ERROR     = MM_MIM_ERROR
MIM_LONGERROR = MM_MIM_LONGERROR
MOM_OPEN      = MM_MOM_OPEN
MOM_CLOSE     = MM_MOM_CLOSE
MOM_DONE      = MM_MOM_DONE

# device ID for MIDI mapper
MIDIMAPPER  = -1  # Cannot be cast to DWORD as RC complains
MIDI_MAPPER = -1

# flags for wFlags parm of midiOutCachePatches(), midiOutCacheDrumPatches()
MIDI_CACHE_ALL     = 1
MIDI_CACHE_BESTFIT = 2
MIDI_CACHE_QUERY   = 3
MIDI_UNCACHE       = 4
MIDI_CACHE_VALID   = MIDI_CACHE_ALL or MIDI_CACHE_BESTFIT or MIDI_CACHE_QUERY or MIDI_UNCACHE  # ;Internal

# flags for wTechnology field of MIDIOUTCAPS structure
MOD_MIDIPORT = 1  # output port
MOD_SYNTH    = 2  # generic internal synth
MOD_SQSYNTH  = 3  # square wave internal synth
MOD_FMSYNTH  = 4  # FM internal synth
MOD_MAPPER   = 5  # MIDI mapper

# flags for dwSupport field of MIDIOUTCAPS
MIDICAPS_VOLUME   = 0x01         # supports volume control
MIDICAPS_LRVOLUME = 0x02         # separate left-right volume control
MIDICAPS_CACHE    = 0x04

# flags for dwFlags field of MIDIHDR structure
MHDR_DONE     = 0x000000001   # done bit
MHDR_PREPARED = 0x000000002   # set if header prepared
MHDR_INQUEUE  = 0x000000004   # reserved for driver
MHDR_VALID    = 0x000000007   # valid flags / ;Internal /

# device ID for aux device mapper
AUX_MAPPER = -1

# flags for wTechnology field in AUXCAPS structure
AUXCAPS_CDAUDIO = 1  # audio from internal CD-ROM drive
AUXCAPS_AUXIN   = 2  # audio from auxiliary input jacks

# flags for dwSupport field in AUXCAPS structure
AUXCAPS_VOLUME   = 0x01         # supports volume control
AUXCAPS_LRVOLUME = 0x02         # separate left-right volume control

# timer error return values
TIMERR_NOERROR = 0  # no error
TIMERR_NOCANDO = TIMERR_BASE + 1 # request not completed
TIMERR_STRUCT  = TIMERR_BASE + 33 # time struct size

# flags for wFlags parameter of timeSetEvent() function
TIME_ONESHOT  = 0  # program timer for single event
TIME_PERIODIC = 1  # program for continuous periodic event

# joystick error return values
JOYERR_NOERROR   = 0  # no error
JOYERR_PARMS     = JOYERR_BASE + 5 # bad parameters
JOYERR_NOCANDO   = JOYERR_BASE + 6 # request not completed
JOYERR_UNPLUGGED = JOYERR_BASE + 7 # joystick is unplugged

# constants used with JOYINFO structure and MM_JOY messages
JOY_BUTTON1    = 0x01
JOY_BUTTON2    = 0x02
JOY_BUTTON3    = 0x04
JOY_BUTTON4    = 0x08
JOY_BUTTON1CHG = 0x0100
JOY_BUTTON2CHG = 0x0200
JOY_BUTTON3CHG = 0x0400
JOY_BUTTON4CHG = 0x0800

# joystick ID constants
JOYSTICKID1 = 0
JOYSTICKID2 = 1

# MMIO error return values
MMIOERR_BASE             = 256
MMIOERR_FILENOTFOUND     = MMIOERR_BASE + 1  # file not found
MMIOERR_OUTOFMEMORY      = MMIOERR_BASE + 2  # out of memory
MMIOERR_CANNOTOPEN       = MMIOERR_BASE + 3  # cannot open
MMIOERR_CANNOTCLOSE      = MMIOERR_BASE + 4  # cannot close
MMIOERR_CANNOTREAD       = MMIOERR_BASE + 5  # cannot read
MMIOERR_CANNOTWRITE      = MMIOERR_BASE + 6  # cannot write
MMIOERR_CANNOTSEEK       = MMIOERR_BASE + 7  # cannot seek
MMIOERR_CANNOTEXPAND     = MMIOERR_BASE + 8  # cannot expand file
MMIOERR_CHUNKNOTFOUND    = MMIOERR_BASE + 9  # chunk not found
MMIOERR_UNBUFFERED       = MMIOERR_BASE + 10 # file is unbuffered
MMIOERR_PATHNOTFOUND     = MMIOERR_BASE + 11 # path incorrect
MMIOERR_ACCESSDENIED     = MMIOERR_BASE + 12 # file was protected
MMIOERR_SHARINGVIOLATION = MMIOERR_BASE + 13 # file in use
MMIOERR_NETWORKERROR     = MMIOERR_BASE + 14 # network not responding
MMIOERR_TOOMANYOPENFILES = MMIOERR_BASE + 15 # no more file handles
MMIOERR_INVALIDFILE      = MMIOERR_BASE + 16 # default error file error

MMIO_RWMODE           = 0x03         # mask to get bits used for opening
# file for reading/writing/both
MMIO_SHAREMODE        = 0x070        # file sharing mode number

# constants for dwFlags field of MMIOINFO
MMIO_CREATE           = 0x000001000  # create new file (or truncate file)
MMIO_PARSE            = 0x000000100  # parse new file returning path
MMIO_DELETE           = 0x000000200  # create new file (or truncate file)
MMIO_EXIST            = 0x000004000  # checks for existence of file
MMIO_ALLOCBUF         = 0x000010000  # mmioOpen() should allocate a buffer
MMIO_GETTEMP          = 0x000020000  # mmioOpen() should retrieve temp name

MMIO_DIRTY            = 0x010000000  # I/O buffer is dirty
# MMIO_DIRTY is also used in the <dwFlags> field of MMCKINFO structure

MMIO_OPEN_VALID       = 0x03FFFF     # valid flags for mmioOpen / ;Internal /

# read/write mode numbers (bit field MMIO_RWMODE)
MMIO_READ             = 0x00         # open file for reading only
MMIO_WRITE            = 0x01         # open file for writing only
MMIO_READWRITE        = 0x02         # open file for reading and writing

# share mode numbers (bit field MMIO_SHAREMODE)
MMIO_COMPAT           = 0x00         # compatibility mode
MMIO_EXCLUSIVE        = 0x010        # exclusive-access mode
MMIO_DENYWRITE        = 0x020        # deny writing to other processes
MMIO_DENYREAD         = 0x030        # deny reading to other processes
MMIO_DENYNONE         = 0x040        # deny nothing to other processes

# flags for other functions
MMIO_FHOPEN           = 0x010    # mmioClose(): keep file xHandle open
MMIO_EMPTYBUF         = 0x010    # mmioFlush(): empty the I/O buffer
MMIO_TOUPPER          = 0x010    # mmioStringToFOURCC(): cvt. to u-case
MMIO_INSTALLPROC      = 0x010000     # mmioInstallIOProc(): install MMIOProc
MMIO_PUBLICPROC       = 0x010000000  # mmioInstallIOProc: install Globally
MMIO_UNICODEPROC      = 0x01000000   # mmioInstallIOProc(): Unicode MMIOProc
MMIO_REMOVEPROC       = 0x020000     # mmioInstallIOProc(): remove MMIOProc
MMIO_FINDPROC         = 0x040000     # mmioInstallIOProc(): find an MMIOProc
MMIO_FINDCHUNK        = 0x010    # mmioDescend(): find a chunk by ID
MMIO_FINDRIFF         = 0x020    # mmioDescend(): find a LIST chunk
MMIO_FINDLIST         = 0x040    # mmioDescend(): find a RIFF chunk
MMIO_CREATERIFF       = 0x020    # mmioCreateChunk(): make a LIST chunk
MMIO_CREATELIST       = 0x040    # mmioCreateChunk(): make a RIFF chunk

MMIO_VALIDPROC        = 0x011070000  # valid for mmioInstallIOProc / ;Internal /

# message numbers for MMIOPROC I/O procedure functions
MMIOM_READ        = MMIO_READ  # read (must equal MMIO_READ!)
MMIOM_WRITE       = MMIO_WRITE  # write (must equal MMIO_WRITE!)
MMIOM_SEEK        = 2  # seek to a new position in file
MMIOM_OPEN        = 3  # open file
MMIOM_CLOSE       = 4  # close file
MMIOM_WRITEFLUSH  = 5  # write and flush
MMIOM_RENAME      = 6  # rename specified file
MMIOM_USER        = 0x000008000  # beginning of user-defined messages

# flags for mmioSeek()
SEEK_SET = 0  # seek to an absolute position
SEEK_CUR = 1  # seek relative to current position
SEEK_END = 2  # seek relative to end of file

# other constants
MMIO_DEFAULTBUFFER = 8192  # default buffer size

#  MCI error return values
MCIERR_INVALID_DEVICE_ID       = MCIERR_BASE + 1
MCIERR_UNRECOGNIZED_KEYWORD    = MCIERR_BASE + 3
MCIERR_UNRECOGNIZED_COMMAND    = MCIERR_BASE + 5
MCIERR_HARDWARE                = MCIERR_BASE + 6
MCIERR_INVALID_DEVICE_NAME     = MCIERR_BASE + 7
MCIERR_OUT_OF_MEMORY           = MCIERR_BASE + 8
MCIERR_DEVICE_OPEN             = MCIERR_BASE + 9
MCIERR_CANNOT_LOAD_DRIVER      = MCIERR_BASE + 10
MCIERR_MISSING_COMMAND_STRING  = MCIERR_BASE + 11
MCIERR_PARAM_OVERFLOW          = MCIERR_BASE + 12
MCIERR_MISSING_STRING_ARGUMENT = MCIERR_BASE + 13
MCIERR_BAD_INTEGER             = MCIERR_BASE + 14
MCIERR_PARSER_INTERNAL         = MCIERR_BASE + 15
MCIERR_DRIVER_INTERNAL         = MCIERR_BASE + 16
MCIERR_MISSING_PARAMETER       = MCIERR_BASE + 17
MCIERR_UNSUPPORTED_FUNCTION    = MCIERR_BASE + 18
MCIERR_FILE_NOT_FOUND          = MCIERR_BASE + 19
MCIERR_DEVICE_NOT_READY        = MCIERR_BASE + 20
MCIERR_INTERNAL                = MCIERR_BASE + 21
MCIERR_DRIVER                  = MCIERR_BASE + 22
MCIERR_CANNOT_USE_ALL          = MCIERR_BASE + 23
MCIERR_MULTIPLE                = MCIERR_BASE + 24
MCIERR_EXTENSION_NOT_FOUND     = MCIERR_BASE + 25
MCIERR_OUTOFRANGE              = MCIERR_BASE + 26
MCIERR_FLAGS_NOT_COMPATIBLE    = MCIERR_BASE + 28
MCIERR_FILE_NOT_SAVED          = MCIERR_BASE + 30
MCIERR_DEVICE_TYPE_REQUIRED    = MCIERR_BASE + 31
MCIERR_DEVICE_LOCKED           = MCIERR_BASE + 32
MCIERR_DUPLICATE_ALIAS         = MCIERR_BASE + 33
MCIERR_BAD_CONSTANT            = MCIERR_BASE + 34
MCIERR_MUST_USE_SHAREABLE      = MCIERR_BASE + 35
MCIERR_MISSING_DEVICE_NAME     = MCIERR_BASE + 36
MCIERR_BAD_TIME_FORMAT         = MCIERR_BASE + 37
MCIERR_NO_CLOSING_QUOTE        = MCIERR_BASE + 38
MCIERR_DUPLICATE_FLAGS         = MCIERR_BASE + 39
MCIERR_INVALID_FILE            = MCIERR_BASE + 40
MCIERR_NULL_PARAMETER_BLOCK    = MCIERR_BASE + 41
MCIERR_UNNAMED_RESOURCE        = MCIERR_BASE + 42
MCIERR_NEW_REQUIRES_ALIAS      = MCIERR_BASE + 43
MCIERR_NOTIFY_ON_AUTO_OPEN     = MCIERR_BASE + 44
MCIERR_NO_ELEMENT_ALLOWED      = MCIERR_BASE + 45
MCIERR_NONAPPLICABLE_FUNCTION  = MCIERR_BASE + 46
MCIERR_ILLEGAL_FOR_AUTO_OPEN   = MCIERR_BASE + 47
MCIERR_FILENAME_REQUIRED       = MCIERR_BASE + 48
MCIERR_EXTRA_CHARACTERS        = MCIERR_BASE + 49
MCIERR_DEVICE_NOT_INSTALLED    = MCIERR_BASE + 50
MCIERR_GET_CD                  = MCIERR_BASE + 51
MCIERR_SET_CD                  = MCIERR_BASE + 52
MCIERR_SET_DRIVE               = MCIERR_BASE + 53
MCIERR_DEVICE_LENGTH           = MCIERR_BASE + 54
MCIERR_DEVICE_ORD_LENGTH       = MCIERR_BASE + 55
MCIERR_NO_INTEGER              = MCIERR_BASE + 56

MCIERR_WAVE_OUTPUTSINUSE        = MCIERR_BASE + 64
MCIERR_WAVE_SETOUTPUTINUSE      = MCIERR_BASE + 65
MCIERR_WAVE_INPUTSINUSE         = MCIERR_BASE + 66
MCIERR_WAVE_SETINPUTINUSE       = MCIERR_BASE + 67
MCIERR_WAVE_OUTPUTUNSPECIFIED   = MCIERR_BASE + 68
MCIERR_WAVE_INPUTUNSPECIFIED    = MCIERR_BASE + 69
MCIERR_WAVE_OUTPUTSUNSUITABLE   = MCIERR_BASE + 70
MCIERR_WAVE_SETOUTPUTUNSUITABLE = MCIERR_BASE + 71
MCIERR_WAVE_INPUTSUNSUITABLE    = MCIERR_BASE + 72
MCIERR_WAVE_SETINPUTUNSUITABLE  = MCIERR_BASE + 73

MCIERR_SEQ_DIV_INCOMPATIBLE    = MCIERR_BASE + 80
MCIERR_SEQ_PORT_INUSE          = MCIERR_BASE + 81
MCIERR_SEQ_PORT_NONEXISTENT    = MCIERR_BASE + 82
MCIERR_SEQ_PORT_MAPNODEVICE    = MCIERR_BASE + 83
MCIERR_SEQ_PORT_MISCERROR      = MCIERR_BASE + 84
MCIERR_SEQ_TIMER               = MCIERR_BASE + 85
MCIERR_SEQ_PORTUNSPECIFIED     = MCIERR_BASE + 86
MCIERR_SEQ_NOMIDIPRESENT       = MCIERR_BASE + 87

MCIERR_NO_WINDOW               = MCIERR_BASE + 90
MCIERR_CREATEWINDOW            = MCIERR_BASE + 91
MCIERR_FILE_READ               = MCIERR_BASE + 92
MCIERR_FILE_WRITE              = MCIERR_BASE + 93

MCIERR_NO_IDENTITY             = MCIERR_BASE + 94

# All custom device driver errors must be >= this value
MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256

# Message numbers must be in the range between MCI_FIRST and MCI_LAST

MCI_FIRST       = DRV_MCI_FIRST   # 0x00800
# Messages 0x0801 and 0x0802 are reserved
MCI_OPEN        = 0x0803
MCI_CLOSE       = 0x0804
MCI_ESCAPE      = 0x0805
MCI_PLAY        = 0x0806
MCI_SEEK        = 0x0807
MCI_STOP        = 0x0808
MCI_PAUSE       = 0x0809
MCI_INFO        = 0x080A
MCI_GETDEVCAPS  = 0x080B
MCI_SPIN        = 0x080C
MCI_SET         = 0x080D
MCI_STEP        = 0x080E
MCI_RECORD      = 0x080F
MCI_SYSINFO     = 0x0810
MCI_BREAK       = 0x0811
MCI_SOUND       = 0x0812
MCI_SAVE        = 0x0813
MCI_STATUS      = 0x0814

MCI_CUE         = 0x0830

MCI_REALIZE     = 0x0840
MCI_WINDOW      = 0x0841
MCI_PUT         = 0x0842
MCI_WHERE       = 0x0843
MCI_FREEZE      = 0x0844
MCI_UNFREEZE    = 0x0845

MCI_LOAD        = 0x0850
MCI_CUT         = 0x0851
MCI_COPY        = 0x0852
MCI_PASTE       = 0x0853
MCI_UPDATE      = 0x0854
MCI_RESUME      = 0x0855
MCI_DELETE      = 0x0856

MCI_LAST        = 0x0FFF

# the next 0x0400 message ID#s are reserved for custom drivers
# all custom MCI command messages must be >= than this value
MCI_USER_MESSAGES  = 0x0400 + MCI_FIRST
MCI_ALL_DEVICE_ID  = -1 # Matches all MCI devices

# constants for predefined MCI device types
MCI_DEVTYPE_VCR            = 513
MCI_DEVTYPE_VIDEODISC      = 514
MCI_DEVTYPE_OVERLAY        = 515
MCI_DEVTYPE_CD_AUDIO       = 516
MCI_DEVTYPE_DAT            = 517
MCI_DEVTYPE_SCANNER        = 518
MCI_DEVTYPE_ANIMATION      = 519
MCI_DEVTYPE_DIGITAL_VIDEO  = 520
MCI_DEVTYPE_OTHER          = 521
MCI_DEVTYPE_WAVEFORM_AUDIO = 522
MCI_DEVTYPE_SEQUENCER      = 523

MCI_DEVTYPE_FIRST          = MCI_DEVTYPE_VCR
MCI_DEVTYPE_LAST           = MCI_DEVTYPE_SEQUENCER

MCI_DEVTYPE_FIRST_USER     = 0x01000

# return values for #status mode# command
MCI_MODE_NOT_READY = MCI_STRING_OFFSET + 12
MCI_MODE_STOP      = MCI_STRING_OFFSET + 13
MCI_MODE_PLAY      = MCI_STRING_OFFSET + 14
MCI_MODE_RECORD    = MCI_STRING_OFFSET + 15
MCI_MODE_SEEK      = MCI_STRING_OFFSET + 16
MCI_MODE_PAUSE     = MCI_STRING_OFFSET + 17
MCI_MODE_OPEN      = MCI_STRING_OFFSET + 18

# constants used in #set time format# and #status time format# commands
MCI_FORMAT_MILLISECONDS  = 0
MCI_FORMAT_HMS           = 1
MCI_FORMAT_MSF           = 2
MCI_FORMAT_FRAMES        = 3
MCI_FORMAT_SMPTE_24      = 4
MCI_FORMAT_SMPTE_25      = 5
MCI_FORMAT_SMPTE_30      = 6
MCI_FORMAT_SMPTE_30DROP  = 7
MCI_FORMAT_BYTES         = 8
MCI_FORMAT_SAMPLES       = 9
MCI_FORMAT_TMSF          = 10

# Flags for wParam of the MM_MCINOTIFY message
MCI_NOTIFY_SUCCESSFUL = 0x01
MCI_NOTIFY_SUPERSEDED = 0x02
MCI_NOTIFY_ABORTED    = 0x04
MCI_NOTIFY_FAILURE    = 0x08

# common flags for dwFlags parameter of MCI command messages
MCI_NOTIFY = 0x000000001
MCI_WAIT   = 0x000000002
MCI_FROM   = 0x000000004
MCI_TO     = 0x000000008
MCI_TRACK  = 0x000000010

# flags for dwFlags parameter of MCI_OPEN command message
MCI_OPEN_SHAREABLE  = 0x000000100
MCI_OPEN_ELEMENT    = 0x000000200
MCI_OPEN_ALIAS      = 0x000000400
MCI_OPEN_ELEMENT_ID = 0x000000800
MCI_OPEN_TYPE_ID    = 0x000001000
MCI_OPEN_TYPE       = 0x000002000

# flags for dwFlags parameter of MCI_SEEK command message
MCI_SEEK_TO_START = 0x000000100
MCI_SEEK_TO_END   = 0x000000200

# flags for dwFlags parameter of MCI_STATUS command message
MCI_STATUS_ITEM   = 0x000000100
MCI_STATUS_START  = 0x000000200

# flags for dwItem field of the MCI_STATUS_PARMS parameter block
MCI_STATUS_LENGTH           = 0x000000001
MCI_STATUS_POSITION         = 0x000000002
MCI_STATUS_NUMBER_OF_TRACKS = 0x000000003
MCI_STATUS_MODE             = 0x000000004
MCI_STATUS_MEDIA_PRESENT    = 0x000000005
MCI_STATUS_TIME_FORMAT      = 0x000000006
MCI_STATUS_READY            = 0x000000007
MCI_STATUS_CURRENT_TRACK    = 0x000000008

# flags for dwFlags parameter of MCI_INFO command message
MCI_INFO_PRODUCT  = 0x000000100
MCI_INFO_FILE     = 0x000000200

# flags for dwFlags parameter of MCI_GETDEVCAPS command message
MCI_GETDEVCAPS_ITEM = 0x000000100

# flags for dwItem field of the MCI_GETDEVCAPS_PARMS parameter block
MCI_GETDEVCAPS_CAN_RECORD      = 1
MCI_GETDEVCAPS_HAS_AUDIO       = 2
MCI_GETDEVCAPS_HAS_VIDEO       = 3
MCI_GETDEVCAPS_DEVICE_TYPE     = 4
MCI_GETDEVCAPS_USES_FILES      = 5
MCI_GETDEVCAPS_COMPOUND_DEVICE = 6
MCI_GETDEVCAPS_CAN_EJECT       = 7
MCI_GETDEVCAPS_CAN_PLAY        = 8
MCI_GETDEVCAPS_CAN_SAVE        = 9

# flags for dwFlags parameter of MCI_SYSINFO command message
MCI_SYSINFO_QUANTITY    = 0x000000100
MCI_SYSINFO_OPEN        = 0x000000200
MCI_SYSINFO_NAME        = 0x000000400
MCI_SYSINFO_INSTALLNAME = 0x000000800

# flags for dwFlags parameter of MCI_SET command message
MCI_SET_DOOR_OPEN   = 0x000000100
MCI_SET_DOOR_CLOSED = 0x000000200
MCI_SET_TIME_FORMAT = 0x000000400
MCI_SET_AUDIO       = 0x000000800
MCI_SET_VIDEO       = 0x000001000
MCI_SET_ON          = 0x000002000
MCI_SET_OFF         = 0x000004000

# flags for dwAudio field of MCI_SET_PARMS or MCI_SEQ_SET_PARMS
MCI_SET_AUDIO_ALL   = 0x000004001
MCI_SET_AUDIO_LEFT  = 0x000004002
MCI_SET_AUDIO_RIGHT = 0x000004003

# flags for dwFlags parameter of MCI_BREAK command message
MCI_BREAK_KEY  = 0x000000100
MCI_BREAK_HWND = 0x000000200
MCI_BREAK_OFF  = 0x000000400

# flags for dwFlags parameter of MCI_RECORD command message
MCI_RECORD_INSERT    = 0x000000100
MCI_RECORD_OVERWRITE = 0x000000200

# flags for dwFlags parameter of MCI_SOUND command message
MCI_SOUND_NAME = 0x000000100

# flags for dwFlags parameter of MCI_SAVE command message
MCI_SAVE_FILE  = 0x000000100

# flags for dwFlags parameter of MCI_LOAD command message
MCI_LOAD_FILE  = 0x000000100

MCI_VD_MODE_PARK = MCI_VD_OFFSET + 1

# return ID#s for videodisc MCI_GETDEVCAPS command

# flag for dwReturn field of MCI_STATUS_PARMS
# MCI_STATUS command, (dwItem == MCI_VD_STATUS_MEDIA_TYPE)
MCI_VD_MEDIA_CLV   = MCI_VD_OFFSET + 2
MCI_VD_MEDIA_CAV   = MCI_VD_OFFSET + 3
MCI_VD_MEDIA_OTHER = MCI_VD_OFFSET + 4

MCI_VD_FORMAT_TRACK = 0x000004001

# flags for dwFlags parameter of MCI_PLAY command message
MCI_VD_PLAY_REVERSE = 0x000010000
MCI_VD_PLAY_FAST    = 0x000020000
MCI_VD_PLAY_SPEED   = 0x000040000
MCI_VD_PLAY_SCAN    = 0x000080000
MCI_VD_PLAY_SLOW    = 0x000100000

# flag for dwFlags parameter of MCI_SEEK command message
MCI_VD_SEEK_REVERSE = 0x000010000

# flags for dwItem field of MCI_STATUS_PARMS parameter block
MCI_VD_STATUS_SPEED      = 0x000004002
MCI_VD_STATUS_FORWARD    = 0x000004003
MCI_VD_STATUS_MEDIA_TYPE = 0x000004004
MCI_VD_STATUS_SIDE       = 0x000004005
MCI_VD_STATUS_DISC_SIZE  = 0x000004006

# flags for dwFlags parameter of MCI_GETDEVCAPS command message
MCI_VD_GETDEVCAPS_CLV = 0x000010000
MCI_VD_GETDEVCAPS_CAV = 0x000020000

MCI_VD_SPIN_UP   = 0x000010000
MCI_VD_SPIN_DOWN = 0x000020000

# flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
MCI_VD_GETDEVCAPS_CAN_REVERSE = 0x000004002
MCI_VD_GETDEVCAPS_FAST_RATE   = 0x000004003
MCI_VD_GETDEVCAPS_SLOW_RATE   = 0x000004004
MCI_VD_GETDEVCAPS_NORMAL_RATE = 0x000004005

# flags for the dwFlags parameter of MCI_STEP command message
MCI_VD_STEP_FRAMES  = 0x000010000
MCI_VD_STEP_REVERSE = 0x000020000

# flag for the MCI_ESCAPE command message
MCI_VD_ESCAPE_STRING = 0x0100

MCI_WAVE_PCM    = MCI_WAVE_OFFSET + 0
MCI_WAVE_MAPPER = MCI_WAVE_OFFSET + 1

# flags for the dwFlags parameter of MCI_OPEN command message
MCI_WAVE_OPEN_BUFFER = 0x000010000

# flags for the dwFlags parameter of MCI_SET command message
MCI_WAVE_SET_FORMATTAG      = 0x000010000
MCI_WAVE_SET_CHANNELS       = 0x000020000
MCI_WAVE_SET_SAMPLESPERSEC  = 0x000040000
MCI_WAVE_SET_AVGBYTESPERSEC = 0x000080000
MCI_WAVE_SET_BLOCKALIGN     = 0x000100000
MCI_WAVE_SET_BITSPERSAMPLE  = 0x000200000

# flags for the dwFlags parameter of MCI_STATUS, MCI_SET command messages
MCI_WAVE_INPUT  = 0x000400000
MCI_WAVE_OUTPUT = 0x000800000

# flags for the dwItem field of MCI_STATUS_PARMS parameter block
MCI_WAVE_STATUS_FORMATTAG      = 0x000004001
MCI_WAVE_STATUS_CHANNELS       = 0x000004002
MCI_WAVE_STATUS_SAMPLESPERSEC  = 0x000004003
MCI_WAVE_STATUS_AVGBYTESPERSEC = 0x000004004
MCI_WAVE_STATUS_BLOCKALIGN     = 0x000004005
MCI_WAVE_STATUS_BITSPERSAMPLE  = 0x000004006
MCI_WAVE_STATUS_LEVEL          = 0x000004007

# flags for the dwFlags parameter of MCI_SET command message
MCI_WAVE_SET_ANYINPUT   = 0x004000000
MCI_WAVE_SET_ANYOUTPUT  = 0x008000000

# flags for the dwFlags parameter of MCI_GETDEVCAPS command message
MCI_WAVE_GETDEVCAPS_INPUTS  = 0x000004001
MCI_WAVE_GETDEVCAPS_OUTPUTS = 0x000004002

# flags for the dwReturn field of MCI_STATUS_PARMS parameter block
# MCI_STATUS command, (dwItem == MCI_SEQ_STATUS_DIVTYPE)
MCI_SEQ_DIV_PPQN         = MCI_SEQ_OFFSET
MCI_SEQ_DIV_SMPTE_24     = MCI_SEQ_OFFSET + 1
MCI_SEQ_DIV_SMPTE_25     = MCI_SEQ_OFFSET + 2
MCI_SEQ_DIV_SMPTE_30DROP = MCI_SEQ_OFFSET + 3
MCI_SEQ_DIV_SMPTE_30     = MCI_SEQ_OFFSET + 4

# flags for the dwMaster field of MCI_SEQ_SET_PARMS parameter block
# MCI_SET command, (dwFlags == MCI_SEQ_SET_MASTER)
MCI_SEQ_FORMAT_SONGPTR = 0x000004001
MCI_SEQ_FILE           = 0x000004002
MCI_SEQ_MIDI           = 0x000004003
MCI_SEQ_SMPTE          = 0x000004004
MCI_SEQ_NONE           = 65533

MCI_SEQ_MAPPER         = 65535

# flags for the dwItem field of MCI_STATUS_PARMS parameter block
MCI_SEQ_STATUS_TEMPO   = 0x000004002
MCI_SEQ_STATUS_PORT    = 0x000004003
MCI_SEQ_STATUS_SLAVE   = 0x000004007
MCI_SEQ_STATUS_MASTER  = 0x000004008
MCI_SEQ_STATUS_OFFSET  = 0x000004009
MCI_SEQ_STATUS_DIVTYPE = 0x00000400A

# flags for the dwFlags parameter of MCI_SET command message
MCI_SEQ_SET_TEMPO      = 0x000010000
MCI_SEQ_SET_PORT       = 0x000020000
MCI_SEQ_SET_SLAVE      = 0x000040000
MCI_SEQ_SET_MASTER     = 0x000080000
MCI_SEQ_SET_OFFSET     = 0x001000000

# flags for dwFlags parameter of MCI_OPEN command message
MCI_ANIM_OPEN_WS       = 0x000010000
MCI_ANIM_OPEN_PARENT   = 0x000020000
MCI_ANIM_OPEN_NOSTATIC = 0x000040000

# flags for dwFlags parameter of MCI_PLAY command message
MCI_ANIM_PLAY_SPEED    = 0x000010000
MCI_ANIM_PLAY_REVERSE  = 0x000020000
MCI_ANIM_PLAY_FAST     = 0x000040000
MCI_ANIM_PLAY_SLOW     = 0x000080000
MCI_ANIM_PLAY_SCAN     = 0x000100000

# flags for dwFlags parameter of MCI_STEP command message
MCI_ANIM_STEP_REVERSE  = 0x000010000
MCI_ANIM_STEP_FRAMES   = 0x000020000

# flags for dwItem field of MCI_STATUS_PARMS parameter block
MCI_ANIM_STATUS_SPEED    = 0x000004001
MCI_ANIM_STATUS_FORWARD  = 0x000004002
MCI_ANIM_STATUS_HWND     = 0x000004003
MCI_ANIM_STATUS_HPAL     = 0x000004004
MCI_ANIM_STATUS_STRETCH  = 0x000004005

# flags for the dwFlags parameter of MCI_INFO command message
MCI_ANIM_INFO_TEXT       = 0x000010000

# flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
MCI_ANIM_GETDEVCAPS_CAN_REVERSE  = 0x000004001
MCI_ANIM_GETDEVCAPS_FAST_RATE    = 0x000004002
MCI_ANIM_GETDEVCAPS_SLOW_RATE    = 0x000004003
MCI_ANIM_GETDEVCAPS_NORMAL_RATE  = 0x000004004
MCI_ANIM_GETDEVCAPS_PALETTES     = 0x000004006
MCI_ANIM_GETDEVCAPS_CAN_STRETCH  = 0x000004007
MCI_ANIM_GETDEVCAPS_MAX_WINDOWS  = 0x000004008

# flags for the MCI_REALIZE command message
MCI_ANIM_REALIZE_NORM = 0x000010000
MCI_ANIM_REALIZE_BKGD = 0x000020000

# flags for dwFlags parameter of MCI_WINDOW command message
MCI_ANIM_WINDOW_HWND            = 0x000010000
MCI_ANIM_WINDOW_STATE           = 0x000040000
MCI_ANIM_WINDOW_TEXT            = 0x000080000
MCI_ANIM_WINDOW_ENABLE_STRETCH  = 0x000100000
MCI_ANIM_WINDOW_DISABLE_STRETCH = 0x000200000

# flags for hWnd field of MCI_ANIM_WINDOW_PARMS parameter block
# MCI_WINDOW command message, (dwFlags == MCI_ANIM_WINDOW_HWND)
MCI_ANIM_WINDOW_DEFAULT = 0

# flags for dwFlags parameter of MCI_PUT command message
MCI_ANIM_RECT            = 0x000010000
MCI_ANIM_PUT_SOURCE      = 0x000020000
MCI_ANIM_PUT_DESTINATION = 0x000040000

# flags for dwFlags parameter of MCI_WHERE command message
MCI_ANIM_WHERE_SOURCE      = 0x000020000
MCI_ANIM_WHERE_DESTINATION = 0x000040000

# flags for dwFlags parameter of MCI_UPDATE command message
MCI_ANIM_UPDATE_HDC        = 0x000020000

# flags for dwFlags parameter of MCI_OPEN command message
MCI_OVLY_OPEN_WS           = 0x000010000
MCI_OVLY_OPEN_PARENT       = 0x000020000

# flags for dwFlags parameter of MCI_STATUS command message
MCI_OVLY_STATUS_HWND       = 0x000004001
MCI_OVLY_STATUS_STRETCH    = 0x000004002

# flags for dwFlags parameter of MCI_INFO command message
MCI_OVLY_INFO_TEXT         = 0x000010000

# flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
MCI_OVLY_GETDEVCAPS_CAN_STRETCH  = 0x000004001
MCI_OVLY_GETDEVCAPS_CAN_FREEZE   = 0x000004002
MCI_OVLY_GETDEVCAPS_MAX_WINDOWS  = 0x000004003

# flags for dwFlags parameter of MCI_WINDOW command message
MCI_OVLY_WINDOW_HWND             = 0x000010000
MCI_OVLY_WINDOW_STATE            = 0x000040000
MCI_OVLY_WINDOW_TEXT             = 0x000080000
MCI_OVLY_WINDOW_ENABLE_STRETCH   = 0x000100000
MCI_OVLY_WINDOW_DISABLE_STRETCH  = 0x000200000

# flags for hWnd parameter of MCI_OVLY_WINDOW_PARMS parameter block
MCI_OVLY_WINDOW_DEFAULT    = 0

# flags for dwFlags parameter of MCI_PUT command message
MCI_OVLY_RECT              = 0x000010000
MCI_OVLY_PUT_SOURCE        = 0x000020000
MCI_OVLY_PUT_DESTINATION   = 0x000040000
MCI_OVLY_PUT_FRAME         = 0x000080000
MCI_OVLY_PUT_VIDEO         = 0x000100000

# flags for dwFlags parameter of MCI_WHERE command message
MCI_OVLY_WHERE_SOURCE      = 0x000020000
MCI_OVLY_WHERE_DESTINATION = 0x000040000
MCI_OVLY_WHERE_FRAME       = 0x000080000
MCI_OVLY_WHERE_VIDEO       = 0x000100000

CAPS1          = 94              # other caps
C1_TRANSPARENT = 0x01     # new raster cap
NEWTRANSPARENT = 3  # use with SetBkMode

QUERYROPSUPPORT = 40  # use to determine ROP support

SELECTDIB = 41  # DIB.DRV select dib escape

# equates from winspool.h --------------------------------------------------

DSPRINT_PUBLISH   = 0x000000001
DSPRINT_UPDATE    = 0x000000002
DSPRINT_UNPUBLISH = 0x000000004
DSPRINT_REPUBLISH = 0x000000008
DSPRINT_PENDING   = 0x080000000

PRINTER_CONTROL_PAUSE      = 1
PRINTER_CONTROL_RESUME     = 2
PRINTER_CONTROL_PURGE      = 3
PRINTER_CONTROL_SET_STATUS = 4

PRINTER_STATUS_PAUSED            = 0x000000001
PRINTER_STATUS_ERROR             = 0x000000002
PRINTER_STATUS_PENDING_DELETION  = 0x000000004
PRINTER_STATUS_PAPER_JAM         = 0x000000008
PRINTER_STATUS_PAPER_OUT         = 0x000000010
PRINTER_STATUS_MANUAL_FEED       = 0x000000020
PRINTER_STATUS_PAPER_PROBLEM     = 0x000000040
PRINTER_STATUS_OFFLINE           = 0x000000080
PRINTER_STATUS_IO_ACTIVE         = 0x000000100
PRINTER_STATUS_BUSY              = 0x000000200
PRINTER_STATUS_PRINTING          = 0x000000400
PRINTER_STATUS_OUTPUT_BIN_FULL   = 0x000000800
PRINTER_STATUS_NOT_AVAILABLE     = 0x000001000
PRINTER_STATUS_WAITING           = 0x000002000
PRINTER_STATUS_PROCESSING        = 0x000004000
PRINTER_STATUS_INITIALIZING      = 0x000008000
PRINTER_STATUS_WARMING_UP        = 0x000010000
PRINTER_STATUS_TONER_LOW         = 0x000020000
PRINTER_STATUS_NO_TONER          = 0x000040000
PRINTER_STATUS_PAGE_PUNT         = 0x000080000
PRINTER_STATUS_USER_INTERVENTION = 0x000100000
PRINTER_STATUS_OUT_OF_MEMORY     = 0x000200000
PRINTER_STATUS_DOOR_OPEN         = 0x000400000
PRINTER_STATUS_SERVER_UNKNOWN    = 0x000800000
PRINTER_STATUS_POWER_SAVE        = 0x001000000

PRINTER_ATTRIBUTE_QUEUED         = 0x000000001
PRINTER_ATTRIBUTE_DIRECT         = 0x000000002
PRINTER_ATTRIBUTE_DEFAULT        = 0x000000004
PRINTER_ATTRIBUTE_SHARED         = 0x000000008
PRINTER_ATTRIBUTE_NETWORK        = 0x000000010
PRINTER_ATTRIBUTE_HIDDEN         = 0x000000020
PRINTER_ATTRIBUTE_LOCAL          = 0x000000040

PRINTER_ATTRIBUTE_ENABLE_DEVQ       = 0x000000080
PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   = 0x000000100
PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x000000200

PRINTER_ATTRIBUTE_WORK_OFFLINE   = 0x000000400
PRINTER_ATTRIBUTE_ENABLE_BIDI    = 0x000000800
PRINTER_ATTRIBUTE_RAW_ONLY       = 0x000001000
PRINTER_ATTRIBUTE_PUBLISHED      = 0x000002000
PRINTER_ATTRIBUTE_FAX            = 0x000004000
PRINTER_ATTRIBUTE_TS             = 0x000008000

NO_PRIORITY  = 0
MAX_PRIORITY = 99
MIN_PRIORITY = 1
DEF_PRIORITY = 1

JOB_CONTROL_PAUSE             = 1
JOB_CONTROL_RESUME            = 2
JOB_CONTROL_CANCEL            = 3
JOB_CONTROL_RESTART           = 4
JOB_CONTROL_DELETE            = 5
JOB_CONTROL_SENT_TO_PRINTER   = 6
JOB_CONTROL_LAST_PAGE_EJECTED = 7

JOB_STATUS_PAUSED            = 0x000000001
JOB_STATUS_ERROR             = 0x000000002
JOB_STATUS_DELETING          = 0x000000004
JOB_STATUS_SPOOLING          = 0x000000008
JOB_STATUS_PRINTING          = 0x000000010
JOB_STATUS_OFFLINE           = 0x000000020
JOB_STATUS_PAPEROUT          = 0x000000040
JOB_STATUS_PRINTED           = 0x000000080
JOB_STATUS_DELETED           = 0x000000100
JOB_STATUS_BLOCKED_DEVQ      = 0x000000200
JOB_STATUS_USER_INTERVENTION = 0x000000400
JOB_STATUS_RESTART           = 0x000000800
JOB_STATUS_COMPLETE          = 0x000001000

JOB_POSITION_UNSPECIFIED = 0

# FLAGS for dwDriverAttributes
DRIVER_KERNELMODE           = 0x000000001
DRIVER_USERMODE             = 0x000000002

# FLAGS for DeletePrinterDriverEx.
DPD_DELETE_UNUSED_FILES     = 0x000000001
DPD_DELETE_SPECIFIC_VERSION = 0x000000002
DPD_DELETE_ALL_FILES        = 0x000000004

# FLAGS for AddPrinterDriverEx.
APD_STRICT_UPGRADE          = 0x000000001
APD_STRICT_DOWNGRADE        = 0x000000002
APD_COPY_ALL_FILES          = 0x000000004
APD_COPY_NEW_FILES          = 0x000000008
APD_COPY_FROM_DIRECTORY     = 0x000000010

DI_CHANNEL        = 1                  # start direct read/write channel,
DI_READ_SPOOL_JOB = 3

DI_MEMORYMAP_WRITE = 1

NORMAL_PRINT  = 0
REVERSE_PRINT = 1

PORT_TYPE_WRITE        = 0x00001
PORT_TYPE_READ         = 0x00002
PORT_TYPE_REDIRECTED   = 0x00004
PORT_TYPE_NET_ATTACHED = 0x00008

PORT_STATUS_TYPE_ERROR   = 1
PORT_STATUS_TYPE_WARNING = 2
PORT_STATUS_TYPE_INFO    = 3

PORT_STATUS_OFFLINE           =  1
PORT_STATUS_PAPER_JAM         =  2
PORT_STATUS_PAPER_OUT         =  3
PORT_STATUS_OUTPUT_BIN_FULL   =  4
PORT_STATUS_PAPER_PROBLEM     =  5
PORT_STATUS_NO_TONER          =  6
PORT_STATUS_DOOR_OPEN         =  7
PORT_STATUS_USER_INTERVENTION =  8
PORT_STATUS_OUT_OF_MEMORY     =  9

PORT_STATUS_TONER_LOW         = 10

PORT_STATUS_WARMING_UP        = 11
PORT_STATUS_POWER_SAVE        = 12

PRINTER_ENUM_DEFAULT     = 0x000000001
PRINTER_ENUM_LOCAL       = 0x000000002
PRINTER_ENUM_CONNECTIONS = 0x000000004
PRINTER_ENUM_FAVORITE    = 0x000000004
PRINTER_ENUM_NAME        = 0x000000008
PRINTER_ENUM_REMOTE      = 0x000000010
PRINTER_ENUM_SHARED      = 0x000000020
PRINTER_ENUM_NETWORK     = 0x000000040

PRINTER_ENUM_EXPAND      = 0x000004000
PRINTER_ENUM_CONTAINER   = 0x000008000

PRINTER_ENUM_ICONMASK    = 0x000ff0000
PRINTER_ENUM_ICON1       = 0x000010000
PRINTER_ENUM_ICON2       = 0x000020000
PRINTER_ENUM_ICON3       = 0x000040000
PRINTER_ENUM_ICON4       = 0x000080000
PRINTER_ENUM_ICON5       = 0x000100000
PRINTER_ENUM_ICON6       = 0x000200000
PRINTER_ENUM_ICON7       = 0x000400000
PRINTER_ENUM_ICON8       = 0x000800000
PRINTER_ENUM_HIDE        = 0x001000000

SPOOL_FILE_PERSISTENT    = 0x000000001
SPOOL_FILE_TEMPORARY     = 0x000000002

PRINTER_NOTIFY_TYPE= 0x000
JOB_NOTIFY_TYPE    = 0x001

PRINTER_NOTIFY_FIELD_SERVER_NAME            = 0x000
PRINTER_NOTIFY_FIELD_PRINTER_NAME           = 0x001
PRINTER_NOTIFY_FIELD_SHARE_NAME             = 0x002
PRINTER_NOTIFY_FIELD_PORT_NAME              = 0x003
PRINTER_NOTIFY_FIELD_DRIVER_NAME            = 0x004
PRINTER_NOTIFY_FIELD_COMMENT                = 0x005
PRINTER_NOTIFY_FIELD_LOCATION               = 0x006
PRINTER_NOTIFY_FIELD_DEVMODE                = 0x007
PRINTER_NOTIFY_FIELD_SEPFILE                = 0x008
PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR        = 0x009
PRINTER_NOTIFY_FIELD_PARAMETERS             = 0x00A
PRINTER_NOTIFY_FIELD_DATATYPE               = 0x00B
PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR    = 0x00C
PRINTER_NOTIFY_FIELD_ATTRIBUTES             = 0x00D
PRINTER_NOTIFY_FIELD_PRIORITY               = 0x00E
PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY       = 0x00F
PRINTER_NOTIFY_FIELD_START_TIME             = 0x010
PRINTER_NOTIFY_FIELD_UNTIL_TIME             = 0x011
PRINTER_NOTIFY_FIELD_STATUS                 = 0x012
PRINTER_NOTIFY_FIELD_STATUS_STRING          = 0x013
PRINTER_NOTIFY_FIELD_CJOBS                  = 0x014
PRINTER_NOTIFY_FIELD_AVERAGE_PPM            = 0x015
PRINTER_NOTIFY_FIELD_TOTAL_PAGES            = 0x016
PRINTER_NOTIFY_FIELD_PAGES_PRINTED          = 0x017
PRINTER_NOTIFY_FIELD_TOTAL_BYTES            = 0x018
PRINTER_NOTIFY_FIELD_BYTES_PRINTED          = 0x019
PRINTER_NOTIFY_FIELD_OBJECT_GUID            = 0x01A

JOB_NOTIFY_FIELD_PRINTER_NAME               = 0x000
JOB_NOTIFY_FIELD_MACHINE_NAME               = 0x001
JOB_NOTIFY_FIELD_PORT_NAME                  = 0x002
JOB_NOTIFY_FIELD_USER_NAME                  = 0x003
JOB_NOTIFY_FIELD_NOTIFY_NAME                = 0x004
JOB_NOTIFY_FIELD_DATATYPE                   = 0x005
JOB_NOTIFY_FIELD_PRINT_PROCESSOR            = 0x006
JOB_NOTIFY_FIELD_PARAMETERS                 = 0x007
JOB_NOTIFY_FIELD_DRIVER_NAME                = 0x008
JOB_NOTIFY_FIELD_DEVMODE                    = 0x009
JOB_NOTIFY_FIELD_STATUS                     = 0x00A
JOB_NOTIFY_FIELD_STATUS_STRING              = 0x00B
JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR        = 0x00C
JOB_NOTIFY_FIELD_DOCUMENT                   = 0x00D
JOB_NOTIFY_FIELD_PRIORITY                   = 0x00E
JOB_NOTIFY_FIELD_POSITION                   = 0x00F
JOB_NOTIFY_FIELD_SUBMITTED                  = 0x010
JOB_NOTIFY_FIELD_START_TIME                 = 0x011
JOB_NOTIFY_FIELD_UNTIL_TIME                 = 0x012
JOB_NOTIFY_FIELD_TIME                       = 0x013
JOB_NOTIFY_FIELD_TOTAL_PAGES                = 0x014
JOB_NOTIFY_FIELD_PAGES_PRINTED              = 0x015
JOB_NOTIFY_FIELD_TOTAL_BYTES                = 0x016
JOB_NOTIFY_FIELD_BYTES_PRINTED              = 0x017

PRINTER_NOTIFY_INFO_DISCARDED     = 0x001

# enumerated type BIDI_TYPE
BIDI_NULL   = 0
BIDI_INT    = 1
BIDI_FLOAT  = 2
BIDI_BOOL   = 3
BIDI_STRING = 4
BIDI_TEXT   = 5
BIDI_ENUM   = 6
BIDI_BLOB   = 7

BIDI_ACCESS_ADMINISTRATOR  = 1
BIDI_ACCESS_USER           = 2

#    Error codes for bidi apis

ERROR_BIDI_STATUS_OK               = 0
ERROR_BIDI_NOT_SUPPORTED           = ERROR_NOT_SUPPORTED

ERROR_BIDI_ERROR_BASE              = 13000
ERROR_BIDI_STATUS_WARNING          = (ERROR_BIDI_ERROR_BASE + 1)
ERROR_BIDI_SCHEMA_READ_ONLY        = (ERROR_BIDI_ERROR_BASE + 2)
ERROR_BIDI_SERVER_OFFLINE          = (ERROR_BIDI_ERROR_BASE + 3)
ERROR_BIDI_DEVICE_OFFLINE          = (ERROR_BIDI_ERROR_BASE + 4)
ERROR_BIDI_SCHEMA_NOT_SUPPORTED    = (ERROR_BIDI_ERROR_BASE + 5)

PRINTER_CHANGE_ADD_PRINTER             = 0x000000001
PRINTER_CHANGE_SET_PRINTER             = 0x000000002
PRINTER_CHANGE_DELETE_PRINTER          = 0x000000004
PRINTER_CHANGE_PRINTER                 = 0x0000000FF
PRINTER_CHANGE_ADD_JOB                 = 0x000000100
PRINTER_CHANGE_SET_JOB                 = 0x000000200
PRINTER_CHANGE_DELETE_JOB              = 0x000000400
PRINTER_CHANGE_WRITE_JOB               = 0x000000800
PRINTER_CHANGE_JOB                     = 0x00000FF00
PRINTER_CHANGE_ADD_FORM                = 0x000010000
PRINTER_CHANGE_SET_FORM                = 0x000020000
PRINTER_CHANGE_DELETE_FORM             = 0x000040000
PRINTER_CHANGE_FORM                    = 0x000070000
PRINTER_CHANGE_ADD_PORT                = 0x000100000
PRINTER_CHANGE_CONFIGURE_PORT          = 0x000200000
PRINTER_CHANGE_DELETE_PORT             = 0x000400000
PRINTER_CHANGE_PORT                    = 0x000700000
PRINTER_CHANGE_ADD_PRINT_PROCESSOR     = 0x001000000
PRINTER_CHANGE_DELETE_PRINT_PROCESSOR  = 0x004000000
PRINTER_CHANGE_PRINT_PROCESSOR         = 0x007000000
PRINTER_CHANGE_ADD_PRINTER_DRIVER      = 0x010000000
PRINTER_CHANGE_DELETE_PRINTER_DRIVER   = 0x040000000
PRINTER_CHANGE_PRINTER_DRIVER          = 0x070000000
PRINTER_CHANGE_TIMEOUT                 = 0x080000000
PRINTER_CHANGE_ALL                     = 0x07777FFFF

PRINTER_ERROR_INFORMATION = 0x080000000
PRINTER_ERROR_WARNING     = 0x040000000
PRINTER_ERROR_SEVERE      = 0x020000000

PRINTER_ERROR_OUTOFPAPER  = 0x000000001
PRINTER_ERROR_JAM         = 0x000000002
PRINTER_ERROR_OUTOFTONER  = 0x000000004

# SetPrinterData and GetPrinterData Server Handle Key values

SPLREG_DEFAULT_SPOOL_DIRECTORY             = "DefaultSpoolDirectory"
SPLREG_PORT_THREAD_PRIORITY_DEFAULT        = "PortThreadPriorityDefault"
SPLREG_PORT_THREAD_PRIORITY                = "PortThreadPriority"
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT   = "SchedulerThreadPriorityDefault"
SPLREG_SCHEDULER_THREAD_PRIORITY           = "SchedulerThreadPriority"
SPLREG_BEEP_ENABLED                        = "BeepEnabled"
SPLREG_NET_POPUP                           = "NetPopup"
SPLREG_RETRY_POPUP                         = "RetryPopup"
SPLREG_NET_POPUP_TO_COMPUTER               = "NetPopupToComputer"
SPLREG_EVENT_LOG                           = "EventLog"
SPLREG_MAJOR_VERSION                       = "MajorVersion"
SPLREG_MINOR_VERSION                       = "MinorVersion"
SPLREG_ARCHITECTURE                        = "Architecture"
SPLREG_OS_VERSION                          = "OSVersion"
SPLREG_OS_VERSIONEX                        = "OSVersionEx"
SPLREG_DS_PRESENT                          = "DsPresent"
SPLREG_DS_PRESENT_FOR_USER                 = "DsPresentForUser"
SPLREG_REMOTE_FAX                          = "RemoteFax"
SPLREG_RESTART_JOB_ON_POOL_ERROR           = "RestartJobOnPoolError"
SPLREG_RESTART_JOB_ON_POOL_ENABLED         = "RestartJobOnPoolEnabled"
SPLREG_DNS_MACHINE_NAME                    = "DNSMachineName"
SPLREG_WEBSHAREMGMT                        = "WebShareMgmt"

SERVER_ACCESS_ADMINISTER  = 0x000000001
SERVER_ACCESS_ENUMERATE   = 0x000000002

PRINTER_ACCESS_ADMINISTER = 0x000000004
PRINTER_ACCESS_USE        = 0x000000008

JOB_ACCESS_ADMINISTER     = 0x000000010
JOB_ACCESS_READ           = 0x000000020

# Access rights for print servers

SERVER_READ          = STANDARD_RIGHTS_READ or SERVER_ACCESS_ENUMERATE

SERVER_WRITE         = STANDARD_RIGHTS_WRITE or SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE

SERVER_EXECUTE       = STANDARD_RIGHTS_EXECUTE or SERVER_ACCESS_ENUMERATE

SERVER_ALL_ACCESS    = STANDARD_RIGHTS_REQUIRED or SERVER_ACCESS_ADMINISTER or SERVER_ACCESS_ENUMERATE

# Access rights for printers

PRINTER_READ         = STANDARD_RIGHTS_READ or PRINTER_ACCESS_USE

PRINTER_WRITE        = STANDARD_RIGHTS_WRITE or PRINTER_ACCESS_USE

PRINTER_EXECUTE      = STANDARD_RIGHTS_EXECUTE or PRINTER_ACCESS_USE

PRINTER_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_ADMINISTER or PRINTER_ACCESS_USE

# Access rights for jobs

JOB_READ             = STANDARD_RIGHTS_READ or JOB_ACCESS_READ

JOB_WRITE            = STANDARD_RIGHTS_WRITE or JOB_ACCESS_ADMINISTER

JOB_EXECUTE          = STANDARD_RIGHTS_EXECUTE or JOB_ACCESS_ADMINISTER

JOB_ALL_ACCESS       = STANDARD_RIGHTS_REQUIRED or JOB_ACCESS_ADMINISTER or JOB_ACCESS_READ

# DS Print-Queue property tables

# Predefined Registry Keys used by Set/GetPrinterDataEx
SPLDS_SPOOLER_KEY                       = "DsSpooler"
SPLDS_DRIVER_KEY                        = "DsDriver"
SPLDS_USER_KEY                          = "DsUser"


# DS Print-Queue properties

SPLDS_ASSET_NUMBER                      = "assetNumber"
SPLDS_BYTES_PER_MINUTE                  = "bytesPerMinute"
SPLDS_DESCRIPTION                       = "description"
SPLDS_DRIVER_NAME                       = "driverName"
SPLDS_DRIVER_VERSION                    = "driverVersion"
SPLDS_LOCATION                          = "location"
SPLDS_PORT_NAME                         = "portName"
SPLDS_PRINT_ATTRIBUTES                  = "printAttributes"
SPLDS_PRINT_BIN_NAMES                   = "printBinNames"
SPLDS_PRINT_COLLATE                     = "printCollate"
SPLDS_PRINT_COLOR                       = "printColor"
SPLDS_PRINT_DUPLEX_SUPPORTED            = "printDuplexSupported"
SPLDS_PRINT_END_TIME                    = "printEndTime"
SPLDS_PRINTER_CLASS                     = "printQueue"
SPLDS_PRINTER_NAME                      = "printerName"
SPLDS_PRINT_KEEP_PRINTED_JOBS           = "printKeepPrintedJobs"
SPLDS_PRINT_LANGUAGE                    = "printLanguage"
SPLDS_PRINT_MAC_ADDRESS                 = "printMACAddress"
SPLDS_PRINT_MAX_X_EXTENT                = "printMaxXExtent"
SPLDS_PRINT_MAX_Y_EXTENT                = "printMaxYExtent"
SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED    = "printMaxResolutionSupported"
SPLDS_PRINT_MEDIA_READY                 = "printMediaReady"
SPLDS_PRINT_MEDIA_SUPPORTED             = "printMediaSupported"
SPLDS_PRINT_MEMORY                      = "printMemory"
SPLDS_PRINT_MIN_X_EXTENT                = "printMinXExtent"
SPLDS_PRINT_MIN_Y_EXTENT                = "printMinYExtent"
SPLDS_PRINT_NETWORK_ADDRESS             = "printNetworkAddress"
SPLDS_PRINT_NOTIFY                      = "printNotify"
SPLDS_PRINT_NUMBER_UP                   = "printNumberUp"
SPLDS_PRINT_ORIENTATIONS_SUPPORTED      = "printOrientationsSupported"
SPLDS_PRINT_OWNER                       = "printOwner"
SPLDS_PRINT_PAGES_PER_MINUTE            = "printPagesPerMinute"
SPLDS_PRINT_RATE                        = "printRate"
SPLDS_PRINT_RATE_UNIT                   = "printRateUnit"
SPLDS_PRINT_SEPARATOR_FILE              = "printSeparatorFile"
SPLDS_PRINT_SHARE_NAME                  = "printShareName"
SPLDS_PRINT_SPOOLING                    = "printSpooling"
SPLDS_PRINT_STAPLING_SUPPORTED          = "printStaplingSupported"
SPLDS_PRINT_START_TIME                  = "printStartTime"
SPLDS_PRINT_STATUS                      = "printStatus"
SPLDS_PRIORITY                          = "priority"
SPLDS_SERVER_NAME                       = "serverName"
SPLDS_SHORT_SERVER_NAME                 = "shortServerName"
SPLDS_UNC_NAME                          = "uNCName"
SPLDS_URL                               = "url"
SPLDS_FLAGS                             = "flags"
SPLDS_VERSION_NUMBER                    = "versionNumber"

#   -- Additional Print-Queue properties --
#
#   These properties are not defined in the default Directory Services Schema,
#   but should be used when extending the Schema so a consistent interface is maintained.

SPLDS_PRINTER_NAME_ALIASES              = "printerNameAliases"      # MULTI_SZ
SPLDS_PRINTER_LOCATIONS                 = "printerLocations"        # MULTI_SZ
SPLDS_PRINTER_MODEL                     = "printerModel"            # SZ

# end of equates from winspool.h -------------------------------------------

FORM_USER    = 0x000000000
FORM_BUILTIN = 0x000000001
FORM_PRINTER = 0x000000002

DI_MASK           = 0x00001
DI_IMAGE          = 0x00002
DI_NORMAL         = 0x00003
DI_COMPAT         = 0x00004
DI_DEFAULTSIZE    = 0x00008
DI_NOMIRROR       = 0x00010

RES_ICON   = 1
RES_CURSOR = 2

# Windows Network support (constants from winnetwk.h) =========================

# Network types
#
WNNC_NET_MSNET       = 0x000010000
WNNC_NET_LANMAN      = 0x000020000
WNNC_NET_NETWARE     = 0x000030000
WNNC_NET_VINES       = 0x000040000
WNNC_NET_10NET       = 0x000050000
WNNC_NET_LOCUS       = 0x000060000
WNNC_NET_SUN_PC_NFS  = 0x000070000
WNNC_NET_LANSTEP     = 0x000080000
WNNC_NET_9TILES      = 0x000090000
WNNC_NET_LANTASTIC   = 0x0000A0000
WNNC_NET_AS400       = 0x0000B0000
WNNC_NET_FTP_NFS     = 0x0000C0000
WNNC_NET_PATHWORKS   = 0x0000D0000
WNNC_NET_LIFENET     = 0x0000E0000
WNNC_NET_POWERLAN    = 0x0000F0000
WNNC_NET_BWNFS       = 0x000100000
WNNC_NET_COGENT      = 0x000110000
WNNC_NET_FARALLON    = 0x000120000
WNNC_NET_APPLETALK   = 0x000130000
WNNC_NET_INTERGRAPH  = 0x000140000
WNNC_NET_SYMFONET    = 0x000150000
WNNC_NET_CLEARCASE   = 0x000160000
WNNC_NET_FRONTIER    = 0x000170000
WNNC_NET_BMC         = 0x000180000
WNNC_NET_DCE         = 0x000190000
WNNC_NET_AVID        = 0x0001A0000
WNNC_NET_DOCUSPACE   = 0x0001B0000
WNNC_NET_MANGOSOFT   = 0x0001C0000
WNNC_NET_SERNET      = 0x0001D0000
WNNC_NET_RIVERFRONT1 = 0x0001E0000
WNNC_NET_RIVERFRONT2 = 0x0001F0000
WNNC_NET_DECORB      = 0x000200000
WNNC_NET_PROTSTOR    = 0x000210000
WNNC_NET_FJ_REDIR    = 0x000220000
WNNC_NET_DISTINCT    = 0x000230000
WNNC_NET_TWINS       = 0x000240000
WNNC_NET_RDR2SAMPLE  = 0x000250000
WNNC_NET_CSC         = 0x000260000
WNNC_NET_3IN1        = 0x000270000
WNNC_NET_EXTENDNET   = 0x000290000
WNNC_NET_STAC        = 0x0002A0000
WNNC_NET_FOXBAT      = 0x0002B0000
WNNC_NET_YAHOO       = 0x0002C0000
WNNC_NET_EXIFS       = 0x0002D0000
WNNC_NET_DAV         = 0x0002E0000
WNNC_NET_KNOWARE     = 0x0002F0000
WNNC_NET_OBJECT_DIRE = 0x000300000
WNNC_NET_MASFAX      = 0x000310000
WNNC_NET_HOB_NFS     = 0x000320000
WNNC_NET_SHIVA       = 0x000330000
WNNC_NET_IBMAL       = 0x000340000
WNNC_NET_LOCK        = 0x000350000
WNNC_NET_TERMSRV     = 0x000360000
WNNC_NET_SRT         = 0x000370000

WNNC_CRED_MANAGER   = 0x0FFFF0000

# Network Resources.
#
RESOURCE_CONNECTED    = 0x000000001
RESOURCE_PUBLICNET    = 0x000000002
RESOURCE_GLOBALNET    = 0x000000002
RESOURCE_REMEMBERED   = 0x000000003
RESOURCE_RECENT       = 0x000000004
RESOURCE_CONTEXT      = 0x000000005

RESOURCETYPE_ANY      = 0x000000000
RESOURCETYPE_DISK     = 0x000000001
RESOURCETYPE_PRINT    = 0x000000002
RESOURCETYPE_RESERVED = 0x000000008
RESOURCETYPE_UNKNOWN  = 0x0FFFFFFFF

RESOURCEUSAGE_CONNECTABLE   = 0x000000001
RESOURCEUSAGE_CONTAINER     = 0x000000002
RESOURCEUSAGE_NOLOCALDEVICE = 0x000000004
RESOURCEUSAGE_SIBLING       = 0x000000008
RESOURCEUSAGE_ATTACHED      = 0x000000010
RESOURCEUSAGE_ALL           = RESOURCEUSAGE_CONNECTABLE or RESOURCEUSAGE_CONTAINER or RESOURCEUSAGE_ATTACHED
RESOURCEUSAGE_RESERVED      = 0x080000000

RESOURCEDISPLAYTYPE_GENERIC      = 0x000000000
RESOURCEDISPLAYTYPE_DOMAIN       = 0x000000001
RESOURCEDISPLAYTYPE_SERVER       = 0x000000002
RESOURCEDISPLAYTYPE_SHARE        = 0x000000003
RESOURCEDISPLAYTYPE_FILE         = 0x000000004
RESOURCEDISPLAYTYPE_GROUP        = 0x000000005
RESOURCEDISPLAYTYPE_NETWORK      = 0x000000006
RESOURCEDISPLAYTYPE_ROOT         = 0x000000007
RESOURCEDISPLAYTYPE_SHAREADMIN   = 0x000000008
RESOURCEDISPLAYTYPE_DIRECTORY    = 0x000000009
RESOURCEDISPLAYTYPE_TREE         = 0x00000000A
RESOURCEDISPLAYTYPE_NDSCONTAINER = 0x00000000B

# Network Connections.
#
NETPROPERTY_PERSISTENT = 1

CONNECT_UPDATE_PROFILE = 0x000000001
CONNECT_UPDATE_RECENT  = 0x000000002
CONNECT_TEMPORARY      = 0x000000004
CONNECT_INTERACTIVE    = 0x000000008
CONNECT_PROMPT         = 0x000000010
CONNECT_NEED_DRIVE     = 0x000000020
CONNECT_REFCOUNT       = 0x000000040
CONNECT_REDIRECT       = 0x000000080
CONNECT_LOCALDRIVE     = 0x000000100
CONNECT_CURRENT_MEDIA  = 0x000000200
CONNECT_DEFERRED       = 0x000000400
CONNECT_RESERVED       = 0x0FF000000
CONNECT_COMMANDLINE    = 0x000000800
CONNECT_CMD_SAVECRED   = 0x000001000

CONNDLG_RO_PATH        = 0x000000001   # Resource path should be read-only
CONNDLG_CONN_POINT     = 0x000000002   # Netware-style movable connection point
CONNDLG_USE_MRU        = 0x000000004   # Use MRU combobox
CONNDLG_HIDE_BOX       = 0x000000008   # Hide persistent connect checkbox

# NOTE: Set at most ONE of the below CONNDLG_ flags. If neither flag is set,
#      the persistence is set to whatever the user chose during a previous
#      connection.
#
CONNDLG_PERSIST        = 0x000000010   # Force persistent connection
CONNDLG_NOT_PERSIST    = 0x000000020   # Force connection not persistent

DISC_UPDATE_PROFILE = 0x000000001
DISC_NO_FORCE       = 0x000000040

# Universal Naming.
#
UNIVERSAL_NAME_INFO_LEVEL = 0x000000001
REMOTE_NAME_INFO_LEVEL    = 0x000000002

# Other.
#
WNFMT_MULTILINE    = 0x001
WNFMT_ABBREVIATED  = 0x002
WNFMT_INENUM       = 0x010
WNFMT_CONNECTION   = 0x020

NETINFO_DLL16      = 0x000000001  # Provider running as 16 bit Winnet Driver
NETINFO_DISKRED    = 0x000000004  # Provider requires disk redirections to connect
NETINFO_PRINTERRED = 0x000000008  # Provider requires printer redirections to connect

RP_LOGON   = 0x001   # if set, do for logon, else for logoff
RP_INIFILE = 0x002   # if set, reconcile .INI file, else reg. hive

PP_DISPLAYERRORS = 0x001  # if set, display error messages, else fail silently if error

#
# STATUS CODES
#
#
# General
#
WN_SUCCESS          = NO_ERROR
WN_NO_ERROR         = NO_ERROR
WN_NOT_SUPPORTED    = ERROR_NOT_SUPPORTED
WN_CANCEL           = ERROR_CANCELLED
WN_RETRY            = ERROR_RETRY
WN_NET_ERROR        = ERROR_UNEXP_NET_ERR
WN_MORE_DATA        = ERROR_MORE_DATA
WN_BAD_POINTER      = ERROR_INVALID_ADDRESS
WN_BAD_VALUE        = ERROR_INVALID_PARAMETER
WN_BAD_USER         = ERROR_BAD_USERNAME
WN_BAD_PASSWORD     = ERROR_INVALID_PASSWORD
WN_ACCESS_DENIED    = ERROR_ACCESS_DENIED
WN_FUNCTION_BUSY    = ERROR_BUSY
WN_WINDOWS_ERROR    = ERROR_UNEXP_NET_ERR
WN_OUT_OF_MEMORY    = ERROR_NOT_ENOUGH_MEMORY
WN_NO_NETWORK       = ERROR_NO_NETWORK
WN_EXTENDED_ERROR   = ERROR_EXTENDED_ERROR
WN_BAD_LEVEL        = ERROR_INVALID_LEVEL
WN_BAD_HANDLE       = ERROR_INVALID_HANDLE
WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED
WN_NO_MORE_DEVICES  = ERROR_NO_MORE_DEVICES

# Connection
#
WN_NOT_CONNECTED        = ERROR_NOT_CONNECTED
WN_OPEN_FILES           = ERROR_OPEN_FILES
WN_DEVICE_IN_USE        = ERROR_DEVICE_IN_USE
WN_BAD_NETNAME          = ERROR_BAD_NET_NAME
WN_BAD_LOCALNAME        = ERROR_BAD_DEVICE
WN_ALREADY_CONNECTED    = ERROR_ALREADY_ASSIGNED
WN_DEVICE_ERROR         = ERROR_GEN_FAILURE
WN_CONNECTION_CLOSED    = ERROR_CONNECTION_UNAVAIL
WN_NO_NET_OR_BAD_PATH   = ERROR_NO_NET_OR_BAD_PATH
WN_BAD_PROVIDER         = ERROR_BAD_PROVIDER
WN_CANNOT_OPEN_PROFILE  = ERROR_CANNOT_OPEN_PROFILE
WN_BAD_PROFILE          = ERROR_BAD_PROFILE
WN_BAD_DEV_TYPE         = ERROR_BAD_DEV_TYPE
WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED
WN_CONNECTED_OTHER_PASSWORD  = ERROR_CONNECTED_OTHER_PASSWORD
WN_CONNECTED_OTHER_PASSWORD_DEFAULT = ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT

# Enumeration
#
WN_NO_MORE_ENTRIES     = ERROR_NO_MORE_ITEMS
WN_NOT_CONTAINER       = ERROR_NOT_CONTAINER

# Authentication
#
WN_NOT_AUTHENTICATED   = ERROR_NOT_AUTHENTICATED
WN_NOT_LOGGED_ON       = ERROR_NOT_LOGGED_ON
WN_NOT_VALIDATED       = ERROR_NO_LOGON_SERVERS

# for Shell
#
WNCON_FORNETCARD = 0x000000001
WNCON_NOTROUTED  = 0x000000002
WNCON_SLOWLINK   = 0x000000004
WNCON_DYNAMIC    = 0x000000008

# End of constants from winnetwk.h ============================================

# Constants from lmcons.h =====================================================

# String Lengths for various LanMan names

CNLEN        = 15                  # Computer name length
LM20_CNLEN   = 15                  # LM 2.0 Computer name length
DNLEN        = CNLEN              # Maximum domain name length
LM20_DNLEN   = LM20_CNLEN         # LM 2.0 Maximum domain name length

UNCLEN       = CNLEN + 2          # UNC computer name length
LM20_UNCLEN  = LM20_CNLEN + 2     # LM 2.0 UNC computer name length

NNLEN        = 80                  # Net name length (share name)
LM20_NNLEN   = 12                  # LM 2.0 Net name length

RMLEN        = UNCLEN + 1 + NNLEN # Max remote name length
LM20_RMLEN   = LM20_UNCLEN + 1 + LM20_NNLEN # LM 2.0 Max remote name length

SNLEN        = 80                  # Service name length
LM20_SNLEN   = 15                  # LM 2.0 Service name length
STXTLEN      = 256                 # Service text length
LM20_STXTLEN = 63                  # LM 2.0 Service text length

PATHLEN      = 256                 # Max. path (not including drive name)
LM20_PATHLEN = 256                 # LM 2.0 Max. path

DEVLEN       = 80                  # Device name length
LM20_DEVLEN  = 8                   # LM 2.0 Device name length

EVLEN        = 16                  # Event name length

# User, Group and Password lengths

UNLEN      = 256                 # Maximum user name length
LM20_UNLEN = 20                  # LM 2.0 Maximum user name length

GNLEN      = UNLEN              # Group name
LM20_GNLEN = LM20_UNLEN         # LM 2.0 Group name

PWLEN      = 256                 # Maximum password length
LM20_PWLEN = 14                  # LM 2.0 Maximum password length

SHPWLEN    = 8                   # Share password length (bytes)

CLTYPE_LEN = 12                  # Length of client type string

MAXCOMMENTSZ = 256               # Multipurpose comment length
LM20_MAXCOMMENTSZ = 48           # LM 2.0 Multipurpose comment length

QNLEN      = NNLEN              # Queue name maximum length
LM20_QNLEN = LM20_NNLEN         # LM 2.0 Queue name maximum length

# The ALERTSZ and MAXDEVENTRIES defines have not yet been NT#ized.
# Whoever ports these components should change these values appropriately.

ALERTSZ     = 128     # size of alert string in server
MAXDEVENTRIES = (4*8) # Max number of device entries (SIZEOF(LONG) * 8)

                       # We use int bitmap to represent

NETBIOS_NAME_LEN = 16 # NetBIOS net name (bytes)

# Value to be used with APIs which have a "preferred maximum length"
# parameter.  This value indicates that the API should just allocate
# "as much as it takes."

MAX_PREFERRED_LENGTH = 0x0FFFFFFFF # ((DWORD) -1)

#        Constants used with encryption

CRYPT_KEY_LEN      = 7
CRYPT_TXT_LEN      = 8
ENCRYPTED_PWLEN    = 16
SESSION_PWLEN      = 24
SESSION_CRYPT_KLEN = 21

#  Value to be used with SetInfo calls to allow setting of all
#  settable parameters (parmnum zero option)

PARMNUM_ALL        = 0



PARM_ERROR_NONE        = 0
PARMNUM_BASE_INFOLEVEL = 1000

# The platform ID indicates the levels to use for platform-specific
# information.

PLATFORM_ID_DOS = 300
PLATFORM_ID_OS2 = 400
PLATFORM_ID_NT  = 500
PLATFORM_ID_OSF = 600
PLATFORM_ID_VMS = 700

# There message numbers assigned to different LANMAN components
# are as defined below.
#
# lmerr.h:        2100 - 2999     NERR_BASE
# alertmsg.h:     3000 - 3049     ALERT_BASE
# lmsvc.h:        3050 - 3099     SERVICE_BASE
# lmerrlog.h:     3100 - 3299     ERRLOG_BASE
# msgtext.h:      3300 - 3499     MTXT_BASE
# apperr.h:       3500 - 3999     APPERR_BASE
# apperrfs.h:     4000 - 4299     APPERRFS_BASE
# apperr2.h:      4300 - 5299     APPERR2_BASE
# ncberr.h:       5300 - 5499     NRCERR_BASE
# alertmsg.h:     5500 - 5599     ALERT2_BASE
# lmsvc.h:        5600 - 5699     SERVICE2_BASE
# lmerrlog.h      5700 - 5899     ERRLOG2_BASE
#

#MIN_LANMAN_MESSAGE_ID = NERR_BASE
MAX_LANMAN_MESSAGE_ID = 5899

# End of constants from lmcons.h ==============================================

# This section contains the definitions
# for portable NetBIOS 3.0 support.

NCBNAMSZ         = 16  # absolute length of a net name
MAX_LANA         = 254  # lana#s in range 0 to MAX_LANA

# Constants from nb30.h =======================================================

NAME_FLAGS_MASK  = 0x087
GROUP_NAME       = 0x080
UNIQUE_NAME      = 0x000
REGISTERING      = 0x000
REGISTERED       = 0x004
DEREGISTERED     = 0x005
DUPLICATE        = 0x006
DUPLICATE_DEREG  = 0x007

# Values for state
#
LISTEN_OUTSTANDING   = 0x001
CALL_PENDING         = 0x002
SESSION_ESTABLISHED  = 0x003
HANGUP_PENDING       = 0x004
HANGUP_COMPLETE      = 0x005
SESSION_ABORTED      = 0x006

# Values for transport_id
#


ALL_TRANSPORTS = "M\0\0\0"
MS_NBF         = "MNBF"



# NCB Command codes
#
NCBCALL          = 0x010  # NCB CALL
NCBLISTEN        = 0x011  # NCB LISTEN
NCBHANGUP        = 0x012  # NCB HANG UP
NCBSEND          = 0x014  # NCB SEND
NCBRECV          = 0x015  # NCB RECEIVE
NCBRECVANY       = 0x016  # NCB RECEIVE ANY
NCBCHAINSEND     = 0x017  # NCB CHAIN SEND
NCBDGSEND        = 0x020  # NCB SEND DATAGRAM
NCBDGRECV        = 0x021  # NCB RECEIVE DATAGRAM
NCBDGSENDBC      = 0x022  # NCB SEND BROADCAST DATAGRAM
NCBDGRECVBC      = 0x023  # NCB RECEIVE BROADCAST DATAGRAM
NCBADDNAME       = 0x030  # NCB ADD NAME
NCBDELNAME       = 0x031  # NCB DELETE NAME
NCBRESET         = 0x032  # NCB RESET
NCBASTAT         = 0x033  # NCB ADAPTER STATUS
NCBSSTAT         = 0x034  # NCB SESSION STATUS
NCBCANCEL        = 0x035  # NCB CANCEL
NCBADDGRNAME     = 0x036  # NCB ADD GROUP NAME
NCBENUM          = 0x037  # NCB ENUMERATE LANA NUMBERS
NCBUNLINK        = 0x070  # NCB UNLINK
NCBSENDNA        = 0x071  # NCB SEND NO ACK
NCBCHAINSENDNA   = 0x072  # NCB CHAIN SEND NO ACK
NCBLANSTALERT    = 0x073  # NCB LAN STATUS ALERT
NCBACTION        = 0x077  # NCB ACTION
NCBFINDNAME      = 0x078  # NCB FIND NAME
NCBTRACE         = 0x079  # NCB TRACE

ASYNCH           = 0x080  # high bit set == asynchronous

# NCB Return codes
#
NRC_GOODRET      = 0x000  # good return
                          # also returned when ASYNCH request accepted
NRC_BUFLEN       = 0x001  # illegal buffer length
NRC_ILLCMD       = 0x003  # illegal command
NRC_CMDTMO       = 0x005  # command timed out
NRC_INCOMP       = 0x006  # message incomplete, issue another command
NRC_BADDR        = 0x007  # illegal buffer address
NRC_SNUMOUT      = 0x008  # session number out of range
NRC_NORES        = 0x009  # no resource available
NRC_SCLOSED      = 0x00A  # session closed
NRC_CMDCAN       = 0x00B  # command cancelled
NRC_DUPNAME      = 0x00D  # duplicate name
NRC_NAMTFUL      = 0x00E  # name table full
NRC_ACTSES       = 0x00F  # no deletions, name has active sessions
NRC_LOCTFUL      = 0x011  # local session table full
NRC_REMTFUL      = 0x012  # remote session table full
NRC_ILLNN        = 0x013  # illegal name number
NRC_NOCALL       = 0x014  # no callname
NRC_NOWILD       = 0x015  # cannot put  in NCB_NAME
NRC_INUSE        = 0x016  # name in use on remote adapter
NRC_NAMERR       = 0x017  # name deleted
NRC_SABORT       = 0x018  # session ended abnormally
NRC_NAMCONF      = 0x019  # name conflict detected
NRC_IFBUSY       = 0x021  # interface busy, IRET before retrying
NRC_TOOMANY      = 0x022  # too many commands outstanding, retry later
NRC_BRIDGE       = 0x023  # ncb_lana_num field invalid
NRC_CANOCCR      = 0x024  # command completed while cancel occurring
NRC_CANCEL       = 0x026  # command not valid to cancel
NRC_DUPENV       = 0x030  # name defined by anther local process
NRC_ENVNOTDEF    = 0x034  # environment undefined. RESET required
NRC_OSRESNOTAV   = 0x035  # required OS resources exhausted
NRC_MAXAPPS      = 0x036  # max number of applications exceeded
NRC_NOSAPS       = 0x037  # no saps available for netbios
NRC_NORESOURCES  = 0x038  # requested resources are not available
NRC_INVADDRESS   = 0x039  # invalid ncb address or length > segment
NRC_INVDDID      = 0x03B  # invalid NCB DDID
NRC_LOCKFAIL     = 0x03C  # lock of user area failed
NRC_OPENERR      = 0x03F  # NETBIOS not loaded
NRC_SYSTEM       = 0x040  # system error

NRC_PENDING      = 0x0FF  # asynchronous command is not yet finished

# End of constants from nb30.h ================================================

NERR_Success = 0

PERM_FILE_READ   = 0x01
PERM_FILE_WRITE  = 0x02
PERM_FILE_CREATE = 0x04

# Legal values for expression in except.
EXCEPTION_EXECUTE_HANDLER    = 1
EXCEPTION_CONTINUE_SEARCH    = 0
EXCEPTION_CONTINUE_EXECUTION = -1

# UI dialog constants and types

# ----Constants--------------------------------------------------------------
ctlFirst = 0x0400
ctlLast  = 0x04FF
# Push buttons
psh1     = 0x0400
psh2     = 0x0401
psh3     = 0x0402
psh4     = 0x0403
psh5     = 0x0404
psh6     = 0x0405
psh7     = 0x0406
psh8     = 0x0407
psh9     = 0x0408
psh10    = 0x0409
psh11    = 0x040A
psh12    = 0x040B
psh13    = 0x040C
psh14    = 0x040D
psh15    = 0x040E
pshHelp  = psh15
psh16    = 0x040F
# Checkboxes
chx1     = 0x0410
chx2     = 0x0411
chx3     = 0x0412
chx4     = 0x0413
chx5     = 0x0414
chx6     = 0x0415
chx7     = 0x0416
chx8     = 0x0417
chx9     = 0x0418
chx10    = 0x0419
chx11    = 0x041A
chx12    = 0x041B
chx13    = 0x041C
chx14    = 0x041D
chx15    = 0x041E
chx16    = 0x041D
# Radio buttons
rad1     = 0x0420
rad2     = 0x0421
rad3     = 0x0422
rad4     = 0x0423
rad5     = 0x0424
rad6     = 0x0425
rad7     = 0x0426
rad8     = 0x0427
rad9     = 0x0428
rad10    = 0x0429
rad11    = 0x042A
rad12    = 0x042B
rad13    = 0x042C
rad14    = 0x042D
rad15    = 0x042E
rad16    = 0x042F
# Groups, frames, rectangles, and icons
grp1     = 0x0430
grp2     = 0x0431
grp3     = 0x0432
grp4     = 0x0433
frm1     = 0x0434
frm2     = 0x0435
frm3     = 0x0436
frm4     = 0x0437
rct1     = 0x0438
rct2     = 0x0439
rct3     = 0x043A
rct4     = 0x043B
ico1     = 0x043C
ico2     = 0x043D
ico3     = 0x043E
ico4     = 0x043F
# Static text
stc1     = 0x0440
stc2     = 0x0441
stc3     = 0x0442
stc4     = 0x0443
stc5     = 0x0444
stc6     = 0x0445
stc7     = 0x0446
stc8     = 0x0447
stc9     = 0x0448
stc10    = 0x0449
stc11    = 0x044A
stc12    = 0x044B
stc13    = 0x044C
stc14    = 0x044D
stc15    = 0x044E
stc16    = 0x044F
stc17    = 0x0450
stc18    = 0x0451
stc19    = 0x0452
stc20    = 0x0453
stc21    = 0x0454
stc22    = 0x0455
stc23    = 0x0456
stc24    = 0x0457
stc25    = 0x0458
stc26    = 0x0459
stc27    = 0x045A
stc28    = 0x045B
stc29    = 0x045C
stc30    = 0x045D
stc31    = 0x045E
stc32    = 0x045F
# Listboxes
lst1     = 0x0460
lst2     = 0x0461
lst3     = 0x0462
lst4     = 0x0463
lst5     = 0x0464
lst6     = 0x0465
lst7     = 0x0466
lst8     = 0x0467
lst9     = 0x0468
lst10    = 0x0469
lst11    = 0x046A
lst12    = 0x046B
lst13    = 0x046C
lst14    = 0x046D
lst15    = 0x046E
lst16    = 0x046F
# Combo boxes
cmb1     = 0x0470
cmb2     = 0x0471
cmb3     = 0x0472
cmb4     = 0x0473
cmb5     = 0x0474
cmb6     = 0x0475
cmb7     = 0x0476
cmb8     = 0x0477
cmb9     = 0x0478
cmb10    = 0x0479
cmb11    = 0x047A
cmb12    = 0x047B
cmb13    = 0x047C
cmb14    = 0x047D
cmb15    = 0x047E
cmb16    = 0x047F
# Edit controls
edt1     = 0x0480
edt2     = 0x0481
edt3     = 0x0482
edt4     = 0x0483
edt5     = 0x0484
edt6     = 0x0485
edt7     = 0x0486
edt8     = 0x0487
edt9     = 0x0488
edt10    = 0x0489
edt11    = 0x048A
edt12    = 0x048B
edt13    = 0x048C
edt14    = 0x048D
edt15    = 0x048E
edt16    = 0x048F
# Scroll bars
scr1     = 0x0490
scr2     = 0x0491
scr3     = 0x0492
scr4     = 0x0493
scr5     = 0x0494
scr6     = 0x0495
scr7     = 0x0496
scr8     = 0x0497

FILEOPENORD        = 1536
MULTIFILEOPENORD   = 1537
PRINTDLGORD        = 1538
PRNSETUPDLGORD     = 1539
FINDDLGORD         = 1540
REPLACEDLGORD      = 1541
FONTDLGORD         = 1542
FORMATDLGORD31     = 1543
FORMATDLGORD30     = 1544

HKEY_CLASSES_ROOT        = 0x080000000
HKEY_CURRENT_USER        = 0x080000001
HKEY_LOCAL_MACHINE       = 0x080000002
HKEY_USERS               = 0x080000003
HKEY_PERFORMANCE_DATA    = 0x080000004
HKEY_PERFORMANCE_TEXT    = 0x080000050
HKEY_PERFORMANCE_NLSTEXT = 0x080000060
HKEY_CURRENT_CONFIG      = 0x080000005
HKEY_DYN_DATA            = 0x080000006
HKEY_DYNAMIC_DATA        = HKEY_DYN_DATA

HKCR = HKEY_CLASSES_ROOT
HKCU = HKEY_CURRENT_USER
HKLM = HKEY_LOCAL_MACHINE
HKU  = HKEY_USERS
HKPD = HKEY_PERFORMANCE_DATA
HKCC = HKEY_CURRENT_CONFIG
HKDD = HKEY_DYN_DATA

# Value to indicate no change to an optional parameter
SERVICE_NO_CHANGE = 0x0FFFF

# Service State -- for Enum Requests (Bit Mask)
SERVICE_ACTIVE    = 0x01
SERVICE_INACTIVE  = 0x02
SERVICE_STATE_ALL = SERVICE_ACTIVE or SERVICE_INACTIVE

# Controls
SERVICE_CONTROL_STOP                  = 0x000000001
SERVICE_CONTROL_PAUSE                 = 0x000000002
SERVICE_CONTROL_CONTINUE              = 0x000000003
SERVICE_CONTROL_INTERROGATE           = 0x000000004
SERVICE_CONTROL_SHUTDOWN              = 0x000000005
SERVICE_CONTROL_PARAMCHANGE           = 0x000000006
SERVICE_CONTROL_NETBINDADD            = 0x000000007
SERVICE_CONTROL_NETBINDREMOVE         = 0x000000008
SERVICE_CONTROL_NETBINDENABLE         = 0x000000009
SERVICE_CONTROL_NETBINDDISABLE        = 0x00000000A
SERVICE_CONTROL_DEVICEEVENT           = 0x00000000B
SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0x00000000C
SERVICE_CONTROL_POWEREVENT            = 0x00000000D
SERVICE_CONTROL_SESSIONCHANGE         = 0x00000000E

# Service State -- for CurrentState
SERVICE_STOPPED          = 0x01
SERVICE_START_PENDING    = 0x02
SERVICE_STOP_PENDING     = 0x03
SERVICE_RUNNING          = 0x04
SERVICE_CONTINUE_PENDING = 0x05
SERVICE_PAUSE_PENDING    = 0x06
SERVICE_PAUSED           = 0x07

# Controls Accepted  (Bit Mask)
SERVICE_ACCEPT_STOP                  = 0x000000001
SERVICE_ACCEPT_PAUSE_CONTINUE        = 0x000000002
SERVICE_ACCEPT_SHUTDOWN              = 0x000000004
SERVICE_ACCEPT_PARAMCHANGE           = 0x000000008
SERVICE_ACCEPT_NETBINDCHANGE         = 0x000000010
SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x000000020
SERVICE_ACCEPT_POWEREVENT            = 0x000000040
SERVICE_ACCEPT_SESSIONCHANGE         = 0x000000080

# Service Control Manager object specific access types
SC_MANAGER_CONNECT            = 0x01
SC_MANAGER_CREATE_SERVICE     = 0x02
SC_MANAGER_ENUMERATE_SERVICE  = 0x04
SC_MANAGER_LOCK               = 0x08
SC_MANAGER_QUERY_LOCK_STATUS  = 0x010
SC_MANAGER_MODIFY_BOOT_CONFIG = 0x020

SC_MANAGER_ALL_ACCESS         = STANDARD_RIGHTS_REQUIRED or SC_MANAGER_CONNECT or SC_MANAGER_CREATE_SERVICE or SC_MANAGER_ENUMERATE_SERVICE or SC_MANAGER_LOCK or SC_MANAGER_QUERY_LOCK_STATUS or SC_MANAGER_MODIFY_BOOT_CONFIG

# Service object specific access type
SERVICE_QUERY_CONFIG          = 0x01
SERVICE_CHANGE_CONFIG         = 0x02
SERVICE_QUERY_STATUS          = 0x04
SERVICE_ENUMERATE_DEPENDENTS  = 0x08
SERVICE_START                 = 0x010
SERVICE_STOP                  = 0x020
SERVICE_PAUSE_CONTINUE        = 0x040
SERVICE_INTERROGATE           = 0x080
SERVICE_USER_DEFINED_CONTROL  = 0x0100

SERVICE_ALL_ACCESS            = STANDARD_RIGHTS_REQUIRED or SERVICE_QUERY_CONFIG or SERVICE_CHANGE_CONFIG or SERVICE_QUERY_STATUS or SERVICE_ENUMERATE_DEPENDENTS or SERVICE_START or SERVICE_STOP or SERVICE_PAUSE_CONTINUE or SERVICE_INTERROGATE or SERVICE_USER_DEFINED_CONTROL


PERF_DATA_VERSION             = 1
PERF_DATA_REVISION            = 1

PERF_NO_INSTANCES             = -1  # no instances

# The counter type is the "or" of the following values as described below
#
# select one of the following to indicate the counter#s data size
PERF_SIZE_DWORD               = 0x00
PERF_SIZE_LARGE               = 0x0100
PERF_SIZE_ZERO                = 0x0200    # for Zero Length fields
PERF_SIZE_VARIABLE_LEN        = 0x0300    # length is in CounterLength field of Counter Definition struct

# select one of the following values to indicate the counter field usage
PERF_TYPE_NUMBER              = 0x00      # a number (not a counter)
PERF_TYPE_COUNTER             = 0x0400    # an increasing numeric value
PERF_TYPE_TEXT                = 0x0800    # a text field
PERF_TYPE_ZERO                = 0x0C00    # displays a zero

# If the PERF_TYPE_NUMBER field was selected, then select one of the
# following to describe the Number
PERF_NUMBER_HEX               = 0x00      # display as HEX value
PERF_NUMBER_DECIMAL           = 0x010000  # display as a decimal integer
PERF_NUMBER_DEC_1000          = 0x020000  # display as a decimal/1000
#
# If the PERF_TYPE_COUNTER value was selected then select one of the
# following to indicate the type of counter
PERF_COUNTER_VALUE            = 0x00      # display counter value
PERF_COUNTER_RATE             = 0x010000  # divide ctr / delta time
PERF_COUNTER_FRACTION         = 0x020000  # divide ctr / base
PERF_COUNTER_BASE             = 0x030000  # base value used in fractions
PERF_COUNTER_ELAPSED          = 0x040000  # subtract counter from current time
PERF_COUNTER_QUEUELEN         = 0x050000  # Use Queuelen processing func.
PERF_COUNTER_HISTOGRAM        = 0x060000  # Counter begins or ends a histogram

# If the PERF_TYPE_TEXT value was selected, then select one of the
# following to indicate the type of TEXT data.
PERF_TEXT_UNICODE             = 0x00      # type of text in text field
PERF_TEXT_ASCII               = 0x010000  # ASCII using the CodePage field

# Timer SubTypes
PERF_TIMER_TICK               = 0x00         # use system perf. freq for base
PERF_TIMER_100NS              = 0x0100000    # use 100 NS timer time base units
PERF_OBJECT_TIMER             = 0x0200000    # use the object timer freq

# Any types that have calculations performed can use one or more of
# the following calculation modification flags listed here
PERF_DELTA_COUNTER            = 0x0400000    # compute difference first
PERF_DELTA_BASE               = 0x0800000    # compute base diff as well
PERF_INVERSE_COUNTER          = 0x01000000   # show as 1.00-value (assumes:
PERF_MULTI_COUNTER            = 0x02000000   # sum of multiple instances

# Select one of the following values to indicate the display suffix (if any)
PERF_DISPLAY_NO_SUFFIX        = 0x00         # no suffix
PERF_DISPLAY_PER_SEC          = 0x010000000  # "/sec"
PERF_DISPLAY_PERCENT          = 0x020000000  # ""
PERF_DISPLAY_SECONDS          = 0x030000000  # "secs"
PERF_DISPLAY_NOSHOW           = 0x040000000  # value is not displayed

# Predefined counter types

# 32-bit Counter.  Divide delta by delta time.  Display suffix: "/sec"
PERF_COUNTER_COUNTER          = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PER_SEC

# 64-bit Timer.  Divide delta by delta time.  Display suffix: ""
PERF_COUNTER_TIMER            = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT

# Queue Length Space-Time Product. Divide delta by delta time. No Display Suffix.
PERF_COUNTER_QUEUELEN_TYPE    = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_QUEUELEN or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX

# 64-bit Counter.  Divide delta by delta time. Display Suffix: "/sec"
PERF_COUNTER_BULK_COUNT       = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_PER_SEC

# Indicates the counter is not a  counter but rather Unicode text Display as text.
PERF_COUNTER_TEXT             = PERF_SIZE_VARIABLE_LEN or PERF_TYPE_TEXT or PERF_TEXT_UNICODE or PERF_DISPLAY_NO_SUFFIX

# Indicates the data is a counter  which should not be
# time averaged on display (such as an error counter on a serial line)
# Display as is.  No Display Suffix.
PERF_COUNTER_RAWCOUNT         = PERF_SIZE_DWORD or PERF_TYPE_NUMBER or PERF_NUMBER_DECIMAL or PERF_DISPLAY_NO_SUFFIX

# A count which is either 1 or 0 on each sampling interrupt ( busy)
# Divide delta by delta base. Display Suffix: ""
PERF_SAMPLE_FRACTION          = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DELTA_COUNTER or PERF_DELTA_BASE or PERF_DISPLAY_PERCENT

# A count which is sampled on each sampling interrupt (queue length)
# Divide delta by delta time. No Display Suffix.
PERF_SAMPLE_COUNTER           = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_DISPLAY_NO_SUFFIX

# A label: no data is associated with this counter (it has 0 length)
# Do not display.
PERF_COUNTER_NODATA           = PERF_SIZE_ZERO or PERF_DISPLAY_NOSHOW

# 64-bit Timer inverse (e.g., idle is measured, but display busy as Integer)
# Display 100 - delta divided by delta time.  Display suffix: ""
PERF_COUNTER_TIMER_INV        = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_TICK or PERF_DELTA_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT

# The divisor for a sample, used with the previous counter to form a
# sampled .  You must check for >0 before dividing by this!  This
# counter will directly follow the  numerator counter.  It should not
# be displayed to the user.
PERF_SAMPLE_BASE              = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or 0x01         # for compatibility with pre-beta versions

# A timer which, when divided by an average base, produces a time
# in seconds which is the average time of some operation.  This
# timer times total operations, and  the base is the number of opera-
# tions.  Display Suffix: "sec"
PERF_AVERAGE_TIMER            = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_SECONDS

# Used as the denominator in the computation of time or count
# averages.  Must directly follow the numerator counter.  not dis-
# played to the user.
PERF_AVERAGE_BASE             = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or 0x02         # for compatibility with pre-beta versions

# A bulk count which, when divided (typically) by the number of
# operations, gives (typically) the number of bytes per operation.
# No Display Suffix.
PERF_AVERAGE_BULK             = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_NOSHOW

# 64-bit Timer in 100 nsec units. Display delta divided by
# delta time.  Display suffix: ""
PERF_100NSEC_TIMER            = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_DELTA_COUNTER or PERF_DISPLAY_PERCENT

# 64-bit Timer inverse (e.g., idle is measured, but display busy  AS Integer)
# Display 100 - delta divided by delta time.  Display suffix: ""
PERF_100NSEC_TIMER_INV        = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_DELTA_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT

# 64-bit Timer.  Divide delta by delta time.  Display suffix: ""
# Timer for multiple instances, so result can exceed 100.
PERF_COUNTER_MULTI_TIMER      = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_DELTA_COUNTER or PERF_TIMER_TICK or PERF_MULTI_COUNTER or PERF_DISPLAY_PERCENT

# 64-bit Timer inverse (e.g., idle is measured, but display busy  AS Integer)
# Display 100  _MULTI_BASE - delta divided by delta time.
# Display suffix: "" Timer for multiple instances, so result
# can exceed 100.  Followed by a counter of type _MULTI_BASE.
PERF_COUNTER_MULTI_TIMER_INV  = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_RATE or PERF_DELTA_COUNTER or PERF_MULTI_COUNTER or PERF_TIMER_TICK or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT

# Number of instances to which the preceding _MULTI_..._INV counter
# applies.  Used as a factor to get the percentage.
PERF_COUNTER_MULTI_BASE       = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_MULTI_COUNTER or PERF_DISPLAY_NOSHOW

# 64-bit Timer in 100 nsec units. Display delta divided by delta time.
# Display suffix: "" Timer for multiple instances, so result can exceed 100.
PERF_100NSEC_MULTI_TIMER      = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_DELTA_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_MULTI_COUNTER or PERF_DISPLAY_PERCENT

# 64-bit Timer inverse (e.g., idle is measured, but display busy  AS Integer)
# Display 100  _MULTI_BASE - delta divided by delta time.
# Display suffix: "" Timer for multiple instances, so result
# can exceed 100.  Followed by a counter of type _MULTI_BASE.
PERF_100NSEC_MULTI_TIMER_INV  = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_DELTA_COUNTER or PERF_COUNTER_RATE or PERF_TIMER_100NS or PERF_MULTI_COUNTER or PERF_INVERSE_COUNTER or PERF_DISPLAY_PERCENT

# Indicates the data is a fraction of the following counter  which
# should not be time averaged on display (such as free space over
# total space.) Display as is.  Display the quotient as "".
PERF_RAW_FRACTION             = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_FRACTION or PERF_DISPLAY_PERCENT

# Indicates the data is a base for the preceding counter which should
# not be time averaged on display (such as free space over total space.)
PERF_RAW_BASE                 = PERF_SIZE_DWORD or PERF_TYPE_COUNTER or PERF_COUNTER_BASE or PERF_DISPLAY_NOSHOW or 0x03         # for compatibility with pre-beta versions

# The data collected in this counter is actually the start time of the
# item being measured. For display, this data is subtracted from the
# sample time to yield the elapsed time as the difference between the two.
# In the definition below, the PerfTime field of the Object contains
# the sample time as indicated by the PERF_OBJECT_TIMER bit and the
# difference is scaled by the PerfFreq of the Object to convert the time
# units into seconds.
PERF_ELAPSED_TIME             = PERF_SIZE_LARGE or PERF_TYPE_COUNTER or PERF_COUNTER_ELAPSED or PERF_OBJECT_TIMER or PERF_DISPLAY_SECONDS

# The following counter type can be used with the preceding types to
# define a range of values to be displayed in a histogram.
PERF_COUNTER_HISTOGRAM_TYPE   = 0x080000000  # Counter begins or ends a histogram

# The following are used to determine the level of detail associated
# with the counter.  The user will be setting the level of detail
# that should be displayed at any given time.
PERF_DETAIL_NOVICE     = 100 # The uninformed can understand it
PERF_DETAIL_ADVANCED   = 200 # For the advanced user
PERF_DETAIL_EXPERT     = 300 # For the expert user
PERF_DETAIL_WIZARD     = 400 # For the system designer

PERF_NO_UNIQUE_ID      = -1

# LZEXPAND error return codes
LZERROR_BADINHANDLE    = -1  # invalid input handle
LZERROR_BADOUTHANDLE   = -2  # invalid output handle
LZERROR_READ           = -3  # corrupt compressed file format
LZERROR_WRITE          = -4  # out of space for output file
LZERROR_GLOBALLOC      = -5  # insufficient memory for LZFile struct
LZERROR_PUBLICLOC      = -5  # insufficient memory for LZFile struct
LZERROR_GLOBLOCK       = -6  # bad Global handle
LZERROR_BADVALUE       = -7  # input parameter out of range
LZERROR_UNKNOWNALG     = -8  # compression algorithm not recognized

WM_IME_STARTCOMPOSITION = 0x0010D
WM_IME_ENDCOMPOSITION   = 0x0010E
WM_IME_COMPOSITION      = 0x0010F
WM_IME_KEYLAST          = 0x0010F

WM_IME_SETCONTEXT       = 0x00281
WM_IME_NOTIFY           = 0x00282
WM_IME_CONTROL          = 0x00283
WM_IME_COMPOSITIONFULL  = 0x00284
WM_IME_SELECT           = 0x00285
WM_IME_CHAR             = 0x00286
WM_IME_REQUEST          = 0x00288
WM_IME_KEYDOWN          = 0x0290
WM_IME_KEYUP            = 0x0291

# LOWORD(wParam) values in WM_*UISTATE*
UIS_SET        = 1
UIS_CLEAR      = 2
UIS_INITIALIZE = 3

# HIWORD(wParam) values in WM_*UISTATE*
UISF_HIDEFOCUS = 0x01
UISF_HIDEACCEL = 0x02
UISF_ACTIVE    = 0x04

# Dial Options
DIALOPTION_BILLING  = 0x040     # Supports wait for bong ""
DIALOPTION_QUIET    = 0x080     # Supports wait for quiet "@"
DIALOPTION_DIALTONE = 0x0100    # Supports wait for dial tone "W"

# SpeakerVolume for MODEMDEVCAPS
MDMVOLFLAG_LOW    = 0x01
MDMVOLFLAG_MEDIUM = 0x02
MDMVOLFLAG_HIGH   = 0x04

# SpeakerVolume for MODEMSETTINGS
MDMVOL_LOW        = 0x00
MDMVOL_MEDIUM     = 0x01
MDMVOL_HIGH       = 0x02

# SpeakerMode for MODEMDEVCAPS
MDMSPKRFLAG_OFF       = 0x01
MDMSPKRFLAG_DIAL      = 0x02
MDMSPKRFLAG_ON        = 0x04
MDMSPKRFLAG_CALLSETUP = 0x08

# SpeakerMode for MODEMSETTINGS
MDMSPKR_OFF       = 0x00
MDMSPKR_DIAL      = 0x01
MDMSPKR_ON        = 0x02
MDMSPKR_CALLSETUP = 0x03

# Modem Options
MDM_COMPRESSION      = 0x01
MDM_ERROR_CONTROL    = 0x02
MDM_FORCED_EC        = 0x04
MDM_CELLULAR         = 0x08
MDM_FLOWCONTROL_HARD = 0x010
MDM_FLOWCONTROL_SOFT = 0x020
MDM_CCITT_OVERRIDE   = 0x040
MDM_SPEED_ADJUST     = 0x080
MDM_TONE_DIAL        = 0x0100
MDM_BLIND_DIAL       = 0x0200
MDM_V23_OVERRIDE     = 0x0400


# ----- Symbols -----
VS_VERSION_INFO = 1
VS_USER_DEFINED = 100

# ----- VS_VERSION.dwFileFlags -----
VS_FFI_SIGNATURE     = 0x0FEEF04BD
VS_FFI_STRUCVERSION  = 0x010000
VS_FFI_FILEFLAGSMASK = 0x03F

# ----- VS_VERSION.dwFileFlags -----
VS_FF_DEBUG        = 0x01
VS_FF_PRERELEASE   = 0x02
VS_FF_PATCHED      = 0x04
VS_FF_PRIVATEBUILD = 0x08
VS_FF_INFOINFERRED = 0x010
VS_FF_SPECIALBUILD = 0x020

# ----- VS_VERSION.dwFileOS -----
VOS_UNKNOWN = 0x000000000
VOS_DOS     = 0x000010000
VOS_OS216   = 0x000020000
VOS_OS232   = 0x000030000
VOS_NT      = 0x000040000
VOS_WINCE   = 0x000050000

VOS__BASE         = 0x00
VOS__WINDOWS16    = 0x01
VOS__PM16         = 0x02
VOS__PM32         = 0x03
VOS__WINDOWS32    = 0x04

VOS_DOS_WINDOWS16 = 0x010001
VOS_DOS_WINDOWS32 = 0x010004
VOS_OS216_PM16    = 0x020002
VOS_OS232_PM32    = 0x030003
VOS_NT_WINDOWS32  = 0x040004

# ----- VS_VERSION.dwFileType -----
VFT_UNKNOWN    = 0x00
VFT_APP        = 0x01
VFT_DLL        = 0x02
VFT_DRV        = 0x03
VFT_FONT       = 0x04
VFT_VXD        = 0x05
VFT_STATIC_LIB = 0x07

# ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV -----
VFT2_UNKNOWN         = 0x000
VFT2_DRV_PRINTER     = 0x001
VFT2_DRV_KEYBOARD    = 0x002
VFT2_DRV_LANGUAGE    = 0x003
VFT2_DRV_DISPLAY     = 0x004
VFT2_DRV_MOUSE       = 0x005
VFT2_DRV_NETWORK     = 0x006
VFT2_DRV_SYSTEM      = 0x007
VFT2_DRV_INSTALLABLE = 0x008
VFT2_DRV_SOUND       = 0x009
VFT2_DRV_COMM        = 0x00A
VFT2_DRV_INPUTMETHOD = 0x00B
VFT2_DRV_VERSIONED_PRINTER = 0x00C

# ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT -----
VFT2_FONT_RASTER     = 0x01
VFT2_FONT_VECTOR     = 0x02
VFT2_FONT_TRUETYPE   = 0x03

# ----- VerFindFile flags -----
VFFF_ISSHAREDFILE = 0x01

VFF_CURNEDEST    = 0x01
VFF_FILEINUSE    = 0x02
VFF_BUFFTOOSMALL = 0x04

# ----- VerInstallFile flags -----
VIFF_FORCEINSTALL  = 0x01
VIFF_DONTDELETEOLD = 0x02

VIF_TEMPFILE          = 0x000000001
VIF_MISMATCH          = 0x000000002
VIF_SRCOLD            = 0x000000004

VIF_DIFFLANG          = 0x000000008
VIF_DIFFCODEPG        = 0x000000010
VIF_DIFFTYPE          = 0x000000020

VIF_WRITEPROT         = 0x000000040
VIF_FILEINUSE         = 0x000000080
VIF_OUTOFSPACE        = 0x000000100
VIF_ACCESSVIOLATION   = 0x000000200
VIF_SHARINGVIOLATION  = 0x000000400
VIF_CANNOTCREATE      = 0x000000800
VIF_CANNOTDELETE      = 0x000001000
VIF_CANNOTRENAME      = 0x000002000
VIF_CANNOTDELETECUR   = 0x000004000
VIF_OUTOFMEMORY       = 0x000008000

VIF_CANNOTREADSRC     = 0x000010000
VIF_CANNOTREADDST     = 0x000020000
VIF_BUFFTOOSMALL      = 0x000040000
VIF_CANNOTLOADLZ32    = 0x000080000
VIF_CANNOTLOADCABINET = 0x000100000

PROCESS_HEAP_REGION            = 0x01
PROCESS_HEAP_UNCOMMITTED_RANGE = 0x02
PROCESS_HEAP_ENTRY_BUSY        = 0x04
PROCESS_HEAP_ENTRY_MOVEABLE    = 0x010
PROCESS_HEAP_ENTRY_DDESHARE    = 0x020

NORMAL_PRIORITY_CLASS       = 0x000000020
IDLE_PRIORITY_CLASS         = 0x000000040
HIGH_PRIORITY_CLASS         = 0x000000080
REALTIME_PRIORITY_CLASS     = 0x000000100
CREATE_NEW_PROCESS_GROUP    = 0x000000200
CREATE_UNICODE_ENVIRONMENT  = 0x000000400
CREATE_SEPARATE_WOW_VDM     = 0x000000800
CREATE_SHARED_WOW_VDM       = 0x000001000
CREATE_FORCEDOS             = 0x000002000

BELOW_NORMAL_PRIORITY_CLASS = 0x000004000
ABOVE_NORMAL_PRIORITY_CLASS = 0x000008000

CREATE_BREAKAWAY_FROM_JOB   = 0x001000000

CREATE_DEFAULT_ERROR_MODE  = 0x004000000

# GetBinaryType return values.

SCS_32BIT_BINARY = 0
SCS_DOS_BINARY   = 1
SCS_WOW_BINARY   = 2
SCS_PIF_BINARY   = 3
SCS_POSIX_BINARY = 4
SCS_OS216_BINARY = 5

# Logon Support APIs

LOGON32_LOGON_INTERACTIVE = 2
LOGON32_LOGON_NETWORK     = 3
LOGON32_LOGON_BATCH       = 4
LOGON32_LOGON_SERVICE     = 5
LOGON32_LOGON_UNLOCK      = 7
LOGON32_LOGON_NETWORK_CLEARTEXT = 8
LOGON32_LOGON_NEW_CREDENTIALS   = 9


LOGON32_PROVIDER_DEFAULT  = 0
LOGON32_PROVIDER_WINNT35  = 1
LOGON32_PROVIDER_WINNT40  = 2
LOGON32_PROVIDER_WINNT50  = 3

# Microsoft docs and structures identify these as WORD values, although
# they obviously aren#t defined that way...!
#
VER_SERVER_NT                      = 0x080000000
VER_WORKSTATION_NT                 = 0x040000000
VER_SUITE_SMALLBUSINESS            = 0x000000001
VER_SUITE_ENTERPRISE               = 0x000000002
VER_SUITE_BACKOFFICE               = 0x000000004
VER_SUITE_COMMUNICATIONS           = 0x000000008
VER_SUITE_TERMINAL                 = 0x000000010
VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x000000020
VER_SUITE_EMBEDDEDNT               = 0x000000040
VER_SUITE_DATACENTER               = 0x000000080
VER_SUITE_SINGLEUSERTS             = 0x000000100
VER_SUITE_PERSONAL                 = 0x000000200
VER_SUITE_BLADE                    = 0x000000400

# RtlVerifyVersionInfo conditions

VER_EQUAL         = 1
VER_GREATER       = 2
VER_GREATER_EQUAL = 3
VER_LESS          = 4
VER_LESS_EQUAL    = 5
VER_AND           = 6
VER_OR            = 7

VER_CONDITION_MASK              = 7
VER_NUM_BITS_PER_CONDITION_MASK = 3

# RtlVerifyVersionInfo type mask bits

VER_MINORVERSION     = 0x00000001
VER_MAJORVERSION     = 0x00000002
VER_BUILDNUMBER      = 0x00000004
VER_PLATFORMID       = 0x00000008
VER_SERVICEPACKMINOR = 0x00000010
VER_SERVICEPACKMAJOR = 0x00000020
VER_SUITENAME        = 0x00000040
VER_PRODUCT_TYPE     = 0x00000080

# RtlVerifyVersionInfo os product type values

VER_NT_WORKSTATION       = 0x00000001
VER_NT_DOMAIN_CONTROLLER = 0x00000002
VER_NT_SERVER            = 0x00000003

# dwPlatformId defines:

VER_PLATFORM_WIN32s        = 0
VER_PLATFORM_WIN32_WINDOWS = 1
VER_PLATFORM_WIN32_NT      = 2

# Power Management APIs

AC_LINE_OFFLINE      = 0x00
AC_LINE_ONLINE       = 0x01
AC_LINE_BACKUP_POWER = 0x02
AC_LINE_UNKNOWN      = 0x0FF

BATTERY_FLAG_HIGH       = 0x01
BATTERY_FLAG_LOW        = 0x02
BATTERY_FLAG_CRITICAL   = 0x04
BATTERY_FLAG_CHARGING   = 0x08
BATTERY_FLAG_NO_BATTERY = 0x080
BATTERY_FLAG_UNKNOWN    = 0x0FF

BATTERY_PERCENTAGE_UNKNOWN = 0x0FF

BATTERY_LIFE_UNKNOWN    = 0x0FFFFFFFF

CDM_FIRST           = WM_USER + 100
CDM_LAST            = WM_USER + 200
CDM_GETSPEC         = CDM_FIRST + 0x00
CDM_GETFILEPATH     = CDM_FIRST + 0x01
CDM_GETFOLDERPATH   = CDM_FIRST + 0x02
CDM_GETFOLDERIDLIST = CDM_FIRST + 0x03
CDM_SETCONTROLTEXT  = CDM_FIRST + 0x04
CDM_HIDECONTROL     = CDM_FIRST + 0x05
CDM_SETDEFEXT       = CDM_FIRST + 0x06

SIMULATED_FONTTYPE = 0x000008000
PRINTER_FONTTYPE   = 0x000004000
SCREEN_FONTTYPE    = 0x000002000
BOLD_FONTTYPE      = 0x0100
ITALIC_FONTTYPE    = 0x0200
REGULAR_FONTTYPE   = 0x0400

WM_PSD_PAGESETUPDLG   = WM_USER
WM_PSD_FULLPAGERECT   = WM_USER + 1
WM_PSD_MINMARGINRECT  = WM_USER + 2
WM_PSD_MARGINRECT     = WM_USER + 3
WM_PSD_GREEKTEXTRECT  = WM_USER + 4
WM_PSD_ENVSTAMPRECT   = WM_USER + 5
WM_PSD_YAFULLPAGERECT = WM_USER + 6

CFSEPCHAR                  = "+"  # compound file name separator char.
COLOROKSTRING              = "commdlg_ColorOK"
FILEOKSTRING               = "commdlg_FileNameOK"
FINDMSGSTRING              = "commdlg_FindReplace"
HELPMSGSTRING              = "commdlg_help"
LBSELCHSTRING              = "commdlg_LBSelChangedNotify"
SC_GROUP_IDENTIFIER        = "+"
SERVICES_ACTIVE_DATABASE   = "ServicesActive"
SERVICES_FAILED_DATABASE   = "ServicesFailed"
SETRGBSTRING               = "commdlg_SetRGBColor"
SHAREVISTRING              = "commdlg_ShareViolation"
SZDDESYS_ITEM_FORMATS      = "Formats"
SZDDESYS_ITEM_HELP         = "Help"
SZDDESYS_ITEM_RTNMSG       = "ReturnMessage"
SZDDESYS_ITEM_STATUS       = "Status"
SZDDESYS_ITEM_SYSITEMS     = "SysItems"
SZDDESYS_ITEM_TOPICS       = "Topics"
SZDDESYS_TOPIC             = "System"
SZDDE_ITEM_ITEMLIST        = "TopicItemList"

#====== WM_NOTIFY codes (NMHDR.code values) =[ or not: see winbase.h ]========

NM_FIRST = 0            # generic to all controls
NM_LAST  = -99

DBG_CONTINUE              = 0x000010002
DBG_TERMINATE_THREAD      = 0x040010003
DBG_TERMINATE_PROCESS     = 0x040010004
DBG_CONTROL_C             = 0x040010005
DBG_CONTROL_BREAK         = 0x040010008
DBG_EXCEPTION_NOT_HANDLED = 0x080010001

WAIT_FAILED      = 0x0FFFFFFFF
WAIT_OBJECT_0    = STATUS_WAIT_0
WAIT_ABANDONED   = STATUS_ABANDONED_WAIT_0
WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0

WAIT_IO_COMPLETION              = STATUS_USER_APC

EXCEPTION_CONTINUABLE           = 0      # Continuable exception

EXCEPTION_ACCESS_VIOLATION      = STATUS_ACCESS_VIOLATION
EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT
EXCEPTION_BREAKPOINT            = STATUS_BREAKPOINT
EXCEPTION_SINGLE_STEP           = STATUS_SINGLE_STEP
EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED
EXCEPTION_FLT_DENORMAL_OPERAND  = STATUS_FLOAT_DENORMAL_OPERAND
EXCEPTION_FLT_DIVIDE_BY_ZERO    = STATUS_FLOAT_DIVIDE_BY_ZERO
EXCEPTION_FLT_INEXACT_RESULT    = STATUS_FLOAT_INEXACT_RESULT
EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION
EXCEPTION_FLT_OVERFLOW          = STATUS_FLOAT_OVERFLOW
EXCEPTION_FLT_STACK_CHECK       = STATUS_FLOAT_STACK_CHECK
EXCEPTION_FLT_UNDERFLOW         = STATUS_FLOAT_UNDERFLOW
EXCEPTION_INT_DIVIDE_BY_ZERO    = STATUS_INTEGER_DIVIDE_BY_ZERO
EXCEPTION_INT_OVERFLOW          = STATUS_INTEGER_OVERFLOW
EXCEPTION_PRIV_INSTRUCTION      = STATUS_PRIVILEGED_INSTRUCTION
EXCEPTION_IN_PAGE_ERROR         = STATUS_IN_PAGE_ERROR

# Directory Entries

IMAGE_DIRECTORY_ENTRY_EXPORT       =  0   # Export Directory
IMAGE_DIRECTORY_ENTRY_IMPORT       =  1   # Import Directory
IMAGE_DIRECTORY_ENTRY_RESOURCE     =  2   # Resource Directory
IMAGE_DIRECTORY_ENTRY_EXCEPTION    =  3   # Exception Directory
IMAGE_DIRECTORY_ENTRY_SECURITY     =  4   # Security Directory
IMAGE_DIRECTORY_ENTRY_BASERELOC    =  5   # Base Relocation Table
IMAGE_DIRECTORY_ENTRY_DEBUG        =  6   # Debug Directory
IMAGE_DIRECTORY_ENTRY_COPYRIGHT    =  7   # Description String
IMAGE_DIRECTORY_ENTRY_GLOBALPTR    =  8   # Machine Value (MIPS GP)
IMAGE_DIRECTORY_ENTRY_TLS          =  9   # TLS Directory
IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG  = 10   # Load Configuration Directory
IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11   # Bound Import Directory in headers
IMAGE_DIRECTORY_ENTRY_IAT          = 12   # Import Address Table
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   = 13   # Delay Load Import Descriptors
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14   # COM Runtime descriptor
IMAGE_NUMBEROF_DIRECTORY_ENTRIES   = 16

IMAGE_BITMAP      = 0
IMAGE_ICON        = 1
IMAGE_CURSOR      = 2
IMAGE_ENHMETAFILE = 3

VT_EMPTY           = 0
VT_NULL            = 1
VT_I2              = 2
VT_I4              = 3
VT_R4              = 4
VT_R8              = 5
VT_CY              = 6
VT_DATE            = 7
VT_BSTR            = 8
VT_DISPATCH        = 9
VT_ERROR           = 10
VT_BOOL            = 11
VT_VARIANT         = 12
VT_UNKNOWN         = 13
VT_I1              = 16
VT_UI1             = 17
VT_UI2             = 18
VT_UI4             = 19
VT_I8              = 20
VT_UI8             = 21
VT_INT             = 22
VT_UINT            = 23
VT_VOID            = 24
VT_HRESULT         = 25
VT_PTR             = 26
VT_SAFEARRAY       = 27
VT_CARRAY          = 28
VT_USERDEFINED     = 29
VT_LPSTR           = 30
VT_LPWSTR          = 31
VT_FILETIME        = 64
VT_BLOB            = 65
VT_STREAM          = 66
VT_STORAGE         = 67
VT_STREAMED_OBJECT = 68
VT_STORED_OBJECT   = 69
VT_BLOB_OBJECT     = 70
VT_CF              = 71
VT_CLSID           = 72

VT_VECTOR          = 0x000001000
VT_ARRAY           = 0x000002000
VT_BYREF           = 0x000004000
VT_RESERVED        = 0x000008000

# Plug-and-Play API#s

HW_PROFILE_GUIDLEN = 39    # 36-characters plus NULL terminator
MAX_PROFILE_LEN    = 80

DOCKINFO_UNDOCKED      = 0x01
DOCKINFO_DOCKED        = 0x02
DOCKINFO_USER_SUPPLIED = 0x04
DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_UNDOCKED
DOCKINFO_USER_DOCKED   = DOCKINFO_USER_SUPPLIED or DOCKINFO_DOCKED

MAX_COMPUTERNAME_LENGTH = 15

# The "real" ancestor window
GA_PARENT    = 1
GA_ROOT      = 2
GA_ROOTOWNER = 3



# End of functions from wingdi.h ==============================================

#
# KERNEL32.DLL Declares [winbase.h]
#
AddAtomA= windll.KERNEL32.AddAtomA
AllocConsole= windll.KERNEL32.AllocConsole
BackupRead= windll.KERNEL32.BackupRead
                 
BackupSeek= windll.KERNEL32.BackupSeek
                 
BackupWrite= windll.KERNEL32.BackupWrite

Beep= windll.KERNEL32.Beep
BeginUpdateResourceA= windll.KERNEL32.BeginUpdateResourceA
BuildCommDCBA= windll.KERNEL32.BuildCommDCBA
BuildCommDCBAndTimeoutsA= windll.KERNEL32.BuildCommDCBAndTimeoutsA
CallNamedPipeA= windll.KERNEL32.CallNamedPipeA

CancelWaitableTimer= windll.KERNEL32.CancelWaitableTimer
ClearCommBreak= windll.KERNEL32.ClearCommBreak
ClearCommError= windll.KERNEL32.ClearCommError
CloseHandle= windll.KERNEL32.CloseHandle
CommConfigDialogA= windll.KERNEL32.CommConfigDialogA
CompareFileTime= windll.KERNEL32.CompareFileTime
CompareStringA= windll.KERNEL32.CompareStringA
ConnectNamedPipe= windll.KERNEL32.ConnectNamedPipe
ContinueDebugEvent= windll.KERNEL32.ContinueDebugEvent
ConvertDefaultLocale= windll.KERNEL32.ConvertDefaultLocale
ConvertThreadToFiber= windll.KERNEL32.ConvertThreadToFiber
CopyFileA= windll.KERNEL32.CopyFileA
CopyFileExA= windll.KERNEL32.CopyFileExA
CreateConsoleScreenBuffer= windll.KERNEL32.CreateConsoleScreenBuffer

CreateDirectoryA= windll.KERNEL32.CreateDirectoryA
CreateDirectoryExA= windll.KERNEL32.CreateDirectoryExA
CreateEventA= windll.KERNEL32.CreateEventA
CreateFiber= windll.KERNEL32.CreateFiber
CreateFileA= windll.KERNEL32.CreateFileA

CreateFileMappingA= windll.KERNEL32.CreateFileMappingA

CreateHardLinkA= windll.KERNEL32.CreateHardLinkA
CreateIoCompletionPort= windll.KERNEL32.CreateIoCompletionPort
CreateMailslotA= windll.KERNEL32.CreateMailslotA
CreateMutexA= windll.KERNEL32.CreateMutexA
CreateNamedPipeA= windll.KERNEL32.CreateNamedPipeA

CreatePipe= windll.KERNEL32.CreatePipe
CreateProcessA= windll.KERNEL32.CreateProcessA
                 
CreateRemoteThread= windll.KERNEL32.CreateRemoteThread

CreateSemaphoreA= windll.KERNEL32.CreateSemaphoreA
CreateTapePartition= windll.KERNEL32.CreateTapePartition
CreateThread= windll.KERNEL32.CreateThread

CreateWaitableTimerA= windll.KERNEL32.CreateWaitableTimerA
DebugActiveProcess= windll.KERNEL32.DebugActiveProcess
DebugBreak= windll.KERNEL32.DebugBreak
DefineDosDeviceA= windll.KERNEL32.DefineDosDeviceA
DeleteAtom= windll.KERNEL32.DeleteAtom
DeleteCriticalSection= windll.KERNEL32.DeleteCriticalSection
DeleteFiber= windll.KERNEL32.DeleteFiber
DeleteFileA= windll.KERNEL32.DeleteFileA
DeviceIoControl= windll.KERNEL32.DeviceIoControl

DisableThreadLibraryCalls= windll.KERNEL32.DisableThreadLibraryCalls
DisconnectNamedPipe= windll.KERNEL32.DisconnectNamedPipe
DosDateTimeToFileTime= windll.KERNEL32.DosDateTimeToFileTime
DuplicateHandle= windll.KERNEL32.DuplicateHandle

EndUpdateResourceA= windll.KERNEL32.EndUpdateResourceA
EnterCriticalSection= windll.KERNEL32.EnterCriticalSection
EnumCalendarInfoA= windll.KERNEL32.EnumCalendarInfoA
EnumCalendarInfoExA= windll.KERNEL32.EnumCalendarInfoExA
EnumDateFormatsA= windll.KERNEL32.EnumDateFormatsA
EnumDateFormatsExA= windll.KERNEL32.EnumDateFormatsExA
EnumResourceLanguagesA= windll.KERNEL32.EnumResourceLanguagesA
EnumResourceNamesA= windll.KERNEL32.EnumResourceNamesA
EnumResourceTypesA= windll.KERNEL32.EnumResourceTypesA
EnumSystemCodePagesA= windll.KERNEL32.EnumSystemCodePagesA
EnumSystemGeoID= windll.KERNEL32.EnumSystemGeoID
EnumSystemLanguageGroupsA= windll.KERNEL32.EnumSystemLanguageGroupsA
EnumSystemLocalesA= windll.KERNEL32.EnumSystemLocalesA
EnumUILanguagesA= windll.KERNEL32.EnumUILanguagesA
# [!] EnumTimeFormats= windll.KERNEL32.EnumTimeFormats
EraseTape= windll.KERNEL32.EraseTape
EscapeCommFunction= windll.KERNEL32.EscapeCommFunction
ExitProcess= windll.KERNEL32.ExitProcess
ExitThread= windll.KERNEL32.ExitThread
ExpandEnvironmentStringsA= windll.KERNEL32.ExpandEnvironmentStringsA
FatalAppExitA= windll.KERNEL32.FatalAppExitA
FatalExit= windll.KERNEL32.FatalExit
FileTimeToDosDateTime= windll.KERNEL32.FileTimeToDosDateTime
FileTimeToLocalFileTime= windll.KERNEL32.FileTimeToLocalFileTime
FileTimeToSystemTime= windll.KERNEL32.FileTimeToSystemTime
FillConsoleOutputAttribute= windll.KERNEL32.FillConsoleOutputAttribute
FillConsoleOutputCharacterA= windll.KERNEL32.FillConsoleOutputCharacterA
FindAtomA= windll.KERNEL32.FindAtomA
FindClose= windll.KERNEL32.FindClose
FindCloseChangeNotification= windll.KERNEL32.FindCloseChangeNotification
FindFirstChangeNotificationA= windll.KERNEL32.FindFirstChangeNotificationA
FindFirstFileA= windll.KERNEL32.FindFirstFileA
FindFirstFileExA= windll.KERNEL32.FindFirstFileExA

FindNextChangeNotification= windll.KERNEL32.FindNextChangeNotification
FindNextFileA= windll.KERNEL32.FindNextFileA
FindResourceA= windll.KERNEL32.FindResourceA
FindResourceExA= windll.KERNEL32.FindResourceExA
FlushConsoleInputBuffer= windll.KERNEL32.FlushConsoleInputBuffer
FlushFileBuffers= windll.KERNEL32.FlushFileBuffers
FlushInstructionCache= windll.KERNEL32.FlushInstructionCache
FlushViewOfFile= windll.KERNEL32.FlushViewOfFile
FoldStringA= windll.KERNEL32.FoldStringA
FormatMessageA= windll.KERNEL32.FormatMessageA
FreeConsole= windll.KERNEL32.FreeConsole
FreeEnvironmentStringsA= windll.KERNEL32.FreeEnvironmentStringsA
FreeLibrary= windll.KERNEL32.FreeLibrary
FreeLibraryAndExitThread= windll.KERNEL32.FreeLibraryAndExitThread
FreeResource= windll.KERNEL32.FreeResource
GenerateConsoleCtrlEvent= windll.KERNEL32.GenerateConsoleCtrlEvent
GetACP= windll.KERNEL32.GetACP
GetAtomNameA= windll.KERNEL32.GetAtomNameA
GetBinaryTypeA= windll.KERNEL32.GetBinaryTypeA
GetCalendarInfoA= windll.KERNEL32.GetCalendarInfoA
GetCPInfo= windll.KERNEL32.GetCPInfo
GetCPInfoExA= windll.KERNEL32.GetCPInfoExA
GetCommConfig= windll.KERNEL32.GetCommConfig
GetCommMask= windll.KERNEL32.GetCommMask
GetCommModemStatus= windll.KERNEL32.GetCommModemStatus
GetCommProperties= windll.KERNEL32.GetCommProperties
GetCommState= windll.KERNEL32.GetCommState
GetCommTimeouts= windll.KERNEL32.GetCommTimeouts
GetCommandLineA= windll.KERNEL32.GetCommandLineA
GetCompressedFileSizeA= windll.KERNEL32.GetCompressedFileSizeA
GetComputerNameA= windll.KERNEL32.GetComputerNameA
GetConsoleCP= windll.KERNEL32.GetConsoleCP
GetConsoleCursorInfo= windll.KERNEL32.GetConsoleCursorInfo
GetConsoleMode= windll.KERNEL32.GetConsoleMode
GetConsoleOutputCP= windll.KERNEL32.GetConsoleOutputCP
GetConsoleScreenBufferInfo= windll.KERNEL32.GetConsoleScreenBufferInfo
GetConsoleTitleA= windll.KERNEL32.GetConsoleTitleA
GetCurrencyFormatA= windll.KERNEL32.GetCurrencyFormatA
GetCurrentDirectoryA= windll.KERNEL32.GetCurrentDirectoryA
GetCurrentProcess= windll.KERNEL32.GetCurrentProcess
GetCurrentProcessId= windll.KERNEL32.GetCurrentProcessId
GetCurrentThread= windll.KERNEL32.GetCurrentThread
GetCurrentThreadId= windll.KERNEL32.GetCurrentThreadId
GetDateFormatA= windll.KERNEL32.GetDateFormatA
GetDefaultCommConfigA= windll.KERNEL32.GetDefaultCommConfigA
GetDiskFreeSpaceA= windll.KERNEL32.GetDiskFreeSpaceA
GetDiskFreeSpaceExA= windll.KERNEL32.GetDiskFreeSpaceExA
GetDriveTypeA= windll.KERNEL32.GetDriveTypeA
GetEnvironmentStringsA= windll.KERNEL32.GetEnvironmentStringsA
GetEnvironmentVariableA= windll.KERNEL32.GetEnvironmentVariableA
GetExitCodeProcess= windll.KERNEL32.GetExitCodeProcess
GetExitCodeThread= windll.KERNEL32.GetExitCodeThread
GetFileAttributesA= windll.KERNEL32.GetFileAttributesA
GetFileAttributesExA= windll.KERNEL32.GetFileAttributesExA
GetFileInformationByHandle= windll.KERNEL32.GetFileInformationByHandle
GetFileSize= windll.KERNEL32.GetFileSize
GetFileSizeEx= windll.KERNEL32.GetFileSizeEx
GetFileTime= windll.KERNEL32.GetFileTime
GetFileType= windll.KERNEL32.GetFileType
GetFullPathNameA= windll.KERNEL32.GetFullPathNameA
GetGeoInfoA= windll.KERNEL32.GetGeoInfoA
GetHandleInformation= windll.KERNEL32.GetHandleInformation
GetLargestConsoleWindowSize= windll.KERNEL32.GetLargestConsoleWindowSize
GetLastError= windll.KERNEL32.GetLastError
GetLocaleInfoA= windll.KERNEL32.GetLocaleInfoA
GetLocalTime= windll.KERNEL32.GetLocalTime
GetLogicalDriveStringsA= windll.KERNEL32.GetLogicalDriveStringsA
GetLogicalDrives= windll.KERNEL32.GetLogicalDrives
GetLongPathNameA= windll.KERNEL32.GetLongPathNameA
GetMailslotInfo= windll.KERNEL32.GetMailslotInfo
GetModuleFileNameA= windll.KERNEL32.GetModuleFileNameA
GetModuleHandleA= windll.KERNEL32.GetModuleHandleA


GetNamedPipeHandleStateA= windll.KERNEL32.GetNamedPipeHandleStateA

GetNamedPipeInfo= windll.KERNEL32.GetNamedPipeInfo
GetNumberFormatA= windll.KERNEL32.GetNumberFormatA
GetNumberOfConsoleInputEvents= windll.KERNEL32.GetNumberOfConsoleInputEvents
GetNumberOfConsoleMouseButtons= windll.KERNEL32.GetNumberOfConsoleMouseButtons
GetOEMCP= windll.KERNEL32.GetOEMCP
GetOverlappedResult= windll.KERNEL32.GetOverlappedResult
GetPriorityClass= windll.KERNEL32.GetPriorityClass
GetPrivateProfileIntA= windll.KERNEL32.GetPrivateProfileIntA
GetPrivateProfileSectionA= windll.KERNEL32.GetPrivateProfileSectionA
GetPrivateProfileSectionNamesA= windll.KERNEL32.GetPrivateProfileSectionNamesA
GetPrivateProfileStringA= windll.KERNEL32.GetPrivateProfileStringA
GetPrivateProfileStructA= windll.KERNEL32.GetPrivateProfileStructA
GetProcAddress= windll.KERNEL32.GetProcAddress
GetProcessAffinityMask= windll.KERNEL32.GetProcessAffinityMask
GetProcessHeap= windll.KERNEL32.GetProcessHeap
GetProcessHeaps= windll.KERNEL32.GetProcessHeaps
GetProcessPriorityBoost= windll.KERNEL32.GetProcessPriorityBoost
GetProcessShutdownParameters= windll.KERNEL32.GetProcessShutdownParameters
GetProcessTimes= windll.KERNEL32.GetProcessTimes
GetProcessVersion= windll.KERNEL32.GetProcessVersion
GetProcessWorkingSetSize= windll.KERNEL32.GetProcessWorkingSetSize
GetProfileIntA= windll.KERNEL32.GetProfileIntA
GetProfileSectionA= windll.KERNEL32.GetProfileSectionA
GetProfileStringA= windll.KERNEL32.GetProfileStringA
GetQueuedCompletionStatus= windll.KERNEL32.GetQueuedCompletionStatus
GetShortPathNameA= windll.KERNEL32.GetShortPathNameA
GetStartupInfoA= windll.KERNEL32.GetStartupInfoA
GetStdHandle= windll.KERNEL32.GetStdHandle
GetStringTypeA= windll.KERNEL32.GetStringTypeA
GetStringTypeExA= windll.KERNEL32.GetStringTypeExA
GetStringTypeW= windll.KERNEL32.GetStringTypeW
GetSystemDefaultLCID= windll.KERNEL32.GetSystemDefaultLCID
GetSystemDefaultLangID= windll.KERNEL32.GetSystemDefaultLangID
GetSystemDefaultUILanguage= windll.KERNEL32.GetSystemDefaultUILanguage
GetSystemDirectoryA= windll.KERNEL32.GetSystemDirectoryA
GetSystemInfo= windll.KERNEL32.GetSystemInfo
GetSystemPowerStatus= windll.KERNEL32.GetSystemPowerStatus
GetSystemTime= windll.KERNEL32.GetSystemTime
GetSystemTimeAdjustment= windll.KERNEL32.GetSystemTimeAdjustment
GetSystemTimeAsFileTime= windll.KERNEL32.GetSystemTimeAsFileTime
GetTapeParameters= windll.KERNEL32.GetTapeParameters
GetTapePosition= windll.KERNEL32.GetTapePosition
GetTapeStatus= windll.KERNEL32.GetTapeStatus
GetTempFileNameA= windll.KERNEL32.GetTempFileNameA
GetTempPathA= windll.KERNEL32.GetTempPathA
GetThreadContext= windll.KERNEL32.GetThreadContext
GetThreadLocale= windll.KERNEL32.GetThreadLocale
GetThreadPriority= windll.KERNEL32.GetThreadPriority
GetThreadPriorityBoost= windll.KERNEL32.GetThreadPriorityBoost
GetThreadSelectorEntry= windll.KERNEL32.GetThreadSelectorEntry
GetThreadTimes= windll.KERNEL32.GetThreadTimes
GetTickCount= windll.KERNEL32.GetTickCount
GetTimeFormatA= windll.KERNEL32.GetTimeFormatA
GetTimeZoneInformation= windll.KERNEL32.GetTimeZoneInformation
GetUserDefaultLCID= windll.KERNEL32.GetUserDefaultLCID
GetUserDefaultLangID= windll.KERNEL32.GetUserDefaultLangID
GetUserDefaultUILanguage= windll.KERNEL32.GetUserDefaultUILanguage
GetUserGeoID= windll.KERNEL32.GetUserGeoID
GetVersion= windll.KERNEL32.GetVersion
GetVersionExA= windll.KERNEL32.GetVersionExA
GetVolumeInformationA= windll.KERNEL32.GetVolumeInformationA

GetVolumeNameForVolumeMountPointA= windll.KERNEL32.GetVolumeNameForVolumeMountPointA
GetVolumePathNameA= windll.KERNEL32.GetVolumePathNameA
GetVolumePathNamesForVolumeNameA= windll.KERNEL32.GetVolumePathNamesForVolumeNameA
GetWindowsDirectoryA= windll.KERNEL32.GetWindowsDirectoryA
GlobalAddAtomA= windll.KERNEL32.GlobalAddAtomA
GlobalAlloc= windll.KERNEL32.GlobalAlloc
GlobalCompact= windll.KERNEL32.GlobalCompact
GlobalDeleteAtom= windll.KERNEL32.GlobalDeleteAtom
GlobalFindAtomA= windll.KERNEL32.GlobalFindAtomA
GlobalFix= windll.KERNEL32.GlobalFix
GlobalFlags= windll.KERNEL32.GlobalFlags
GlobalFree= windll.KERNEL32.GlobalFree
GlobalGetAtomNameA= windll.KERNEL32.GlobalGetAtomNameA
GlobalHandle= windll.KERNEL32.GlobalHandle
GlobalLock= windll.KERNEL32.GlobalLock
GlobalMemoryStatus= windll.KERNEL32.GlobalMemoryStatus
GlobalReAlloc= windll.KERNEL32.GlobalReAlloc
GlobalMemoryStatusEx= windll.KERNEL32.GlobalMemoryStatusEx
GlobalSize= windll.KERNEL32.GlobalSize
GlobalUnfix= windll.KERNEL32.GlobalUnfix
GlobalUnlock= windll.KERNEL32.GlobalUnlock
GlobalUnWire= windll.KERNEL32.GlobalUnWire
GlobalWire= windll.KERNEL32.GlobalWire
HeapAlloc= windll.KERNEL32.HeapAlloc
HeapCompact= windll.KERNEL32.HeapCompact
HeapCreate= windll.KERNEL32.HeapCreate
HeapDestroy= windll.KERNEL32.HeapDestroy
HeapFree= windll.KERNEL32.HeapFree
HeapLock= windll.KERNEL32.HeapLock
HeapReAlloc= windll.KERNEL32.HeapReAlloc
HeapSize= windll.KERNEL32.HeapSize
HeapUnlock= windll.KERNEL32.HeapUnlock
HeapValidate= windll.KERNEL32.HeapValidate
InitAtomTable= windll.KERNEL32.InitAtomTable
InitializeCriticalSection= windll.KERNEL32.InitializeCriticalSection
InitializeCriticalSectionAndSpinCount= windll.KERNEL32.InitializeCriticalSectionAndSpinCount
InterlockedDecrement= windll.KERNEL32.InterlockedDecrement
InterlockedExchange= windll.KERNEL32.InterlockedExchange
InterlockedIncrement= windll.KERNEL32.InterlockedIncrement
IsBadCodePtr= windll.KERNEL32.IsBadCodePtr
IsBadHugeReadPtr= windll.KERNEL32.IsBadHugeReadPtr
IsBadHugeWritePtr= windll.KERNEL32.IsBadHugeWritePtr
IsBadReadPtr= windll.KERNEL32.IsBadReadPtr
IsBadStringPtrA= windll.KERNEL32.IsBadStringPtrA
IsBadWritePtr= windll.KERNEL32.IsBadWritePtr
IsDBCSLeadByte= windll.KERNEL32.IsDBCSLeadByte
IsDBCSLeadByteEx= windll.KERNEL32.IsDBCSLeadByteEx
IsDebuggerPresent= windll.KERNEL32.IsDebuggerPresent
IsValidCodePage= windll.KERNEL32.IsValidCodePage
IsValidLanguageGroup= windll.KERNEL32.IsValidLanguageGroup
IsValidLocale= windll.KERNEL32.IsValidLocale
LCMapStringA= windll.KERNEL32.LCMapStringA
LeaveCriticalSection= windll.KERNEL32.LeaveCriticalSection
LoadLibraryA= windll.KERNEL32.LoadLibraryA
LoadLibraryExA= windll.KERNEL32.LoadLibraryExA
LoadModule= windll.KERNEL32.LoadModule
LoadResource= windll.KERNEL32.LoadResource
LocalAlloc= windll.KERNEL32.LocalAlloc
LocalCompact= windll.KERNEL32.LocalCompact
LocalFileTimeToFileTime= windll.KERNEL32.LocalFileTimeToFileTime
LocalFlags= windll.KERNEL32.LocalFlags
LocalFree= windll.KERNEL32.LocalFree
LocalHandle= windll.KERNEL32.LocalHandle
LocalLock= windll.KERNEL32.LocalLock
LocalReAlloc= windll.KERNEL32.LocalReAlloc
LocalShrink= windll.KERNEL32.LocalShrink
LocalSize= windll.KERNEL32.LocalSize
LocalUnlock= windll.KERNEL32.LocalUnlock
LockFile= windll.KERNEL32.LockFile
LockFileEx= windll.KERNEL32.LockFileEx

LockResource= windll.KERNEL32.LockResource
MapViewOfFile= windll.KERNEL32.MapViewOfFile
MapViewOfFileEx= windll.KERNEL32.MapViewOfFileEx

MoveFileA= windll.KERNEL32.MoveFileA
MoveFileExA= windll.KERNEL32.MoveFileExA
MoveFileWithProgressA= windll.KERNEL32.MoveFileWithProgressA
MulDiv= windll.KERNEL32.MulDiv
MultiByteToWideChar= windll.KERNEL32.MultiByteToWideChar
# [!] ObjectOpenAuditAlarmA= windll.KERNEL32.ObjectOpenAuditAlarmA
                 
OpenEventA= windll.KERNEL32.OpenEventA
OpenFile= windll.KERNEL32.OpenFile
OpenFileMappingA= windll.kernel32.OpenFileMappingA
OpenMutexA= windll.KERNEL32.OpenMutexA
OpenProcess= windll.KERNEL32.OpenProcess
OpenSemaphoreA= windll.KERNEL32.OpenSemaphoreA
OpenThread= windll.KERNEL32.OpenThread
OpenWaitableTimerA= windll.KERNEL32.OpenWaitableTimerA
OutputDebugStringA= windll.KERNEL32.OutputDebugStringA
PeekConsoleInputA= windll.KERNEL32.PeekConsoleInputA
PeekNamedPipe= windll.KERNEL32.PeekNamedPipe
PrepareTape= windll.KERNEL32.PrepareTape
ProcessIdToSessionId= windll.KERNEL32.ProcessIdToSessionId
PulseEvent= windll.KERNEL32.PulseEvent
PurgeComm= windll.KERNEL32.PurgeComm
QueueUserAPC= windll.KERNEL32.QueueUserAPC
QueryDosDeviceA= windll.KERNEL32.QueryDosDeviceA
QueryPerformanceCounter= windll.KERNEL32.QueryPerformanceCounter
QueryPerformanceFrequency= windll.KERNEL32.QueryPerformanceFrequency
RaiseException= windll.KERNEL32.RaiseException
ReadConsoleA= windll.KERNEL32.ReadConsoleA
ReadConsoleInputA= windll.KERNEL32.ReadConsoleInputA
ReadConsoleOutputA= windll.KERNEL32.ReadConsoleOutputA
ReadConsoleOutputAttribute= windll.KERNEL32.ReadConsoleOutputAttribute
ReadConsoleOutputCharacterA= windll.KERNEL32.ReadConsoleOutputCharacterA
ReadFile= windll.KERNEL32.ReadFile
ReadFileEx= windll.KERNEL32.ReadFileEx
ReadProcessMemory= windll.KERNEL32.ReadProcessMemory
ReleaseMutex= windll.KERNEL32.ReleaseMutex
ReleaseSemaphore= windll.KERNEL32.ReleaseSemaphore
RemoveDirectoryA= windll.KERNEL32.RemoveDirectoryA
RequestWakeupLatency= windll.KERNEL32.RequestWakeupLatency
ResetEvent= windll.KERNEL32.ResetEvent
ResumeThread= windll.KERNEL32.ResumeThread
ScrollConsoleScreenBufferA= windll.KERNEL32.ScrollConsoleScreenBufferA
                 
SearchPathA= windll.KERNEL32.SearchPathA
SetCalendarInfoA= windll.KERNEL32.SetCalendarInfoA
SetCommBreak= windll.KERNEL32.SetCommBreak
SetCommConfig= windll.KERNEL32.SetCommConfig
SetCommMask= windll.KERNEL32.SetCommMask
SetCommState= windll.KERNEL32.SetCommState
SetCommTimeouts= windll.KERNEL32.SetCommTimeouts
SetComputerNameA= windll.KERNEL32.SetComputerNameA
SetConsoleActiveScreenBuffer= windll.KERNEL32.SetConsoleActiveScreenBuffer
SetConsoleCP= windll.KERNEL32.SetConsoleCP
SetConsoleCtrlHandler= windll.KERNEL32.SetConsoleCtrlHandler
SetConsoleCursorInfo= windll.KERNEL32.SetConsoleCursorInfo
SetConsoleCursorPosition= windll.KERNEL32.SetConsoleCursorPosition
SetConsoleMode= windll.KERNEL32.SetConsoleMode
SetConsoleOutputCP= windll.KERNEL32.SetConsoleOutputCP
SetConsoleScreenBufferSize= windll.KERNEL32.SetConsoleScreenBufferSize
SetConsoleTextAttribute= windll.KERNEL32.SetConsoleTextAttribute
SetConsoleTitleA= windll.KERNEL32.SetConsoleTitleA
SetConsoleWindowInfo= windll.KERNEL32.SetConsoleWindowInfo
SetCriticalSectionSpinCount= windll.KERNEL32.SetCriticalSectionSpinCount
SetCurrentDirectoryA= windll.KERNEL32.SetCurrentDirectoryA
SetDefaultCommConfigA= windll.KERNEL32.SetDefaultCommConfigA
SetEndOfFile= windll.KERNEL32.SetEndOfFile
SetEnvironmentVariableA= windll.KERNEL32.SetEnvironmentVariableA
SetErrorMode= windll.KERNEL32.SetErrorMode
SetEvent= windll.KERNEL32.SetEvent
SetFileApisToANSI= windll.KERNEL32.SetFileApisToANSI
SetFileApisToOEM= windll.KERNEL32.SetFileApisToOEM
SetFileAttributesA= windll.KERNEL32.SetFileAttributesA
SetFilePointer= windll.KERNEL32.SetFilePointer
SetFileTime= windll.KERNEL32.SetFileTime
SetHandleCount= windll.KERNEL32.SetHandleCount
SetHandleInformation= windll.KERNEL32.SetHandleInformation
SetLastError= windll.KERNEL32.SetLastError
SetLocalTime= windll.KERNEL32.SetLocalTime
SetLocaleInfoA= windll.KERNEL32.SetLocaleInfoA
SetMailslotInfo= windll.KERNEL32.SetMailslotInfo
SetNamedPipeHandleState= windll.KERNEL32.SetNamedPipeHandleState
SetPriorityClass= windll.KERNEL32.SetPriorityClass
SetProcessAffinityMask= windll.KERNEL32.SetProcessAffinityMask
SetProcessPriorityBoost= windll.KERNEL32.SetProcessPriorityBoost
SetProcessShutdownParameters= windll.KERNEL32.SetProcessShutdownParameters
SetProcessWorkingSetSize= windll.KERNEL32.SetProcessWorkingSetSize
SetStdHandle= windll.KERNEL32.SetStdHandle
SetSystemPowerState= windll.KERNEL32.SetSystemPowerState
SetSystemTime= windll.KERNEL32.SetSystemTime
SetSystemTimeAdjustment= windll.KERNEL32.SetSystemTimeAdjustment
SetTapeParameters= windll.KERNEL32.SetTapeParameters
SetTapePosition= windll.KERNEL32.SetTapePosition
                 
SetThreadAffinityMask= windll.KERNEL32.SetThreadAffinityMask
SetThreadContext= windll.KERNEL32.SetThreadContext
SetThreadExecutionState= windll.KERNEL32.SetThreadExecutionState
SetThreadIdealProcessor= windll.KERNEL32.SetThreadIdealProcessor
SetThreadLocale= windll.KERNEL32.SetThreadLocale
SetThreadPriority= windll.KERNEL32.SetThreadPriority
SetThreadPriorityBoost= windll.KERNEL32.SetThreadPriorityBoost
SetTimeZoneInformation= windll.KERNEL32.SetTimeZoneInformation
SetUnhandledExceptionFilter= windll.KERNEL32.SetUnhandledExceptionFilter
SetVolumeLabelA= windll.KERNEL32.SetVolumeLabelA
SetWaitableTimer= windll.KERNEL32.SetWaitableTimer
                 
SetupComm= windll.KERNEL32.SetupComm
SetUserGeoID= windll.KERNEL32.SetUserGeoID
SignalObjectAndWait= windll.KERNEL32.SignalObjectAndWait
SizeofResource= windll.KERNEL32.SizeofResource
Sleep= windll.KERNEL32.Sleep
SleepEx= windll.KERNEL32.SleepEx
SuspendThread= windll.KERNEL32.SuspendThread
SwitchToFiber= windll.KERNEL32.SwitchToFiber
SwitchToThread= windll.KERNEL32.SwitchToThread
SystemTimeToFileTime= windll.KERNEL32.SystemTimeToFileTime
SystemTimeToTzSpecificLocalTime= windll.KERNEL32.SystemTimeToTzSpecificLocalTime
TerminateProcess= windll.KERNEL32.TerminateProcess
TerminateThread= windll.KERNEL32.TerminateThread
TlsAlloc= windll.KERNEL32.TlsAlloc
TlsFree= windll.KERNEL32.TlsFree
TlsGetValue= windll.KERNEL32.TlsGetValue
TlsSetValue= windll.KERNEL32.TlsSetValue
TransactNamedPipe= windll.KERNEL32.TransactNamedPipe
                 
TransmitCommChar= windll.KERNEL32.TransmitCommChar
TryEnterCriticalSection= windll.KERNEL32.TryEnterCriticalSection
UnhandledExceptionFilter= windll.KERNEL32.UnhandledExceptionFilter
UnlockFile= windll.KERNEL32.UnlockFile
UnlockFileEx= windll.KERNEL32.UnlockFileEx
UnmapViewOfFile= windll.KERNEL32.UnmapViewOfFile
UpdateResourceA= windll.KERNEL32.UpdateResourceA
VerifyVersionInfoA= windll.KERNEL32.VerifyVersionInfoA
VerLanguageNameA= windll.KERNEL32.VerLanguageNameA
VerSetConditionMask= windll.KERNEL32.VerSetConditionMask
VirtualAlloc= windll.KERNEL32.VirtualAlloc
VirtualAllocEx= windll.KERNEL32.VirtualAllocEx
VirtualFree= windll.KERNEL32.VirtualFree
VirtualFreeEx= windll.KERNEL32.VirtualFreeEx
VirtualLock= windll.KERNEL32.VirtualLock
VirtualProtect= windll.KERNEL32.VirtualProtect
VirtualProtectEx= windll.KERNEL32.VirtualProtectEx
VirtualQuery= windll.KERNEL32.VirtualQuery
VirtualQueryEx= windll.KERNEL32.VirtualQueryEx
VirtualUnlock= windll.KERNEL32.VirtualUnlock
WaitCommEvent= windll.KERNEL32.WaitCommEvent
WaitForDebugEvent= windll.KERNEL32.WaitForDebugEvent
WaitForMultipleObjects= windll.KERNEL32.WaitForMultipleObjects
WaitForMultipleObjectsEx= windll.KERNEL32.WaitForMultipleObjectsEx
WaitForSingleObject= windll.KERNEL32.WaitForSingleObject
WaitForSingleObjectEx= windll.KERNEL32.WaitForSingleObjectEx
WaitNamedPipeA= windll.KERNEL32.WaitNamedPipeA
WideCharToMultiByte= windll.KERNEL32.WideCharToMultiByte
                 
WinExec= windll.KERNEL32.WinExec
WriteConsoleA= windll.KERNEL32.WriteConsoleA
WriteConsoleInputA= windll.KERNEL32.WriteConsoleInputA
WriteConsoleOutputA= windll.KERNEL32.WriteConsoleOutputA
WriteConsoleOutputAttribute= windll.KERNEL32.WriteConsoleOutputAttribute
WriteConsoleOutputCharacterA= windll.KERNEL32.WriteConsoleOutputCharacterA
WriteFile= windll.KERNEL32.WriteFile
WriteFileEx= windll.KERNEL32.WriteFileEx
WritePrivateProfileSectionA= windll.KERNEL32.WritePrivateProfileSectionA
WritePrivateProfileStringA= windll.KERNEL32.WritePrivateProfileStringA
WritePrivateProfileStructA= windll.KERNEL32.WritePrivateProfileStructA
WriteProcessMemory= windll.KERNEL32.WriteProcessMemory
WriteProfileSectionA= windll.KERNEL32.WriteProfileSectionA
WriteProfileStringA= windll.KERNEL32.WriteProfileStringA
WriteTapemark= windll.KERNEL32.WriteTapemark
_hread= windll.KERNEL32._hread
_hwrite= windll.KERNEL32._hwrite
_lclose= windll.KERNEL32._lclose
_lcreat= windll.KERNEL32._lcreat
_llseek= windll.KERNEL32._llseek
_lopen= windll.KERNEL32._lopen
_lread= windll.KERNEL32._lread
lstrcatA= windll.KERNEL32.lstrcatA
lstrcmpA= windll.KERNEL32.lstrcmpA
lstrcmpiA= windll.KERNEL32.lstrcmpiA
lstrcpyA= windll.KERNEL32.lstrcpyA
lstrcpynA= windll.KERNEL32.lstrcpynA
lstrlenA= windll.KERNEL32.lstrlenA
lstrlenW= windll.KERNEL32.lstrlenW
_lwrite= windll.KERNEL32._lwrite

#
# ADVAPI32.DLL
#
AbortSystemShutdownA= windll.ADVAPI32.AbortSystemShutdownA
AccessCheck= windll.ADVAPI32.AccessCheck
                 
AccessCheckAndAuditAlarmA= windll.ADVAPI32.AccessCheckAndAuditAlarmA
                 

AccessCheckByType= windll.ADVAPI32.AccessCheckByType

AccessCheckByType= windll.ADVAPI32.AccessCheckByType

AccessCheckByTypeAndAuditAlarmA= windll.ADVAPI32.AccessCheckByTypeAndAuditAlarmA

AccessCheckByTypeResultList= windll.ADVAPI32.AccessCheckByTypeResultList

AccessCheckByTypeResultList= windll.ADVAPI32.AccessCheckByTypeResultList

AccessCheckByTypeResultListAndAuditAlarmA= windll.ADVAPI32.AccessCheckByTypeResultListAndAuditAlarmA
AddAccessAllowedAce= windll.ADVAPI32.AddAccessAllowedAce
AddAccessAllowedAceEx= windll.ADVAPI32.AddAccessAllowedAceEx
# [!] AddAccessDeniedAce= windll.ADVAPI32.AddAccessDeniedAce
# [!] AccessDeniedAceEx= windll.ADVAPI32.AccessDeniedAceEx
AddAce= windll.ADVAPI32.AddAce
AddAuditAccessAce= windll.ADVAPI32.AddAuditAccessAce
AddAuditAccessAceEx= windll.ADVAPI32.AddAuditAccessAceEx

AdjustTokenGroups= windll.ADVAPI32.AdjustTokenGroups

AdjustTokenPrivileges= windll.ADVAPI32.AdjustTokenPrivileges

AllocateAndInitializeSid= windll.ADVAPI32.AllocateAndInitializeSid

AllocateLocallyUniqueId= windll.ADVAPI32.AllocateLocallyUniqueId
AreAllAccessesGranted= windll.ADVAPI32.AreAllAccessesGranted
AreAnyAccessesGranted= windll.ADVAPI32.AreAnyAccessesGranted
BackupEventLogA= windll.ADVAPI32.BackupEventLogA
ChangeServiceConfigA= windll.ADVAPI32.ChangeServiceConfigA

CheckTokenMembership= windll.ADVAPI32.CheckTokenMembership
ClearEventLogA= windll.ADVAPI32.ClearEventLogA
CloseEventLog= windll.ADVAPI32.CloseEventLog
CloseServiceHandle= windll.ADVAPI32.CloseServiceHandle
ControlService= windll.ADVAPI32.ControlService
CopySid= windll.ADVAPI32.CopySid
CreatePrivateObjectSecurity= windll.ADVAPI32.CreatePrivateObjectSecurity
                 
CreateProcessAsUserA= windll.ADVAPI32.CreateProcessAsUserA
CreateServiceA= windll.ADVAPI32.CreateServiceA
DecryptFileA= windll.ADVAPI32.DecryptFileA
DeleteAce= windll.ADVAPI32.DeleteAce
DeleteService= windll.ADVAPI32.DeleteService
DeregisterEventSource= windll.ADVAPI32.DeregisterEventSource
DestroyPrivateObjectSecurity= windll.ADVAPI32.DestroyPrivateObjectSecurity
DuplicateToken= windll.ADVAPI32.DuplicateToken
DuplicateTokenEx= windll.ADVAPI32.DuplicateTokenEx

EncryptFileA= windll.ADVAPI32.EncryptFileA
EnumDependentServicesA= windll.ADVAPI32.EnumDependentServicesA

EnumServicesStatusA= windll.ADVAPI32.EnumServicesStatusA

EqualPrefixSid= windll.ADVAPI32.EqualPrefixSid
EqualSid= windll.ADVAPI32.EqualSid
FindFirstFreeAce= windll.ADVAPI32.FindFirstFreeAce
GetAce= windll.ADVAPI32.GetAce
GetAclInformation= windll.ADVAPI32.GetAclInformation
GetCurrentHwProfileA= windll.ADVAPI32.GetCurrentHwProfileA
GetFileSecurityA= windll.ADVAPI32.GetFileSecurityA
GetKernelObjectSecurity= windll.ADVAPI32.GetKernelObjectSecurity

GetLengthSid= windll.ADVAPI32.GetLengthSid
GetNumberOfEventLogRecords= windll.ADVAPI32.GetNumberOfEventLogRecords
GetOldestEventLogRecord= windll.ADVAPI32.GetOldestEventLogRecord
GetPrivateObjectSecurity= windll.ADVAPI32.GetPrivateObjectSecurity

GetSecurityDescriptorControl= windll.ADVAPI32.GetSecurityDescriptorControl
GetSecurityDescriptorDacl= windll.ADVAPI32.GetSecurityDescriptorDacl
GetSecurityDescriptorGroup= windll.ADVAPI32.GetSecurityDescriptorGroup
GetSecurityDescriptorLength= windll.ADVAPI32.GetSecurityDescriptorLength
GetSecurityDescriptorOwner= windll.ADVAPI32.GetSecurityDescriptorOwner
GetSecurityDescriptorSacl= windll.ADVAPI32.GetSecurityDescriptorSacl
GetServiceDisplayNameA= windll.ADVAPI32.GetServiceDisplayNameA
GetServiceKeyNameA= windll.ADVAPI32.GetServiceKeyNameA
GetSidIdentifierAuthority= windll.ADVAPI32.GetSidIdentifierAuthority
GetSidLengthRequired= windll.ADVAPI32.GetSidLengthRequired
GetSidSubAuthority= windll.ADVAPI32.GetSidSubAuthority
GetSidSubAuthorityCount= windll.ADVAPI32.GetSidSubAuthorityCount
GetTokenInformation= windll.ADVAPI32.GetTokenInformation
GetUserNameA= windll.ADVAPI32.GetUserNameA
ImpersonateAnonymousToken= windll.ADVAPI32.ImpersonateAnonymousToken
ImpersonateLoggedOnUser= windll.ADVAPI32.ImpersonateLoggedOnUser
ImpersonateNamedPipeClient= windll.ADVAPI32.ImpersonateNamedPipeClient
ImpersonateSelf= windll.ADVAPI32.ImpersonateSelf
InitializeAcl= windll.ADVAPI32.InitializeAcl
InitializeSecurityDescriptor= windll.ADVAPI32.InitializeSecurityDescriptor
InitializeSid= windll.ADVAPI32.InitializeSid
InitiateSystemShutdownA= windll.ADVAPI32.InitiateSystemShutdownA
InitiateSystemShutdownExA= windll.ADVAPI32.InitiateSystemShutdownExA

IsTextUnicode= windll.ADVAPI32.IsTextUnicode
IsTokenRestricted= windll.ADVAPI32.IsTokenRestricted
IsTokenUntrusted= windll.ADVAPI32.IsTokenUntrusted
IsValidAcl= windll.ADVAPI32.IsValidAcl
IsValidSecurityDescriptor= windll.ADVAPI32.IsValidSecurityDescriptor
IsValidSid= windll.ADVAPI32.IsValidSid
LockServiceDatabase= windll.ADVAPI32.LockServiceDatabase
LogonUserA= windll.ADVAPI32.LogonUserA
LookupAccountNameA= windll.ADVAPI32.LookupAccountNameA
LookupAccountSidA= windll.ADVAPI32.LookupAccountSidA
LookupPrivilegeDisplayNameA= windll.ADVAPI32.LookupPrivilegeDisplayNameA
LookupPrivilegeNameA= windll.ADVAPI32.LookupPrivilegeNameA
LookupPrivilegeValueA= windll.ADVAPI32.LookupPrivilegeValueA
MakeAbsoluteSD= windll.ADVAPI32.MakeAbsoluteSD
                 
MakeSelfRelativeSD= windll.ADVAPI32.MakeSelfRelativeSD
NotifyBootConfigStatus= windll.ADVAPI32.NotifyBootConfigStatus
NotifyChangeEventLog= windll.ADVAPI32.NotifyChangeEventLog
ObjectCloseAuditAlarmA= windll.ADVAPI32.ObjectCloseAuditAlarmA
ObjectPrivilegeAuditAlarmA= windll.ADVAPI32.ObjectPrivilegeAuditAlarmA

OpenBackupEventLogA= windll.ADVAPI32.OpenBackupEventLogA
OpenEventLogA= windll.ADVAPI32.OpenEventLogA
OpenProcessToken= windll.ADVAPI32.OpenProcessToken
OpenSCManagerA= windll.ADVAPI32.OpenSCManagerA
OpenServiceA= windll.ADVAPI32.OpenServiceA
OpenThreadToken= windll.ADVAPI32.OpenThreadToken
PrivilegeCheck= windll.ADVAPI32.PrivilegeCheck
PrivilegedServiceAuditAlarmA= windll.ADVAPI32.PrivilegedServiceAuditAlarmA
QueryServiceConfigA= windll.ADVAPI32.QueryServiceConfigA
QueryServiceLockStatusA= windll.ADVAPI32.QueryServiceLockStatusA
QueryServiceObjectSecurity= windll.ADVAPI32.QueryServiceObjectSecurity

QueryServiceStatus= windll.ADVAPI32.QueryServiceStatus
ReadEventLogA= windll.ADVAPI32.ReadEventLogA

RegCloseKey= windll.ADVAPI32.RegCloseKey
RegConnectRegistryA= windll.ADVAPI32.RegConnectRegistryA
RegCreateKeyA= windll.ADVAPI32.RegCreateKeyA
RegCreateKeyExA= windll.ADVAPI32.RegCreateKeyExA

RegDeleteKeyA= windll.ADVAPI32.RegDeleteKeyA
RegDeleteValueA= windll.ADVAPI32.RegDeleteValueA
RegDisablePredefinedCache= windll.ADVAPI32.RegDisablePredefinedCache
RegEnumKeyA= windll.ADVAPI32.RegEnumKeyA
RegEnumKeyExA= windll.ADVAPI32.RegEnumKeyExA

RegEnumValueA= windll.ADVAPI32.RegEnumValueA
RegFlushKey= windll.ADVAPI32.RegFlushKey
RegGetKeySecurity= windll.ADVAPI32.RegGetKeySecurity
RegLoadKeyA= windll.ADVAPI32.RegLoadKeyA
RegNotifyChangeKeyValue= windll.ADVAPI32.RegNotifyChangeKeyValue
RegOpenCurrentUser= windll.ADVAPI32.RegOpenCurrentUser
RegOpenKeyA= windll.ADVAPI32.RegOpenKeyA
RegOpenKeyExA= windll.ADVAPI32.RegOpenKeyExA
RegOpenUserClassesRoot= windll.ADVAPI32.RegOpenUserClassesRoot
RegOverridePredefKey= windll.ADVAPI32.RegOverridePredefKey
RegQueryInfoKeyA= windll.ADVAPI32.RegQueryInfoKeyA


# [!] RegQueryMultipleValues= windll.ADVAPI32.RegQueryMultipleValues

# [!] RegQueryMultipleValues= windll.ADVAPI32.RegQueryMultipleValues

RegQueryValueA= windll.ADVAPI32.RegQueryValueA
RegQueryValueExA= windll.ADVAPI32.RegQueryValueExA
RegReplaceKeyA= windll.ADVAPI32.RegReplaceKeyA
RegRestoreKeyA= windll.ADVAPI32.RegRestoreKeyA
RegSaveKeyA= windll.ADVAPI32.RegSaveKeyA
RegSaveKeyExA= windll.ADVAPI32.RegSaveKeyExA
RegSetKeySecurity= windll.ADVAPI32.RegSetKeySecurity
RegSetValueA= windll.ADVAPI32.RegSetValueA
RegSetValueExA= windll.ADVAPI32.RegSetValueExA
RegUnLoadKeyA= windll.ADVAPI32.RegUnLoadKeyA
RegisterEventSourceA= windll.ADVAPI32.RegisterEventSourceA
RegisterServiceCtrlHandlerA= windll.ADVAPI32.RegisterServiceCtrlHandlerA
RegisterServiceCtrlHandlerExA= windll.ADVAPI32.RegisterServiceCtrlHandlerExA
ReportEventA= windll.ADVAPI32.ReportEventA

RevertToSelf= windll.ADVAPI32.RevertToSelf
SetAclInformation= windll.ADVAPI32.SetAclInformation
SetFileSecurityA= windll.ADVAPI32.SetFileSecurityA
SetKernelObjectSecurity= windll.ADVAPI32.SetKernelObjectSecurity
SetPrivateObjectSecurity= windll.ADVAPI32.SetPrivateObjectSecurity

SetSecurityDescriptorDacl= windll.ADVAPI32.SetSecurityDescriptorDacl
SetSecurityDescriptorGroup= windll.ADVAPI32.SetSecurityDescriptorGroup
SetSecurityDescriptorOwner= windll.ADVAPI32.SetSecurityDescriptorOwner
SetSecurityDescriptorSacl= windll.ADVAPI32.SetSecurityDescriptorSacl
SetServiceBits= windll.ADVAPI32.SetServiceBits
SetServiceObjectSecurity= windll.ADVAPI32.SetServiceObjectSecurity
SetServiceStatus= windll.ADVAPI32.SetServiceStatus
SetThreadToken= windll.ADVAPI32.SetThreadToken
SetTokenInformation= windll.ADVAPI32.SetTokenInformation
StartServiceA= windll.ADVAPI32.StartServiceA
StartServiceCtrlDispatcherA= windll.ADVAPI32.StartServiceCtrlDispatcherA
UnlockServiceDatabase= windll.ADVAPI32.UnlockServiceDatabase
FreeSid= windll.ADVAPI32.FreeSid
MapGenericMask= windll.ADVAPI32.MapGenericMask

#
# Declares from wingdi.h ======================================================
#



AddFontResourceA= windll.GDI32.AddFontResourceA
AnimatePalette= windll.GDI32.AnimatePalette
Arc= windll.GDI32.Arc
BitBlt= windll.GDI32.BitBlt

CancelDC= windll.GDI32.CancelDC
Chord= windll.GDI32.Chord
ChoosePixelFormat= windll.GDI32.ChoosePixelFormat
CloseMetaFile= windll.GDI32.CloseMetaFile
CombineRgn= windll.GDI32.CombineRgn
CopyMetaFileA= windll.GDI32.CopyMetaFileA
CreateBitmap= windll.GDI32.CreateBitmap
CreateBitmapIndirect= windll.GDI32.CreateBitmapIndirect
CreateBrushIndirect= windll.GDI32.CreateBrushIndirect
CreateCompatibleBitmap= windll.GDI32.CreateCompatibleBitmap
CreateDiscardableBitmap= windll.GDI32.CreateDiscardableBitmap
CreateCompatibleDC= windll.GDI32.CreateCompatibleDC
CreateDCA= windll.GDI32.CreateDCA
CreateDIBitmap= windll.GDI32.CreateDIBitmap
CreateDIBPatternBrush= windll.GDI32.CreateDIBPatternBrush
CreateDIBPatternBrushPt= windll.GDI32.CreateDIBPatternBrushPt
CreateEllipticRgn= windll.GDI32.CreateEllipticRgn
CreateEllipticRgnIndirect= windll.GDI32.CreateEllipticRgnIndirect
CreateFontIndirectA= windll.GDI32.CreateFontIndirectA
CreateFontA= windll.GDI32.CreateFontA
CreateHatchBrush= windll.GDI32.CreateHatchBrush
CreateICA= windll.GDI32.CreateICA
CreateMetaFileA= windll.GDI32.CreateMetaFileA
CreatePalette= windll.GDI32.CreatePalette
CreatePen= windll.GDI32.CreatePen
CreatePenIndirect= windll.GDI32.CreatePenIndirect
CreatePolyPolygonRgn= windll.GDI32.CreatePolyPolygonRgn
CreatePatternBrush= windll.GDI32.CreatePatternBrush
CreateRectRgn= windll.GDI32.CreateRectRgn
CreateRectRgnIndirect= windll.GDI32.CreateRectRgnIndirect
CreateRoundRectRgn= windll.GDI32.CreateRoundRectRgn
CreateScalableFontResourceA= windll.GDI32.CreateScalableFontResourceA
CreateSolidBrush= windll.GDI32.CreateSolidBrush
DeleteDC= windll.GDI32.DeleteDC
DeleteMetaFile= windll.GDI32.DeleteMetaFile
DeleteObject= windll.GDI32.DeleteObject
DescribePixelFormat= windll.GDI32.DescribePixelFormat
# [!] DeviceCapabilitiesA= windll.WinSpool.DeviceCapabilitiesA
DrawEscape= windll.GDI32.DrawEscape
Ellipse= windll.GDI32.Ellipse
EnumFontFamiliesExA= windll.GDI32.EnumFontFamiliesExA
EnumFontFamiliesA= windll.GDI32.EnumFontFamiliesA
EnumFontsA= windll.GDI32.EnumFontsA
EnumObjects= windll.GDI32.EnumObjects
EqualRgn= windll.GDI32.EqualRgn
Escape= windll.GDI32.Escape
ExtEscape= windll.GDI32.ExtEscape
ExcludeClipRect= windll.GDI32.ExcludeClipRect
ExtCreateRegion= windll.GDI32.ExtCreateRegion
ExtFloodFill= windll.GDI32.ExtFloodFill
FillRgn= windll.GDI32.FillRgn
FloodFill= windll.GDI32.FloodFill
FrameRgn= windll.GDI32.FrameRgn
GetROP2= windll.GDI32.GetROP2
GetAspectRatioFilterEx= windll.GDI32.GetAspectRatioFilterEx
GetBkColor= windll.GDI32.GetBkColor
GetDCBrushColor= windll.GDI32.GetDCBrushColor
GetDCPenColor= windll.GDI32.GetDCPenColor
GetBkMode= windll.GDI32.GetBkMode
GetBitmapBits= windll.GDI32.GetBitmapBits
GetBitmapDimensionEx= windll.GDI32.GetBitmapDimensionEx
GetBoundsRect= windll.GDI32.GetBoundsRect
GetBrushOrgEx= windll.GDI32.GetBrushOrgEx
GetCharWidthA= windll.GDI32.GetCharWidthA
GetCharWidth32A= windll.GDI32.GetCharWidth32A
GetCharWidthFloatA= windll.GDI32.GetCharWidthFloatA
GetCharABCWidthsA= windll.GDI32.GetCharABCWidthsA
GetCharABCWidthsFloatA= windll.GDI32.GetCharABCWidthsFloatA
GetClipBox= windll.GDI32.GetClipBox
GetClipRgn= windll.GDI32.GetClipRgn
GetMetaRgn= windll.GDI32.GetMetaRgn
GetCurrentObject= windll.GDI32.GetCurrentObject
GetCurrentPositionEx= windll.GDI32.GetCurrentPositionEx
GetDeviceCaps= windll.GDI32.GetDeviceCaps
GetDIBits= windll.GDI32.GetDIBits
GetFontData= windll.GDI32.GetFontData
GetGlyphOutlineA= windll.GDI32.GetGlyphOutlineA
GetGraphicsMode= windll.GDI32.GetGraphicsMode
GetMapMode= windll.GDI32.GetMapMode
GetMetaFileBitsEx= windll.GDI32.GetMetaFileBitsEx
GetMetaFileA= windll.GDI32.GetMetaFileA
GetNearestColor= windll.GDI32.GetNearestColor
GetNearestPaletteIndex= windll.GDI32.GetNearestPaletteIndex
GetObjectType= windll.GDI32.GetObjectType

GetOutlineTextMetricsA= windll.GDI32.GetOutlineTextMetricsA

GetPaletteEntries= windll.GDI32.GetPaletteEntries
GetPixel= windll.GDI32.GetPixel
GetPixelFormat= windll.GDI32.GetPixelFormat
GetPolyFillMode= windll.GDI32.GetPolyFillMode
GetRasterizerCaps= windll.GDI32.GetRasterizerCaps
GetRegionData= windll.GDI32.GetRegionData
GetRgnBox= windll.GDI32.GetRgnBox
GetStockObject= windll.GDI32.GetStockObject
GetStretchBltMode= windll.GDI32.GetStretchBltMode
GetSystemPaletteEntries= windll.GDI32.GetSystemPaletteEntries
GetSystemPaletteUse= windll.GDI32.GetSystemPaletteUse
GetTextCharacterExtra= windll.GDI32.GetTextCharacterExtra
GetTextAlign= windll.GDI32.GetTextAlign
GetTextColor= windll.GDI32.GetTextColor
GetTextExtentPointA= windll.GDI32.GetTextExtentPointA
GetTextExtentPoint32A= windll.GDI32.GetTextExtentPoint32A
GetTextExtentExPointA= windll.GDI32.GetTextExtentExPointA
GetTextCharset= windll.GDI32.GetTextCharset
GetTextCharsetInfo= windll.GDI32.GetTextCharsetInfo
TranslateCharsetInfo= windll.GDI32.TranslateCharsetInfo
GetFontLanguageInfo= windll.GDI32.GetFontLanguageInfo
GetCharacterPlacementA= windll.GDI32.GetCharacterPlacementA
GetGlyphIndicesA= windll.GDI32.GetGlyphIndicesA
GetTextExtentPointI= windll.GDI32.GetTextExtentPointI
GetTextExtentExPointI= windll.GDI32.GetTextExtentExPointI
GetCharWidthI= windll.GDI32.GetCharWidthI
GetCharABCWidthsI= windll.GDI32.GetCharABCWidthsI
AddFontResourceExA= windll.GDI32.AddFontResourceExA
RemoveFontResourceExA= windll.GDI32.RemoveFontResourceExA
AddFontMemResourceEx= windll.GDI32.AddFontMemResourceEx
RemoveFontMemResourceEx= windll.GDI32.RemoveFontMemResourceEx
CreateFontIndirectExA= windll.GDI32.CreateFontIndirectExA
GetViewportExtEx= windll.GDI32.GetViewportExtEx
GetViewportOrgEx= windll.GDI32.GetViewportOrgEx
GetWindowExtEx= windll.GDI32.GetWindowExtEx
GetWindowOrgEx= windll.GDI32.GetWindowOrgEx
IntersectClipRect= windll.GDI32.IntersectClipRect
InvertRgn= windll.GDI32.InvertRgn
LineDDA= windll.GDI32.LineDDA
LineTo= windll.GDI32.LineTo
MaskBlt= windll.GDI32.MaskBlt

PlgBlt= windll.GDI32.PlgBlt

OffsetClipRgn= windll.GDI32.OffsetClipRgn
OffsetRgn= windll.GDI32.OffsetRgn
PatBlt= windll.GDI32.PatBlt
Pie= windll.GDI32.Pie
PlayMetaFile= windll.GDI32.PlayMetaFile
PaintRgn= windll.GDI32.PaintRgn
PolyPolygon= windll.GDI32.PolyPolygon
PtInRegion= windll.GDI32.PtInRegion
PtVisible= windll.GDI32.PtVisible
RectInRegion= windll.GDI32.RectInRegion
RectVisible= windll.GDI32.RectVisible
Rectangle= windll.GDI32.Rectangle
RestoreDC= windll.GDI32.RestoreDC
ResetDCA= windll.GDI32.ResetDCA
RealizePalette= windll.GDI32.RealizePalette
RemoveFontResourceA= windll.GDI32.RemoveFontResourceA
RoundRect= windll.GDI32.RoundRect
ResizePalette= windll.GDI32.ResizePalette
SaveDC= windll.GDI32.SaveDC
SelectClipRgn= windll.GDI32.SelectClipRgn
ExtSelectClipRgn= windll.GDI32.ExtSelectClipRgn
SetMetaRgn= windll.GDI32.SetMetaRgn
SelectObject= windll.GDI32.SelectObject
SelectPalette= windll.GDI32.SelectPalette
SetBkColor= windll.GDI32.SetBkColor
SetDCBrushColor= windll.GDI32.SetDCBrushColor
SetDCPenColor= windll.GDI32.SetDCPenColor
SetBkMode= windll.GDI32.SetBkMode
SetBitmapBits= windll.GDI32.SetBitmapBits
SetBoundsRect= windll.GDI32.SetBoundsRect
SetDIBits= windll.GDI32.SetDIBits
SetDIBitsToDevice= windll.GDI32.SetDIBitsToDevice

SetMapperFlags= windll.GDI32.SetMapperFlags
SetGraphicsMode= windll.GDI32.SetGraphicsMode
SetMapMode= windll.GDI32.SetMapMode
SetMetaFileBitsEx= windll.GDI32.SetMetaFileBitsEx
SetPaletteEntries= windll.GDI32.SetPaletteEntries
SetPixel= windll.GDI32.SetPixel
SetPixelV= windll.GDI32.SetPixelV
SetPixelFormat= windll.GDI32.SetPixelFormat
SetPolyFillMode= windll.GDI32.SetPolyFillMode
StretchBlt= windll.GDI32.StretchBlt

SetRectRgn= windll.GDI32.SetRectRgn
StretchDIBits= windll.GDI32.StretchDIBits

SetROP2= windll.GDI32.SetROP2
SetStretchBltMode= windll.GDI32.SetStretchBltMode
SetSystemPaletteUse= windll.GDI32.SetSystemPaletteUse
SetTextCharacterExtra= windll.GDI32.SetTextCharacterExtra
SetTextColor= windll.GDI32.SetTextColor
SetTextAlign= windll.GDI32.SetTextAlign
SetTextJustification= windll.GDI32.SetTextJustification
UpdateColors= windll.GDI32.UpdateColors
AlphaBlend= windll.MSIMG32.AlphaBlend

# wingdi.h declares AlphaDIBBlend at this point, but this function is
# not documented by Microsoft and does not appear to be exported at this time.
TransparentBlt= windll.MSIMG32.TransparentBlt

# wingdi.h declares TransparentDIBits at this point, but this function is
# not documented by Microsoft and does not appear to be exported at this time.
GradientFill= windll.MSIMG32.GradientFill

PlayMetaFileRecord= windll.GDI32.PlayMetaFileRecord
EnumMetaFile= windll.GDI32.EnumMetaFile
CloseEnhMetaFile= windll.GDI32.CloseEnhMetaFile
CopyEnhMetaFileA= windll.GDI32.CopyEnhMetaFileA
CreateEnhMetaFileA= windll.GDI32.CreateEnhMetaFileA
DeleteEnhMetaFile= windll.GDI32.DeleteEnhMetaFile
EnumEnhMetaFile= windll.GDI32.EnumEnhMetaFile
GetEnhMetaFileA= windll.GDI32.GetEnhMetaFileA
GetEnhMetaFileBits= windll.GDI32.GetEnhMetaFileBits
GetEnhMetaFileDescriptionA= windll.GDI32.GetEnhMetaFileDescriptionA
GetEnhMetaFileHeader= windll.GDI32.GetEnhMetaFileHeader
GetEnhMetaFilePaletteEntries= windll.GDI32.GetEnhMetaFilePaletteEntries
GetEnhMetaFilePixelFormat= windll.GDI32.GetEnhMetaFilePixelFormat
GetWinMetaFileBits= windll.GDI32.GetWinMetaFileBits
PlayEnhMetaFile= windll.GDI32.PlayEnhMetaFile
PlayEnhMetaFileRecord= windll.GDI32.PlayEnhMetaFileRecord
SetEnhMetaFileBits= windll.GDI32.SetEnhMetaFileBits
SetWinMetaFileBits= windll.GDI32.SetWinMetaFileBits
GdiComment= windll.GDI32.GdiComment


GetTextMetricsA= windll.GDI32.GetTextMetricsA

AngleArc= windll.GDI32.AngleArc
PolyPolyline= windll.GDI32.PolyPolyline
GetWorldTransform= windll.GDI32.GetWorldTransform
SetWorldTransform= windll.GDI32.SetWorldTransform
ModifyWorldTransform= windll.GDI32.ModifyWorldTransform
CombineTransform= windll.GDI32.CombineTransform
CreateDIBSection= windll.GDI32.CreateDIBSection
GetDIBColorTable= windll.GDI32.GetDIBColorTable
SetDIBColorTable= windll.GDI32.SetDIBColorTable
SetColorAdjustment= windll.GDI32.SetColorAdjustment
GetColorAdjustment= windll.GDI32.GetColorAdjustment
CreateHalftonePalette= windll.GDI32.CreateHalftonePalette
StartDocA= windll.GDI32.StartDocA
EndDoc= windll.GDI32.EndDoc
StartPage= windll.GDI32.StartPage
EndPage= windll.GDI32.EndPage
AbortDoc= windll.GDI32.AbortDoc
SetAbortProc= windll.GDI32.SetAbortProc
AbortPath= windll.GDI32.AbortPath
ArcTo= windll.GDI32.ArcTo
BeginPath= windll.GDI32.BeginPath
CloseFigure= windll.GDI32.CloseFigure
EndPath= windll.GDI32.EndPath
FillPath= windll.GDI32.FillPath
FlattenPath= windll.GDI32.FlattenPath
GetPath= windll.GDI32.GetPath
PathToRegion= windll.GDI32.PathToRegion
PolyDraw= windll.GDI32.PolyDraw
SelectClipPath= windll.GDI32.SelectClipPath
SetArcDirection= windll.GDI32.SetArcDirection
SetMiterLimit= windll.GDI32.SetMiterLimit
StrokeAndFillPath= windll.GDI32.StrokeAndFillPath
StrokePath= windll.GDI32.StrokePath
WidenPath= windll.GDI32.WidenPath
ExtCreatePen= windll.GDI32.ExtCreatePen
GetMiterLimit= windll.GDI32.GetMiterLimit
GetArcDirection= windll.GDI32.GetArcDirection
GetObjectA= windll.GDI32.GetObjectA
MoveToEx= windll.GDI32.MoveToEx


TextOutA= windll.GDI32.TextOutA
ExtTextOutA= windll.GDI32.ExtTextOutA
PolyTextOutA= windll.GDI32.PolyTextOutA
CreatePolygonRgn= windll.GDI32.CreatePolygonRgn
DPtoLP= windll.GDI32.DPtoLP
LPtoDP= windll.GDI32.LPtoDP
Polygon= windll.GDI32.Polygon
Polyline= windll.GDI32.Polyline
PolyBezier= windll.GDI32.PolyBezier
PolyBezierTo= windll.GDI32.PolyBezierTo
PolylineTo= windll.GDI32.PolylineTo
SetViewportExtEx= windll.GDI32.SetViewportExtEx
SetViewportOrgEx= windll.GDI32.SetViewportOrgEx
SetWindowExtEx= windll.GDI32.SetWindowExtEx
SetWindowOrgEx= windll.GDI32.SetWindowOrgEx
OffsetViewportOrgEx= windll.GDI32.OffsetViewportOrgEx
OffsetWindowOrgEx= windll.GDI32.OffsetWindowOrgEx
ScaleViewportExtEx= windll.GDI32.ScaleViewportExtEx
ScaleWindowExtEx= windll.GDI32.ScaleWindowExtEx
SetBitmapDimensionEx= windll.GDI32.SetBitmapDimensionEx
SetBrushOrgEx= windll.GDI32.SetBrushOrgEx
GetTextFaceA= windll.GDI32.GetTextFaceA
GetKerningPairsA= windll.GDI32.GetKerningPairsA
GetDCOrgEx= windll.GDI32.GetDCOrgEx
FixBrushOrgEx= windll.GDI32.FixBrushOrgEx
UnrealizeObject= windll.GDI32.UnrealizeObject
GdiFlush= windll.GDI32.GdiFlush
GdiSetBatchLimit= windll.GDI32.GdiSetBatchLimit
GdiGetBatchLimit= windll.GDI32.GdiGetBatchLimit
SetICMMode= windll.GDI32.SetICMMode
CheckColorsInGamut= windll.GDI32.CheckColorsInGamut
GetColorSpace= windll.GDI32.GetColorSpace
GetLogColorSpaceA= windll.GDI32.GetLogColorSpaceA
CreateColorSpaceA= windll.GDI32.CreateColorSpaceA
SetColorSpace= windll.GDI32.SetColorSpace
DeleteColorSpace= windll.GDI32.DeleteColorSpace
GetICMProfileA= windll.GDI32.GetICMProfileA
SetICMProfileA= windll.GDI32.SetICMProfileA
GetDeviceGammaRamp= windll.GDI32.GetDeviceGammaRamp
SetDeviceGammaRamp= windll.GDI32.SetDeviceGammaRamp
ColorMatchToTarget= windll.GDI32.ColorMatchToTarget
EnumICMProfilesA= windll.GDI32.EnumICMProfilesA
# [!] UpdateICMRegKey= windll.GDI32.UpdateICMRegKey
ColorCorrectPalette= windll.GDI32.ColorCorrectPalette
# ** NOTE ** Microsoft incorrectly documents SwapBuffers as being in OPENGL32.DLL
SwapBuffers= windll.GDI32.SwapBuffers

# OpenGL wgl declarations

wglCopyContext= windll.OPENGL32.wglCopyContext
wglCreateContext= windll.OPENGL32.wglCreateContext
wglCreateLayerContext= windll.OPENGL32.wglCreateLayerContext
wglDeleteContext= windll.OPENGL32.wglDeleteContext
wglGetCurrentContext= windll.OPENGL32.wglGetCurrentContext
wglGetCurrentDC= windll.OPENGL32.wglGetCurrentDC
wglGetProcAddress= windll.OPENGL32.wglGetProcAddress
wglMakeCurrent= windll.OPENGL32.wglMakeCurrent
wglShareLists= windll.OPENGL32.wglShareLists
wglUseFontBitmapsA= windll.OPENGL32.wglUseFontBitmapsA
wglUseFontOutlinesA= windll.OPENGL32.wglUseFontOutlinesA

wglDescribeLayerPlane= windll.OPENGL32.wglDescribeLayerPlane
wglSetLayerPaletteEntries= windll.OPENGL32.wglSetLayerPaletteEntries
wglGetLayerPaletteEntries= windll.OPENGL32.wglGetLayerPaletteEntries
wglRealizeLayerPalette= windll.OPENGL32.wglRealizeLayerPalette
wglSwapLayerBuffers= windll.OPENGL32.wglSwapLayerBuffers



# End of declares from wingdi.h ===============================================



# Declares from sensapi.h =====================================================

IsDestinationReachableA= windll.sensapi.IsDestinationReachableA
IsNetworkAlive= windll.sensapi.IsNetworkAlive

# End of declares from sensapi.h ==============================================




ChangeDisplaySettingsA= windll.USER32.ChangeDisplaySettingsA
ChangeDisplaySettingsExA= windll.USER32.ChangeDisplaySettingsExA
CreateDesktopA= windll.USER32.CreateDesktopA
EnumDisplaySettingsA= windll.USER32.EnumDisplaySettingsA
EnumDisplaySettingsExA= windll.USER32.EnumDisplaySettingsExA
UpdateLayeredWindow= windll.USER32.UpdateLayeredWindow




#
# USER32.DLL Declares [winuser.h]
#
ActivateKeyboardLayout= windll.USER32.ActivateKeyboardLayout
AdjustWindowRect= windll.USER32.AdjustWindowRect
AdjustWindowRectEx= windll.USER32.AdjustWindowRectEx
AllowSetForegroundWindow= windll.USER32.AllowSetForegroundWindow
AnimateWindow= windll.USER32.AnimateWindow
AnyPopup= windll.USER32.AnyPopup
AppendMenuA= windll.USER32.AppendMenuA
ArrangeIconicWindows= windll.USER32.ArrangeIconicWindows
AttachThreadInput= windll.USER32.AttachThreadInput
BeginDeferWindowPos= windll.USER32.BeginDeferWindowPos
BeginPaint= windll.USER32.BeginPaint
BringWindowToTop= windll.USER32.BringWindowToTop
BroadcastSystemMessage= windll.USER32.BroadcastSystemMessage
BroadcastSystemMessageA= windll.USER32.BroadcastSystemMessageA
BroadcastSystemMessageExA= windll.USER32.BroadcastSystemMessageExA

CallMsgFilterA= windll.USER32.CallMsgFilterA
CallNextHookEx= windll.USER32.CallNextHookEx
CallWindowProcA= windll.USER32.CallWindowProcA
CascadeWindows= windll.USER32.CascadeWindows
ChangeClipboardChain= windll.USER32.ChangeClipboardChain
ChangeMenuA= windll.USER32.ChangeMenuA
CharLowerA= windll.USER32.CharLowerA
CharLowerBuffA= windll.USER32.CharLowerBuffA
CharNextA= windll.USER32.CharNextA
CharNextExA= windll.USER32.CharNextExA
CharPrevA= windll.USER32.CharPrevA
CharPrevExA= windll.USER32.CharPrevExA
CharToOemA= windll.USER32.CharToOemA
CharToOemBuffA= windll.USER32.CharToOemBuffA
CharUpperA= windll.USER32.CharUpperA
CharUpperBuffA= windll.USER32.CharUpperBuffA
CheckDlgButton= windll.USER32.CheckDlgButton
CheckMenuItem= windll.USER32.CheckMenuItem
CheckMenuRadioItem= windll.USER32.CheckMenuRadioItem
CheckRadioButton= windll.USER32.CheckRadioButton
ChildWindowFromPoint= windll.USER32.ChildWindowFromPoint
ChildWindowFromPointEx= windll.USER32.ChildWindowFromPointEx
ClientToScreen= windll.USER32.ClientToScreen
ClipCursor= windll.USER32.ClipCursor
CloseClipboard= windll.USER32.CloseClipboard
CloseDesktop= windll.USER32.CloseDesktop
CloseWindow= windll.USER32.CloseWindow
CloseWindowStation= windll.USER32.CloseWindowStation
CopyAcceleratorTableA= windll.USER32.CopyAcceleratorTableA
# [!] CopyCursor= windll.USER32.CopyCursor
CopyIcon= windll.USER32.CopyIcon
CopyImage= windll.USER32.CopyImage
CopyRect= windll.USER32.CopyRect
CountClipboardFormats= windll.USER32.CountClipboardFormats
CreateAcceleratorTableA= windll.USER32.CreateAcceleratorTableA
CreateCaret= windll.USER32.CreateCaret
CreateCursor= windll.USER32.CreateCursor
CreateDialogIndirectParamA= windll.USER32.CreateDialogIndirectParamA


CreateDialogParamA= windll.USER32.CreateDialogParamA


CreateIcon= windll.USER32.CreateIcon

CreateIconFromResource= windll.USER32.CreateIconFromResource
CreateIconFromResourceEx= windll.USER32.CreateIconFromResourceEx


CreateIconFromResource= windll.USER32.CreateIconFromResource
CreateIconFromResourceEx= windll.USER32.CreateIconFromResourceEx


CreateIconIndirect= windll.USER32.CreateIconIndirect
CreateMDIWindowA= windll.USER32.CreateMDIWindowA

CreateMenu= windll.USER32.CreateMenu
CreatePopupMenu= windll.USER32.CreatePopupMenu
CreateWindowStationA= windll.USER32.CreateWindowStationA
CreateWindowExA= windll.USER32.CreateWindowExA



DdeAbandonTransaction= windll.USER32.DdeAbandonTransaction
DdeAccessData= windll.USER32.DdeAccessData
DdeAddData= windll.USER32.DdeAddData
DdeClientTransaction= windll.USER32.DdeClientTransaction

DdeCmpStringHandles= windll.USER32.DdeCmpStringHandles
DdeConnect= windll.USER32.DdeConnect
DdeConnectList= windll.USER32.DdeConnectList
DdeCreateDataHandle= windll.USER32.DdeCreateDataHandle
DdeCreateStringHandleA= windll.USER32.DdeCreateStringHandleA
DdeDisconnect= windll.USER32.DdeDisconnect
DdeDisconnectList= windll.USER32.DdeDisconnectList
DdeEnableCallback= windll.USER32.DdeEnableCallback
DdeFreeDataHandle= windll.USER32.DdeFreeDataHandle
DdeFreeStringHandle= windll.USER32.DdeFreeStringHandle
DdeGetData= windll.USER32.DdeGetData
DdeGetLastError= windll.USER32.DdeGetLastError
DdeImpersonateClient= windll.USER32.DdeImpersonateClient
DdeInitializeA= windll.USER32.DdeInitializeA
DdeKeepStringHandle= windll.USER32.DdeKeepStringHandle
DdeNameService= windll.USER32.DdeNameService
DdePostAdvise= windll.USER32.DdePostAdvise
DdeQueryConvInfo= windll.USER32.DdeQueryConvInfo
DdeQueryNextServer= windll.USER32.DdeQueryNextServer
DdeQueryStringA= windll.USER32.DdeQueryStringA
DdeReconnect= windll.USER32.DdeReconnect
DdeSetQualityOfService= windll.USER32.DdeSetQualityOfService
DdeSetUserHandle= windll.USER32.DdeSetUserHandle
DdeUnaccessData= windll.USER32.DdeUnaccessData
DdeUninitialize= windll.USER32.DdeUninitialize
DefDlgProcA= windll.USER32.DefDlgProcA
DefFrameProcA= windll.USER32.DefFrameProcA
DefMDIChildProcA= windll.USER32.DefMDIChildProcA
DefWindowProcA= windll.USER32.DefWindowProcA
DeferWindowPos= windll.USER32.DeferWindowPos

DeleteMenu= windll.USER32.DeleteMenu
DestroyAcceleratorTable= windll.USER32.DestroyAcceleratorTable
DestroyCaret= windll.USER32.DestroyCaret
DestroyCursor= windll.USER32.DestroyCursor
DestroyIcon= windll.USER32.DestroyIcon
DestroyMenu= windll.USER32.DestroyMenu
DestroyWindow= windll.USER32.DestroyWindow
DialogBoxParamA= windll.USER32.DialogBoxParamA


DialogBoxIndirectParamA= windll.USER32.DialogBoxIndirectParamA

DispatchMessageA= windll.USER32.DispatchMessageA
DlgDirListA= windll.USER32.DlgDirListA
DlgDirListComboBoxA= windll.USER32.DlgDirListComboBoxA
DlgDirSelectComboBoxExA= windll.USER32.DlgDirSelectComboBoxExA
DlgDirSelectExA= windll.USER32.DlgDirSelectExA
DefRawInputProc= windll.USER32.DefRawInputProc
DragDetect= windll.USER32.DragDetect
DragObject= windll.USER32.DragObject
DrawAnimatedRects= windll.USER32.DrawAnimatedRects
DrawCaption= windll.USER32.DrawCaption
DrawEdge= windll.USER32.DrawEdge
DrawFocusRect= windll.USER32.DrawFocusRect
DrawFrameControl= windll.USER32.DrawFrameControl
DrawIcon= windll.USER32.DrawIcon
DrawIconEx= windll.USER32.DrawIconEx
                 
DrawMenuBar= windll.USER32.DrawMenuBar
DrawStateA= windll.USER32.DrawStateA
                 
DrawTextA= windll.USER32.DrawTextA
DrawTextExA= windll.USER32.DrawTextExA
EmptyClipboard= windll.USER32.EmptyClipboard
EnableMenuItem= windll.USER32.EnableMenuItem
EnableScrollBar= windll.USER32.EnableScrollBar
EnableWindow= windll.USER32.EnableWindow
EndDeferWindowPos= windll.USER32.EndDeferWindowPos
EndDialog= windll.USER32.EndDialog
EndMenu= windll.USER32.EndMenu
EndPaint= windll.USER32.EndPaint
EnumChildWindows= windll.USER32.EnumChildWindows
EnumClipboardFormats= windll.USER32.EnumClipboardFormats
EnumDesktopWindows= windll.USER32.EnumDesktopWindows
EnumDesktopsA= windll.USER32.EnumDesktopsA
EnumDisplayDevicesA= windll.USER32.EnumDisplayDevicesA
EnumDisplayMonitors= windll.USER32.EnumDisplayMonitors
EnumPropsA= windll.USER32.EnumPropsA
EnumPropsExA= windll.USER32.EnumPropsExA
EnumThreadWindows= windll.USER32.EnumThreadWindows
EnumWindows= windll.USER32.EnumWindows
EnumWindowStationsA= windll.USER32.EnumWindowStationsA
EqualRect= windll.USER32.EqualRect
ExcludeUpdateRgn= windll.USER32.ExcludeUpdateRgn
# [!] ExitWindows= windll.USER32.ExitWindows
ExitWindowsEx= windll.USER32.ExitWindowsEx
FillRect= windll.USER32.FillRect
FindWindowA= windll.USER32.FindWindowA
FindWindowExA= windll.USER32.FindWindowExA
FlashWindow= windll.USER32.FlashWindow
FlashWindowEx= windll.USER32.FlashWindowEx
FrameRect= windll.USER32.FrameRect
FreeDDElParam= windll.USER32.FreeDDElParam
GetActiveWindow= windll.USER32.GetActiveWindow
GetAltTabInfoA= windll.USER32.GetAltTabInfoA
GetAncestor= windll.USER32.GetAncestor
GetAsyncKeyState= windll.USER32.GetAsyncKeyState
GetCapture= windll.USER32.GetCapture
GetCaretBlinkTime= windll.USER32.GetCaretBlinkTime
GetCaretPos= windll.USER32.GetCaretPos
GetClassInfoA= windll.USER32.GetClassInfoA
GetClassInfoExA= windll.USER32.GetClassInfoExA
GetClassLongA= windll.USER32.GetClassLongA
GetClassNameA= windll.USER32.GetClassNameA
GetClassWord= windll.USER32.GetClassWord
GetClientRect= windll.USER32.GetClientRect
GetClipCursor= windll.USER32.GetClipCursor
GetClipboardData= windll.USER32.GetClipboardData
GetClipboardFormatNameA= windll.USER32.GetClipboardFormatNameA
GetClipboardOwner= windll.USER32.GetClipboardOwner
GetClipboardSequenceNumber= windll.USER32.GetClipboardSequenceNumber
GetClipboardViewer= windll.USER32.GetClipboardViewer
GetComboBoxInfo= windll.USER32.GetComboBoxInfo
GetCursor= windll.USER32.GetCursor
GetCursorInfo= windll.USER32.GetCursorInfo
GetCursorPos= windll.USER32.GetCursorPos
GetDC= windll.USER32.GetDC
GetDCEx= windll.USER32.GetDCEx
GetDesktopWindow= windll.USER32.GetDesktopWindow
GetDialogBaseUnits= windll.USER32.GetDialogBaseUnits
GetDlgCtrlID= windll.USER32.GetDlgCtrlID
GetDlgItem= windll.USER32.GetDlgItem
GetDlgItemInt= windll.USER32.GetDlgItemInt
GetDlgItemTextA= windll.USER32.GetDlgItemTextA
GetDoubleClickTime= windll.USER32.GetDoubleClickTime
GetFocus= windll.USER32.GetFocus
GetForegroundWindow= windll.USER32.GetForegroundWindow
GetGuiResources= windll.USER32.GetGuiResources
GetGUIThreadInfo= windll.USER32.GetGUIThreadInfo
GetIconInfo= windll.USER32.GetIconInfo
GetInputState= windll.USER32.GetInputState
GetKBCodePage= windll.USER32.GetKBCodePage
GetKeyNameTextA= windll.USER32.GetKeyNameTextA
GetKeyState= windll.USER32.GetKeyState
GetKeyboardLayout= windll.USER32.GetKeyboardLayout
GetKeyboardLayoutList= windll.USER32.GetKeyboardLayoutList
GetKeyboardLayoutNameA= windll.USER32.GetKeyboardLayoutNameA
GetKeyboardState= windll.USER32.GetKeyboardState
GetKeyboardType= windll.USER32.GetKeyboardType
GetLastActivePopup= windll.USER32.GetLastActivePopup
GetLastInputInfo= windll.USER32.GetLastInputInfo
GetLayeredWindowAttributes= windll.USER32.GetLayeredWindowAttributes
GetListBoxInfo= windll.USER32.GetListBoxInfo
GetMenu= windll.USER32.GetMenu
GetMenuBarInfo= windll.USER32.GetMenuBarInfo
GetMenuCheckMarkDimensions= windll.USER32.GetMenuCheckMarkDimensions
GetMenuContextHelpId= windll.USER32.GetMenuContextHelpId
GetMenuDefaultItem= windll.USER32.GetMenuDefaultItem
GetMenuInfo= windll.USER32.GetMenuInfo
GetMenuItemCount= windll.USER32.GetMenuItemCount
GetMenuItemID= windll.USER32.GetMenuItemID
GetMenuItemInfoA= windll.USER32.GetMenuItemInfoA
GetMenuItemRect= windll.USER32.GetMenuItemRect
GetMenuState= windll.USER32.GetMenuState
GetMenuStringA= windll.USER32.GetMenuStringA
GetMessageA= windll.USER32.GetMessageA
GetMessageExtraInfo= windll.USER32.GetMessageExtraInfo
GetMessagePos= windll.USER32.GetMessagePos
GetMessageTime= windll.USER32.GetMessageTime
GetMonitorInfoA= windll.USER32.GetMonitorInfoA
GetMouseMovePointsEx= windll.USER32.GetMouseMovePointsEx
GetNextDlgGroupItem= windll.USER32.GetNextDlgGroupItem
GetNextDlgTabItem= windll.USER32.GetNextDlgTabItem
GetOpenClipboardWindow= windll.USER32.GetOpenClipboardWindow
GetParent= windll.USER32.GetParent
GetPriorityClipboardFormat= windll.USER32.GetPriorityClipboardFormat
GetProcessDefaultLayout= windll.USER32.GetProcessDefaultLayout
GetProcessWindowStation= windll.USER32.GetProcessWindowStation
GetPropA= windll.USER32.GetPropA
GetQueueStatus= windll.USER32.GetQueueStatus
GetRawInputBuffer= windll.USER32.GetRawInputBuffer
GetRawInputData= windll.USER32.GetRawInputData
GetRawInputDeviceInfoA= windll.USER32.GetRawInputDeviceInfoA
GetRawInputDeviceList= windll.USER32.GetRawInputDeviceList
GetRegisteredRawInputDevices= windll.USER32.GetRegisteredRawInputDevices
GetScrollBarInfo= windll.USER32.GetScrollBarInfo
GetScrollInfo= windll.USER32.GetScrollInfo
GetScrollPos= windll.USER32.GetScrollPos
GetScrollRange= windll.USER32.GetScrollRange
GetShellWindow= windll.user32.GetShellWindow
GetSubMenu= windll.USER32.GetSubMenu
GetSysColor= windll.USER32.GetSysColor
GetSysColorBrush= windll.USER32.GetSysColorBrush
GetSystemMenu= windll.USER32.GetSystemMenu
GetSystemMetrics= windll.USER32.GetSystemMetrics
GetTabbedTextExtentA= windll.USER32.GetTabbedTextExtentA
GetThreadDesktop= windll.USER32.GetThreadDesktop
GetTitleBarInfo= windll.USER32.GetTitleBarInfo
GetTopWindow= windll.USER32.GetTopWindow
GetUpdateRect= windll.USER32.GetUpdateRect
GetUpdateRgn= windll.USER32.GetUpdateRgn
GetUserObjectInformationA= windll.USER32.GetUserObjectInformationA
GetUserObjectSecurity= windll.USER32.GetUserObjectSecurity
GetWindow= windll.USER32.GetWindow


GetWindowContextHelpId= windll.USER32.GetWindowContextHelpId
GetWindowDC= windll.USER32.GetWindowDC
GetWindowInfo= windll.USER32.GetWindowInfo
GetWindowLongA= windll.USER32.GetWindowLongA
GetWindowModuleFileNameA= windll.USER32.GetWindowModuleFileNameA
GetWindowPlacement= windll.USER32.GetWindowPlacement
GetWindowRect= windll.USER32.GetWindowRect
GetWindowRgn= windll.USER32.GetWindowRgn
GetWindowRgnBox= windll.USER32.GetWindowRgnBox
GetWindowTextA= windll.USER32.GetWindowTextA
GetWindowTextLengthA= windll.USER32.GetWindowTextLengthA
GetWindowThreadProcessId= windll.USER32.GetWindowThreadProcessId
GetWindowWord= windll.USER32.GetWindowWord
GrayStringA= windll.USER32.GrayStringA

HideCaret= windll.USER32.HideCaret
HiliteMenuItem= windll.USER32.HiliteMenuItem
ImpersonateDdeClientWindow= windll.USER32.ImpersonateDdeClientWindow
InSendMessage= windll.USER32.InSendMessage
InSendMessageEx= windll.USER32.InSendMessageEx
InflateRect= windll.USER32.InflateRect
InsertMenuA= windll.USER32.InsertMenuA
InsertMenuItemA= windll.USER32.InsertMenuItemA
IntersectRect= windll.USER32.IntersectRect
InvalidateRect= windll.USER32.InvalidateRect
InvalidateRgn= windll.USER32.InvalidateRgn
InvertRect= windll.USER32.InvertRect
IsCharAlphaA= windll.USER32.IsCharAlphaA
IsCharAlphaNumericA= windll.USER32.IsCharAlphaNumericA
IsCharLowerA= windll.USER32.IsCharLowerA
IsCharUpperA= windll.USER32.IsCharUpperA
IsChild= windll.USER32.IsChild
IsClipboardFormatAvailable= windll.USER32.IsClipboardFormatAvailable
IsDialogMessageA= windll.USER32.IsDialogMessageA
IsDlgButtonChecked= windll.USER32.IsDlgButtonChecked
IsGUIThread= windll.USER32.IsGUIThread
IsIconic= windll.USER32.IsIconic
IsMenu= windll.USER32.IsMenu
IsRectEmpty= windll.USER32.IsRectEmpty
IsWindow= windll.USER32.IsWindow
IsWindowEnabled= windll.USER32.IsWindowEnabled
IsWinEventHookInstalled= windll.USER32.IsWinEventHookInstalled
IsWindowUnicode= windll.USER32.IsWindowUnicode
IsWindowVisible= windll.USER32.IsWindowVisible
IsZoomed= windll.USER32.IsZoomed
KillTimer= windll.USER32.KillTimer
LoadAcceleratorsA= windll.USER32.LoadAcceleratorsA
LoadBitmapA= windll.USER32.LoadBitmapA
LoadCursorA= windll.USER32.LoadCursorA
LoadCursorFromFileA= windll.USER32.LoadCursorFromFileA
LoadIconA= windll.USER32.LoadIconA
LoadImageA= windll.USER32.LoadImageA
LoadKeyboardLayoutA= windll.USER32.LoadKeyboardLayoutA
LoadMenuA= windll.USER32.LoadMenuA
LoadMenuIndirectA= windll.USER32.LoadMenuIndirectA
LoadStringA= windll.USER32.LoadStringA
LockSetForegroundWindow= windll.USER32.LockSetForegroundWindow
LockWindowUpdate= windll.USER32.LockWindowUpdate
LockWorkStation= windll.USER32.LockWorkStation
LookupIconIdFromDirectory= windll.USER32.LookupIconIdFromDirectory
LookupIconIdFromDirectoryEx= windll.USER32.LookupIconIdFromDirectoryEx
MapDialogRect= windll.USER32.MapDialogRect
MapVirtualKeyA= windll.USER32.MapVirtualKeyA
MapVirtualKeyExA= windll.USER32.MapVirtualKeyExA
MapWindowPoints= windll.USER32.MapWindowPoints
MenuItemFromPoint= windll.USER32.MenuItemFromPoint
MessageBeep= windll.USER32.MessageBeep
MessageBoxA= windll.USER32.MessageBoxA
MessageBoxExA= windll.USER32.MessageBoxExA
MessageBoxIndirectA= windll.USER32.MessageBoxIndirectA
ModifyMenuA= windll.USER32.ModifyMenuA
MonitorFromPoint= windll.USER32.MonitorFromPoint
MonitorFromRect= windll.USER32.MonitorFromRect
MonitorFromWindow= windll.USER32.MonitorFromWindow
MoveWindow= windll.USER32.MoveWindow
MsgWaitForMultipleObjects= windll.USER32.MsgWaitForMultipleObjects
NotifyWinEvent= windll.USER32.NotifyWinEvent
OemKeyScan= windll.USER32.OemKeyScan
OemToCharA= windll.USER32.OemToCharA
OemToCharBuffA= windll.USER32.OemToCharBuffA
OffsetRect= windll.USER32.OffsetRect
OpenClipboard= windll.USER32.OpenClipboard
OpenDesktopA= windll.USER32.OpenDesktopA
OpenIcon= windll.USER32.OpenIcon
OpenInputDesktop= windll.USER32.OpenInputDesktop
OpenWindowStationA= windll.USER32.OpenWindowStationA
PackDDElParam= windll.USER32.PackDDElParam
PaintDesktop= windll.USER32.PaintDesktop
PeekMessageA= windll.USER32.PeekMessageA
PostMessageA= windll.USER32.PostMessageA
PostThreadMessageA= windll.USER32.PostThreadMessageA
PrintWindow= windll.USER32.PrintWindow
PtInRect= windll.USER32.PtInRect
RealChildWindowFromPoint= windll.USER32.RealChildWindowFromPoint
RealGetWindowClassA= windll.USER32.RealGetWindowClassA
RedrawWindow= windll.USER32.RedrawWindow
RegisterClassA= windll.USER32.RegisterClassA
RegisterClassExA= windll.USER32.RegisterClassExA
RegisterClipboardFormatA= windll.USER32.RegisterClipboardFormatA
RegisterDeviceNotificationA= windll.USER32.RegisterDeviceNotificationA
RegisterHotKey= windll.USER32.RegisterHotKey
RegisterRawInputDevices= windll.USER32.RegisterRawInputDevices
RegisterWindowMessageA= windll.USER32.RegisterWindowMessageA
ReleaseCapture= windll.USER32.ReleaseCapture
ReleaseDC= windll.USER32.ReleaseDC
RemoveMenu= windll.USER32.RemoveMenu
RemovePropA= windll.USER32.RemovePropA
ReplyMessage= windll.USER32.ReplyMessage
ReuseDDElParam= windll.USER32.ReuseDDElParam
ScreenToClient= windll.USER32.ScreenToClient
ScrollDC= windll.USER32.ScrollDC
ScrollWindow= windll.USER32.ScrollWindow
ScrollWindowEx= windll.USER32.ScrollWindowEx
SendDlgItemMessageA= windll.USER32.SendDlgItemMessageA
SendInput= windll.USER32.SendInput
SendMessageA= windll.USER32.SendMessageA
SendMessageCallbackA= windll.USER32.SendMessageCallbackA
SendMessageTimeoutA= windll.USER32.SendMessageTimeoutA
SendNotifyMessageA= windll.USER32.SendNotifyMessageA
SetActiveWindow= windll.USER32.SetActiveWindow
SetCapture= windll.USER32.SetCapture
SetCaretBlinkTime= windll.USER32.SetCaretBlinkTime
SetCaretPos= windll.USER32.SetCaretPos
SetClassLongA= windll.USER32.SetClassLongA
SetClassWord= windll.USER32.SetClassWord
SetClipboardData= windll.USER32.SetClipboardData
SetClipboardViewer= windll.USER32.SetClipboardViewer
SetCursor= windll.USER32.SetCursor
SetCursorPos= windll.USER32.SetCursorPos
SetDlgItemInt= windll.USER32.SetDlgItemInt
SetDlgItemTextA= windll.USER32.SetDlgItemTextA
SetDoubleClickTime= windll.USER32.SetDoubleClickTime
SetFocus= windll.USER32.SetFocus
SetForegroundWindow= windll.USER32.SetForegroundWindow
SetKeyboardState= windll.USER32.SetKeyboardState
SetLayeredWindowAttributes= windll.USER32.SetLayeredWindowAttributes
SetMenu= windll.USER32.SetMenu
SetMenuContextHelpId= windll.USER32.SetMenuContextHelpId
SetMenuDefaultItem= windll.USER32.SetMenuDefaultItem
SetMenuInfo= windll.USER32.SetMenuInfo
SetMenuItemBitmaps= windll.USER32.SetMenuItemBitmaps
SetMenuItemInfoA= windll.USER32.SetMenuItemInfoA
SetMessageExtraInfo= windll.USER32.SetMessageExtraInfo
SetMessageQueue= windll.USER32.SetMessageQueue
SetParent= windll.USER32.SetParent
SetProcessDefaultLayout= windll.USER32.SetProcessDefaultLayout
SetProcessWindowStation= windll.USER32.SetProcessWindowStation
SetPropA= windll.USER32.SetPropA
SetRect= windll.USER32.SetRect
SetRectEmpty= windll.USER32.SetRectEmpty
SetScrollInfo= windll.USER32.SetScrollInfo
SetScrollPos= windll.USER32.SetScrollPos
SetScrollRange= windll.USER32.SetScrollRange
SetSysColors= windll.USER32.SetSysColors
SetSystemCursor= windll.USER32.SetSystemCursor
SetThreadDesktop= windll.USER32.SetThreadDesktop
SetTimer= windll.USER32.SetTimer
SetUserObjectInformationA= windll.USER32.SetUserObjectInformationA
SetUserObjectSecurity= windll.USER32.SetUserObjectSecurity
SetWindowContextHelpId= windll.USER32.SetWindowContextHelpId
SetWindowLongA= windll.USER32.SetWindowLongA
SetWindowPlacement= windll.USER32.SetWindowPlacement
SetWindowPos= windll.USER32.SetWindowPos
SetWindowRgn= windll.USER32.SetWindowRgn
SetWindowTextA= windll.USER32.SetWindowTextA
SetWindowWord= windll.USER32.SetWindowWord
SetWindowsHookA= windll.USER32.SetWindowsHookA
SetWindowsHookExA= windll.USER32.SetWindowsHookExA
SetWinEventHook= windll.USER32.SetWinEventHook

ShowCaret= windll.USER32.ShowCaret
ShowCursor= windll.USER32.ShowCursor
ShowOwnedPopups= windll.USER32.ShowOwnedPopups
ShowScrollBar= windll.USER32.ShowScrollBar
ShowWindow= windll.USER32.ShowWindow
ShowWindowAsync= windll.USER32.ShowWindowAsync
SubtractRect= windll.USER32.SubtractRect
SwapMouseButton= windll.USER32.SwapMouseButton
SwitchDesktop= windll.USER32.SwitchDesktop
SystemParametersInfoA= windll.USER32.SystemParametersInfoA
TabbedTextOutA= windll.USER32.TabbedTextOutA
                 
TileWindows= windll.USER32.TileWindows
ToAscii= windll.USER32.ToAscii
ToAsciiEx= windll.USER32.ToAsciiEx
ToUnicode= windll.USER32.ToUnicode
ToUnicodeEx= windll.USER32.ToUnicodeEx
TrackMouseEvent= windll.USER32.TrackMouseEvent
TrackPopupMenu= windll.USER32.TrackPopupMenu
TrackPopupMenuEx= windll.USER32.TrackPopupMenuEx
TranslateAcceleratorA= windll.USER32.TranslateAcceleratorA
TranslateMDISysAccel= windll.USER32.TranslateMDISysAccel
TranslateMessage= windll.USER32.TranslateMessage
UnhookWindowsHook= windll.USER32.UnhookWindowsHook
UnhookWindowsHookEx= windll.USER32.UnhookWindowsHookEx
UnhookWinEvent= windll.USER32.UnhookWinEvent
UnionRect= windll.USER32.UnionRect
UnloadKeyboardLayout= windll.USER32.UnloadKeyboardLayout
UnpackDDElParam= windll.USER32.UnpackDDElParam
UnregisterClassA= windll.USER32.UnregisterClassA
UnregisterDeviceNotification= windll.USER32.UnregisterDeviceNotification
UnregisterHotKey= windll.USER32.UnregisterHotKey
UpdateWindow= windll.USER32.UpdateWindow
UserHandleGrantAccess= windll.USER32.UserHandleGrantAccess
ValidateRect= windll.USER32.ValidateRect
ValidateRgn= windll.USER32.ValidateRgn
VkKeyScanA= windll.USER32.VkKeyScanA
VkKeyScanExA= windll.USER32.VkKeyScanExA
WaitForInputIdle= windll.USER32.WaitForInputIdle
WaitMessage= windll.USER32.WaitMessage
WinHelpA= windll.USER32.WinHelpA
WindowFromDC= windll.USER32.WindowFromDC
WindowFromPoint= windll.USER32.WindowFromPoint
PostQuitMessage= windll.USER32.PostQuitMessage
keybd_event= windll.USER32.keybd_event
mouse_event= windll.USER32.mouse_event
SetDebugErrorLevel= windll.USER32.SetDebugErrorLevel
SetLastErrorEx= windll.USER32.SetLastErrorEx

wsprintfA= windll.USER32.wsprintfA
        

wsprintfA= windll.USER32.wsprintfA
        


# Multimedia declares from mmsystem.h =========================================

CloseDriver= windll.WINMM.CloseDriver
DefDriverProc= windll.WINMM.DefDriverProc
DrvGetModuleHandle= windll.WINMM.DrvGetModuleHandle
GetDriverModuleHandle= windll.WINMM.GetDriverModuleHandle
OpenDriver= windll.WINMM.OpenDriver
PlaySoundA= windll.WINMM.PlaySoundA
SendDriverMessage= windll.WINMM.SendDriverMessage

auxGetDevCapsA= windll.WINMM.auxGetDevCapsA
auxGetNumDevs= windll.WINMM.auxGetNumDevs
auxGetVolume= windll.WINMM.auxGetVolume
auxOutMessage= windll.WINMM.auxOutMessage
auxSetVolume= windll.WINMM.auxSetVolume
joyGetDevCapsA= windll.WINMM.joyGetDevCapsA
joyGetNumDevs= windll.WINMM.joyGetNumDevs
joyGetPos= windll.WINMM.joyGetPos
joyGetPosEx= windll.WINMM.joyGetPosEx
joyGetThreshold= windll.WINMM.joyGetThreshold
joyReleaseCapture= windll.WINMM.joyReleaseCapture
joySetCapture= windll.WINMM.joySetCapture
joySetThreshold= windll.WINMM.joySetThreshold
mciExecute= windll.WINMM.mciExecute
mciGetCreatorTask= windll.WINMM.mciGetCreatorTask
mciGetDeviceIDA= windll.WINMM.mciGetDeviceIDA
mciGetDeviceIDFromElementIDA= windll.WINMM.mciGetDeviceIDFromElementIDA
mciGetErrorStringA= windll.WINMM.mciGetErrorStringA
mciGetYieldProc= windll.WINMM.mciGetYieldProc
mciSendCommandA= windll.WINMM.mciSendCommandA
mciSendStringA= windll.WINMM.mciSendStringA
mciSetYieldProc= windll.WINMM.mciSetYieldProc
midiConnect= windll.WINMM.midiConnect
midiDisconnect= windll.WINMM.midiDisconnect
midiInAddBuffer= windll.WINMM.midiInAddBuffer
midiInClose= windll.WINMM.midiInClose
midiInGetDevCapsA= windll.WINMM.midiInGetDevCapsA
midiInGetErrorTextA= windll.WINMM.midiInGetErrorTextA
midiInGetID= windll.WINMM.midiInGetID
midiInGetNumDevs= windll.WINMM.midiInGetNumDevs
midiInMessage= windll.WINMM.midiInMessage
midiInOpen= windll.WINMM.midiInOpen
midiInPrepareHeader= windll.WINMM.midiInPrepareHeader
midiInReset= windll.WINMM.midiInReset
midiInStart= windll.WINMM.midiInStart
midiInStop= windll.WINMM.midiInStop
midiInUnprepareHeader= windll.WINMM.midiInUnprepareHeader
midiOutCacheDrumPatches= windll.WINMM.midiOutCacheDrumPatches
midiOutCachePatches= windll.WINMM.midiOutCachePatches
midiOutClose= windll.WINMM.midiOutClose
midiOutGetDevCapsA= windll.WINMM.midiOutGetDevCapsA
midiOutGetErrorTextA= windll.WINMM.midiOutGetErrorTextA
midiOutGetID= windll.WINMM.midiOutGetID
midiOutGetNumDevs= windll.WINMM.midiOutGetNumDevs
midiOutGetVolume= windll.WINMM.midiOutGetVolume
midiOutLongMsg= windll.WINMM.midiOutLongMsg
midiOutMessage= windll.WINMM.midiOutMessage
midiOutOpen= windll.WINMM.midiOutOpen
midiOutPrepareHeader= windll.WINMM.midiOutPrepareHeader
midiOutReset= windll.WINMM.midiOutReset
midiOutSetVolume= windll.WINMM.midiOutSetVolume
midiOutShortMsg= windll.WINMM.midiOutShortMsg
midiOutUnprepareHeader= windll.WINMM.midiOutUnprepareHeader
midiStreamClose= windll.WINMM.midiStreamClose
midiStreamOpen= windll.WINMM.midiStreamOpen
midiStreamOut= windll.WINMM.midiStreamOut
midiStreamPause= windll.WINMM.midiStreamPause
midiStreamPosition= windll.WINMM.midiStreamPosition
midiStreamProperty= windll.WINMM.midiStreamProperty
midiStreamRestart= windll.WINMM.midiStreamRestart
midiStreamStop= windll.WINMM.midiStreamStop
mixerClose= windll.WINMM.mixerClose
mixerGetControlDetailsA= windll.WINMM.mixerGetControlDetailsA
mixerGetDevCapsA= windll.WINMM.mixerGetDevCapsA
mixerGetID= windll.WINMM.mixerGetID
mixerGetLineControlsA= windll.WINMM.mixerGetLineControlsA
mixerGetLineInfoA= windll.WINMM.mixerGetLineInfoA
mixerGetNumDevs= windll.WINMM.mixerGetNumDevs
mixerMessage= windll.WINMM.mixerMessage
mixerOpen= windll.WINMM.mixerOpen
mixerSetControlDetails= windll.WINMM.mixerSetControlDetails
mmioAdvance= windll.WINMM.mmioAdvance
mmioAscend= windll.WINMM.mmioAscend
mmioClose= windll.WINMM.mmioClose
mmioCreateChunk= windll.WINMM.mmioCreateChunk
mmioDescend= windll.WINMM.mmioDescend
mmioFlush= windll.WINMM.mmioFlush
mmioGetInfo= windll.WINMM.mmioGetInfo
mmioInstallIOProcA= windll.WINMM.mmioInstallIOProcA
mmioOpenA= windll.WINMM.mmioOpenA
mmioRead= windll.WINMM.mmioRead
mmioRenameA= windll.WINMM.mmioRenameA
mmioSeek= windll.WINMM.mmioSeek
mmioSendMessage= windll.WINMM.mmioSendMessage
mmioSetBuffer= windll.WINMM.mmioSetBuffer
mmioSetInfo= windll.WINMM.mmioSetInfo
mmioStringToFOURCCA= windll.WINMM.mmioStringToFOURCCA
mmioWrite= windll.WINMM.mmioWrite
mmsystemGetVersion= windll.WINMM.mmsystemGetVersion
sndPlaySoundA= windll.WINMM.sndPlaySoundA
timeBeginPeriod= windll.WINMM.timeBeginPeriod
timeEndPeriod= windll.WINMM.timeEndPeriod
timeGetDevCaps= windll.WINMM.timeGetDevCaps
timeGetSystemTime= windll.WINMM.timeGetSystemTime
timeGetTime= windll.WINMM.timeGetTime
timeKillEvent= windll.WINMM.timeKillEvent
timeSetEvent= windll.WINMM.timeSetEvent
waveInAddBuffer= windll.WINMM.waveInAddBuffer
waveInClose= windll.WINMM.waveInClose
waveInGetDevCapsA= windll.WINMM.waveInGetDevCapsA
waveInGetErrorTextA= windll.WINMM.waveInGetErrorTextA
waveInGetID= windll.WINMM.waveInGetID
waveInGetNumDevs= windll.WINMM.waveInGetNumDevs
waveInGetPosition= windll.WINMM.waveInGetPosition
waveInMessage= windll.WINMM.waveInMessage
waveInOpen= windll.WINMM.waveInOpen
waveInPrepareHeader= windll.WINMM.waveInPrepareHeader
waveInReset= windll.WINMM.waveInReset
waveInStart= windll.WINMM.waveInStart
waveInStop= windll.WINMM.waveInStop
waveInUnprepareHeader= windll.WINMM.waveInUnprepareHeader
waveOutBreakLoop= windll.WINMM.waveOutBreakLoop
waveOutClose= windll.WINMM.waveOutClose
waveOutGetDevCapsA= windll.WINMM.waveOutGetDevCapsA
waveOutGetErrorTextA= windll.WINMM.waveOutGetErrorTextA
waveOutGetID= windll.WINMM.waveOutGetID
waveOutGetNumDevs= windll.WINMM.waveOutGetNumDevs
waveOutGetPitch= windll.WINMM.waveOutGetPitch
waveOutGetPlaybackRate= windll.WINMM.waveOutGetPlaybackRate
waveOutGetPosition= windll.WINMM.waveOutGetPosition
waveOutGetVolume= windll.WINMM.waveOutGetVolume
waveOutMessage= windll.WINMM.waveOutMessage
waveOutOpen= windll.WINMM.waveOutOpen
waveOutPause= windll.WINMM.waveOutPause
waveOutPrepareHeader= windll.WINMM.waveOutPrepareHeader
waveOutReset= windll.WINMM.waveOutReset
waveOutRestart= windll.WINMM.waveOutRestart
waveOutSetPitch= windll.WINMM.waveOutSetPitch
waveOutSetPlaybackRate= windll.WINMM.waveOutSetPlaybackRate
waveOutSetVolume= windll.WINMM.waveOutSetVolume
waveOutUnprepareHeader= windll.WINMM.waveOutUnprepareHeader
waveOutWrite= windll.WINMM.waveOutWrite
# [!] OutputDebugStr= windll.WINMM.OutputDebugStr

# End of declares from mmsystem.h =============================================

# WINSPOOL.DRV Declares (Printer Support) =====================================

# [!] AbortPrinter= windll.WINSPOOL.AbortPrinter
# [!] AddFormA= windll.WINSPOOL.AddFormA
# [!] AddJobA= windll.WINSPOOL.AddJobA
# [!] AddMonitorA= windll.WINSPOOL.AddMonitorA
# [!] AddPortA= windll.WINSPOOL.AddPortA
# [!] AddPrintProcessorA= windll.WINSPOOL.AddPrintProcessorA
# [!] AddPrintProvidorA= windll.WINSPOOL.AddPrintProvidorA
# [!] AddPrinterA= windll.WINSPOOL.AddPrinterA
# [!] AddPrinterConnectionA= windll.WINSPOOL.AddPrinterConnectionA
# [!] AddPrinterDriverA= windll.WINSPOOL.AddPrinterDriverA
# [!] AddPrinterDriverExA= windll.WINSPOOL.AddPrinterDriverExA
# [!] AdvancedDocumentPropertiesA= windll.WINSPOOL.AdvancedDocumentPropertiesA
# [!] ClosePrinter= windll.WINSPOOL.ClosePrinter
# [!] ConfigurePortA= windll.WINSPOOL.ConfigurePortA
# [!] ConnectToPrinterDlg= windll.WINSPOOL.ConnectToPrinterDlg
# [!] DeleteFormA= windll.WINSPOOL.DeleteFormA
# [!] DeleteMonitorA= windll.WINSPOOL.DeleteMonitorA
# [!] DeletePortA= windll.WINSPOOL.DeletePortA
# [!] DeletePrintProcessorA= windll.WINSPOOL.DeletePrintProcessorA
# [!] DeletePrintProvidorA= windll.WINSPOOL.DeletePrintProvidorA
# [!] DeletePrinter= windll.WINSPOOL.DeletePrinter
# [!] DeletePrinterConnectionA= windll.WINSPOOL.DeletePrinterConnectionA
# [!] DeletePrinterDataA= windll.WINSPOOL.DeletePrinterDataA
# [!] DeletePrinterDataExA= windll.WINSPOOL.DeletePrinterDataExA
# [!] DeletePrinterDriverA= windll.WINSPOOL.DeletePrinterDriverA
# [!] DeletePrinterDriverExA= windll.WINSPOOL.DeletePrinterDriverExA
# [!] DeletePrinterKeyA= windll.WINSPOOL.DeletePrinterKeyA
# [!] DocumentPropertiesA= windll.WINSPOOL.DocumentPropertiesA
# [!] EndDocPrinter= windll.WINSPOOL.EndDocPrinter
# [!] EndPagePrinter= windll.WINSPOOL.EndPagePrinter
# [!] EnumFormsA= windll.WINSPOOL.EnumFormsA
# [!] EnumJobsA= windll.WINSPOOL.EnumJobsA
# [!] EnumMonitorsA= windll.WINSPOOL.EnumMonitorsA
# [!] EnumPortsA= windll.WINSPOOL.EnumPortsA
# [!] EnumPrintProcessorDatatypesA= windll.WINSPOOL.EnumPrintProcessorDatatypesA
                 
# [!] EnumPrintProcessorsA= windll.WINSPOOL.EnumPrintProcessorsA
# [!] EnumPrinterDataA= windll.WINSPOOL.EnumPrinterDataA
                 

# [!] EnumPrinterDataExA= windll.WINSPOOL.EnumPrinterDataExA

# [!] EnumPrinterDataExA= windll.WINSPOOL.EnumPrinterDataExA

# [!] EnumPrinterDriversA= windll.WINSPOOL.EnumPrinterDriversA
# [!] EnumPrinterKeyA= windll.WINSPOOL.EnumPrinterKeyA
# [!] EnumPrinterPropertySheets= windll.WINSPOOL.EnumPrinterPropertySheets
# [!] EnumPrintersA= windll.WINSPOOL.EnumPrintersA
# [!] FindClosePrinterChangeNotification= windll.WINSPOOL.FindClosePrinterChangeNotification
# [!] FindFirstPrinterChangeNotification= windll.WINSPOOL.FindFirstPrinterChangeNotification

# [!] FindNextPrinterChangeNotification= windll.WINSPOOL.FindNextPrinterChangeNotification

# [!] FindNextPrinterChangeNotification= windll.WINSPOOL.FindNextPrinterChangeNotification

# [!] FlushPrinter= windll.WINSPOOL.FlushPrinter

# [!] FreePrinterNotifyInfo= windll.WINSPOOL.FreePrinterNotifyInfo

# [!] FreePrinterNotifyInfo= windll.WINSPOOL.FreePrinterNotifyInfo

# [!] GetDefaultPrinterA= windll.WINSPOOL.GetDefaultPrinterA
# [!] GetFormA= windll.WINSPOOL.GetFormA
# [!] GetJobA= windll.WINSPOOL.GetJobA
# [!] GetPrintProcessorDirectoryA= windll.WINSPOOL.GetPrintProcessorDirectoryA
# [!] GetPrinterA= windll.WINSPOOL.GetPrinterA
# [!] GetPrinterDataA= windll.WINSPOOL.GetPrinterDataA
# [!] GetPrinterDataExA= windll.WINSPOOL.GetPrinterDataExA
# [!] GetPrinterDriverA= windll.WINSPOOL.GetPrinterDriverA
# [!] GetPrinterDriverDirectoryA= windll.WINSPOOL.GetPrinterDriverDirectoryA

# [!] IsValidDevmodeA= windll.WINSPOOL.IsValidDevmodeA

# [!] IsValidDevmodeA= windll.WINSPOOL.IsValidDevmodeA
# [!] 
# [!] OpenPrinterA= windll.WINSPOOL.OpenPrinterA
# [!] PrinterMessageBoxA= windll.WINSPOOL.PrinterMessageBoxA
# [!] PrinterProperties= windll.WINSPOOL.PrinterProperties
# [!] ReadPrinter= windll.WINSPOOL.ReadPrinter
# [!] ResetPrinterA= windll.WINSPOOL.ResetPrinterA
# [!] ScheduleJob= windll.WINSPOOL.ScheduleJob
# [!] SetDefaultPrinterA= windll.WINSPOOL.SetDefaultPrinterA
# [!] SetFormA= windll.WINSPOOL.SetFormA
# [!] SetJobA= windll.WINSPOOL.SetJobA
# [!] SetPortA= windll.WINSPOOL.SetPortA
# [!] SetPrinterA= windll.WINSPOOL.SetPrinterA
# [!] SetPrinterDataA= windll.WINSPOOL.SetPrinterDataA
# [!] SetPrinterDataExA= windll.WINSPOOL.SetPrinterDataExA
# [!] StartDocPrinterA= windll.WINSPOOL.StartDocPrinterA
# [!] StartPagePrinter= windll.WINSPOOL.StartPagePrinter
# [!] WaitForPrinterChange= windll.WINSPOOL.WaitForPrinterChange
# [!] WritePrinter= windll.WINSPOOL.WritePrinter
# [!] 
# [!] XcvDataW= windll.WINSPOOL.XcvDataW

# [!] XcvDataW= windll.WINSPOOL.XcvDataW



# End of WINSPOOL.DRV declares (printer support) ==============================


# Network support declares from winnetwk.h ====================================

WNetAddConnectionA= windll.MPR.WNetAddConnectionA
WNetAddConnection2A= windll.MPR.WNetAddConnection2A
WNetAddConnection3A= windll.MPR.WNetAddConnection3A
WNetCancelConnectionA= windll.MPR.WNetCancelConnectionA
WNetCancelConnection2A= windll.MPR.WNetCancelConnection2A
WNetGetConnectionA= windll.MPR.WNetGetConnectionA
WNetUseConnectionA= windll.MPR.WNetUseConnectionA

WNetConnectionDialog= windll.MPR.WNetConnectionDialog
WNetDisconnectDialog= windll.MPR.WNetDisconnectDialog
WNetConnectionDialog1A= windll.MPR.WNetConnectionDialog1A
WNetDisconnectDialog1A= windll.MPR.WNetDisconnectDialog1A
WNetOpenEnumA= windll.MPR.WNetOpenEnumA
WNetEnumResourceA= windll.MPR.WNetEnumResourceA
WNetCloseEnum= windll.MPR.WNetCloseEnum
WNetGetUniversalNameA= windll.MPR.WNetGetUniversalNameA
WNetGetUserA= windll.MPR.WNetGetUserA
WNetGetProviderNameA= windll.MPR.WNetGetProviderNameA
WNetGetResourceParentA= windll.MPR.WNetGetResourceParentA
WNetGetResourceInformationA= windll.MPR.WNetGetResourceInformationA
WNetGetNetworkInformationA= windll.MPR.WNetGetNetworkInformationA
WNetGetLastErrorA= windll.MPR.WNetGetLastErrorA
MultinetGetConnectionPerformanceA= windll.MPR.MultinetGetConnectionPerformanceA

# End of declares from winnetwk.h =============================================


# Network support declares from lmuse.h =======================================
#
Netbios= windll.NETAPI32.Netbios
NetUseAdd= windll.NETAPI32.NetUseAdd
NetUseDel= windll.NETAPI32.NetUseDel
NetUseEnum= windll.NETAPI32.NetUseEnum
NetUseGetInfo= windll.NETAPI32.NetUseGetInfo
NetRemoteTOD= windll.NETAPI32.NetRemoteTOD


# End of declares from lmuse.h ================================================


# Network support declares from lmapibuf.h ====================================
#
NetApiBufferAllocate= windll.NETAPI32.NetApiBufferAllocate
NetApiBufferFree= windll.NETAPI32.NetApiBufferFree
NetApiBufferReallocate= windll.NETAPI32.NetApiBufferReallocate
NetApiBufferSize= windll.NETAPI32.NetApiBufferSize

# End of declares from lmapibuf.h =============================================


# Compression function declares from lzexpand.h ===============================
#
LZStart= windll.LZ32.LZStart
LZDone= windll.LZ32.LZDone
CopyLZFile= windll.LZ32.CopyLZFile
LZCopy= windll.LZ32.LZCopy
LZInit= windll.LZ32.LZInit
GetExpandedNameA= windll.LZ32.GetExpandedNameA
LZOpenFileA= windll.LZ32.LZOpenFileA
LZSeek= windll.LZ32.LZSeek
LZRead= windll.LZ32.LZRead
LZClose= windll.LZ32.LZClose

# End of declares from lzexpand.h =============================================


#
# Declares from shellapi.h ====================================================
#
CommandLineToArgvW= windll.SHELL32.CommandLineToArgvW
DoEnvironmentSubstA= windll.SHELL32.DoEnvironmentSubstA
DragAcceptFiles= windll.SHELL32.DragAcceptFiles
DragFinish= windll.SHELL32.DragFinish
DragQueryFileA= windll.SHELL32.DragQueryFileA
DragQueryPoint= windll.SHELL32.DragQueryPoint
DuplicateIcon= windll.SHELL32.DuplicateIcon
FindExecutableA= windll.SHELL32.FindExecutableA
ExtractAssociatedIconA= windll.SHELL32.ExtractAssociatedIconA
ExtractIconA= windll.SHELL32.ExtractIconA
ExtractIconExA= windll.SHELL32.ExtractIconExA
# Microsoft documents the FindEnvironmentString function, but it doesn#t actually exist.
# [!] FindEnvironmentStringA= windll.SHELL32.FindEnvironmentStringA
SHAppBarMessage= windll.SHELL32.SHAppBarMessage
SHEmptyRecycleBinA= windll.SHELL32.SHEmptyRecycleBinA
ShellAboutA= windll.SHELL32.ShellAboutA
ShellExecuteA= windll.SHELL32.ShellExecuteA
ShellExecuteExA= windll.SHELL32.ShellExecuteExA
Shell_NotifyIconA= windll.SHELL32.Shell_NotifyIconA
SHCreateProcessAsUserW= windll.SHELL32.SHCreateProcessAsUserW
# [!] SHEnumerateUnreadMailAccountsA= windll.SHELL32.SHEnumerateUnreadMailAccountsA
SHFileOperationA= windll.SHELL32.SHFileOperationA
SHFreeNameMappings= windll.SHELL32.SHFreeNameMappings
SHGetDiskFreeSpaceA= windll.SHELL32.SHGetDiskFreeSpaceA
SHGetDiskFreeSpaceExA= windll.SHELL32.SHGetDiskFreeSpaceExA
SHGetFileInfoA= windll.SHELL32.SHGetFileInfoA
SHGetImageList= windll.SHELL32.SHGetImageList
SHGetNewLinkInfoA= windll.SHELL32.SHGetNewLinkInfoA
# [!] SHGetUnreadMailCountA= windll.SHELL32.SHGetUnreadMailCountA

SHInvokePrinterCommandA= windll.SHELL32.SHInvokePrinterCommandA
SHQueryRecycleBinA= windll.SHELL32.SHQueryRecycleBinA
# [!] SHSetUnreadMailCountA= windll.SHELL32.SHSetUnreadMailCountA
# [!] WinExecErrorA= windll.SHELL32.WinExecErrorA

# End of declares from shellapi.h =============================================

#
# Declares from shlobj.h ======================================================
#
SHAddToRecentDocs= windll.SHELL32.SHAddToRecentDocs
SHBindToParent= windll.SHELL32.SHBindToParent
SHBrowseForFolderA= windll.SHELL32.SHBrowseForFolderA
SHChangeNotify= windll.SHELL32.SHChangeNotify
SHCreateDirectoryExA= windll.SHELL32.SHCreateDirectoryExA
SHEnableServiceObject= windll.SHELL32.SHEnableServiceObject
SHGetDesktopFolder= windll.SHELL32.SHGetDesktopFolder
SHGetFolderPathA= windll.SHFOLDER.SHGetFolderPathA
# [!] SHGetFolderPathAndSubDirA= windll.SHFOLDER.SHGetFolderPathAndSubDirA
SHGetIconOverlayIndexA= windll.SHELL32.SHGetIconOverlayIndexA
SHGetInstanceExplorer= windll.SHELL32.SHGetInstanceExplorer
SHGetPathFromIDListA= windll.SHELL32.SHGetPathFromIDListA
SHGetSettings= windll.SHELL32.SHGetSettings
SHGetSpecialFolderLocation= windll.SHELL32.SHGetSpecialFolderLocation
SHGetSpecialFolderPathA= windll.SHELL32.SHGetSpecialFolderPathA
SHIsFileAvailableOffline= windll.SHELL32.SHIsFileAvailableOffline
SHLoadInProc= windll.SHELL32.SHLoadInProc
SHLoadNonloadedIconOverlayIdentifiers= windll.SHELL32.SHLoadNonloadedIconOverlayIdentifiers
SHParseDisplayName= windll.SHELL32.SHParseDisplayName
SHOpenFolderAndSelectItems= windll.SHELL32.SHOpenFolderAndSelectItems
SHUpdateImageA= windll.SHELL32.SHUpdateImageA

# End of declares from shlobj.h ===============================================

#

#
SHFormatDrive= windll.SHELL32.SHFormatDrive




#
# Declares from oleauto.h =====================================================
#
SysAllocString= windll.OLEAUT32.SysAllocString
SysReAllocString= windll.OLEAUT32.SysReAllocString
SysAllocStringLen= windll.OLEAUT32.SysAllocStringLen
SysReAllocStringLen= windll.OLEAUT32.SysReAllocStringLen
SysFreeString= windll.OLEAUT32.SysFreeString
SysStringLen= windll.OLEAUT32.SysStringLen

SysStringByteLen= windll.OLEAUT32.SysStringByteLen
SysAllocStringByteLen= windll.OLEAUT32.SysAllocStringByteLen

DosDateTimeToVariantTime= windll.OLEAUT32.DosDateTimeToVariantTime
VarBstrFromDec= windll.OLEAUT32.VarBstrFromDec
VarDateFromStr= windll.OLEAUT32.VarDateFromStr
VarDecFromStr= windll.OLEAUT32.VarDecFromStr
VariantTimeToDosDateTime= windll.OLEAUT32.VariantTimeToDosDateTime
VariantTimeToSystemTime= windll.OLEAUT32.VariantTimeToSystemTime
SystemTimeToVariantTime= windll.OLEAUT32.SystemTimeToVariantTime

# End of declares from oleauto.h ==============================================

#
# Declares from winver.h ======================================================
#
VerFindFileA= windll.VERSION.VerFindFileA
VerInstallFileA= windll.VERSION.VerInstallFileA

GetFileVersionInfoSizeA= windll.VERSION.GetFileVersionInfoSizeA
GetFileVersionInfoA= windll.VERSION.GetFileVersionInfoA
VerQueryValueA= windll.VERSION.VerQueryValueA

# End of declares from winver.h ===============================================

#
# Declares from winnt.h =======================================================
#
RtlMoveMemory= windll.KERNEL32.RtlMoveMemory


# End of declares from winnt.h ================================================

# Declares from objbase.h =====================================================

CoBuildVersion= windll.ole32.CoBuildVersion
CoCreateGuid= windll.ole32.CoCreateGuid
CoCreateInstance= windll.ole32.CoCreateInstance
CoGetCurrentProcess= windll.ole32.CoGetCurrentProcess
CoGetMalloc= windll.ole32.CoGetMalloc
CoInitialize= windll.ole32.CoInitialize
CoInitializeEx= windll.ole32.CoInitializeEx
CoTaskMemAlloc= windll.ole32.CoTaskMemAlloc
CoTaskMemFree= windll.ole32.CoTaskMemFree
CoTaskMemRealloc= windll.ole32.CoTaskMemRealloc
CoUninitialize= windll.ole32.CoUninitialize

# End of declares from objbase.h ==============================================

# Declares from urlmon.h ======================================================

URLDownloadToFileA= windll.urlmon.URLDownloadToFileA

# End of declares from urlmon.h ===============================================


