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