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