zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

winnls.h (43900B) - Raw


      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
     12 extern "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