xref: /reactos/sdk/include/psdk/winnls.h (revision 5100859e)
1 #ifndef _WINNLS_
2 #define _WINNLS_
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #ifdef _MSC_VER
9 #pragma warning(push)
10 #pragma warning(disable:4820)
11 #endif
12 
13 #define GEOID_NOT_AVAILABLE (-1)
14 #define MAX_LEADBYTES 	12
15 #define MAX_DEFAULTCHAR	2
16 
17 #define LOCALE_ALL 0x00
18 
19 #define LOCALE_NOUSEROVERRIDE	0x80000000
20 #define LOCALE_USE_CP_ACP	0x40000000
21 #if (WINVER >= 0x0400)
22 #define LOCALE_RETURN_NUMBER	0x20000000
23 #endif
24 #define LOCALE_RETURN_GENITIVE_NAMES  0x10000000
25 #define LOCALE_ILANGUAGE	1
26 #define LOCALE_SLANGUAGE	2
27 #define LOCALE_SENGLANGUAGE	0x1001
28 #define LOCALE_SABBREVLANGNAME	3
29 #define LOCALE_SNATIVELANGNAME	4
30 #define LOCALE_ICOUNTRY	5
31 #define LOCALE_SCOUNTRY	6
32 #define LOCALE_SENGCOUNTRY	0x1002
33 #define LOCALE_SABBREVCTRYNAME	7
34 #define LOCALE_SNATIVECTRYNAME	8
35 #define LOCALE_IDEFAULTLANGUAGE	9
36 #define LOCALE_IDEFAULTCOUNTRY	10
37 #define LOCALE_IDEFAULTCODEPAGE	11
38 #define LOCALE_IDEFAULTANSICODEPAGE 0x1004
39 #define LOCALE_IDEFAULTMACCODEPAGE 0x1011
40 #define LOCALE_SLIST	12
41 #define LOCALE_IMEASURE	13
42 #define LOCALE_SDECIMAL	14
43 #define LOCALE_STHOUSAND	15
44 #define LOCALE_SGROUPING	16
45 #define LOCALE_IDIGITS	17
46 #define LOCALE_ILZERO	18
47 #define LOCALE_INEGNUMBER	0x1010
48 #define LOCALE_SNATIVEDIGITS	19
49 #define LOCALE_SCURRENCY	20
50 #define LOCALE_SINTLSYMBOL	21
51 #define LOCALE_SMONDECIMALSEP	22
52 #define LOCALE_SMONTHOUSANDSEP	23
53 #define LOCALE_SMONGROUPING	24
54 #define LOCALE_ICURRDIGITS	25
55 #define LOCALE_IINTLCURRDIGITS	26
56 #define LOCALE_ICURRENCY	27
57 #define LOCALE_INEGCURR	28
58 #define LOCALE_SDATE	29
59 #define LOCALE_STIME	30
60 #define LOCALE_SSHORTDATE	31
61 #define LOCALE_SLONGDATE	32
62 #define LOCALE_STIMEFORMAT	0x1003
63 #define LOCALE_IDATE	33
64 #define LOCALE_ILDATE	34
65 #define LOCALE_ITIME	35
66 #define LOCALE_ITIMEMARKPOSN	0x1005
67 #define LOCALE_ICENTURY	36
68 #define LOCALE_ITLZERO	37
69 #define LOCALE_IDAYLZERO	38
70 #define LOCALE_IMONLZERO	39
71 #define LOCALE_S1159	40
72 #define LOCALE_S2359	41
73 #define LOCALE_ICALENDARTYPE	0x1009
74 #define LOCALE_IOPTIONALCALENDAR	0x100B
75 #define LOCALE_IFIRSTDAYOFWEEK	0x100C
76 #define LOCALE_IFIRSTWEEKOFYEAR	0x100D
77 #define LOCALE_SDAYNAME1	42
78 #define LOCALE_SDAYNAME2	43
79 #define LOCALE_SDAYNAME3	44
80 #define LOCALE_SDAYNAME4	45
81 #define LOCALE_SDAYNAME5	46
82 #define LOCALE_SDAYNAME6	47
83 #define LOCALE_SDAYNAME7	48
84 #define LOCALE_SABBREVDAYNAME1	49
85 #define LOCALE_SABBREVDAYNAME2	50
86 #define LOCALE_SABBREVDAYNAME3	51
87 #define LOCALE_SABBREVDAYNAME4	52
88 #define LOCALE_SABBREVDAYNAME5	53
89 #define LOCALE_SABBREVDAYNAME6	54
90 #define LOCALE_SABBREVDAYNAME7	55
91 #define LOCALE_SMONTHNAME1	56
92 #define LOCALE_SMONTHNAME2	57
93 #define LOCALE_SMONTHNAME3	58
94 #define LOCALE_SMONTHNAME4	59
95 #define LOCALE_SMONTHNAME5	60
96 #define LOCALE_SMONTHNAME6	61
97 #define LOCALE_SMONTHNAME7	62
98 #define LOCALE_SMONTHNAME8	63
99 #define LOCALE_SMONTHNAME9	64
100 #define LOCALE_SMONTHNAME10	65
101 #define LOCALE_SMONTHNAME11	66
102 #define LOCALE_SMONTHNAME12	67
103 #define LOCALE_SMONTHNAME13	0x100E
104 #define LOCALE_SABBREVMONTHNAME1	68
105 #define LOCALE_SABBREVMONTHNAME2	69
106 #define LOCALE_SABBREVMONTHNAME3	70
107 #define LOCALE_SABBREVMONTHNAME4	71
108 #define LOCALE_SABBREVMONTHNAME5	72
109 #define LOCALE_SABBREVMONTHNAME6	73
110 #define LOCALE_SABBREVMONTHNAME7	74
111 #define LOCALE_SABBREVMONTHNAME8	75
112 #define LOCALE_SABBREVMONTHNAME9	76
113 #define LOCALE_SABBREVMONTHNAME10	77
114 #define LOCALE_SABBREVMONTHNAME11	78
115 #define LOCALE_SABBREVMONTHNAME12	79
116 #define LOCALE_SABBREVMONTHNAME13	0x100F
117 #define LOCALE_SPOSITIVESIGN	80
118 #define LOCALE_SNEGATIVESIGN	81
119 #define LOCALE_SSCRIPTS         108 // FIXME
120 #define LOCALE_IPOSSIGNPOSN	82
121 #define LOCALE_INEGSIGNPOSN	83
122 #define LOCALE_IPOSSYMPRECEDES	84
123 #define LOCALE_IPOSSEPBYSPACE	85
124 #define LOCALE_INEGSYMPRECEDES	86
125 #define LOCALE_INEGSEPBYSPACE	87
126 #define LOCALE_FONTSIGNATURE    88
127 #define LOCALE_SISO639LANGNAME  89
128 #define LOCALE_SISO3166CTRYNAME 90
129 #define LOCALE_SNAME            92 // FIXME
130 
131 #if (WINVER >= 0x0600)
132 #define LOCALE_SNAME            92
133 #define LOCALE_SDURATION        93
134 #define LOCALE_SKEYBOARDSTOINSTALL 94
135 #define LOCALE_SSHORTESTDAYNAME1 96
136 #define LOCALE_SSHORTESTDAYNAME2 97
137 #define LOCALE_SSHORTESTDAYNAME3 98
138 #define LOCALE_SSHORTESTDAYNAME4 99
139 #define LOCALE_SSHORTESTDAYNAME5 100
140 #define LOCALE_SSHORTESTDAYNAME6 101
141 #define LOCALE_SSHORTESTDAYNAME7 102
142 #define LOCALE_SISO639LANGNAME2  103
143 #define LOCALE_SISO3166CTRYNAME2 104
144 #define LOCALE_SNAN              105
145 #define LOCALE_SPOSINFINITY      106
146 #define LOCALE_SNEGINFINITY      107
147 #define LOCALE_SSCRIPTS 108
148 #define LOCALE_SPARENT  109
149 #define LOCALE_SCONSOLEFALLBACKNAME 110
150 #endif /* (WINVER >= 0x0600) */
151 
152 //#if (WINVER >= _WIN32_WINNT_WIN7)
153 #define LOCALE_IREADINGLAYOUT       0x0070
154 #define LOCALE_INEUTRAL             0x0071
155 #define LOCALE_INEGATIVEPERCENT     0x0074
156 #define LOCALE_IPOSITIVEPERCENT     0x0075
157 #define LOCALE_SPERCENT             0x0076
158 #define LOCALE_SPERMILLE            0x0077
159 #define LOCALE_SMONTHDAY            0x0078
160 #define LOCALE_SSHORTTIME           0x0079
161 #define LOCALE_SOPENTYPELANGUAGETAG 0x007a
162 #define LOCALE_SSORTLOCALE          0x007b
163 //#endif /* (WINVER >= _WIN32_WINNT_WIN7) */
164 
165 #if (WINVER >= 0x0600)
166 #define LOCALE_NAME_USER_DEFAULT    NULL
167 #define LOCALE_NAME_INVARIANT      L""
168 #define LOCALE_NAME_SYSTEM_DEFAULT      L"!sys-default-locale"
169 #endif
170 
171 #define LOCALE_IDEFAULTUNIXCODEPAGE   0x1030 /* Wine extension */
172 
173 #define NORM_IGNORECASE	1
174 #define NORM_IGNOREKANATYPE	65536
175 #define NORM_IGNORENONSPACE	2
176 #define NORM_IGNORESYMBOLS	4
177 #define NORM_IGNOREWIDTH	131072
178 #define LINGUISTIC_IGNORECASE 0x00000010
179 #define NORM_LINGUISTIC_CASING 0x08000000
180 #define SORT_STRINGSORT	4096
181 #define LCMAP_LOWERCASE 0x00000100
182 #define LCMAP_UPPERCASE 0x00000200
183 #define LCMAP_SORTKEY 0x00000400
184 #define LCMAP_BYTEREV 0x00000800
185 #define LCMAP_HIRAGANA 0x00100000
186 #define LCMAP_KATAKANA 0x00200000
187 #define LCMAP_HALFWIDTH 0x00400000
188 #define LCMAP_FULLWIDTH 0x00800000
189 #define LCMAP_LINGUISTIC_CASING 0x01000000
190 #define LCMAP_SIMPLIFIED_CHINESE 0x02000000
191 #define LCMAP_TRADITIONAL_CHINESE 0x04000000
192 #define ENUM_ALL_CALENDARS (-1)
193 #define DATE_SHORTDATE 1
194 #define DATE_LONGDATE 2
195 #define DATE_USE_ALT_CALENDAR 4
196 #define CP_INSTALLED 1
197 #define CP_SUPPORTED 2
198 #define LCID_INSTALLED 1
199 #define LCID_SUPPORTED 2
200 #define LCID_ALTERNATE_SORTS 4
201 #define MAP_FOLDCZONE 16
202 #define MAP_FOLDDIGITS 128
203 #define MAP_PRECOMPOSED 32
204 #define MAP_COMPOSITE 64
205 
206 #define WC_DISCARDNS         0x0010
207 #define WC_SEPCHARS          0x0020
208 #define WC_DEFAULTCHAR       0x0040
209 #define WC_ERR_INVALID_CHARS 0x0080
210 #define WC_COMPOSITECHECK    0x0200
211 #if (WINVER >= 0x0500)
212 #define WC_NO_BEST_FIT_CHARS 0x0400
213 #endif
214 
215 #define CP_ACP 0
216 #ifdef _WINE
217 #define CP_UNIXCP CP_ACP
218 #endif
219 #define CP_OEMCP 1
220 #define CP_MACCP 2
221 #define CP_THREAD_ACP 3
222 #define CP_SYMBOL 42
223 #define CP_UTF7 65000
224 #define CP_UTF8 65001
225 #define CT_CTYPE1 1
226 #define CT_CTYPE2 2
227 #define CT_CTYPE3 4
228 #define C1_UPPER 1
229 #define C1_LOWER 2
230 #define C1_DIGIT 4
231 #define C1_SPACE 8
232 #define C1_PUNCT 16
233 #define C1_CNTRL 32
234 #define C1_BLANK 64
235 #define C1_XDIGIT 128
236 #define C1_ALPHA 256
237 #define C1_DEFINED 512
238 #define C2_LEFTTORIGHT 1
239 #define C2_RIGHTTOLEFT 2
240 #define C2_EUROPENUMBER 3
241 #define C2_EUROPESEPARATOR 4
242 #define C2_EUROPETERMINATOR 5
243 #define C2_ARABICNUMBER 6
244 #define C2_COMMONSEPARATOR 7
245 #define C2_BLOCKSEPARATOR 8
246 #define C2_SEGMENTSEPARATOR 9
247 #define C2_WHITESPACE 10
248 #define C2_OTHERNEUTRAL 11
249 #define C2_NOTAPPLICABLE 0
250 #define C3_NONSPACING 1
251 #define C3_DIACRITIC 2
252 #define C3_VOWELMARK 4
253 #define C3_SYMBOL 8
254 #define C3_KATAKANA 16
255 #define C3_HIRAGANA 32
256 #define C3_HALFWIDTH 64
257 #define C3_FULLWIDTH 128
258 #define C3_IDEOGRAPH 256
259 #define C3_KASHIDA 512
260 #define C3_LEXICAL 1024
261 #define C3_ALPHA 32768
262 #define C3_NOTAPPLICABLE 0
263 #define C3_HIGHSURROGATE 0x0800
264 #define C3_LOWSURROGATE 0x1000
265 #define TIME_NOMINUTESORSECONDS 1
266 #define TIME_NOSECONDS 2
267 #define TIME_NOTIMEMARKER 4
268 #define TIME_FORCE24HOURFORMAT 8
269 #define MB_PRECOMPOSED 1
270 #define MB_COMPOSITE 2
271 #define MB_ERR_INVALID_CHARS 8
272 #define MB_USEGLYPHCHARS 4
273 #define CTRY_DEFAULT 0
274 #define CTRY_ALBANIA 355
275 #define CTRY_ALGERIA 213
276 #define CTRY_ARGENTINA 54
277 #define CTRY_ARMENIA 374
278 #define CTRY_AUSTRALIA 61
279 #define CTRY_AUSTRIA 43
280 #define CTRY_AZERBAIJAN 994
281 #define CTRY_BAHRAIN 973
282 #define CTRY_BELARUS 375
283 #define CTRY_BELGIUM 32
284 #define CTRY_BELIZE 501
285 #define CTRY_BOLIVIA 591
286 #define CTRY_BRAZIL 55
287 #define CTRY_BRUNEI_DARUSSALAM 673
288 #define CTRY_BULGARIA 359
289 #define CTRY_CANADA 2
290 #define CTRY_CARIBBEAN 1
291 #define CTRY_CHILE 56
292 #define CTRY_COLOMBIA 57
293 #define CTRY_COSTA_RICA 506
294 #define CTRY_CROATIA 385
295 #define CTRY_CZECH 420
296 #define CTRY_DENMARK 45
297 #define CTRY_DOMINICAN_REPUBLIC 1
298 #define CTRY_ECUADOR 593
299 #define CTRY_EGYPT 20
300 #define CTRY_EL_SALVADOR 503
301 #define CTRY_ESTONIA 372
302 #define CTRY_FAEROE_ISLANDS 298
303 #define CTRY_FINLAND 358
304 #define CTRY_FRANCE 33
305 #define CTRY_GEORGIA 995
306 #define CTRY_GERMANY 49
307 #define CTRY_GREECE 30
308 #define CTRY_GUATEMALA 502
309 #define CTRY_HONDURAS 504
310 #define CTRY_HONG_KONG 852
311 #define CTRY_HUNGARY 36
312 #define CTRY_ICELAND 354
313 #define CTRY_INDIA 91
314 #define CTRY_INDONESIA 62
315 #define CTRY_IRAN 981
316 #define CTRY_IRAQ 964
317 #define CTRY_IRELAND 353
318 #define CTRY_ISRAEL 972
319 #define CTRY_ITALY 39
320 #define CTRY_JAMAICA 1
321 #define CTRY_JAPAN 81
322 #define CTRY_JORDAN 962
323 #define CTRY_KAZAKSTAN 7
324 #define CTRY_KENYA 254
325 #define CTRY_KUWAIT 965
326 #define CTRY_KYRGYZSTAN 996
327 #define CTRY_LATVIA 371
328 #define CTRY_LEBANON 961
329 #define CTRY_LIBYA 218
330 #define CTRY_LIECHTENSTEIN 41
331 #define CTRY_LITHUANIA 370
332 #define CTRY_LUXEMBOURG 352
333 #define CTRY_MACAU 853
334 #define CTRY_MACEDONIA 389
335 #define CTRY_MALAYSIA 60
336 #define CTRY_MALDIVES 960
337 #define CTRY_MEXICO 52
338 #define CTRY_MONACO 33
339 #define CTRY_MONGOLIA 976
340 #define CTRY_MOROCCO 212
341 #define CTRY_NETHERLANDS 31
342 #define CTRY_NEW_ZEALAND 64
343 #define CTRY_NICARAGUA 505
344 #define CTRY_NORWAY 47
345 #define CTRY_OMAN 968
346 #define CTRY_PAKISTAN 92
347 #define CTRY_PANAMA 507
348 #define CTRY_PARAGUAY 595
349 #define CTRY_PERU 51
350 #define CTRY_PHILIPPINES 63
351 #define CTRY_POLAND 48
352 #define CTRY_PORTUGAL 351
353 #define CTRY_PRCHINA 86
354 #define CTRY_PUERTO_RICO 1
355 #define CTRY_QATAR 974
356 #define CTRY_ROMANIA 40
357 #define CTRY_RUSSIA 7
358 #define CTRY_SAUDI_ARABIA 966
359 #define CTRY_SERBIA 381
360 #define CTRY_SINGAPORE 65
361 #define CTRY_SLOVAK 421
362 #define CTRY_SLOVENIA 386
363 #define CTRY_SOUTH_AFRICA 27
364 #define CTRY_SOUTH_KOREA 82
365 #define CTRY_SPAIN 34
366 #define CTRY_SWEDEN 46
367 #define CTRY_SWITZERLAND 41
368 #define CTRY_SYRIA 963
369 #define CTRY_TAIWAN 886
370 #define CTRY_TATARSTAN 7
371 #define CTRY_THAILAND 66
372 #define CTRY_TRINIDAD_Y_TOBAGO 1
373 #define CTRY_TUNISIA 216
374 #define CTRY_TURKEY 90
375 #define CTRY_UAE 971
376 #define CTRY_UKRAINE 380
377 #define CTRY_UNITED_KINGDOM 44
378 #define CTRY_UNITED_STATES 1
379 #define CTRY_URUGUAY 598
380 #define CTRY_UZBEKISTAN 7
381 #define CTRY_VENEZUELA 58
382 #define CTRY_VIET_NAM 84
383 #define CTRY_YEMEN 967
384 #define CTRY_ZIMBABWE 263
385 #define CAL_ICALINTVALUE 1
386 #define CAL_SCALNAME 2
387 #define CAL_IYEAROFFSETRANGE 3
388 #define CAL_SERASTRING 4
389 #define CAL_SSHORTDATE 5
390 #define CAL_SLONGDATE 6
391 #define CAL_SDAYNAME1 7
392 #define CAL_SDAYNAME2 8
393 #define CAL_SDAYNAME3 9
394 #define CAL_SDAYNAME4 10
395 #define CAL_SDAYNAME5 11
396 #define CAL_SDAYNAME6 12
397 #define CAL_SDAYNAME7 13
398 #define CAL_SABBREVDAYNAME1 14
399 #define CAL_SABBREVDAYNAME2 15
400 #define CAL_SABBREVDAYNAME3 16
401 #define CAL_SABBREVDAYNAME4 17
402 #define CAL_SABBREVDAYNAME5 18
403 #define CAL_SABBREVDAYNAME6 19
404 #define CAL_SABBREVDAYNAME7 20
405 #define CAL_SMONTHNAME1 21
406 #define CAL_SMONTHNAME2 22
407 #define CAL_SMONTHNAME3 23
408 #define CAL_SMONTHNAME4 24
409 #define CAL_SMONTHNAME5 25
410 #define CAL_SMONTHNAME6 26
411 #define CAL_SMONTHNAME7 27
412 #define CAL_SMONTHNAME8 28
413 #define CAL_SMONTHNAME9 29
414 #define CAL_SMONTHNAME10 30
415 #define CAL_SMONTHNAME11 31
416 #define CAL_SMONTHNAME12 32
417 #define CAL_SMONTHNAME13 33
418 #define CAL_SABBREVMONTHNAME1 34
419 #define CAL_SABBREVMONTHNAME2 35
420 #define CAL_SABBREVMONTHNAME3 36
421 #define CAL_SABBREVMONTHNAME4 37
422 #define CAL_SABBREVMONTHNAME5 38
423 #define CAL_SABBREVMONTHNAME6 39
424 #define CAL_SABBREVMONTHNAME7 40
425 #define CAL_SABBREVMONTHNAME8 41
426 #define CAL_SABBREVMONTHNAME9 42
427 #define CAL_SABBREVMONTHNAME10 43
428 #define CAL_SABBREVMONTHNAME11 44
429 #define CAL_SABBREVMONTHNAME12 45
430 #define CAL_SABBREVMONTHNAME13 46
431 #define CAL_GREGORIAN 1
432 #define CAL_GREGORIAN_US 2
433 #define CAL_JAPAN 3
434 #define CAL_TAIWAN 4
435 #define CAL_KOREA 5
436 #define CAL_HIJRI 6
437 #define CAL_THAI 7
438 #define CAL_HEBREW 8
439 #define CAL_GREGORIAN_ME_FRENCH 9
440 #define CAL_GREGORIAN_ARABIC 10
441 #define CAL_GREGORIAN_XLIT_ENGLISH 11
442 #define CAL_GREGORIAN_XLIT_FRENCH 12
443 #define CSTR_LESS_THAN 1
444 #define CSTR_EQUAL 2
445 #define CSTR_GREATER_THAN 3
446 #define LGRPID_INSTALLED 1
447 #define LGRPID_SUPPORTED 2
448 #define LGRPID_WESTERN_EUROPE 1
449 #define LGRPID_CENTRAL_EUROPE 2
450 #define LGRPID_BALTIC 3
451 #define LGRPID_GREEK 4
452 #define LGRPID_CYRILLIC 5
453 #define LGRPID_TURKISH 6
454 #define LGRPID_JAPANESE 7
455 #define LGRPID_KOREAN 8
456 #define LGRPID_TRADITIONAL_CHINESE 9
457 #define LGRPID_SIMPLIFIED_CHINESE 10
458 #define LGRPID_THAI 11
459 #define LGRPID_HEBREW 12
460 #define LGRPID_ARABIC 13
461 #define LGRPID_VIETNAMESE 14
462 #define LGRPID_INDIC 15
463 #define LGRPID_GEORGIAN 16
464 #define LGRPID_ARMENIAN 17
465 
466 #if (WINVER >= 0x0500)
467 #define LOCALE_SYEARMONTH 0x1006
468 #define LOCALE_SENGCURRNAME 0x1007
469 #define LOCALE_SNATIVECURRNAME 0x1008
470 #define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012
471 #define LOCALE_SSORTNAME 0x1013
472 #define LOCALE_IDIGITSUBSTITUTION 0x1014
473 #define LOCALE_IPAPERSIZE 0x100A
474 #define DATE_YEARMONTH 8
475 #define DATE_LTRREADING 16
476 #define DATE_RTLREADING 32
477 #define MAP_EXPAND_LIGATURES   0x2000
478 #define CAL_SYEARMONTH 47
479 #define CAL_ITWODIGITYEARMAX 48
480 #define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
481 #define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
482 #define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
483 #endif /* (WINVER >= 0x0500) */
484 #if WINVER >= 0x0600
485 #define IDN_ALLOW_UNASSIGNED 0x1
486 #define IDN_USE_STD3_ASCII_RULES 0x2
487 #define VS_ALLOW_LATIN 0x1
488 #define GSS_ALLOW_INHERITED_COMMON 0x1
489 #endif
490 #ifndef  _BASETSD_H_
491 typedef long LONG_PTR;
492 #endif
493 
494 #if (WINVER >= 0x0600)
495 #define MUI_FULL_LANGUAGE             0x01
496 #define MUI_LANGUAGE_ID               0x04
497 #define MUI_LANGUAGE_NAME             0x08
498 #define MUI_MERGE_SYSTEM_FALLBACK     0x10
499 #define MUI_MERGE_USER_FALLBACK       0x20
500 #define MUI_UI_FALLBACK               MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK
501 #define MUI_MACHINE_LANGUAGE_SETTINGS 0x400
502 #endif /* (WINVER >= 0x0600) */
503 
504 #ifndef RC_INVOKED
505 typedef DWORD LCTYPE;
506 typedef DWORD CALTYPE;
507 typedef DWORD CALID;
508 typedef DWORD LGRPID;
509 typedef DWORD GEOID;
510 typedef DWORD GEOTYPE;
511 typedef DWORD GEOCLASS;
512 typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXEX)(LPWSTR, CALID, LPWSTR, LPARAM);
513 typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXEX)(LPWSTR, CALID, LPARAM);
514 typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCEX)(LPWSTR, LPARAM);
515 typedef BOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
516 typedef BOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
517 typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXA)(LPSTR, CALID);
518 typedef BOOL (CALLBACK *CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
519 typedef BOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
520 typedef BOOL (CALLBACK *LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
521 typedef BOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
522 typedef BOOL (CALLBACK *LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
523 typedef BOOL (CALLBACK *UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
524 typedef BOOL (CALLBACK *UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
525 typedef BOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
526 typedef BOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
527 typedef BOOL (CALLBACK *LOCALE_ENUMPROCEX)(LPWSTR, DWORD, LPARAM);
528 typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
529 typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
530 typedef BOOL (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR);
531 typedef BOOL (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR);
532 typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
533 typedef BOOL (CALLBACK *DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
534 typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR);
535 typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR);
536 typedef BOOL (CALLBACK *GEO_ENUMPROC)(GEOID);
537 
538 enum NLS_FUNCTION {
539 	COMPARE_STRING = 0x0001
540 };
541 typedef enum NLS_FUNCTION NLS_FUNCTION;
542 enum SYSGEOCLASS {
543 	GEOCLASS_NATION = 16,
544 	GEOCLASS_REGION = 14
545 };
546 
547 /* Geographic Information types */
548 enum SYSGEOTYPE
549 {
550     GEO_NATION = 1,
551     GEO_LATITUDE,
552     GEO_LONGITUDE,
553     GEO_ISO2,
554     GEO_ISO3,
555     GEO_RFC1766,
556     GEO_LCID,
557     GEO_FRIENDLYNAME,
558     GEO_OFFICIALNAME,
559     GEO_TIMEZONES,
560     GEO_OFFICIALLANGUAGES,
561     GEO_ISO_UN_NUMBER,
562     GEO_PARENT,
563     GEO_DIALINGCODE,
564     GEO_CURRENCYCODE,
565     GEO_CURRENCYSYMBOL
566 };
567 
568 typedef struct _cpinfo {
569 	UINT MaxCharSize;
570 	BYTE DefaultChar[MAX_DEFAULTCHAR];
571 	BYTE LeadByte[MAX_LEADBYTES];
572 } CPINFO,*LPCPINFO;
573 typedef struct _cpinfoexA {
574 	UINT MaxCharSize;
575 	BYTE DefaultChar[MAX_DEFAULTCHAR];
576 	BYTE LeadByte[MAX_LEADBYTES];
577 	WCHAR UnicodeDefaultChar;
578 	UINT CodePage;
579 	CHAR CodePageName[MAX_PATH];
580 } CPINFOEXA,*LPCPINFOEXA;
581 typedef struct _cpinfoexW {
582 	UINT MaxCharSize;
583 	BYTE DefaultChar[MAX_DEFAULTCHAR];
584 	BYTE LeadByte[MAX_LEADBYTES];
585 	WCHAR UnicodeDefaultChar;
586 	UINT CodePage;
587 	WCHAR CodePageName[MAX_PATH];
588 } CPINFOEXW,*LPCPINFOEXW;
589 typedef struct _currencyfmtA {
590 	UINT NumDigits;
591 	UINT LeadingZero;
592 	UINT Grouping;
593 	LPSTR lpDecimalSep;
594 	LPSTR lpThousandSep;
595 	UINT NegativeOrder;
596 	UINT PositiveOrder;
597 	LPSTR lpCurrencySymbol;
598 } CURRENCYFMTA,*LPCURRENCYFMTA;
599 typedef struct _currencyfmtW {
600 	UINT NumDigits;
601 	UINT LeadingZero;
602 	UINT Grouping;
603 	LPWSTR lpDecimalSep;
604 	LPWSTR lpThousandSep;
605 	UINT NegativeOrder;
606 	UINT PositiveOrder;
607 	LPWSTR lpCurrencySymbol;
608 } CURRENCYFMTW,*LPCURRENCYFMTW;
609 typedef struct nlsversioninfo {
610 	DWORD dwNLSVersionInfoSize;
611 	DWORD dwNLSVersion;
612 	DWORD dwDefinedVersion;
613 } NLSVERSIONINFO,*LPNLSVERSIONINFO;
614 typedef struct _numberfmtA {
615 	UINT NumDigits;
616 	UINT LeadingZero;
617 	UINT Grouping;
618 	LPSTR lpDecimalSep;
619 	LPSTR lpThousandSep;
620 	UINT NegativeOrder;
621 } NUMBERFMTA,*LPNUMBERFMTA;
622 typedef struct _numberfmtW {
623 	UINT NumDigits;
624 	UINT LeadingZero;
625 	UINT Grouping;
626 	LPWSTR lpDecimalSep;
627 	LPWSTR lpThousandSep;
628 	UINT NegativeOrder;
629 } NUMBERFMTW,*LPNUMBERFMTW;
630 #if (WINVER >= 0x0600)
631 typedef enum _NORM_FORM {
632 	NormalizationOther = 0,
633 	NormalizationC = 0x1,
634 	NormalizationD = 0x2,
635 	NormalizationKC = 0x5,
636 	NormalizationKD = 0x6
637 } NORM_FORM;
638 #endif /* (WINVER >= 0x0600) */
639 typedef struct _FILEMUIINFO {
640     DWORD dwSize;
641     DWORD dwVersion;
642     DWORD dwFileType;
643     BYTE pChecksum[16];
644     BYTE pServiceChecksum[16];
645     DWORD dwLanguageNameOffset;
646     DWORD dwTypeIDMainSize;
647     DWORD dwTypeIDMainOffset;
648     DWORD dwTypeNameMainOffset;
649     DWORD dwTypeIDMUISize;
650     DWORD dwTypeIDMUIOffset;
651     DWORD dwTypeNameMUIOffset;
652     BYTE abBuffer[8];
653 } FILEMUIINFO, *PFILEMUIINFO;
654 
655 #define HIGH_SURROGATE_START 0xd800
656 #define HIGH_SURROGATE_END   0xdbff
657 #define LOW_SURROGATE_START  0xdc00
658 #define LOW_SURROGATE_END    0xdfff
659 
660 #define IS_HIGH_SURROGATE(ch) ((ch) >= HIGH_SURROGATE_START && (ch) <= HIGH_SURROGATE_END)
661 #define IS_LOW_SURROGATE(ch) ((ch) >= LOW_SURROGATE_START  && (ch) <= LOW_SURROGATE_END)
662 #define IS_SURROGATE_PAIR(high,low) (IS_HIGH_SURROGATE(high) && IS_LOW_SURROGATE(low))
663 
664 int
665 WINAPI
666 CompareStringA(
667   _In_ LCID Locale,
668   _In_ DWORD dwCmpFlags,
669   _In_reads_(cchCount1) LPCSTR lpString1,
670   _In_ int cchCount1,
671   _In_reads_(cchCount2) LPCSTR lpString2,
672   _In_ int cchCount2);
673 
674 int
675 WINAPI
676 CompareStringW(
677   _In_ LCID Locale,
678   _In_ DWORD dwCmpFlags,
679   _In_reads_(cchCount1) LPCWSTR lpString1,
680   _In_ int cchCount1,
681   _In_reads_(cchCount2) LPCWSTR lpString2,
682   _In_ int cchCount2);
683 
684 LCID WINAPI ConvertDefaultLocale(_In_ LCID);
685 BOOL WINAPI EnumCalendarInfoA(_In_ CALINFO_ENUMPROCA, _In_ LCID, _In_ CALID, _In_ CALTYPE);
686 BOOL WINAPI EnumCalendarInfoW(_In_ CALINFO_ENUMPROCW, _In_ LCID, _In_ CALID, _In_ CALTYPE);
687 BOOL WINAPI EnumDateFormatsA(_In_ DATEFMT_ENUMPROCA, _In_ LCID, _In_ DWORD);
688 BOOL WINAPI EnumDateFormatsW(_In_ DATEFMT_ENUMPROCW, _In_ LCID, _In_ DWORD);
689 BOOL WINAPI EnumSystemCodePagesA(_In_ CODEPAGE_ENUMPROCA, _In_ DWORD);
690 BOOL WINAPI EnumSystemCodePagesW(_In_ CODEPAGE_ENUMPROCW, _In_ DWORD);
691 BOOL WINAPI EnumSystemGeoID(_In_ GEOCLASS, _In_ GEOID, _In_ GEO_ENUMPROC);
692 BOOL WINAPI EnumSystemLocalesA(_In_ LOCALE_ENUMPROCA, _In_ DWORD);
693 BOOL WINAPI EnumSystemLocalesW(_In_ LOCALE_ENUMPROCW, _In_ DWORD);
694 BOOL WINAPI EnumTimeFormatsA(_In_ TIMEFMT_ENUMPROCA, _In_ LCID, _In_ DWORD);
695 BOOL WINAPI EnumTimeFormatsW(_In_ TIMEFMT_ENUMPROCW, _In_ LCID, _In_ DWORD);
696 
697 int
698 WINAPI
699 FoldStringA(
700   _In_ DWORD dwMapFlags,
701   _In_reads_(cchSrc) LPCSTR lpSrcStr,
702   _In_ int cchSrc,
703   _Out_writes_opt_(cchDest) LPSTR lpDestStr,
704   _In_ int cchDest);
705 
706 int
707 WINAPI
708 FoldStringW(
709   _In_ DWORD dwMapFlags,
710   _In_reads_(cchSrc) LPCWSTR lpSrcStr,
711   _In_ int cchSrc,
712   _Out_writes_opt_(cchDest) LPWSTR lpDestStr,
713   _In_ int cchDest);
714 
715 UINT WINAPI GetACP(void);
716 
717 int
718 WINAPI
719 GetCalendarInfoA(
720   _In_ LCID Locale,
721   _In_ CALID Calendar,
722   _In_ CALTYPE CalType,
723   _Out_writes_opt_(cchData) LPSTR lpCalData,
724   _In_ int cchData,
725   _Out_opt_ LPDWORD lpValue);
726 
727 int
728 WINAPI
729 GetCalendarInfoW(
730   _In_ LCID Locale,
731   _In_ CALID Calendar,
732   _In_ CALTYPE CalType,
733   _Out_writes_opt_(cchData) LPWSTR lpCalData,
734   _In_ int cchData,
735   _Out_opt_ LPDWORD lpValue);
736 
737 BOOL WINAPI GetCPInfo(_In_ UINT, _Out_ LPCPINFO);
738 BOOL WINAPI GetCPInfoExA(_In_ UINT, _In_ DWORD, _Out_ LPCPINFOEXA);
739 BOOL WINAPI GetCPInfoExW(_In_ UINT, _In_ DWORD, _Out_ LPCPINFOEXW);
740 
741 int
742 WINAPI
743 GetCurrencyFormatA(
744   _In_ LCID Locale,
745   _In_ DWORD dwFlags,
746   _In_ LPCSTR lpValue,
747   _In_opt_ const CURRENCYFMTA *lpFormat,
748   _Out_writes_opt_(cchCurrency) LPSTR lpCurrencyStr,
749   _In_ int cchCurrency);
750 
751 int
752 WINAPI
753 GetCurrencyFormatW(
754   _In_ LCID Locale,
755   _In_ DWORD dwFlags,
756   _In_ LPCWSTR lpValue,
757   _In_opt_ const CURRENCYFMTW *lpFormat,
758   _Out_writes_opt_(cchCurrency) LPWSTR lpCurrencyStr,
759   _In_ int cchCurrency);
760 
761 int WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
762 int WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
763 
764 int
765 WINAPI
766 GetGeoInfoA(
767   _In_ GEOID Location,
768   _In_ GEOTYPE GeoType,
769   _Out_writes_opt_(cchData) LPSTR lpGeoData,
770   _In_ int cchData,
771   _In_ LANGID LangId);
772 
773 int
774 WINAPI
775 GetGeoInfoW(
776   _In_ GEOID Location,
777   _In_ GEOTYPE GeoType,
778   _Out_writes_opt_(cchData) LPWSTR lpGeoData,
779   _In_ int cchData,
780   _In_ LANGID LangId);
781 
782 int
783 WINAPI
784 GetLocaleInfoA(
785   _In_ LCID Locale,
786   _In_ LCTYPE LCType,
787   _Out_writes_opt_(cchData) LPSTR lpLCData,
788   _In_ int cchData);
789 
790 int
791 WINAPI
792 GetLocaleInfoW(
793   _In_ LCID Locale,
794   _In_ LCTYPE LCType,
795   _Out_writes_opt_(cchData) LPWSTR lpLCData,
796   _In_ int cchData);
797 
798 BOOL WINAPI GetNLSVersion(_In_ NLS_FUNCTION, _In_ LCID, _Inout_ LPNLSVERSIONINFO);
799 
800 int
801 WINAPI
802 GetNumberFormatA(
803   _In_ LCID Locale,
804   _In_ DWORD dwFlags,
805   _In_ LPCSTR lpValue,
806   _In_opt_ const NUMBERFMTA *lpFormat,
807   _Out_writes_opt_(cchNumber) LPSTR lpNumberStr,
808   _In_ int cchNumber);
809 
810 int
811 WINAPI
812 GetNumberFormatW(
813   _In_ LCID Locale,
814   _In_ DWORD dwFlags,
815   _In_ LPCWSTR lpValue,
816   _In_opt_ const NUMBERFMTW *lpFormat,
817   _Out_writes_opt_(cchNumber) LPWSTR lpNumberStr,
818   _In_ int cchNumber);
819 
820 UINT WINAPI GetOEMCP(void);
821 
822 BOOL
823 WINAPI
824 GetStringTypeA(
825   _In_ LCID Locale,
826   _In_ DWORD dwInfoType,
827   _In_reads_(cchSrc) LPCSTR lpSrcStr,
828   _In_ int cchSrc,
829   _Out_ LPWORD lpCharType);
830 
831 BOOL
832 WINAPI
833 GetStringTypeW(
834   _In_ DWORD dwInfoType,
835   _In_reads_(cchSrc) LPCWSTR lpSrcStr,
836   _In_ int cchSrc,
837   _Out_ LPWORD lpCharType);
838 
839 BOOL
840 WINAPI
841 GetStringTypeExA(
842   _In_ LCID Locale,
843   _In_ DWORD dwInfoType,
844   _In_reads_(cchSrc) LPCSTR lpSrcStr,
845   _In_ int cchSrc,
846   _Out_writes_(cchSrc) LPWORD lpCharType);
847 
848 BOOL
849 WINAPI
850 GetStringTypeExW(
851   _In_ LCID Locale,
852   _In_ DWORD dwInfoType,
853   _In_reads_(cchSrc) LPCWSTR lpSrcStr,
854   _In_ int cchSrc,
855   _Out_writes_(cchSrc) LPWORD lpCharType);
856 
857 LANGID WINAPI GetSystemDefaultLangID(void);
858 LCID WINAPI GetSystemDefaultLCID(void);
859 LCID WINAPI GetThreadLocale(void);
860 int WINAPI GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
861 int WINAPI GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
862 LANGID WINAPI GetUserDefaultLangID(void);
863 LCID WINAPI GetUserDefaultLCID(void);
864 GEOID WINAPI GetUserGeoID(_In_ GEOCLASS);
865 
866 #if (WINVER >= 0x0600)
867 
868 int
869 WINAPI
870 IdnToAscii(
871   _In_ DWORD dwFlags,
872   _In_reads_(cchUnicodeChar) LPCWSTR lpUnicodeCharStr,
873   _In_ int cchUnicodeChar,
874   _Out_writes_opt_(cchASCIIChar) LPWSTR lpASCIICharStr,
875   _In_ int cchASCIIChar);
876 
877 int
878 WINAPI
879 IdnToUnicode(
880   _In_ DWORD dwFlags,
881   _In_reads_(cchASCIIChar) LPCWSTR lpASCIICharStr,
882   _In_ int cchASCIIChar,
883   _Out_writes_opt_(cchUnicodeChar) LPWSTR lpUnicodeCharStr,
884   _In_ int cchUnicodeChar);
885 
886 #endif /* WINVER >= 0x0600 */
887 
888 BOOL WINAPI IsDBCSLeadByte(_In_ BYTE);
889 BOOL WINAPI IsDBCSLeadByteEx(_In_ UINT, _In_ BYTE);
890 
891 BOOL
892 WINAPI
893 IsNLSDefinedString(
894   _In_ NLS_FUNCTION Function,
895   _In_ DWORD dwFlags,
896   _In_ LPNLSVERSIONINFO lpVersionInformation,
897   _In_reads_(cchStr) LPCWSTR lpString,
898   _In_ int cchStr);
899 
900 BOOL WINAPI IsValidCodePage(_In_ UINT);
901 BOOL WINAPI IsValidLocale(_In_ LCID, _In_ DWORD);
902 
903 int
904 WINAPI
905 LCMapStringA(
906   _In_ LCID Locale,
907   _In_ DWORD dwMapFlags,
908   _In_reads_(cchSrc) LPCSTR lpSrcStr,
909   _In_ int cchSrc,
910   _Out_writes_opt_(_Inexpressible_(cchDest)) LPSTR lpDestStr,
911   _In_ int cchDest);
912 
913 int
914 WINAPI
915 LCMapStringW(
916   _In_ LCID Locale,
917   _In_ DWORD dwMapFlags,
918   _In_reads_(cchSrc) LPCWSTR lpSrcStr,
919   _In_ int cchSrc,
920   _Out_writes_opt_(_Inexpressible_(cchDest)) LPWSTR lpDestStr,
921   _In_ int cchDest);
922 
923 int WINAPI MultiByteToWideChar(UINT,DWORD,LPCSTR,int,LPWSTR,int);
924 int WINAPI SetCalendarInfoA(_In_ LCID, _In_ CALID, _In_ CALTYPE, _In_ LPCSTR);
925 int WINAPI SetCalendarInfoW(_In_ LCID, _In_ CALID, _In_ CALTYPE, _In_ LPCWSTR);
926 BOOL WINAPI SetLocaleInfoA(_In_ LCID, _In_ LCTYPE, _In_ LPCSTR);
927 BOOL WINAPI SetLocaleInfoW(_In_ LCID, _In_ LCTYPE, _In_ LPCWSTR);
928 BOOL WINAPI SetThreadLocale(_In_ LCID);
929 LANGID WINAPI SetThreadUILanguage(_In_ LANGID);
930 BOOL WINAPI SetUserDefaultLCID(LCID);
931 BOOL WINAPI SetUserDefaultUILanguage(LANGID);
932 BOOL WINAPI SetUserGeoID(_In_ GEOID);
933 int WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
934 #if (WINVER >= 0x0500)
935 BOOL WINAPI EnumCalendarInfoExA(_In_ CALINFO_ENUMPROCEXA, _In_ LCID, _In_ CALID, _In_ CALTYPE);
936 BOOL WINAPI EnumCalendarInfoExW(_In_ CALINFO_ENUMPROCEXW, _In_ LCID, _In_ CALID, _In_ CALTYPE);
937 BOOL WINAPI EnumDateFormatsExA(_In_ DATEFMT_ENUMPROCEXA, _In_ LCID, _In_ DWORD);
938 BOOL WINAPI EnumDateFormatsExW(_In_ DATEFMT_ENUMPROCEXW, _In_ LCID, _In_ DWORD);
939 BOOL WINAPI EnumSystemLanguageGroupsA(_In_ LANGUAGEGROUP_ENUMPROCA, _In_ DWORD, _In_ LONG_PTR);
940 BOOL WINAPI EnumSystemLanguageGroupsW(_In_ LANGUAGEGROUP_ENUMPROCW, _In_ DWORD, _In_ LONG_PTR);
941 BOOL WINAPI EnumLanguageGroupLocalesA(_In_ LANGGROUPLOCALE_ENUMPROCA, _In_ LGRPID, _In_ DWORD, _In_ LONG_PTR);
942 BOOL WINAPI EnumLanguageGroupLocalesW(_In_ LANGGROUPLOCALE_ENUMPROCW, _In_ LGRPID, _In_ DWORD, _In_ LONG_PTR);
943 BOOL WINAPI EnumUILanguagesA(_In_ UILANGUAGE_ENUMPROCA, _In_ DWORD, _In_ LONG_PTR);
944 BOOL WINAPI EnumUILanguagesW(_In_ UILANGUAGE_ENUMPROCW, _In_ DWORD, _In_ LONG_PTR);
945 LANGID WINAPI GetSystemDefaultUILanguage(void);
946 LANGID WINAPI GetUserDefaultUILanguage(void);
947 BOOL WINAPI IsValidLanguageGroup(_In_ LGRPID, _In_ DWORD);
948 #endif /* (WINVER >= 0x0500) */
949 
950 #if (WINVER >= 0x0600)
951 
952 _Success_(return != FALSE)
953 BOOL
954 WINAPI
955 GetFileMUIInfo(
956   _In_ DWORD dwFlags,
957   _In_ PCWSTR pcwszFilePath,
958   _Inout_updates_bytes_to_opt_(*pcbFileMUIInfo, *pcbFileMUIInfo) PFILEMUIINFO pFileMUIInfo,
959   _Inout_ DWORD *pcbFileMUIInfo);
960 
961 BOOL
962 WINAPI
963 GetFileMUIPath(
964   _In_ DWORD dwFlags,
965   _In_ PCWSTR pcwszFilePath,
966   _Inout_updates_opt_(*pcchLanguage) PWSTR pwszLanguage,
967   _Inout_ PULONG pcchLanguage,
968   _Out_writes_opt_(*pcchFileMUIPath) PWSTR pwszFileMUIPath,
969   _Inout_ PULONG pcchFileMUIPath,
970   _Inout_ PULONGLONG pululEnumerator);
971 
972 WINBASEAPI
973 int
974 WINAPI
975 GetLocaleInfoEx(
976   _In_opt_ LPCWSTR lpLocaleName,
977   _In_ LCTYPE LCType,
978   _Out_writes_opt_(cchData) LPWSTR lpLCData,
979   _In_ int cchData);
980 
981 BOOL
982 WINAPI
983 GetProcessPreferredUILanguages(
984   _In_ DWORD dwFlags,
985   _Out_ PULONG pulNumLanguages,
986   _Out_writes_opt_(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer,
987   _Inout_ PULONG pcchLanguagesBuffer);
988 
989 BOOL
990 WINAPI
991 GetSystemPreferredUILanguages(
992   _In_ DWORD dwFlags,
993   _Out_ PULONG pulNumLanguages,
994   _Out_writes_opt_(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer,
995   _Inout_ PULONG pcchLanguagesBuffer);
996 
997 BOOL
998 WINAPI
999 GetThreadPreferredUILanguages(
1000   _In_ DWORD dwFlags,
1001   _Out_ PULONG pulNumLanguages,
1002   _Out_writes_opt_(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer,
1003   _Inout_ PULONG pcchLanguagesBuffer);
1004 
1005 LANGID WINAPI GetThreadUILanguage(void);
1006 
1007 BOOL
1008 WINAPI
1009 GetUILanguageInfo(
1010   _In_ DWORD dwFlags,
1011   _In_ PCZZWSTR pwmszLanguage,
1012   _Out_writes_opt_(*pcchFallbackLanguages) PZZWSTR pwszFallbackLanguages,
1013   _Inout_opt_ PDWORD pcchFallbackLanguages,
1014   _Out_ PDWORD pAttributes);
1015 
1016 BOOL
1017 WINAPI
1018 GetUserPreferredUILanguages(
1019   _In_ DWORD dwFlags,
1020   _Out_ PULONG pulNumLanguages,
1021   _Out_writes_opt_(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer,
1022   _Inout_ PULONG pcchLanguagesBuffer);
1023 
1024 int
1025 WINAPI
1026 IdnToAscii(
1027   _In_ DWORD dwFlags,
1028   _In_reads_(cchUnicodeChar) LPCWSTR lpUnicodeCharStr,
1029   _In_ int cchUnicodeChar,
1030   _Out_writes_opt_(cchASCIIChar) LPWSTR lpASCIICharStr,
1031   _In_ int cchASCIIChar);
1032 
1033 int
1034 WINAPI
1035 IdnToNameprepUnicode(
1036   _In_ DWORD dwFlags,
1037   _In_reads_(cchUnicodeChar) LPCWSTR lpUnicodeCharStr,
1038   _In_ int cchUnicodeChar,
1039   _Out_writes_opt_(cchNameprepChar) LPWSTR lpNameprepCharStr,
1040   _In_ int cchNameprepChar);
1041 
1042 int
1043 WINAPI
1044 IdnToUnicode(
1045   _In_ DWORD dwFlags,
1046   _In_reads_(cchASCIIChar) LPCWSTR lpASCIICharStr,
1047   _In_ int cchASCIIChar,
1048   _Out_writes_opt_(cchUnicodeChar) LPWSTR lpUnicodeCharStr,
1049   _In_ int cchUnicodeChar);
1050 
1051 BOOL
1052 WINAPI
1053 IsNormalizedString(
1054   _In_ NORM_FORM NormForm,
1055   _In_reads_(cwLength) LPCWSTR lpString,
1056   _In_ int cwLength);
1057 
1058 int
1059 WINAPI
1060 NormalizeString(
1061   _In_ NORM_FORM NormForm,
1062   _In_reads_(cwSrcLength) LPCWSTR lpSrcString,
1063   _In_ int cwSrcLength,
1064   _Out_writes_opt_(cwDstLength) LPWSTR lpDstString,
1065   _In_ int cwDstLength);
1066 
1067 int
1068 WINAPI
1069 GetStringScripts(
1070   _In_ DWORD dwFlags,
1071   _In_ LPCWSTR lpString,
1072   _In_ int cchString,
1073   _Out_writes_opt_(cchScripts) LPWSTR lpScripts,
1074   _In_ int cchScripts);
1075 
1076 BOOL WINAPI SetProcessPreferredUILanguages(_In_ DWORD, _In_opt_ PCZZWSTR, _Out_opt_ PULONG);
1077 BOOL WINAPI SetThreadPreferredUILanguages(_In_ DWORD, _In_opt_ PCZZWSTR, _Out_opt_ PULONG);
1078 BOOL WINAPI VerifyScripts(_In_ DWORD, _In_ LPCWSTR, _In_ int, _In_ LPCWSTR, _In_ int);
1079 
1080 #endif /* (WINVER >= 0x0600) */
1081 
1082 #ifdef UNICODE
1083 #define CALINFO_ENUMPROC CALINFO_ENUMPROCW
1084 #define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
1085 #define LOCALE_ENUMPROC LOCALE_ENUMPROCW
1086 #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
1087 #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
1088 #define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
1089 #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
1090 #define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
1091 #define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
1092 #define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
1093 typedef CPINFOEXW CPINFOEX;
1094 typedef LPCPINFOEXW LPCPINFOEX;
1095 typedef CURRENCYFMTW CURRENCYFMT;
1096 typedef LPCURRENCYFMTW LPCURRENCYFMT;
1097 typedef NUMBERFMTW NUMBERFMT;
1098 typedef LPNUMBERFMTW LPNUMBERFMT;
1099 #define CompareString CompareStringW
1100 #define EnumCalendarInfo EnumCalendarInfoW
1101 #define EnumDateFormats EnumDateFormatsW
1102 #define EnumSystemCodePages EnumSystemCodePagesW
1103 #define EnumSystemLocales EnumSystemLocalesW
1104 #define EnumTimeFormats EnumTimeFormatsW
1105 #define FoldString FoldStringW
1106 #define GetCalendarInfo GetCalendarInfoW
1107 #define GetCPInfoEx GetCPInfoExW
1108 #define GetCurrencyFormat GetCurrencyFormatW
1109 #define GetDateFormat GetDateFormatW
1110 #define GetGeoInfo GetGeoInfoW
1111 #define GetLocaleInfo GetLocaleInfoW
1112 #define GetNumberFormat GetNumberFormatW
1113 #define GetStringTypeEx GetStringTypeExW
1114 #define GetTimeFormat GetTimeFormatW
1115 #define LCMapString LCMapStringW
1116 #define SetCalendarInfo  SetCalendarInfoW
1117 #define SetLocaleInfo SetLocaleInfoW
1118 #if (WINVER >= 0x0500)
1119 #define EnumCalendarInfoEx EnumCalendarInfoExW
1120 #define EnumDateFormatsEx EnumDateFormatsExW
1121 #define EnumSystemLanguageGroups EnumSystemLanguageGroupsW
1122 #define EnumLanguageGroupLocales EnumLanguageGroupLocalesW
1123 #define EnumUILanguages EnumUILanguagesW
1124 #endif /* (WINVER >= 0x0500) */
1125 #else
1126 #define CALINFO_ENUMPROC CALINFO_ENUMPROCA
1127 #define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
1128 #define LOCALE_ENUMPROC LOCALE_ENUMPROCA
1129 #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
1130 #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
1131 #define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
1132 #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
1133 #define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
1134 #define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
1135 #define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
1136 typedef CPINFOEXA CPINFOEX;
1137 typedef LPCPINFOEXA LPCPINFOEX;
1138 typedef CURRENCYFMTA CURRENCYFMT;
1139 typedef LPCURRENCYFMTA LPCURRENCYFMT;
1140 typedef NUMBERFMTA NUMBERFMT;
1141 typedef LPNUMBERFMTA LPNUMBERFMT;
1142 #define CompareString CompareStringA
1143 #define EnumCalendarInfo EnumCalendarInfoA
1144 #define EnumDateFormats EnumDateFormatsA
1145 #define EnumSystemCodePages EnumSystemCodePagesA
1146 #define EnumSystemLocales EnumSystemLocalesA
1147 #define EnumTimeFormats EnumTimeFormatsA
1148 #define FoldString FoldStringA
1149 #define GetCalendarInfo GetCalendarInfoA
1150 #define GetCPInfoEx GetCPInfoExA
1151 #define GetCurrencyFormat GetCurrencyFormatA
1152 #define GetDateFormat GetDateFormatA
1153 #define GetGeoInfo GetGeoInfoA
1154 #define GetLocaleInfo GetLocaleInfoA
1155 #define GetNumberFormat GetNumberFormatA
1156 #define GetStringTypeEx GetStringTypeExA
1157 #define GetTimeFormat GetTimeFormatA
1158 #define LCMapString LCMapStringA
1159 #define SetCalendarInfo SetCalendarInfoA
1160 #define SetLocaleInfo SetLocaleInfoA
1161 #if (WINVER >= 0x0500)
1162 #define EnumCalendarInfoEx EnumCalendarInfoExA
1163 #define EnumDateFormatsEx EnumDateFormatsExA
1164 #define EnumSystemLanguageGroups EnumSystemLanguageGroupsA
1165 #define EnumLanguageGroupLocales EnumLanguageGroupLocalesA
1166 #define EnumUILanguages EnumUILanguagesA
1167 #endif /* (WINVER >= 0x0500) */
1168 #endif /* UNICODE */
1169 #endif /* RC_INVOKED */
1170 
1171 #ifdef _MSC_VER
1172 #pragma warning(pop)
1173 #endif
1174 
1175 #ifdef __cplusplus
1176 }
1177 #endif
1178 #endif
1179