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
1165