master
   1/**
   2 * This file is part of the mingw-w64 runtime package.
   3 * No warranty is given; refer to the file DISCLAIMER within this package.
   4 */
   5
   6#ifndef _WINNLS_
   7#define _WINNLS_
   8
   9#include <winapifamily.h>
  10
  11#ifdef __cplusplus
  12extern "C" {
  13#endif
  14
  15#ifndef NOAPISET
  16#include <datetimeapi.h>
  17#include <libloaderapi.h>
  18#endif
  19
  20#ifndef NONLS
  21
  22#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
  23
  24#ifndef _NORMALIZE_
  25#define WINNORMALIZEAPI DECLSPEC_IMPORT
  26#else
  27#define WINNORMALIZEAPI
  28#endif
  29
  30#define MAX_LEADBYTES 12
  31#define MAX_DEFAULTCHAR 2
  32
  33#define HIGH_SURROGATE_START 0xd800
  34#define HIGH_SURROGATE_END 0xdbff
  35#define LOW_SURROGATE_START 0xdc00
  36#define LOW_SURROGATE_END 0xdfff
  37
  38#define MB_PRECOMPOSED 0x00000001
  39#define MB_COMPOSITE 0x00000002
  40#define MB_USEGLYPHCHARS 0x00000004
  41#define MB_ERR_INVALID_CHARS 0x00000008
  42#define WC_DISCARDNS 0x00000010
  43#define WC_SEPCHARS 0x00000020
  44#define WC_DEFAULTCHAR 0x00000040
  45#if WINVER >= 0x0600
  46#define WC_ERR_INVALID_CHARS 0x00000080
  47#endif
  48#define WC_COMPOSITECHECK 0x00000200
  49#define WC_NO_BEST_FIT_CHARS 0x00000400
  50
  51#define CT_CTYPE1 0x00000001
  52#define CT_CTYPE2 0x00000002
  53#define CT_CTYPE3 0x00000004
  54
  55#define C1_UPPER 0x0001
  56#define C1_LOWER 0x0002
  57#define C1_DIGIT 0x0004
  58#define C1_SPACE 0x0008
  59#define C1_PUNCT 0x0010
  60#define C1_CNTRL 0x0020
  61#define C1_BLANK 0x0040
  62#define C1_XDIGIT 0x0080
  63#define C1_ALPHA 0x0100
  64#define C1_DEFINED 0x0200
  65
  66#define C2_LEFTTORIGHT 0x0001
  67#define C2_RIGHTTOLEFT 0x0002
  68#define C2_EUROPENUMBER 0x0003
  69#define C2_EUROPESEPARATOR 0x0004
  70#define C2_EUROPETERMINATOR 0x0005
  71#define C2_ARABICNUMBER 0x0006
  72#define C2_COMMONSEPARATOR 0x0007
  73#define C2_BLOCKSEPARATOR 0x0008
  74#define C2_SEGMENTSEPARATOR 0x0009
  75#define C2_WHITESPACE 0x000a
  76#define C2_OTHERNEUTRAL 0x000b
  77
  78#define C2_NOTAPPLICABLE 0x0000
  79
  80#define C3_NONSPACING 0x0001
  81#define C3_DIACRITIC 0x0002
  82#define C3_VOWELMARK 0x0004
  83#define C3_SYMBOL 0x0008
  84#define C3_KATAKANA 0x0010
  85#define C3_HIRAGANA 0x0020
  86#define C3_HALFWIDTH 0x0040
  87#define C3_FULLWIDTH 0x0080
  88#define C3_IDEOGRAPH 0x0100
  89#define C3_KASHIDA 0x0200
  90#define C3_LEXICAL 0x0400
  91#define C3_HIGHSURROGATE 0x0800
  92#define C3_LOWSURROGATE 0x1000
  93#define C3_ALPHA 0x8000
  94
  95#define C3_NOTAPPLICABLE 0x0000
  96
  97#define NORM_IGNORECASE 0x00000001
  98#define NORM_IGNORENONSPACE 0x00000002
  99#define NORM_IGNORESYMBOLS 0x00000004
 100
 101#define LINGUISTIC_IGNORECASE 0x00000010
 102#define LINGUISTIC_IGNOREDIACRITIC 0x00000020
 103
 104#define NORM_IGNOREKANATYPE 0x00010000
 105#define NORM_IGNOREWIDTH 0x00020000
 106#define NORM_LINGUISTIC_CASING 0x08000000
 107
 108#define MAP_FOLDCZONE 0x00000010
 109#define MAP_PRECOMPOSED 0x00000020
 110#define MAP_COMPOSITE 0x00000040
 111#define MAP_FOLDDIGITS 0x00000080
 112
 113#define MAP_EXPAND_LIGATURES 0x00002000
 114
 115#define LCMAP_LOWERCASE 0x00000100
 116#define LCMAP_UPPERCASE 0x00000200
 117#if WINVER >= 0x0601
 118#define LCMAP_TITLECASE 0x00000300
 119#endif
 120
 121#define LCMAP_SORTKEY 0x00000400
 122#define LCMAP_BYTEREV 0x00000800
 123
 124#define LCMAP_HIRAGANA 0x00100000
 125#define LCMAP_KATAKANA 0x00200000
 126#define LCMAP_HALFWIDTH 0x00400000
 127#define LCMAP_FULLWIDTH 0x00800000
 128
 129#define LCMAP_LINGUISTIC_CASING 0x01000000
 130
 131#define LCMAP_SIMPLIFIED_CHINESE 0x02000000
 132#define LCMAP_TRADITIONAL_CHINESE 0x04000000
 133
 134#if WINVER >= 0x0602
 135#define LCMAP_SORTHANDLE 0x20000000
 136#define LCMAP_HASH 0x00040000
 137#endif
 138
 139#define FIND_STARTSWITH 0x00100000
 140#define FIND_ENDSWITH 0x00200000
 141#define FIND_FROMSTART 0x00400000
 142#define FIND_FROMEND 0x00800000
 143
 144#define LGRPID_INSTALLED 0x00000001
 145#define LGRPID_SUPPORTED 0x00000002
 146
 147#define LCID_INSTALLED 0x00000001
 148#define LCID_SUPPORTED 0x00000002
 149#define LCID_ALTERNATE_SORTS 0x00000004
 150
 151#if WINVER >= 0x0600
 152
 153#define LOCALE_ALL 0
 154#define LOCALE_WINDOWS 0x00000001
 155#define LOCALE_SUPPLEMENTAL 0x00000002
 156#define LOCALE_ALTERNATE_SORTS 0x00000004
 157#define LOCALE_REPLACEMENT 0x00000008
 158#endif
 159#if WINVER >= 0x0601
 160#define LOCALE_NEUTRALDATA 0x00000010
 161#define LOCALE_SPECIFICDATA 0x00000020
 162#endif
 163
 164#define CP_INSTALLED 0x00000001
 165#define CP_SUPPORTED 0x00000002
 166
 167#define SORT_STRINGSORT 0x00001000
 168
 169#if WINVER >= 0x0601
 170#define SORT_DIGITSASNUMBERS 0x00000008
 171#endif
 172
 173#define CSTR_LESS_THAN 1
 174#define CSTR_EQUAL 2
 175#define CSTR_GREATER_THAN 3
 176
 177#define CP_ACP 0
 178#define CP_OEMCP 1
 179#define CP_MACCP 2
 180#define CP_THREAD_ACP 3
 181#define CP_SYMBOL 42
 182
 183#define CP_UTF7 65000
 184#define CP_UTF8 65001
 185
 186#define CTRY_DEFAULT 0
 187
 188#define CTRY_ALBANIA 355
 189#define CTRY_ALGERIA 213
 190#define CTRY_ARGENTINA 54
 191#define CTRY_ARMENIA 374
 192#define CTRY_AUSTRALIA 61
 193#define CTRY_AUSTRIA 43
 194#define CTRY_AZERBAIJAN 994
 195#define CTRY_BAHRAIN 973
 196#define CTRY_BELARUS 375
 197#define CTRY_BELGIUM 32
 198#define CTRY_BELIZE 501
 199#define CTRY_BOLIVIA 591
 200#define CTRY_BRAZIL 55
 201#define CTRY_BRUNEI_DARUSSALAM 673
 202#define CTRY_BULGARIA 359
 203#define CTRY_CANADA 2
 204#define CTRY_CARIBBEAN 1
 205#define CTRY_CHILE 56
 206#define CTRY_COLOMBIA 57
 207#define CTRY_COSTA_RICA 506
 208#define CTRY_CROATIA 385
 209#define CTRY_CZECH 420
 210#define CTRY_DENMARK 45
 211#define CTRY_DOMINICAN_REPUBLIC 1
 212#define CTRY_ECUADOR 593
 213#define CTRY_EGYPT 20
 214#define CTRY_EL_SALVADOR 503
 215#define CTRY_ESTONIA 372
 216#define CTRY_FAEROE_ISLANDS 298
 217#define CTRY_FINLAND 358
 218#define CTRY_FRANCE 33
 219#define CTRY_GEORGIA 995
 220#define CTRY_GERMANY 49
 221#define CTRY_GREECE 30
 222#define CTRY_GUATEMALA 502
 223#define CTRY_HONDURAS 504
 224#define CTRY_HONG_KONG 852
 225#define CTRY_HUNGARY 36
 226#define CTRY_ICELAND 354
 227#define CTRY_INDIA 91
 228#define CTRY_INDONESIA 62
 229#define CTRY_IRAN 981
 230#define CTRY_IRAQ 964
 231#define CTRY_IRELAND 353
 232#define CTRY_ISRAEL 972
 233#define CTRY_ITALY 39
 234#define CTRY_JAMAICA 1
 235#define CTRY_JAPAN 81
 236#define CTRY_JORDAN 962
 237#define CTRY_KAZAKSTAN 7
 238#define CTRY_KENYA 254
 239#define CTRY_KUWAIT 965
 240#define CTRY_KYRGYZSTAN 996
 241#define CTRY_LATVIA 371
 242#define CTRY_LEBANON 961
 243#define CTRY_LIBYA 218
 244#define CTRY_LIECHTENSTEIN 41
 245#define CTRY_LITHUANIA 370
 246#define CTRY_LUXEMBOURG 352
 247#define CTRY_MACAU 853
 248#define CTRY_MACEDONIA 389
 249#define CTRY_MALAYSIA 60
 250#define CTRY_MALDIVES 960
 251#define CTRY_MEXICO 52
 252#define CTRY_MONACO 33
 253#define CTRY_MONGOLIA 976
 254#define CTRY_MOROCCO 212
 255#define CTRY_NETHERLANDS 31
 256#define CTRY_NEW_ZEALAND 64
 257#define CTRY_NICARAGUA 505
 258#define CTRY_NORWAY 47
 259#define CTRY_OMAN 968
 260#define CTRY_PAKISTAN 92
 261#define CTRY_PANAMA 507
 262#define CTRY_PARAGUAY 595
 263#define CTRY_PERU 51
 264#define CTRY_PHILIPPINES 63
 265#define CTRY_POLAND 48
 266#define CTRY_PORTUGAL 351
 267#define CTRY_PRCHINA 86
 268#define CTRY_PUERTO_RICO 1
 269#define CTRY_QATAR 974
 270#define CTRY_ROMANIA 40
 271#define CTRY_RUSSIA 7
 272#define CTRY_SAUDI_ARABIA 966
 273#define CTRY_SERBIA 381
 274#define CTRY_SINGAPORE 65
 275#define CTRY_SLOVAK 421
 276#define CTRY_SLOVENIA 386
 277#define CTRY_SOUTH_AFRICA 27
 278#define CTRY_SOUTH_KOREA 82
 279#define CTRY_SPAIN 34
 280#define CTRY_SWEDEN 46
 281#define CTRY_SWITZERLAND 41
 282#define CTRY_SYRIA 963
 283#define CTRY_TAIWAN 886
 284#define CTRY_TATARSTAN 7
 285#define CTRY_THAILAND 66
 286#define CTRY_TRINIDAD_Y_TOBAGO 1
 287#define CTRY_TUNISIA 216
 288#define CTRY_TURKEY 90
 289#define CTRY_UAE 971
 290#define CTRY_UKRAINE 380
 291#define CTRY_UNITED_KINGDOM 44
 292#define CTRY_UNITED_STATES 1
 293#define CTRY_URUGUAY 598
 294#define CTRY_UZBEKISTAN 7
 295#define CTRY_VENEZUELA 58
 296#define CTRY_VIET_NAM 84
 297#define CTRY_YEMEN 967
 298#define CTRY_ZIMBABWE 263
 299
 300#define LOCALE_SLOCALIZEDDISPLAYNAME 0x00000002
 301#if WINVER >= 0x0601
 302#define LOCALE_ALLOW_NEUTRAL_NAMES 0x08000000
 303#define LOCALE_RETURN_GENITIVE_NAMES 0x10000000
 304#endif
 305#define LOCALE_RETURN_NUMBER 0x20000000
 306#define LOCALE_USE_CP_ACP 0x40000000
 307#define LOCALE_NOUSEROVERRIDE 0x80000000
 308
 309#if WINVER >= 0x0601
 310#define LOCALE_SENGLISHDISPLAYNAME 0x00000072
 311#define LOCALE_SNATIVEDISPLAYNAME 0x00000073
 312#endif
 313
 314#if WINVER >= 0x0600
 315#define LOCALE_SLOCALIZEDLANGUAGENAME 0x0000006f
 316#endif
 317
 318#define LOCALE_SENGLISHLANGUAGENAME 0x00001001
 319#define LOCALE_SNATIVELANGUAGENAME 0x00000004
 320
 321#define LOCALE_SLOCALIZEDCOUNTRYNAME 0x00000006
 322#define LOCALE_SENGLISHCOUNTRYNAME 0x00001002
 323#define LOCALE_SNATIVECOUNTRYNAME 0x00000008
 324
 325#define LOCALE_SLANGUAGE 0x00000002
 326#if WINVER >= 0x0600
 327#define LOCALE_SLANGDISPLAYNAME 0x0000006f
 328#endif
 329#define LOCALE_SENGLANGUAGE 0x00001001
 330#define LOCALE_SNATIVELANGNAME 0x00000004
 331#define LOCALE_SCOUNTRY 0x00000006
 332#define LOCALE_SENGCOUNTRY 0x00001002
 333#define LOCALE_SNATIVECTRYNAME 0x00000008
 334
 335#define LOCALE_ILANGUAGE 0x00000001
 336
 337#define LOCALE_SABBREVLANGNAME 0x00000003
 338
 339#define LOCALE_ICOUNTRY 0x00000005
 340#define LOCALE_SABBREVCTRYNAME 0x00000007
 341#define LOCALE_IGEOID 0x0000005b
 342
 343#define LOCALE_IDEFAULTLANGUAGE 0x00000009
 344#define LOCALE_IDEFAULTCOUNTRY 0x0000000a
 345#define LOCALE_IDEFAULTCODEPAGE 0x0000000b
 346#define LOCALE_IDEFAULTANSICODEPAGE 0x00001004
 347#define LOCALE_IDEFAULTMACCODEPAGE 0x00001011
 348
 349#define LOCALE_IDIALINGCODE 0x00000005
 350
 351#define LOCALE_SLIST 0x0000000c
 352#define LOCALE_IMEASURE 0x0000000d
 353
 354#define LOCALE_SDECIMAL 0x0000000e
 355#define LOCALE_STHOUSAND 0x0000000f
 356#define LOCALE_SGROUPING 0x00000010
 357#define LOCALE_IDIGITS 0x00000011
 358#define LOCALE_ILZERO 0x00000012
 359#define LOCALE_INEGNUMBER 0x00001010
 360#define LOCALE_SNATIVEDIGITS 0x00000013
 361
 362#define LOCALE_SCURRENCY 0x00000014
 363#define LOCALE_SINTLSYMBOL 0x00000015
 364#define LOCALE_SMONDECIMALSEP 0x00000016
 365#define LOCALE_SMONTHOUSANDSEP 0x00000017
 366#define LOCALE_SMONGROUPING 0x00000018
 367#define LOCALE_ICURRDIGITS 0x00000019
 368#define LOCALE_IINTLCURRDIGITS 0x0000001a
 369#define LOCALE_ICURRENCY 0x0000001b
 370#define LOCALE_INEGCURR 0x0000001c
 371
 372#define LOCALE_SDATE 0x0000001d
 373#define LOCALE_STIME 0x0000001e
 374#define LOCALE_SSHORTDATE 0x0000001f
 375#define LOCALE_SLONGDATE 0x00000020
 376#define LOCALE_STIMEFORMAT 0x00001003
 377#define LOCALE_SAM 0x00000028
 378#define LOCALE_SPM 0x00000029
 379#define LOCALE_IDATE 0x00000021
 380#define LOCALE_ILDATE 0x00000022
 381#define LOCALE_ITIME 0x00000023
 382#define LOCALE_ITIMEMARKPOSN 0x00001005
 383#define LOCALE_ICENTURY 0x00000024
 384#define LOCALE_ITLZERO 0x00000025
 385#define LOCALE_IDAYLZERO 0x00000026
 386#define LOCALE_IMONLZERO 0x00000027
 387#define LOCALE_S1159 0x00000028
 388#define LOCALE_S2359 0x00000029
 389
 390#define LOCALE_ICALENDARTYPE 0x00001009
 391#define LOCALE_IOPTIONALCALENDAR 0x0000100b
 392#define LOCALE_IFIRSTDAYOFWEEK 0x0000100c
 393#define LOCALE_IFIRSTWEEKOFYEAR 0x0000100d
 394
 395#define LOCALE_SDAYNAME1 0x0000002a
 396#define LOCALE_SDAYNAME2 0x0000002b
 397#define LOCALE_SDAYNAME3 0x0000002c
 398#define LOCALE_SDAYNAME4 0x0000002d
 399#define LOCALE_SDAYNAME5 0x0000002e
 400#define LOCALE_SDAYNAME6 0x0000002f
 401#define LOCALE_SDAYNAME7 0x00000030
 402#define LOCALE_SABBREVDAYNAME1 0x00000031
 403#define LOCALE_SABBREVDAYNAME2 0x00000032
 404#define LOCALE_SABBREVDAYNAME3 0x00000033
 405#define LOCALE_SABBREVDAYNAME4 0x00000034
 406#define LOCALE_SABBREVDAYNAME5 0x00000035
 407#define LOCALE_SABBREVDAYNAME6 0x00000036
 408#define LOCALE_SABBREVDAYNAME7 0x00000037
 409#define LOCALE_SMONTHNAME1 0x00000038
 410#define LOCALE_SMONTHNAME2 0x00000039
 411#define LOCALE_SMONTHNAME3 0x0000003a
 412#define LOCALE_SMONTHNAME4 0x0000003b
 413#define LOCALE_SMONTHNAME5 0x0000003c
 414#define LOCALE_SMONTHNAME6 0x0000003d
 415#define LOCALE_SMONTHNAME7 0x0000003e
 416#define LOCALE_SMONTHNAME8 0x0000003f
 417#define LOCALE_SMONTHNAME9 0x00000040
 418#define LOCALE_SMONTHNAME10 0x00000041
 419#define LOCALE_SMONTHNAME11 0x00000042
 420#define LOCALE_SMONTHNAME12 0x00000043
 421#define LOCALE_SMONTHNAME13 0x0000100e
 422#define LOCALE_SABBREVMONTHNAME1 0x00000044
 423#define LOCALE_SABBREVMONTHNAME2 0x00000045
 424#define LOCALE_SABBREVMONTHNAME3 0x00000046
 425#define LOCALE_SABBREVMONTHNAME4 0x00000047
 426#define LOCALE_SABBREVMONTHNAME5 0x00000048
 427#define LOCALE_SABBREVMONTHNAME6 0x00000049
 428#define LOCALE_SABBREVMONTHNAME7 0x0000004a
 429#define LOCALE_SABBREVMONTHNAME8 0x0000004b
 430#define LOCALE_SABBREVMONTHNAME9 0x0000004c
 431#define LOCALE_SABBREVMONTHNAME10 0x0000004d
 432#define LOCALE_SABBREVMONTHNAME11 0x0000004e
 433#define LOCALE_SABBREVMONTHNAME12 0x0000004f
 434#define LOCALE_SABBREVMONTHNAME13 0x0000100f
 435
 436#define LOCALE_SPOSITIVESIGN 0x00000050
 437#define LOCALE_SNEGATIVESIGN 0x00000051
 438#define LOCALE_IPOSSIGNPOSN 0x00000052
 439#define LOCALE_INEGSIGNPOSN 0x00000053
 440#define LOCALE_IPOSSYMPRECEDES 0x00000054
 441#define LOCALE_IPOSSEPBYSPACE 0x00000055
 442#define LOCALE_INEGSYMPRECEDES 0x00000056
 443#define LOCALE_INEGSEPBYSPACE 0x00000057
 444
 445#define LOCALE_FONTSIGNATURE 0x00000058
 446#define LOCALE_SISO639LANGNAME 0x00000059
 447#define LOCALE_SISO3166CTRYNAME 0x0000005a
 448
 449#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x00001012
 450#define LOCALE_IPAPERSIZE 0x0000100a
 451#define LOCALE_SENGCURRNAME 0x00001007
 452#define LOCALE_SNATIVECURRNAME 0x00001008
 453#define LOCALE_SYEARMONTH 0x00001006
 454#define LOCALE_SSORTNAME 0x00001013
 455#define LOCALE_IDIGITSUBSTITUTION 0x00001014
 456
 457#if WINVER >= 0x0600
 458#define LOCALE_SNAME 0x0000005c
 459#define LOCALE_SDURATION 0x0000005d
 460#define LOCALE_SKEYBOARDSTOINSTALL 0x0000005e
 461#define LOCALE_SSHORTESTDAYNAME1 0x00000060
 462#define LOCALE_SSHORTESTDAYNAME2 0x00000061
 463#define LOCALE_SSHORTESTDAYNAME3 0x00000062
 464#define LOCALE_SSHORTESTDAYNAME4 0x00000063
 465#define LOCALE_SSHORTESTDAYNAME5 0x00000064
 466#define LOCALE_SSHORTESTDAYNAME6 0x00000065
 467#define LOCALE_SSHORTESTDAYNAME7 0x00000066
 468#define LOCALE_SISO639LANGNAME2 0x00000067
 469#define LOCALE_SISO3166CTRYNAME2 0x00000068
 470#define LOCALE_SNAN 0x00000069
 471#define LOCALE_SPOSINFINITY 0x0000006a
 472#define LOCALE_SNEGINFINITY 0x0000006b
 473#define LOCALE_SSCRIPTS 0x0000006c
 474#define LOCALE_SPARENT 0x0000006d
 475#define LOCALE_SCONSOLEFALLBACKNAME 0x0000006e
 476#endif
 477
 478#if WINVER >= 0x0601
 479#define LOCALE_IREADINGLAYOUT 0x00000070
 480
 481#define LOCALE_INEUTRAL 0x00000071
 482#define LOCALE_INEGATIVEPERCENT 0x00000074
 483#define LOCALE_IPOSITIVEPERCENT 0x00000075
 484#define LOCALE_SPERCENT 0x00000076
 485#define LOCALE_SPERMILLE 0x00000077
 486#define LOCALE_SMONTHDAY 0x00000078
 487#define LOCALE_SSHORTTIME 0x00000079
 488#define LOCALE_SOPENTYPELANGUAGETAG 0x0000007a
 489#define LOCALE_SSORTLOCALE 0x0000007b
 490#endif
 491
 492#if WINVER >= _WIN32_WINNT_WIN8
 493#define LOCALE_SRELATIVELONGDATE 0x0000007c
 494#endif
 495
 496#if WINVER >= _WIN32_WINNT_WIN10
 497#define LOCALE_SSHORTESTAM 0x0000007e
 498#define LOCALE_SSHORTESTPM 0x0000007f
 499#endif
 500
 501#define TIME_NOMINUTESORSECONDS 0x00000001
 502#define TIME_NOSECONDS 0x00000002
 503#define TIME_NOTIMEMARKER 0x00000004
 504#define TIME_FORCE24HOURFORMAT 0x00000008
 505
 506#define DATE_SHORTDATE 0x00000001
 507#define DATE_LONGDATE 0x00000002
 508#define DATE_USE_ALT_CALENDAR 0x00000004
 509
 510#define DATE_YEARMONTH 0x00000008
 511#define DATE_LTRREADING 0x00000010
 512#define DATE_RTLREADING 0x00000020
 513#if WINVER >= 0x0601
 514#define DATE_AUTOLAYOUT 0x00000040
 515#endif
 516#if WINVER >= _WIN32_WINNT_WINTHRESHOLD
 517#define DATE_MONTHDAY 0x00000080
 518#endif
 519
 520#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
 521#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
 522#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
 523#if WINVER >= 0x0601
 524#define CAL_RETURN_GENITIVE_NAMES LOCALE_RETURN_GENITIVE_NAMES
 525#endif
 526
 527#define CAL_ICALINTVALUE 0x00000001
 528#define CAL_SCALNAME 0x00000002
 529#define CAL_IYEAROFFSETRANGE 0x00000003
 530#define CAL_SERASTRING 0x00000004
 531#define CAL_SSHORTDATE 0x00000005
 532#define CAL_SLONGDATE 0x00000006
 533#define CAL_SDAYNAME1 0x00000007
 534#define CAL_SDAYNAME2 0x00000008
 535#define CAL_SDAYNAME3 0x00000009
 536#define CAL_SDAYNAME4 0x0000000a
 537#define CAL_SDAYNAME5 0x0000000b
 538#define CAL_SDAYNAME6 0x0000000c
 539#define CAL_SDAYNAME7 0x0000000d
 540#define CAL_SABBREVDAYNAME1 0x0000000e
 541#define CAL_SABBREVDAYNAME2 0x0000000f
 542#define CAL_SABBREVDAYNAME3 0x00000010
 543#define CAL_SABBREVDAYNAME4 0x00000011
 544#define CAL_SABBREVDAYNAME5 0x00000012
 545#define CAL_SABBREVDAYNAME6 0x00000013
 546#define CAL_SABBREVDAYNAME7 0x00000014
 547
 548#define CAL_SMONTHNAME1 0x00000015
 549#define CAL_SMONTHNAME2 0x00000016
 550#define CAL_SMONTHNAME3 0x00000017
 551#define CAL_SMONTHNAME4 0x00000018
 552#define CAL_SMONTHNAME5 0x00000019
 553#define CAL_SMONTHNAME6 0x0000001a
 554#define CAL_SMONTHNAME7 0x0000001b
 555#define CAL_SMONTHNAME8 0x0000001c
 556#define CAL_SMONTHNAME9 0x0000001d
 557#define CAL_SMONTHNAME10 0x0000001e
 558#define CAL_SMONTHNAME11 0x0000001f
 559#define CAL_SMONTHNAME12 0x00000020
 560#define CAL_SMONTHNAME13 0x00000021
 561#define CAL_SABBREVMONTHNAME1 0x00000022
 562#define CAL_SABBREVMONTHNAME2 0x00000023
 563#define CAL_SABBREVMONTHNAME3 0x00000024
 564#define CAL_SABBREVMONTHNAME4 0x00000025
 565#define CAL_SABBREVMONTHNAME5 0x00000026
 566#define CAL_SABBREVMONTHNAME6 0x00000027
 567#define CAL_SABBREVMONTHNAME7 0x00000028
 568#define CAL_SABBREVMONTHNAME8 0x00000029
 569#define CAL_SABBREVMONTHNAME9 0x0000002a
 570#define CAL_SABBREVMONTHNAME10 0x0000002b
 571#define CAL_SABBREVMONTHNAME11 0x0000002c
 572#define CAL_SABBREVMONTHNAME12 0x0000002d
 573#define CAL_SABBREVMONTHNAME13 0x0000002e
 574#define CAL_SYEARMONTH 0x0000002f
 575#define CAL_ITWODIGITYEARMAX 0x00000030
 576#if WINVER >= 0x0600
 577#define CAL_SSHORTESTDAYNAME1 0x00000031
 578#define CAL_SSHORTESTDAYNAME2 0x00000032
 579#define CAL_SSHORTESTDAYNAME3 0x00000033
 580#define CAL_SSHORTESTDAYNAME4 0x00000034
 581#define CAL_SSHORTESTDAYNAME5 0x00000035
 582#define CAL_SSHORTESTDAYNAME6 0x00000036
 583#define CAL_SSHORTESTDAYNAME7 0x00000037
 584#endif
 585#if WINVER >= 0x0601
 586#define CAL_SMONTHDAY 0x00000038
 587#define CAL_SABBREVERASTRING 0x00000039
 588#endif
 589#if WINVER >= _WIN32_WINNT_WIN8
 590#define CAL_SRELATIVELONGDATE 0x0000003a
 591#endif
 592#if NTDDI_VERSION >= NTDDI_WIN10_RS2
 593#define CAL_SENGLISHERANAME 0x0000003b
 594#define CAL_SENGLISHABBREVERANAME 0x0000003c
 595#endif
 596#define CAL_SJAPANESEERAFIRSTYEAR 0x0000003d
 597
 598#define ENUM_ALL_CALENDARS 0xffffffff
 599
 600#define CAL_GREGORIAN 1
 601#define CAL_GREGORIAN_US 2
 602#define CAL_JAPAN 3
 603#define CAL_TAIWAN 4
 604#define CAL_KOREA 5
 605#define CAL_HIJRI 6
 606#define CAL_THAI 7
 607#define CAL_HEBREW 8
 608#define CAL_GREGORIAN_ME_FRENCH 9
 609#define CAL_GREGORIAN_ARABIC 10
 610#define CAL_GREGORIAN_XLIT_ENGLISH 11
 611#define CAL_GREGORIAN_XLIT_FRENCH 12
 612#define CAL_UMALQURA 23
 613
 614#define LGRPID_WESTERN_EUROPE 0x0001
 615#define LGRPID_CENTRAL_EUROPE 0x0002
 616#define LGRPID_BALTIC 0x0003
 617#define LGRPID_GREEK 0x0004
 618#define LGRPID_CYRILLIC 0x0005
 619#define LGRPID_TURKIC 0x0006
 620#define LGRPID_TURKISH 0x0006
 621#define LGRPID_JAPANESE 0x0007
 622#define LGRPID_KOREAN 0x0008
 623#define LGRPID_TRADITIONAL_CHINESE 0x0009
 624#define LGRPID_SIMPLIFIED_CHINESE 0x000a
 625#define LGRPID_THAI 0x000b
 626#define LGRPID_HEBREW 0x000c
 627#define LGRPID_ARABIC 0x000d
 628#define LGRPID_VIETNAMESE 0x000e
 629#define LGRPID_INDIC 0x000f
 630#define LGRPID_GEORGIAN 0x0010
 631#define LGRPID_ARMENIAN 0x0011
 632
 633#if WINVER >= 0x0600
 634
 635#define MUI_LANGUAGE_ID 0x4
 636#define MUI_LANGUAGE_NAME 0x8
 637#define MUI_MERGE_SYSTEM_FALLBACK 0x10
 638#define MUI_MERGE_USER_FALLBACK 0x20
 639#define MUI_UI_FALLBACK MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK
 640#define MUI_THREAD_LANGUAGES 0x40
 641#define MUI_CONSOLE_FILTER 0x100
 642#define MUI_COMPLEX_SCRIPT_FILTER 0x200
 643#define MUI_RESET_FILTERS 0x001
 644#define MUI_USER_PREFERRED_UI_LANGUAGES 0x10
 645#define MUI_USE_INSTALLED_LANGUAGES 0x20
 646#define MUI_USE_SEARCH_ALL_LANGUAGES 0x40
 647#define MUI_LANG_NEUTRAL_PE_FILE 0x100
 648#define MUI_NON_LANG_NEUTRAL_FILE 0x200
 649#define MUI_MACHINE_LANGUAGE_SETTINGS 0x400
 650#define MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL 0x001
 651#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN 0x002
 652#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI 0x004
 653#define MUI_QUERY_TYPE 0x001
 654#define MUI_QUERY_CHECKSUM 0x002
 655#define MUI_QUERY_LANGUAGE_NAME 0x004
 656#define MUI_QUERY_RESOURCE_TYPES 0x008
 657#define MUI_FILEINFO_VERSION 0x001
 658
 659#define MUI_FULL_LANGUAGE 0x01
 660#define MUI_PARTIAL_LANGUAGE 0x02
 661#define MUI_LIP_LANGUAGE 0x04
 662#define MUI_LANGUAGE_INSTALLED 0x20
 663#define MUI_LANGUAGE_LICENSED 0x40
 664
 665#define MUI_CALLBACK_ALL_FLAGS MUI_CALLBACK_FLAG_UPGRADED_INSTALLATION
 666#endif
 667
 668  typedef DWORD LGRPID;
 669  typedef DWORD LCTYPE;
 670  typedef DWORD CALTYPE;
 671  typedef DWORD CALID;
 672
 673  typedef struct _cpinfo {
 674    UINT MaxCharSize;
 675    BYTE DefaultChar[MAX_DEFAULTCHAR];
 676    BYTE LeadByte[MAX_LEADBYTES];
 677  } CPINFO,*LPCPINFO;
 678  typedef struct _cpinfoexA {
 679    UINT MaxCharSize;
 680    BYTE DefaultChar[MAX_DEFAULTCHAR];
 681    BYTE LeadByte[MAX_LEADBYTES];
 682    WCHAR UnicodeDefaultChar;
 683    UINT CodePage;
 684    CHAR CodePageName[MAX_PATH];
 685  } CPINFOEXA,*LPCPINFOEXA;
 686
 687  typedef struct _cpinfoexW {
 688    UINT MaxCharSize;
 689    BYTE DefaultChar[MAX_DEFAULTCHAR];
 690    BYTE LeadByte[MAX_LEADBYTES];
 691    WCHAR UnicodeDefaultChar;
 692    UINT CodePage;
 693    WCHAR CodePageName[MAX_PATH];
 694  } CPINFOEXW,*LPCPINFOEXW;
 695
 696  __MINGW_TYPEDEF_AW(CPINFOEX)
 697  __MINGW_TYPEDEF_AW(LPCPINFOEX)
 698
 699  typedef struct _numberfmtA {
 700    UINT NumDigits;
 701    UINT LeadingZero;
 702    UINT Grouping;
 703    LPSTR lpDecimalSep;
 704    LPSTR lpThousandSep;
 705    UINT NegativeOrder;
 706  } NUMBERFMTA,*LPNUMBERFMTA;
 707  typedef struct _numberfmtW {
 708    UINT NumDigits;
 709    UINT LeadingZero;
 710    UINT Grouping;
 711    LPWSTR lpDecimalSep;
 712    LPWSTR lpThousandSep;
 713    UINT NegativeOrder;
 714  } NUMBERFMTW,*LPNUMBERFMTW;
 715
 716  __MINGW_TYPEDEF_AW(NUMBERFMT)
 717  __MINGW_TYPEDEF_AW(LPNUMBERFMT)
 718
 719  typedef struct _currencyfmtA {
 720    UINT NumDigits;
 721    UINT LeadingZero;
 722    UINT Grouping;
 723    LPSTR lpDecimalSep;
 724    LPSTR lpThousandSep;
 725    UINT NegativeOrder;
 726    UINT PositiveOrder;
 727    LPSTR lpCurrencySymbol;
 728  } CURRENCYFMTA,*LPCURRENCYFMTA;
 729
 730  typedef struct _currencyfmtW {
 731    UINT NumDigits;
 732    UINT LeadingZero;
 733    UINT Grouping;
 734    LPWSTR lpDecimalSep;
 735    LPWSTR lpThousandSep;
 736    UINT NegativeOrder;
 737    UINT PositiveOrder;
 738    LPWSTR lpCurrencySymbol;
 739  } CURRENCYFMTW,*LPCURRENCYFMTW;
 740
 741  __MINGW_TYPEDEF_AW(CURRENCYFMT)
 742  __MINGW_TYPEDEF_AW(LPCURRENCYFMT)
 743
 744  enum SYSNLS_FUNCTION {
 745    COMPARE_STRING = 0x1
 746  };
 747
 748  typedef DWORD NLS_FUNCTION;
 749
 750#if WINVER >= 0x0602
 751  typedef struct _nlsversioninfo {
 752    DWORD dwNLSVersionInfoSize;
 753    DWORD dwNLSVersion;
 754    DWORD dwDefinedVersion;
 755    DWORD dwEffectiveId;
 756    GUID guidCustomVersion;
 757  } NLSVERSIONINFO,*LPNLSVERSIONINFO;
 758#else
 759  typedef struct _nlsversioninfo {
 760    DWORD dwNLSVersionInfoSize;
 761    DWORD dwNLSVersion;
 762    DWORD dwDefinedVersion;
 763  } NLSVERSIONINFO,*LPNLSVERSIONINFO;
 764#endif
 765
 766  typedef struct _nlsversioninfoex {
 767    DWORD dwNLSVersionInfoSize;
 768    DWORD dwNLSVersion;
 769    DWORD dwDefinedVersion;
 770    DWORD dwEffectiveId;
 771    GUID guidCustomVersion;
 772  } NLSVERSIONINFOEX,*LPNLSVERSIONINFOEX;
 773
 774  typedef LONG GEOID;
 775  typedef DWORD GEOTYPE;
 776  typedef DWORD GEOCLASS;
 777
 778#define GEOID_NOT_AVAILABLE -1
 779
 780  enum SYSGEOTYPE {
 781    GEO_NATION = 0x0001,
 782    GEO_LATITUDE = 0x0002,
 783    GEO_LONGITUDE = 0x0003,
 784    GEO_ISO2 = 0x0004,
 785    GEO_ISO3 = 0x0005,
 786    GEO_RFC1766 = 0x0006,
 787    GEO_LCID = 0x0007,
 788    GEO_FRIENDLYNAME= 0x0008,
 789    GEO_OFFICIALNAME= 0x0009,
 790    GEO_TIMEZONES = 0x000a,
 791    GEO_OFFICIALLANGUAGES = 0x000b,
 792    GEO_ISO_UN_NUMBER = 0x000c,
 793    GEO_PARENT = 0x000d,
 794    GEO_DIALINGCODE = 0x000e,
 795    GEO_CURRENCYCODE= 0x000f,
 796    GEO_CURRENCYSYMBOL= 0x0010,
 797#if NTDDI_VERSION >= NTDDI_WIN10_RS3
 798    GEO_NAME = 0x0011,
 799    GEO_ID = 0x0012
 800#endif
 801  };
 802
 803  enum SYSGEOCLASS {
 804    GEOCLASS_NATION = 16,
 805    GEOCLASS_REGION = 14,
 806    GEOCLASS_ALL = 0
 807  };
 808
 809#if WINVER >= 0x0600
 810  typedef enum _NORM_FORM {
 811    NormalizationOther = 0,
 812    NormalizationC = 0x1,
 813    NormalizationD = 0x2,
 814    NormalizationKC = 0x5,
 815    NormalizationKD = 0x6
 816  } NORM_FORM;
 817
 818#define IDN_ALLOW_UNASSIGNED 0x01
 819#define IDN_USE_STD3_ASCII_RULES 0x02
 820#define IDN_EMAIL_ADDRESS 0x04
 821#define IDN_RAW_PUNYCODE 0x08
 822
 823#define VS_ALLOW_LATIN 0x0001
 824
 825#define GSS_ALLOW_INHERITED_COMMON 0x0001
 826#endif
 827
 828#ifdef STRICT
 829  typedef WINBOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCA) (LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
 830  typedef WINBOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCA) (LGRPID, LCID, LPSTR, LONG_PTR);
 831  typedef WINBOOL (CALLBACK *UILANGUAGE_ENUMPROCA) (LPSTR, LONG_PTR);
 832  typedef WINBOOL (CALLBACK *CODEPAGE_ENUMPROCA) (LPSTR);
 833  typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCA) (LPSTR);
 834  typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXA) (LPSTR, CALID);
 835  typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCA) (LPSTR);
 836  typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCA) (LPSTR);
 837  typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXA) (LPSTR, CALID);
 838  typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCA) (LPSTR);
 839  typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCW) (LPWSTR);
 840  typedef WINBOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCW) (LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
 841  typedef WINBOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCW) (LGRPID, LCID, LPWSTR, LONG_PTR);
 842  typedef WINBOOL (CALLBACK *UILANGUAGE_ENUMPROCW) (LPWSTR, LONG_PTR);
 843  typedef WINBOOL (CALLBACK *CODEPAGE_ENUMPROCW) (LPWSTR);
 844  typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCW) (LPWSTR);
 845  typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXW) (LPWSTR, CALID);
 846  typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCW) (LPWSTR);
 847  typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCW) (LPWSTR);
 848  typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXW) (LPWSTR, CALID);
 849  typedef WINBOOL (CALLBACK *GEO_ENUMPROC) (GEOID);
 850  #if NTDDI_VERSION >= NTDDI_WIN10_RS3
 851  typedef WINBOOL (CALLBACK *GEO_ENUMNAMEPROC) (PWSTR, LPARAM);
 852  #endif
 853#else
 854  typedef FARPROC LANGUAGEGROUP_ENUMPROCA;
 855  typedef FARPROC LANGGROUPLOCALE_ENUMPROCA;
 856  typedef FARPROC UILANGUAGE_ENUMPROCA;
 857  typedef FARPROC CODEPAGE_ENUMPROCA;
 858  typedef FARPROC DATEFMT_ENUMPROCA;
 859  typedef FARPROC DATEFMT_ENUMPROCEXA;
 860  typedef FARPROC TIMEFMT_ENUMPROCA;
 861  typedef FARPROC CALINFO_ENUMPROCA;
 862  typedef FARPROC CALINFO_ENUMPROCEXA;
 863  typedef FARPROC GEO_ENUMPROC;
 864  typedef FARPROC LOCALE_ENUMPROCA;
 865  typedef FARPROC LOCALE_ENUMPROCW;
 866  typedef FARPROC LANGUAGEGROUP_ENUMPROCW;
 867  typedef FARPROC LANGGROUPLOCALE_ENUMPROCW;
 868  typedef FARPROC UILANGUAGE_ENUMPROCW;
 869  typedef FARPROC CODEPAGE_ENUMPROCW;
 870  typedef FARPROC DATEFMT_ENUMPROCW;
 871  typedef FARPROC DATEFMT_ENUMPROCEXW;
 872  typedef FARPROC TIMEFMT_ENUMPROCW;
 873  typedef FARPROC CALINFO_ENUMPROCW;
 874  typedef FARPROC CALINFO_ENUMPROCEXW;
 875  #if NTDDI_VERSION >= NTDDI_WIN10_RS3
 876  typedef FARPROC GEO_ENUMNAMEPROC;
 877  #endif
 878#endif
 879
 880#ifdef UNICODE
 881
 882#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
 883#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
 884#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
 885#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
 886#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
 887#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
 888#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
 889#define CALINFO_ENUMPROC CALINFO_ENUMPROCW
 890#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
 891#define LOCALE_ENUMPROC LOCALE_ENUMPROCW
 892#else
 893
 894#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
 895#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
 896#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
 897#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
 898#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
 899#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
 900#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
 901#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
 902#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
 903#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
 904#endif
 905
 906  typedef struct _FILEMUIINFO {
 907    DWORD dwSize;
 908    DWORD dwVersion;
 909    DWORD dwFileType;
 910    BYTE pChecksum[16];
 911    BYTE pServiceChecksum[16];
 912    DWORD dwLanguageNameOffset;
 913    DWORD dwTypeIDMainSize;
 914    DWORD dwTypeIDMainOffset;
 915    DWORD dwTypeNameMainOffset;
 916    DWORD dwTypeIDMUISize;
 917    DWORD dwTypeIDMUIOffset;
 918    DWORD dwTypeNameMUIOffset;
 919    BYTE abBuffer[8];
 920  } FILEMUIINFO,*PFILEMUIINFO;
 921
 922#ifndef NOAPISET
 923#include <stringapiset.h>
 924#endif
 925
 926#define IS_HIGH_SURROGATE(wch) (((wch) >= HIGH_SURROGATE_START) && ((wch) <= HIGH_SURROGATE_END))
 927#define IS_LOW_SURROGATE(wch) (((wch) >= LOW_SURROGATE_START) && ((wch) <= LOW_SURROGATE_END))
 928#define IS_SURROGATE_PAIR(hs, ls) (IS_HIGH_SURROGATE (hs) && IS_LOW_SURROGATE (ls))
 929
 930#define FILEMUIINFO_GET_CULTURE(pInfo) ((LPWSTR) ((pInfo->dwLanguageNameOffset>0)? (ULONG_PTR)pInfo+pInfo->dwLanguageNameOffset:NULL))
 931#define FILEMUIINFO_GET_MAIN_TYPEIDS(pInfo) ((DWORD *) ((pInfo->dwTypeIDMainOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeIDMainOffset:NULL))
 932#define FILEMUIINFO_GET_MAIN_TYPEID(pInfo, iType) (((iType<pInfo->dwTypeIDMainSize)&& (pInfo->dwTypeIDMainOffset>0))? *((DWORD *) ((ULONG_PTR)pInfo+pInfo->dwTypeIDMainOffset)+iType):0)
 933#define FILEMUIINFO_GET_MAIN_TYPENAMES(pInfo) ((LPWSTR) ((pInfo->dwTypeNameMainOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeNameMainOffset:NULL))
 934#define FILEMUIINFO_GET_MUI_TYPEIDS(pInfo) ((DWORD *) ((pInfo->dwTypeIDMUIOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeIDMUIOffset:NULL))
 935#define FILEMUIINFO_GET_MUI_TYPEID(pInfo, iType) (((iType<pInfo->dwTypeIDMUISize)&& (pInfo->dwTypeIDMUIOffset>0))? *((DWORD *) ((ULONG_PTR)pInfo+pInfo->dwTypeIDMUIOffset)+iType):0)
 936#define FILEMUIINFO_GET_MUI_TYPENAMES(pInfo) ((LPWSTR) ((pInfo->dwTypeNameMUIOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeNameMUIOffset:NULL))
 937
 938  WINBASEAPI WINBOOL WINAPI IsValidCodePage (UINT CodePage);
 939#endif
 940
 941#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
 942  WINBASEAPI UINT WINAPI GetACP (void);
 943  WINBASEAPI WINBOOL WINAPI IsDBCSLeadByte (BYTE TestChar);
 944  WINBASEAPI WINBOOL WINAPI IsDBCSLeadByteEx (UINT CodePage, BYTE TestChar);
 945  WINBASEAPI WINBOOL WINAPI IsNLSDefinedString (NLS_FUNCTION Function, DWORD dwFlags, LPNLSVERSIONINFO lpVersionInformation, LPCWSTR lpString, INT cchStr);
 946  WINBASEAPI int WINAPI GetLocaleInfoW (LCID Locale, LCTYPE LCType, LPWSTR lpLCData, int cchData);
 947  WINBASEAPI int WINAPI GetLocaleInfoA (LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData);
 948
 949#ifndef UNICODE
 950#define GetLocaleInfo GetLocaleInfoA
 951#else
 952#define GetLocaleInfo GetLocaleInfoW
 953#endif
 954
 955#endif
 956
 957#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
 958  WINBASEAPI UINT WINAPI GetOEMCP (void);
 959  WINBASEAPI int WINAPI CompareStringA (LCID Locale, DWORD dwCmpFlags, PCNZCH lpString1, int cchCount1, PCNZCH lpString2, int cchCount2);
 960  WINBASEAPI int WINAPI LCMapStringW (LCID Locale, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest);
 961  WINBASEAPI int WINAPI LCMapStringA (LCID Locale, DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest);
 962  WINBASEAPI int WINAPI GetNumberFormatA (LCID Locale, DWORD dwFlags, LPCSTR lpValue, CONST NUMBERFMTA *lpFormat, LPSTR lpNumberStr, int cchNumber);
 963  WINBASEAPI int WINAPI GetNumberFormatW (LCID Locale, DWORD dwFlags, LPCWSTR lpValue, CONST NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchNumber);
 964  WINBASEAPI int WINAPI GetCurrencyFormatA (LCID Locale, DWORD dwFlags, LPCSTR lpValue, CONST CURRENCYFMTA *lpFormat, LPSTR lpCurrencyStr, int cchCurrency);
 965  WINBASEAPI int WINAPI GetCurrencyFormatW (LCID Locale, DWORD dwFlags, LPCWSTR lpValue, CONST CURRENCYFMTW *lpFormat, LPWSTR lpCurrencyStr, int cchCurrency);
 966  WINBASEAPI WINBOOL WINAPI EnumCalendarInfoA (CALINFO_ENUMPROCA lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType);
 967  WINBASEAPI WINBOOL WINAPI EnumCalendarInfoW (CALINFO_ENUMPROCW lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType);
 968  WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExA (CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx, LCID Locale, CALID Calendar, CALTYPE CalType);
 969  WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExW (CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx, LCID Locale, CALID Calendar, CALTYPE CalType);
 970  WINBASEAPI WINBOOL WINAPI EnumTimeFormatsA (TIMEFMT_ENUMPROCA lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags);
 971  WINBASEAPI WINBOOL WINAPI EnumTimeFormatsW (TIMEFMT_ENUMPROCW lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags);
 972  WINBASEAPI WINBOOL WINAPI EnumDateFormatsA (DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, DWORD dwFlags);
 973  WINBASEAPI WINBOOL WINAPI EnumDateFormatsW (DATEFMT_ENUMPROCW lpDateFmtEnumProc, LCID Locale, DWORD dwFlags);
 974  WINBASEAPI WINBOOL WINAPI EnumDateFormatsExA (DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx, LCID Locale, DWORD dwFlags);
 975  WINBASEAPI WINBOOL WINAPI EnumDateFormatsExW (DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx, LCID Locale, DWORD dwFlags);
 976  WINBASEAPI WINBOOL WINAPI IsValidLanguageGroup (LGRPID LanguageGroup, DWORD dwFlags);
 977  WINBASEAPI WINBOOL WINAPI GetNLSVersion (NLS_FUNCTION Function, LCID Locale, LPNLSVERSIONINFO lpVersionInformation);
 978  WINBASEAPI WINBOOL WINAPI IsValidLocale (LCID Locale, DWORD dwFlags);
 979  WINBASEAPI WINBOOL WINAPI SetLocaleInfoA (LCID Locale, LCTYPE LCType, LPCSTR lpLCData);
 980  WINBASEAPI WINBOOL WINAPI SetLocaleInfoW (LCID Locale, LCTYPE LCType, LPCWSTR lpLCData);
 981  WINBASEAPI int WINAPI GetCalendarInfoA (LCID Locale, CALID Calendar, CALTYPE CalType, LPSTR lpCalData, int cchData, LPDWORD lpValue);
 982  WINBASEAPI int WINAPI GetCalendarInfoW (LCID Locale, CALID Calendar, CALTYPE CalType, LPWSTR lpCalData, int cchData, LPDWORD lpValue);
 983  WINBASEAPI WINBOOL WINAPI SetCalendarInfoA (LCID Locale, CALID Calendar, CALTYPE CalType, LPCSTR lpCalData);
 984  WINBASEAPI WINBOOL WINAPI SetCalendarInfoW (LCID Locale, CALID Calendar, CALTYPE CalType, LPCWSTR lpCalData);
 985#if WINVER >= 0x0600
 986  WINBASEAPI int WINAPI GetDurationFormat (LCID Locale, DWORD dwFlags, CONST SYSTEMTIME *lpDuration, ULONGLONG ullDuration, LPCWSTR lpFormat, LPWSTR lpDurationStr, int cchDuration);
 987  WINBASEAPI int WINAPI FindNLSString (LCID Locale, DWORD dwFindNLSStringFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, LPINT pcchFound);
 988#endif
 989#if WINVER >= 0x0601
 990  WINBASEAPI WINBOOL WINAPI LoadStringByReference (DWORD Flags, PCWSTR Language, PCWSTR SourceString, PWSTR Buffer, ULONG cchBuffer, PCWSTR Directory, PULONG pcchBufferOut);
 991#endif
 992
 993#define SetLocaleInfo __MINGW_NAME_AW(SetLocaleInfo)
 994#define GetCalendarInfo __MINGW_NAME_AW(GetCalendarInfo)
 995#define SetCalendarInfo __MINGW_NAME_AW(SetCalendarInfo)
 996
 997#if WINVER >= 0x0601
 998#define MUI_FORMAT_REG_COMPAT 0x0001
 999#define MUI_FORMAT_INF_COMPAT 0x0002
1000#define MUI_VERIFY_FILE_EXISTS 0x0004
1001#define MUI_SKIP_STRING_CACHE 0x0008
1002#define MUI_IMMUTABLE_LOOKUP 0x0010
1003#endif
1004
1005#ifndef UNICODE
1006#define CompareString CompareStringA
1007#define LCMapString LCMapStringA
1008#else
1009#define LCMapString LCMapStringW
1010#endif
1011
1012#define GetNumberFormat __MINGW_NAME_AW(GetNumberFormat)
1013#define GetCurrencyFormat __MINGW_NAME_AW(GetCurrencyFormat)
1014#define EnumCalendarInfo __MINGW_NAME_AW(EnumCalendarInfo)
1015#define EnumCalendarInfoEx __MINGW_NAME_AW(EnumCalendarInfoEx)
1016#define EnumTimeFormats __MINGW_NAME_AW(EnumTimeFormats)
1017#define EnumDateFormats __MINGW_NAME_AW(EnumDateFormats)
1018#define EnumDateFormatsEx __MINGW_NAME_AW(EnumDateFormatsEx)
1019
1020#endif
1021
1022#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
1023  WINBASEAPI int WINAPI GetGeoInfoA (GEOID Location, GEOTYPE GeoType, LPSTR lpGeoData, int cchData, LANGID LangId);
1024  WINBASEAPI int WINAPI GetGeoInfoW (GEOID Location, GEOTYPE GeoType, LPWSTR lpGeoData, int cchData, LANGID LangId);
1025  WINBASEAPI WINBOOL WINAPI EnumSystemGeoID (GEOCLASS GeoClass, GEOID ParentGeoId, GEO_ENUMPROC lpGeoEnumProc);
1026  WINBASEAPI GEOID WINAPI GetUserGeoID (GEOCLASS GeoClass);
1027  WINBASEAPI int WINAPI GetUserDefaultGeoName (LPWSTR geoName, int geoNameCount);
1028  WINBASEAPI WINBOOL WINAPI GetCPInfo (UINT CodePage, LPCPINFO lpCPInfo);
1029  WINBASEAPI WINBOOL WINAPI GetCPInfoExA (UINT CodePage, DWORD dwFlags, LPCPINFOEXA lpCPInfoEx);
1030  WINBASEAPI WINBOOL WINAPI GetCPInfoExW (UINT CodePage, DWORD dwFlags, LPCPINFOEXW lpCPInfoEx);
1031
1032#if WINVER >= 0x0600
1033  WINBASEAPI int WINAPI LCIDToLocaleName (LCID Locale, LPWSTR lpName, int cchName, DWORD dwFlags);
1034  WINBASEAPI LCID WINAPI LocaleNameToLCID (LPCWSTR lpName, DWORD dwFlags);
1035#endif
1036
1037#if NTDDI_VERSION >= NTDDI_WIN10_RS3
1038  WINBASEAPI int WINAPI GetGeoInfoEx (PWSTR location, GEOTYPE geoType, PWSTR geoData, int geoDataCount);
1039  WINBASEAPI WINBOOL WINAPI SetUserGeoName (PWSTR geoName);
1040#endif
1041
1042#define GetGeoInfo __MINGW_NAME_AW(GetGeoInfo)
1043#define GetCPInfoEx __MINGW_NAME_AW(GetCPInfoEx)
1044
1045#endif
1046
1047#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
1048  WINBASEAPI WINBOOL WINAPI SetUserGeoID (GEOID GeoId);
1049  WINBASEAPI LCID WINAPI ConvertDefaultLocale (LCID Locale);
1050  WINBASEAPI LCID WINAPI GetThreadLocale (void);
1051  WINBASEAPI WINBOOL WINAPI SetThreadLocale (LCID Locale);
1052  WINBASEAPI LANGID WINAPI GetSystemDefaultUILanguage (void);
1053  WINBASEAPI LANGID WINAPI GetSystemDefaultLangID (void);
1054  WINBASEAPI LCID WINAPI GetSystemDefaultLCID (void);
1055  WINBASEAPI LCID WINAPI GetUserDefaultLCID (void);
1056  WINBASEAPI LANGID WINAPI SetThreadUILanguage (LANGID LangId);
1057  WINBASEAPI WINBOOL WINAPI GetStringTypeA (LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType);
1058  WINBASEAPI int WINAPI FoldStringA (DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest);
1059  WINBASEAPI WINBOOL WINAPI EnumSystemLocalesA (LOCALE_ENUMPROCA lpLocaleEnumProc, DWORD dwFlags);
1060  WINBASEAPI WINBOOL WINAPI EnumSystemLocalesW (LOCALE_ENUMPROCW lpLocaleEnumProc, DWORD dwFlags);
1061  WINBASEAPI WINBOOL WINAPI EnumSystemLanguageGroupsA (LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc, DWORD dwFlags, LONG_PTR lParam);
1062  WINBASEAPI WINBOOL WINAPI EnumSystemLanguageGroupsW (LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc, DWORD dwFlags, LONG_PTR lParam);
1063  WINBASEAPI WINBOOL WINAPI EnumLanguageGroupLocalesA (LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc, LGRPID LanguageGroup, DWORD dwFlags, LONG_PTR lParam);
1064  WINBASEAPI WINBOOL WINAPI EnumLanguageGroupLocalesW (LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc, LGRPID LanguageGroup, DWORD dwFlags, LONG_PTR lParam);
1065#if WINVER >= 0x0600
1066  WINBASEAPI LANGID WINAPI GetThreadUILanguage (void);
1067  WINBASEAPI WINBOOL WINAPI GetProcessPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
1068  WINBASEAPI WINBOOL WINAPI SetProcessPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages);
1069  WINBASEAPI WINBOOL WINAPI GetUserPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
1070  WINBASEAPI WINBOOL WINAPI GetSystemPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
1071  WINBASEAPI WINBOOL WINAPI GetThreadPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
1072  WINBASEAPI WINBOOL WINAPI SetThreadPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages);
1073  WINBASEAPI WINBOOL WINAPI GetFileMUIInfo (DWORD dwFlags, PCWSTR pcwszFilePath, PFILEMUIINFO pFileMUIInfo, DWORD *pcbFileMUIInfo);
1074  WINBASEAPI WINBOOL WINAPI GetFileMUIPath (DWORD dwFlags, PCWSTR pcwszFilePath, PWSTR pwszLanguage, PULONG pcchLanguage, PWSTR pwszFileMUIPath, PULONG pcchFileMUIPath, PULONGLONG pululEnumerator);
1075  WINBASEAPI WINBOOL WINAPI GetUILanguageInfo (DWORD dwFlags, PCZZWSTR pwmszLanguage, PZZWSTR pwszFallbackLanguages, PDWORD pcchFallbackLanguages, PDWORD pAttributes);
1076  WINBASEAPI WINBOOL WINAPI NotifyUILanguageChange (DWORD dwFlags, PCWSTR pcwstrNewLanguage, PCWSTR pcwstrPreviousLanguage, DWORD dwReserved, PDWORD pdwStatusRtrn);
1077#endif
1078
1079#ifndef UNICODE
1080#define FoldString FoldStringA
1081#endif
1082
1083#define EnumSystemLocales __MINGW_NAME_AW(EnumSystemLocales)
1084#define EnumSystemLanguageGroups __MINGW_NAME_AW(EnumSystemLanguageGroups)
1085#define EnumLanguageGroupLocales __MINGW_NAME_AW(EnumLanguageGroupLocales)
1086#define EnumUILanguages __MINGW_NAME_AW(EnumUILanguages)
1087
1088#if NTDDI_VERSION >= NTDDI_WIN10_RS3
1089  WINBASEAPI WINBOOL WINAPI EnumSystemGeoNames (GEOCLASS geoClass, GEO_ENUMNAMEPROC geoEnumProc, LPARAM data);
1090#endif
1091
1092#if NTDDI_VERSION >= NTDDI_WIN10_VB
1093  DECLARE_HANDLE(HSAVEDUILANGUAGES);
1094  WINBASEAPI WINBOOL WINAPI SetThreadPreferredUILanguages2 (ULONG flags, PCZZWSTR languages, PULONG numLanguagesSet, HSAVEDUILANGUAGES *snapshot);
1095  WINBASEAPI void WINAPI RestoreThreadPreferredUILanguages (const HSAVEDUILANGUAGES snapshot);
1096#endif /* NTDDI_WIN10_VB */
1097
1098#endif
1099
1100#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
1101  WINBASEAPI WINBOOL WINAPI GetStringTypeExA (LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType);
1102  WINBASEAPI LANGID WINAPI GetUserDefaultUILanguage (void);
1103  WINBASEAPI WINBOOL WINAPI EnumUILanguagesA (UILANGUAGE_ENUMPROCA lpUILanguageEnumProc, DWORD dwFlags, LONG_PTR lParam);
1104  WINBASEAPI WINBOOL WINAPI EnumUILanguagesW (UILANGUAGE_ENUMPROCW lpUILanguageEnumProc, DWORD dwFlags, LONG_PTR lParam);
1105  WINBASEAPI WINBOOL WINAPI EnumSystemCodePagesA (CODEPAGE_ENUMPROCA lpCodePageEnumProc, DWORD dwFlags);
1106  WINBASEAPI WINBOOL WINAPI EnumSystemCodePagesW (CODEPAGE_ENUMPROCW lpCodePageEnumProc, DWORD dwFlags);
1107  WINBASEAPI LANGID WINAPI GetUserDefaultLangID (void);
1108
1109#ifndef UNICODE
1110#define GetStringTypeEx GetStringTypeExA
1111#endif
1112
1113#define EnumSystemCodePages __MINGW_NAME_AW(EnumSystemCodePages)
1114
1115#if WINVER >= 0x0600
1116
1117#define LOCALE_NAME_USER_DEFAULT NULL
1118#define LOCALE_NAME_INVARIANT L""
1119#define LOCALE_NAME_SYSTEM_DEFAULT L"!x-sys-default-locale"
1120
1121  typedef WINBOOL (CALLBACK *CALINFO_ENUMPROCEXEX) (LPWSTR, CALID, LPWSTR, LPARAM);
1122  typedef WINBOOL (CALLBACK *DATEFMT_ENUMPROCEXEX) (LPWSTR, CALID, LPARAM);
1123  typedef WINBOOL (CALLBACK *TIMEFMT_ENUMPROCEX) (LPWSTR, LPARAM);
1124  typedef WINBOOL (CALLBACK *LOCALE_ENUMPROCEX) (LPWSTR, DWORD, LPARAM);
1125
1126  WINNORMALIZEAPI int WINAPI NormalizeString (NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, LPWSTR lpDstString, int cwDstLength);
1127  WINNORMALIZEAPI WINBOOL WINAPI IsNormalizedString (NORM_FORM NormForm, LPCWSTR lpString, int cwLength);
1128  WINNORMALIZEAPI int WINAPI IdnToAscii (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpASCIICharStr, int cchASCIIChar);
1129  WINNORMALIZEAPI int WINAPI IdnToNameprepUnicode (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpNameprepCharStr, int cchNameprepChar);
1130  WINNORMALIZEAPI int WINAPI IdnToUnicode (DWORD dwFlags, LPCWSTR lpASCIICharStr, int cchASCIIChar, LPWSTR lpUnicodeCharStr, int cchUnicodeChar);
1131
1132  WINBASEAPI WINBOOL WINAPI VerifyScripts (DWORD dwFlags, LPCWSTR lpLocaleScripts, int cchLocaleScripts, LPCWSTR lpTestScripts, int cchTestScripts);
1133  WINBASEAPI int WINAPI GetStringScripts (DWORD dwFlags, LPCWSTR lpString, int cchString, LPWSTR lpScripts, int cchScripts);
1134  WINBASEAPI int WINAPI GetLocaleInfoEx (LPCWSTR lpLocaleName, LCTYPE LCType, LPWSTR lpLCData, int cchData);
1135  WINBASEAPI int WINAPI GetCalendarInfoEx (LPCWSTR lpLocaleName, CALID Calendar, LPCWSTR lpReserved, CALTYPE CalType, LPWSTR lpCalData, int cchData, LPDWORD lpValue);
1136  WINBASEAPI int WINAPI GetDurationFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, CONST SYSTEMTIME *lpDuration, ULONGLONG ullDuration, LPCWSTR lpFormat, LPWSTR lpDurationStr, int cchDuration);
1137  WINBASEAPI int WINAPI GetNumberFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, LPCWSTR lpValue, CONST NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchNumber);
1138  WINBASEAPI int WINAPI GetCurrencyFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, LPCWSTR lpValue, CONST CURRENCYFMTW *lpFormat, LPWSTR lpCurrencyStr, int cchCurrency);
1139  WINBASEAPI int WINAPI GetUserDefaultLocaleName (LPWSTR lpLocaleName, int cchLocaleName);
1140  WINBASEAPI int WINAPI GetSystemDefaultLocaleName (LPWSTR lpLocaleName, int cchLocaleName);
1141  WINBASEAPI WINBOOL WINAPI GetNLSVersionEx (NLS_FUNCTION function, LPCWSTR lpLocaleName, LPNLSVERSIONINFOEX lpVersionInformation);
1142  WINBASEAPI int WINAPI FindNLSStringEx (LPCWSTR lpLocaleName, DWORD dwFindNLSStringFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, LPINT pcchFound, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM sortHandle);
1143  WINBASEAPI int WINAPI LCMapStringEx (LPCWSTR lpLocaleName, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM sortHandle);
1144  WINBASEAPI WINBOOL WINAPI IsValidLocaleName (LPCWSTR lpLocaleName);
1145  WINBASEAPI WINBOOL WINAPI EnumCalendarInfoExEx (CALINFO_ENUMPROCEXEX pCalInfoEnumProcExEx, LPCWSTR lpLocaleName, CALID Calendar, LPCWSTR lpReserved, CALTYPE CalType, LPARAM lParam);
1146  WINBASEAPI WINBOOL WINAPI EnumDateFormatsExEx (DATEFMT_ENUMPROCEXEX lpDateFmtEnumProcExEx, LPCWSTR lpLocaleName, DWORD dwFlags, LPARAM lParam);
1147  WINBASEAPI WINBOOL WINAPI EnumTimeFormatsEx (TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx, LPCWSTR lpLocaleName, DWORD dwFlags, LPARAM lParam);
1148  WINBASEAPI WINBOOL WINAPI EnumSystemLocalesEx (LOCALE_ENUMPROCEX lpLocaleEnumProcEx, DWORD dwFlags, LPARAM lParam, LPVOID lpReserved);
1149#endif
1150#if WINVER >= 0x0601
1151  WINBASEAPI int WINAPI ResolveLocaleName (LPCWSTR lpNameToResolve, LPWSTR lpLocaleName, int cchLocaleName);
1152#endif
1153#if WINVER >= 0x0602
1154  WINBASEAPI DWORD WINAPI IsValidNLSVersion (NLS_FUNCTION function, LPCWSTR lpLocaleName, LPNLSVERSIONINFOEX lpVersionInformation);
1155#endif
1156#endif
1157
1158#endif
1159
1160#ifdef __cplusplus
1161}
1162#endif
1163
1164#endif