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