1 // Copyright © 2015-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! Procedure declarations, constant definitions, and macros for the NLS component.
8 use ctypes::c_int;
9 use shared::basetsd::LONG_PTR;
10 use shared::guiddef::GUID;
11 use shared::minwindef::{
12     BOOL, BYTE, DWORD, INT, LPARAM, LPDWORD, LPINT, LPVOID, LPWORD, MAX_PATH, PDWORD, PULONG,
13     UINT,
14 };
15 use um::minwinbase::SYSTEMTIME;
16 use um::winnt::{
17     CHAR, LANGID, LCID, LONG, LPCSTR, LPCWCH, LPCWSTR, LPSTR, LPWSTR, PCNZCH, PCNZWCH, PCWSTR,
18     PCZZWSTR, PULONGLONG, PWSTR, PZZWSTR, ULONGLONG, WCHAR,
19 };
20 pub const MAX_LEADBYTES: usize = 12;
21 pub const MAX_DEFAULTCHAR: usize = 2;
22 pub const MB_PRECOMPOSED: DWORD = 0x00000001;
23 pub const MB_COMPOSITE: DWORD = 0x00000002;
24 pub const MB_USEGLYPHCHARS: DWORD = 0x00000004;
25 pub const MB_ERR_INVALID_CHARS: DWORD = 0x00000008;
26 pub const WC_COMPOSITECHECK: DWORD = 0x00000200;
27 pub const WC_DISCARDNS: DWORD = 0x00000010;
28 pub const WC_SEPCHARS: DWORD = 0x00000020;
29 pub const WC_DEFAULTCHAR: DWORD = 0x00000040;
30 pub const WC_ERR_INVALID_CHARS: DWORD = 0x00000080;
31 pub const WC_NO_BEST_FIT_CHARS: DWORD = 0x00000400;
32 pub const CP_ACP: DWORD = 0;
33 pub const CP_OEMCP: DWORD = 1;
34 pub const CP_MACCP: DWORD = 2;
35 pub const CP_THREAD_ACP: DWORD = 3;
36 pub const CP_SYMBOL: DWORD = 42;
37 pub const CP_UTF7: DWORD = 65000;
38 pub const CP_UTF8: DWORD = 65001;
39 pub type LGRPID = DWORD;
40 pub type LCTYPE = DWORD;
41 pub type CALTYPE = DWORD;
42 pub type CALID = DWORD;
43 STRUCT!{struct CPINFO {
44     MaxCharSize: UINT,
45     DefaultChar: [BYTE; MAX_DEFAULTCHAR],
46     LeadByte: [BYTE; MAX_LEADBYTES],
47 }}
48 pub type LPCPINFO = *mut CPINFO;
49 STRUCT!{struct CPINFOEXA {
50     MaxCharSize: UINT,
51     DefaultChar: [BYTE; MAX_DEFAULTCHAR],
52     LeadByte: [BYTE; MAX_LEADBYTES],
53     UnicodeDefaultChar: WCHAR,
54     CodePage: UINT,
55     CodePageName: [CHAR; MAX_PATH],
56 }}
57 pub type LPCPINFOEXA = *mut CPINFOEXA;
58 STRUCT!{struct CPINFOEXW {
59     MaxCharSize: UINT,
60     DefaultChar: [BYTE; MAX_DEFAULTCHAR],
61     LeadByte: [BYTE; MAX_LEADBYTES],
62     UnicodeDefaultChar: WCHAR,
63     CodePage: UINT,
64     CodePageName: [WCHAR; MAX_PATH],
65 }}
66 pub type LPCPINFOEXW = *mut CPINFOEXW;
67 STRUCT!{struct NUMBERFMTA {
68     NumDigits: UINT,
69     LeadingZero: UINT,
70     Grouping: UINT,
71     lpDecimalSep: LPSTR,
72     lpThousandSep: LPSTR,
73     NegativeOrder: UINT,
74 }}
75 pub type LPNUMBERFMTA = *mut NUMBERFMTA;
76 STRUCT!{struct NUMBERFMTW {
77     NumDigits: UINT,
78     LeadingZero: UINT,
79     Grouping: UINT,
80     lpDecimalSep: LPWSTR,
81     lpThousandSep: LPWSTR,
82     NegativeOrder: UINT,
83 }}
84 pub type LPNUMBERFMTW = *mut NUMBERFMTW;
85 STRUCT!{struct CURRENCYFMTA {
86     NumDigits: UINT,
87     LeadingZero: UINT,
88     Grouping: UINT,
89     lpDecimalSep: LPSTR,
90     lpThousandSep: LPSTR,
91     NegativeOrder: UINT,
92     PositiveOrder: UINT,
93     lpCurrencySymbol: LPSTR,
94 }}
95 pub type LPCURRENCYFMTA = *mut CURRENCYFMTA;
96 STRUCT!{struct CURRENCYFMTW {
97     NumDigits: UINT,
98     LeadingZero: UINT,
99     Grouping: UINT,
100     lpDecimalSep: LPWSTR,
101     lpThousandSep: LPWSTR,
102     NegativeOrder: UINT,
103     PositiveOrder: UINT,
104     lpCurrencySymbol: LPWSTR,
105 }}
106 pub type LPCURRENCYFMTW = *mut CURRENCYFMTW;
107 pub type NLS_FUNCTION = DWORD;
108 STRUCT!{struct NLSVERSIONINFO {
109     dwNLSVersionInfoSize: DWORD,
110     dwNLSVersion: DWORD,
111     dwDefinedVersion: DWORD,
112     dwEffectiveId: DWORD,
113     guidCustomVersion: GUID,
114 }}
115 pub type LPNLSVERSIONINFO = *mut NLSVERSIONINFO;
116 STRUCT!{struct NLSVERSIONINFOEX {
117     dwNLSVersionInfoSize: DWORD,
118     dwNLSVersion: DWORD,
119     dwDefinedVersion: DWORD,
120     dwEffectiveId: DWORD,
121     guidCustomVersion: GUID,
122 }}
123 pub type LPNLSVERSIONINFOEX = *mut NLSVERSIONINFOEX;
124 pub type GEOID = LONG;
125 pub type GEOTYPE = DWORD;
126 pub type GEOCLASS = DWORD;
127 ENUM!{enum NORM_FORM {
128     NormalizationOther = 0,
129     NormalizationC = 0x1,
130     NormalizationD = 0x2,
131     NormalizationKC = 0x5,
132     NormalizationKD = 0x6,
133 }}
134 FN!{stdcall LANGUAGEGROUP_ENUMPROCA(
135     LGRPID,
136     LPSTR,
137     LPSTR,
138     DWORD,
139     LONG_PTR,
140 ) -> BOOL}
141 FN!{stdcall LANGGROUPLOCALE_ENUMPROCA(
142     LGRPID,
143     LCID,
144     LPSTR,
145     LONG_PTR,
146 ) -> BOOL}
147 FN!{stdcall UILANGUAGE_ENUMPROCA(
148     LPSTR,
149     LONG_PTR,
150 ) -> BOOL}
151 FN!{stdcall CODEPAGE_ENUMPROCA(
152     LPSTR,
153 ) -> BOOL}
154 FN!{stdcall DATEFMT_ENUMPROCA(
155     LPSTR,
156 ) -> BOOL}
157 FN!{stdcall DATEFMT_ENUMPROCEXA(
158     LPSTR,
159     CALID,
160 ) -> BOOL}
161 FN!{stdcall TIMEFMT_ENUMPROCA(
162     LPSTR,
163 ) -> BOOL}
164 FN!{stdcall CALINFO_ENUMPROCA(
165     LPSTR,
166 ) -> BOOL}
167 FN!{stdcall CALINFO_ENUMPROCEXA(
168     LPSTR,
169     CALID,
170 ) -> BOOL}
171 FN!{stdcall LOCALE_ENUMPROCA(
172     LPSTR,
173 ) -> BOOL}
174 FN!{stdcall LOCALE_ENUMPROCW(
175     LPWSTR,
176 ) -> BOOL}
177 FN!{stdcall LANGUAGEGROUP_ENUMPROCW(
178     LGRPID,
179     LPWSTR,
180     LPWSTR,
181     DWORD,
182     LONG_PTR,
183 ) -> BOOL}
184 FN!{stdcall LANGGROUPLOCALE_ENUMPROCW(
185     LGRPID,
186     LCID,
187     LPWSTR,
188     LONG_PTR,
189 ) -> BOOL}
190 FN!{stdcall UILANGUAGE_ENUMPROCW(
191     LPWSTR,
192     LONG_PTR,
193 ) -> BOOL}
194 FN!{stdcall CODEPAGE_ENUMPROCW(
195     LPWSTR,
196 ) -> BOOL}
197 FN!{stdcall DATEFMT_ENUMPROCW(
198     LPWSTR,
199 ) -> BOOL}
200 FN!{stdcall DATEFMT_ENUMPROCEXW(
201     LPWSTR,
202     CALID,
203 ) -> BOOL}
204 FN!{stdcall TIMEFMT_ENUMPROCW(
205     LPWSTR,
206 ) -> BOOL}
207 FN!{stdcall CALINFO_ENUMPROCW(
208     LPWSTR,
209 ) -> BOOL}
210 FN!{stdcall CALINFO_ENUMPROCEXW(
211     LPWSTR,
212     CALID,
213 ) -> BOOL}
214 FN!{stdcall GEO_ENUMPROC(
215     GEOID,
216 ) -> BOOL}
217 STRUCT!{struct FILEMUIINFO {
218     dwSize: DWORD,
219     dwVersion: DWORD,
220     dwFileType: DWORD,
221     pChecksum: [BYTE; 16],
222     pServiceChecksum: [BYTE; 16],
223     dwLanguageNameOffset: DWORD,
224     dwTypeIDMainSize: DWORD,
225     dwTypeIDMainOffset: DWORD,
226     dwTypeNameMainOffset: DWORD,
227     dwTypeIDMUISize: DWORD,
228     dwTypeIDMUIOffset: DWORD,
229     dwTypeNameMUIOffset: DWORD,
230     abBuffer: [BYTE; 8],
231 }}
232 pub type PFILEMUIINFO = *mut FILEMUIINFO;
233 FN!{stdcall CALINFO_ENUMPROCEXEX(
234     LPWSTR,
235     CALID,
236     LPWSTR,
237     LPARAM,
238 ) -> BOOL}
239 FN!{stdcall DATEFMT_ENUMPROCEXEX(
240     LPWSTR,
241     CALID,
242     LPARAM,
243 ) -> BOOL}
244 FN!{stdcall TIMEFMT_ENUMPROCEX(
245     LPWSTR,
246     LPARAM,
247 ) -> BOOL}
248 FN!{stdcall LOCALE_ENUMPROCEX(
249     LPWSTR,
250     DWORD,
251     LPARAM,
252 ) -> BOOL}
253 extern "system" {
CompareStringA( Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZCH, cchCount1: c_int, lpString2: PCNZCH, cchCount2: c_int, ) -> c_int254     pub fn CompareStringA(
255         Locale: LCID,
256         dwCmpFlags: DWORD,
257         lpString1: PCNZCH,
258         cchCount1: c_int,
259         lpString2: PCNZCH,
260         cchCount2: c_int,
261     ) -> c_int;
CompareStringEx( lpLocaleName: LPCWSTR, dwCmpFlags: DWORD, lpString1: LPCWCH, cchCount1: c_int, lpString2: LPCWCH, cchCount2: c_int, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, lParam: LPARAM, ) -> c_int262     pub fn CompareStringEx(
263         lpLocaleName: LPCWSTR,
264         dwCmpFlags: DWORD,
265         lpString1: LPCWCH,
266         cchCount1: c_int,
267         lpString2: LPCWCH,
268         cchCount2: c_int,
269         lpVersionInformation: LPNLSVERSIONINFO,
270         lpReserved: LPVOID,
271         lParam: LPARAM,
272     ) -> c_int;
CompareStringW( Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZWCH, cchCount1: c_int, lpString2: PCNZWCH, cchCount2: c_int, ) -> c_int273     pub fn CompareStringW(
274         Locale: LCID,
275         dwCmpFlags: DWORD,
276         lpString1: PCNZWCH,
277         cchCount1: c_int,
278         lpString2: PCNZWCH,
279         cchCount2: c_int,
280     ) -> c_int;
ConvertDefaultLocale(Locale: LCID) -> LCID281     pub fn ConvertDefaultLocale(Locale: LCID) -> LCID;
EnumCalendarInfoA( lpCalInfoEnumProc: CALINFO_ENUMPROCA, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL282     pub fn EnumCalendarInfoA(
283         lpCalInfoEnumProc: CALINFO_ENUMPROCA,
284         Locale: LCID,
285         Calendar: CALID,
286         CalType: CALTYPE,
287     ) -> BOOL;
EnumCalendarInfoExA( lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL288     pub fn EnumCalendarInfoExA(
289         lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA,
290         Locale: LCID,
291         Calendar: CALID,
292         CalType: CALTYPE,
293     ) -> BOOL;
EnumCalendarInfoExEx( pCalInfoEnumProcExEx: CALINFO_ENUMPROCEXEX, lpLocaleName: LPCWSTR, Calendar: CALID, lpReserved: LPCWSTR, CalType: CALTYPE, lParam: LPARAM, ) -> BOOL294     pub fn EnumCalendarInfoExEx(
295         pCalInfoEnumProcExEx: CALINFO_ENUMPROCEXEX,
296         lpLocaleName: LPCWSTR,
297         Calendar: CALID,
298         lpReserved: LPCWSTR,
299         CalType: CALTYPE,
300         lParam: LPARAM,
301     ) -> BOOL;
EnumCalendarInfoExW( lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL302     pub fn EnumCalendarInfoExW(
303         lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW,
304         Locale: LCID,
305         Calendar: CALID,
306         CalType: CALTYPE,
307     ) -> BOOL;
EnumCalendarInfoW( lpCalInfoEnumProc: CALINFO_ENUMPROCW, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL308     pub fn EnumCalendarInfoW(
309         lpCalInfoEnumProc: CALINFO_ENUMPROCW,
310         Locale: LCID,
311         Calendar: CALID,
312         CalType: CALTYPE,
313     ) -> BOOL;
EnumDateFormatsA( lpDateFmtEnumProc: DATEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD, ) -> BOOL314     pub fn EnumDateFormatsA(
315         lpDateFmtEnumProc: DATEFMT_ENUMPROCA,
316         Locale: LCID,
317         dwFlags: DWORD,
318     ) -> BOOL;
EnumDateFormatsExA( lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA, Locale: LCID, dwFlags: DWORD, ) -> BOOL319     pub fn EnumDateFormatsExA(
320         lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA,
321         Locale: LCID,
322         dwFlags: DWORD,
323     ) -> BOOL;
EnumDateFormatsExEx( lpDateFmtEnumProcExEx: DATEFMT_ENUMPROCEXEX, lpLocaleName: LPCWSTR, dwFlags: DWORD, lParam: LPARAM, ) -> BOOL324     pub fn EnumDateFormatsExEx(
325         lpDateFmtEnumProcExEx: DATEFMT_ENUMPROCEXEX,
326         lpLocaleName: LPCWSTR,
327         dwFlags: DWORD,
328         lParam: LPARAM,
329     ) -> BOOL;
EnumDateFormatsExW( lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW, Locale: LCID, dwFlags: DWORD, ) -> BOOL330     pub fn EnumDateFormatsExW(
331         lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW,
332         Locale: LCID,
333         dwFlags: DWORD,
334     ) -> BOOL;
EnumDateFormatsW( lpDateFmtEnumProc: DATEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD, ) -> BOOL335     pub fn EnumDateFormatsW(
336         lpDateFmtEnumProc: DATEFMT_ENUMPROCW,
337         Locale: LCID,
338         dwFlags: DWORD,
339     ) -> BOOL;
EnumLanguageGroupLocalesA( lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL340     pub fn EnumLanguageGroupLocalesA(
341         lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA,
342         LanguageGroup: LGRPID,
343         dwFlags: DWORD,
344         lParam: LONG_PTR,
345     ) -> BOOL;
EnumLanguageGroupLocalesW( lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL346     pub fn EnumLanguageGroupLocalesW(
347         lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW,
348         LanguageGroup: LGRPID,
349         dwFlags: DWORD,
350         lParam: LONG_PTR,
351     ) -> BOOL;
EnumSystemCodePagesA( lpCodePageEnumProc: CODEPAGE_ENUMPROCA, dwFlags: DWORD, ) -> BOOL352     pub fn EnumSystemCodePagesA(
353         lpCodePageEnumProc: CODEPAGE_ENUMPROCA,
354         dwFlags: DWORD,
355     ) -> BOOL;
EnumSystemCodePagesW( lpCodePageEnumProc: CODEPAGE_ENUMPROCW, dwFlags: DWORD, ) -> BOOL356     pub fn EnumSystemCodePagesW(
357         lpCodePageEnumProc: CODEPAGE_ENUMPROCW,
358         dwFlags: DWORD,
359     ) -> BOOL;
EnumSystemGeoID( GeoClass: GEOCLASS, ParentGeoId: GEOID, lpGeoEnumProc: GEO_ENUMPROC, ) -> BOOL360     pub fn EnumSystemGeoID(
361         GeoClass: GEOCLASS,
362         ParentGeoId: GEOID,
363         lpGeoEnumProc: GEO_ENUMPROC,
364     ) -> BOOL;
EnumSystemLanguageGroupsA( lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL365     pub fn EnumSystemLanguageGroupsA(
366         lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA,
367         dwFlags: DWORD,
368         lParam: LONG_PTR,
369     ) -> BOOL;
EnumSystemLanguageGroupsW( lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL370     pub fn EnumSystemLanguageGroupsW(
371         lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW,
372         dwFlags: DWORD,
373         lParam: LONG_PTR,
374     ) -> BOOL;
EnumSystemLocalesA( lpLocaleEnumProc: LOCALE_ENUMPROCA, dwFlags: DWORD, ) -> BOOL375     pub fn EnumSystemLocalesA(
376         lpLocaleEnumProc: LOCALE_ENUMPROCA,
377         dwFlags: DWORD,
378     ) -> BOOL;
EnumSystemLocalesEx( lpLocaleEnumProcEx: LOCALE_ENUMPROCEX, dwFlags: DWORD, lParam: LPARAM, lpReserved: LPVOID, ) -> BOOL379     pub fn EnumSystemLocalesEx(
380         lpLocaleEnumProcEx: LOCALE_ENUMPROCEX,
381         dwFlags: DWORD,
382         lParam: LPARAM,
383         lpReserved: LPVOID,
384     ) -> BOOL;
EnumSystemLocalesW( lpLocaleEnumProc: LOCALE_ENUMPROCW, dwFlags: DWORD, ) -> BOOL385     pub fn EnumSystemLocalesW(
386         lpLocaleEnumProc: LOCALE_ENUMPROCW,
387         dwFlags: DWORD,
388     ) -> BOOL;
EnumTimeFormatsA( lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD, ) -> BOOL389     pub fn EnumTimeFormatsA(
390         lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA,
391         Locale: LCID,
392         dwFlags: DWORD,
393     ) -> BOOL;
EnumTimeFormatsEx( lpTimeFmtEnumProcEx: TIMEFMT_ENUMPROCEX, lpLocaleName: LPCWSTR, dwFlags: DWORD, lParam: LPARAM, ) -> BOOL394     pub fn EnumTimeFormatsEx(
395         lpTimeFmtEnumProcEx: TIMEFMT_ENUMPROCEX,
396         lpLocaleName: LPCWSTR,
397         dwFlags: DWORD,
398         lParam: LPARAM,
399     ) -> BOOL;
EnumTimeFormatsW( lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD, ) -> BOOL400     pub fn EnumTimeFormatsW(
401         lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW,
402         Locale: LCID,
403         dwFlags: DWORD,
404     ) -> BOOL;
EnumUILanguagesA( lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL405     pub fn EnumUILanguagesA(
406         lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA,
407         dwFlags: DWORD,
408         lParam: LONG_PTR,
409     ) -> BOOL;
EnumUILanguagesW( lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL410     pub fn EnumUILanguagesW(
411         lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW,
412         dwFlags: DWORD,
413         lParam: LONG_PTR,
414     ) -> BOOL;
FindNLSString( Locale: LCID, dwFindNLSStringFlags: DWORD, lpStringSource: LPCWSTR, cchSource: c_int, lpStringValue: LPCWSTR, cchValue: c_int, pcchFound: LPINT, ) -> c_int415     pub fn FindNLSString(
416         Locale: LCID,
417         dwFindNLSStringFlags: DWORD,
418         lpStringSource: LPCWSTR,
419         cchSource: c_int,
420         lpStringValue: LPCWSTR,
421         cchValue: c_int,
422         pcchFound: LPINT,
423     ) -> c_int;
FindNLSStringEx( lpLocaleName: LPCWSTR, dwFindNLSStringFlags: DWORD, lpStringSource: LPCWSTR, cchSource: c_int, lpStringValue: LPCWSTR, cchValue: c_int, pcchFound: LPINT, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, sortHandle: LPARAM, ) -> c_int424     pub fn FindNLSStringEx(
425         lpLocaleName: LPCWSTR,
426         dwFindNLSStringFlags: DWORD,
427         lpStringSource: LPCWSTR,
428         cchSource: c_int,
429         lpStringValue: LPCWSTR,
430         cchValue: c_int,
431         pcchFound: LPINT,
432         lpVersionInformation: LPNLSVERSIONINFO,
433         lpReserved: LPVOID,
434         sortHandle: LPARAM,
435     ) -> c_int;
FoldStringA( dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpDestStr: LPSTR, cchDest: c_int, ) -> c_int436     pub fn FoldStringA(
437         dwMapFlags: DWORD,
438         lpSrcStr: LPCSTR,
439         cchSrc: c_int,
440         lpDestStr: LPSTR,
441         cchDest: c_int,
442     ) -> c_int;
GetACP() -> UINT443     pub fn GetACP() -> UINT;
GetCPInfo( CodePage: UINT, lpCPInfo: LPCPINFO, ) -> BOOL444     pub fn GetCPInfo(
445         CodePage: UINT,
446         lpCPInfo: LPCPINFO,
447     ) -> BOOL;
GetCPInfoExA( CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXA, ) -> BOOL448     pub fn GetCPInfoExA(
449         CodePage: UINT,
450         dwFlags: DWORD,
451         lpCPInfoEx: LPCPINFOEXA,
452     ) -> BOOL;
GetCPInfoExW( CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXW, ) -> BOOL453     pub fn GetCPInfoExW(
454         CodePage: UINT,
455         dwFlags: DWORD,
456         lpCPInfoEx: LPCPINFOEXW,
457     ) -> BOOL;
GetCalendarInfoA( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPSTR, cchData: c_int, lpValue: LPDWORD, ) -> c_int458     pub fn GetCalendarInfoA(
459         Locale: LCID,
460         Calendar: CALID,
461         CalType: CALTYPE,
462         lpCalData: LPSTR,
463         cchData: c_int,
464         lpValue: LPDWORD,
465     ) -> c_int;
GetCalendarInfoEx( lpLocaleName: LPCWSTR, Calendar: CALID, lpReserved: LPCWSTR, CalType: CALTYPE, lpCalData: LPWSTR, cchData: c_int, lpValue: LPDWORD, ) -> c_int466     pub fn GetCalendarInfoEx(
467         lpLocaleName: LPCWSTR,
468         Calendar: CALID,
469         lpReserved: LPCWSTR,
470         CalType: CALTYPE,
471         lpCalData: LPWSTR,
472         cchData: c_int,
473         lpValue: LPDWORD,
474     ) -> c_int;
GetCalendarInfoW( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPWSTR, cchData: c_int, lpValue: LPDWORD, ) -> c_int475     pub fn GetCalendarInfoW(
476         Locale: LCID,
477         Calendar: CALID,
478         CalType: CALTYPE,
479         lpCalData: LPWSTR,
480         cchData: c_int,
481         lpValue: LPDWORD,
482     ) -> c_int;
GetCurrencyFormatA( Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: *const CURRENCYFMTA, lpCurrencyStr: LPSTR, cchCurrency: c_int, ) -> c_int483     pub fn GetCurrencyFormatA(
484         Locale: LCID,
485         dwFlags: DWORD,
486         lpValue: LPCSTR,
487         lpFormat: *const CURRENCYFMTA,
488         lpCurrencyStr: LPSTR,
489         cchCurrency: c_int,
490     ) -> c_int;
GetCurrencyFormatEx( lpLocaleName: LPCWSTR, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: c_int, ) -> c_int491     pub fn GetCurrencyFormatEx(
492         lpLocaleName: LPCWSTR,
493         dwFlags: DWORD,
494         lpValue: LPCWSTR,
495         lpFormat: *const CURRENCYFMTW,
496         lpCurrencyStr: LPWSTR,
497         cchCurrency: c_int,
498     ) -> c_int;
GetCurrencyFormatW( Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: c_int, ) -> c_int499     pub fn GetCurrencyFormatW(
500         Locale: LCID,
501         dwFlags: DWORD,
502         lpValue: LPCWSTR,
503         lpFormat: *const CURRENCYFMTW,
504         lpCurrencyStr: LPWSTR,
505         cchCurrency: c_int,
506     ) -> c_int;
GetDurationFormat( Locale: LCID, dwFlags: DWORD, lpDuration: *const SYSTEMTIME, ullDuration: ULONGLONG, lpFormat: LPCWSTR, lpDurationStr: LPWSTR, cchDuration: c_int, ) -> c_int507     pub fn GetDurationFormat(
508         Locale: LCID,
509         dwFlags: DWORD,
510         lpDuration: *const SYSTEMTIME,
511         ullDuration: ULONGLONG,
512         lpFormat: LPCWSTR,
513         lpDurationStr: LPWSTR,
514         cchDuration: c_int,
515     ) -> c_int;
GetDurationFormatEx( lpLocaleName: LPCWSTR, dwFlags: DWORD, lpDuration: *const SYSTEMTIME, ullDuration: ULONGLONG, lpFormat: LPCWSTR, lpDurationStr: LPWSTR, cchDuration: c_int, ) -> c_int516     pub fn GetDurationFormatEx(
517         lpLocaleName: LPCWSTR,
518         dwFlags: DWORD,
519         lpDuration: *const SYSTEMTIME,
520         ullDuration: ULONGLONG,
521         lpFormat: LPCWSTR,
522         lpDurationStr: LPWSTR,
523         cchDuration: c_int,
524     ) -> c_int;
GetFileMUIInfo( dwFlags: DWORD, pcwszFilePath: PCWSTR, pFileMUIInfo: PFILEMUIINFO, pcbFileMUIInfo: *mut DWORD, ) -> BOOL525     pub fn GetFileMUIInfo(
526         dwFlags: DWORD,
527         pcwszFilePath: PCWSTR,
528         pFileMUIInfo: PFILEMUIINFO,
529         pcbFileMUIInfo: *mut DWORD,
530     ) -> BOOL;
GetFileMUIPath( dwFlags: DWORD, pcwszFilePath: PCWSTR, pwszLanguage: PWSTR, pcchLanguage: PULONG, pwszFileMUIPath: PWSTR, pcchFileMUIPath: PULONG, pululEnumerator: PULONGLONG, ) -> BOOL531     pub fn GetFileMUIPath(
532         dwFlags: DWORD,
533         pcwszFilePath: PCWSTR,
534         pwszLanguage: PWSTR,
535         pcchLanguage: PULONG,
536         pwszFileMUIPath: PWSTR,
537         pcchFileMUIPath: PULONG,
538         pululEnumerator: PULONGLONG,
539     ) -> BOOL;
GetGeoInfoA( Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPSTR, cchData: c_int, LangId: LANGID, ) -> c_int540     pub fn GetGeoInfoA(
541         Location: GEOID,
542         GeoType: GEOTYPE,
543         lpGeoData: LPSTR,
544         cchData: c_int,
545         LangId: LANGID,
546     ) -> c_int;
GetGeoInfoW( Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPWSTR, cchData: c_int, LangId: LANGID, ) -> c_int547     pub fn GetGeoInfoW(
548         Location: GEOID,
549         GeoType: GEOTYPE,
550         lpGeoData: LPWSTR,
551         cchData: c_int,
552         LangId: LANGID,
553     ) -> c_int;
GetLocaleInfoA( Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR, cchData: c_int, ) -> c_int554     pub fn GetLocaleInfoA(
555         Locale: LCID,
556         LCType: LCTYPE,
557         lpLCData: LPSTR,
558         cchData: c_int,
559     ) -> c_int;
GetLocaleInfoEx( lpLocaleName: LPCWSTR, LCType: LCTYPE, lpLCData: LPWSTR, cchData: c_int, ) -> c_int560     pub fn GetLocaleInfoEx(
561         lpLocaleName: LPCWSTR,
562         LCType: LCTYPE,
563         lpLCData: LPWSTR,
564         cchData: c_int,
565     ) -> c_int;
GetLocaleInfoW( Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR, cchData: c_int, ) -> c_int566     pub fn GetLocaleInfoW(
567         Locale: LCID,
568         LCType: LCTYPE,
569         lpLCData: LPWSTR,
570         cchData: c_int,
571     ) -> c_int;
GetNLSVersion( Function: NLS_FUNCTION, Locale: LCID, lpVersionInformation: LPNLSVERSIONINFO, ) -> BOOL572     pub fn GetNLSVersion(
573         Function: NLS_FUNCTION,
574         Locale: LCID,
575         lpVersionInformation: LPNLSVERSIONINFO,
576     ) -> BOOL;
GetNLSVersionEx( function: NLS_FUNCTION, lpLocaleName: LPCWSTR, lpVersionInformation: LPNLSVERSIONINFOEX, ) -> BOOL577     pub fn GetNLSVersionEx(
578         function: NLS_FUNCTION,
579         lpLocaleName: LPCWSTR,
580         lpVersionInformation: LPNLSVERSIONINFOEX,
581     ) -> BOOL;
GetNumberFormatA( Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: *const NUMBERFMTA, lpNumberStr: LPSTR, cchNumber: c_int, ) -> c_int582     pub fn GetNumberFormatA(
583         Locale: LCID,
584         dwFlags: DWORD,
585         lpValue: LPCSTR,
586         lpFormat: *const NUMBERFMTA,
587         lpNumberStr: LPSTR,
588         cchNumber: c_int,
589     ) -> c_int;
GetNumberFormatEx( lpLocaleName: LPCWSTR, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: c_int, ) -> c_int590     pub fn GetNumberFormatEx(
591         lpLocaleName: LPCWSTR,
592         dwFlags: DWORD,
593         lpValue: LPCWSTR,
594         lpFormat: *const NUMBERFMTW,
595         lpNumberStr: LPWSTR,
596         cchNumber: c_int,
597     ) -> c_int;
GetNumberFormatW( Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: c_int, ) -> c_int598     pub fn GetNumberFormatW(
599         Locale: LCID,
600         dwFlags: DWORD,
601         lpValue: LPCWSTR,
602         lpFormat: *const NUMBERFMTW,
603         lpNumberStr: LPWSTR,
604         cchNumber: c_int,
605     ) -> c_int;
GetOEMCP() -> UINT606     pub fn GetOEMCP() -> UINT;
GetProcessPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL607     pub fn GetProcessPreferredUILanguages(
608         dwFlags: DWORD,
609         pulNumLanguages: PULONG,
610         pwszLanguagesBuffer: PZZWSTR,
611         pcchLanguagesBuffer: PULONG,
612     ) -> BOOL;
GetStringScripts( dwFlags: DWORD, lpString: LPCWSTR, cchString: c_int, lpScripts: LPWSTR, cchScripts: c_int, ) -> c_int613     pub fn GetStringScripts(
614         dwFlags: DWORD,
615         lpString: LPCWSTR,
616         cchString: c_int,
617         lpScripts: LPWSTR,
618         cchScripts: c_int,
619     ) -> c_int;
GetStringTypeA( Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpCharType: LPWORD, ) -> BOOL620     pub fn GetStringTypeA(
621         Locale: LCID,
622         dwInfoType: DWORD,
623         lpSrcStr: LPCSTR,
624         cchSrc: c_int,
625         lpCharType: LPWORD,
626     ) -> BOOL;
GetStringTypeExA( Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpCharType: LPWORD, ) -> BOOL627     pub fn GetStringTypeExA(
628         Locale: LCID,
629         dwInfoType: DWORD,
630         lpSrcStr: LPCSTR,
631         cchSrc: c_int,
632         lpCharType: LPWORD,
633     ) -> BOOL;
GetStringTypeW( dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: c_int, lpCharType: LPWORD, ) -> BOOL634     pub fn GetStringTypeW(
635         dwInfoType: DWORD,
636         lpSrcStr: LPCWCH,
637         cchSrc: c_int,
638         lpCharType: LPWORD,
639     ) -> BOOL;
GetSystemDefaultLCID() -> LCID640     pub fn GetSystemDefaultLCID() -> LCID;
GetSystemDefaultLangID() -> LANGID641     pub fn GetSystemDefaultLangID() -> LANGID;
GetSystemDefaultLocaleName( lpLocaleName: LPWSTR, cchLocaleName: c_int, ) -> c_int642     pub fn GetSystemDefaultLocaleName(
643         lpLocaleName: LPWSTR,
644         cchLocaleName: c_int,
645     ) -> c_int;
GetSystemDefaultUILanguage() -> LANGID646     pub fn GetSystemDefaultUILanguage() -> LANGID;
GetSystemPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL647     pub fn GetSystemPreferredUILanguages(
648         dwFlags: DWORD,
649         pulNumLanguages: PULONG,
650         pwszLanguagesBuffer: PZZWSTR,
651         pcchLanguagesBuffer: PULONG,
652     ) -> BOOL;
GetThreadLocale() -> LCID653     pub fn GetThreadLocale() -> LCID;
GetThreadPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL654     pub fn GetThreadPreferredUILanguages(
655         dwFlags: DWORD,
656         pulNumLanguages: PULONG,
657         pwszLanguagesBuffer: PZZWSTR,
658         pcchLanguagesBuffer: PULONG,
659     ) -> BOOL;
GetThreadUILanguage() -> LANGID660     pub fn GetThreadUILanguage() -> LANGID;
GetUILanguageInfo( dwFlags: DWORD, pwmszLanguage: PCZZWSTR, pwszFallbackLanguages: PZZWSTR, pcchFallbackLanguages: PDWORD, pAttributes: PDWORD, ) -> BOOL661     pub fn GetUILanguageInfo(
662         dwFlags: DWORD,
663         pwmszLanguage: PCZZWSTR,
664         pwszFallbackLanguages: PZZWSTR,
665         pcchFallbackLanguages: PDWORD,
666         pAttributes: PDWORD,
667     ) -> BOOL;
GetUserDefaultLCID() -> LCID668     pub fn GetUserDefaultLCID() -> LCID;
GetUserDefaultLangID() -> LANGID669     pub fn GetUserDefaultLangID() -> LANGID;
GetUserDefaultLocaleName( lpLocaleName: LPWSTR, cchLocaleName: c_int, ) -> c_int670     pub fn GetUserDefaultLocaleName(
671         lpLocaleName: LPWSTR,
672         cchLocaleName: c_int,
673     ) -> c_int;
GetUserDefaultUILanguage() -> LANGID674     pub fn GetUserDefaultUILanguage() -> LANGID;
GetUserGeoID(GeoClass: GEOCLASS) -> GEOID675     pub fn GetUserGeoID(GeoClass: GEOCLASS) -> GEOID;
GetUserPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL676     pub fn GetUserPreferredUILanguages(
677         dwFlags: DWORD,
678         pulNumLanguages: PULONG,
679         pwszLanguagesBuffer: PZZWSTR,
680         pcchLanguagesBuffer: PULONG,
681     ) -> BOOL;
IsDBCSLeadByte( TestChar: BYTE, ) -> BOOL682     pub fn IsDBCSLeadByte(
683         TestChar: BYTE,
684     ) -> BOOL;
IsDBCSLeadByteEx( CodePage: UINT, TestChar: BYTE, ) -> BOOL685     pub fn IsDBCSLeadByteEx(
686         CodePage: UINT,
687         TestChar: BYTE,
688     ) -> BOOL;
IsNLSDefinedString( Function: NLS_FUNCTION, dwFlags: DWORD, lpVersionInformation: LPNLSVERSIONINFO, lpString: LPCWSTR, cchStr: INT, ) -> BOOL689     pub fn IsNLSDefinedString(
690         Function: NLS_FUNCTION,
691         dwFlags: DWORD,
692         lpVersionInformation: LPNLSVERSIONINFO,
693         lpString: LPCWSTR,
694         cchStr: INT,
695     ) -> BOOL;
IsNormalizedString( NormForm: NORM_FORM, lpString: LPCWSTR, cwLength: c_int, ) -> BOOL696     pub fn IsNormalizedString(
697         NormForm: NORM_FORM,
698         lpString: LPCWSTR,
699         cwLength: c_int,
700     ) -> BOOL;
IsValidCodePage( CodePage: UINT, ) -> BOOL701     pub fn IsValidCodePage(
702         CodePage: UINT,
703     ) -> BOOL;
IsValidLanguageGroup( LanguageGroup: LGRPID, dwFlags: DWORD, ) -> BOOL704     pub fn IsValidLanguageGroup(
705         LanguageGroup: LGRPID,
706         dwFlags: DWORD,
707     ) -> BOOL;
IsValidLocale( Locale: LCID, dwFlags: DWORD, ) -> BOOL708     pub fn IsValidLocale(
709         Locale: LCID,
710         dwFlags: DWORD,
711     ) -> BOOL;
IsValidLocaleName( lpLocaleName: LPCWSTR, ) -> BOOL712     pub fn IsValidLocaleName(
713         lpLocaleName: LPCWSTR,
714     ) -> BOOL;
IsValidNLSVersion( function: NLS_FUNCTION, lpLocaleName: LPCWSTR, lpVersionInformation: LPNLSVERSIONINFOEX, ) -> BOOL715     pub fn IsValidNLSVersion(
716         function: NLS_FUNCTION,
717         lpLocaleName: LPCWSTR,
718         lpVersionInformation: LPNLSVERSIONINFOEX,
719     ) -> BOOL;
LCIDToLocaleName( Locale: LCID, lpName: LPWSTR, cchName: c_int, dwFlags: DWORD, ) -> c_int720     pub fn LCIDToLocaleName(
721         Locale: LCID,
722         lpName: LPWSTR,
723         cchName: c_int,
724         dwFlags: DWORD,
725     ) -> c_int;
LCMapStringA( Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpDestStr: LPSTR, cchDest: c_int, ) -> c_int726     pub fn LCMapStringA(
727         Locale: LCID,
728         dwMapFlags: DWORD,
729         lpSrcStr: LPCSTR,
730         cchSrc: c_int,
731         lpDestStr: LPSTR,
732         cchDest: c_int,
733     ) -> c_int;
LCMapStringEx( lpLocaleName: LPCWSTR, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: c_int, lpDestStr: LPWSTR, cchDest: c_int, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, sortHandle: LPARAM, ) -> c_int734     pub fn LCMapStringEx(
735         lpLocaleName: LPCWSTR,
736         dwMapFlags: DWORD,
737         lpSrcStr: LPCWSTR,
738         cchSrc: c_int,
739         lpDestStr: LPWSTR,
740         cchDest: c_int,
741         lpVersionInformation: LPNLSVERSIONINFO,
742         lpReserved: LPVOID,
743         sortHandle: LPARAM,
744     ) -> c_int;
LCMapStringW( Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: c_int, lpDestStr: LPWSTR, cchDest: c_int, ) -> c_int745     pub fn LCMapStringW(
746         Locale: LCID,
747         dwMapFlags: DWORD,
748         lpSrcStr: LPCWSTR,
749         cchSrc: c_int,
750         lpDestStr: LPWSTR,
751         cchDest: c_int,
752     ) -> c_int;
LocaleNameToLCID( lpName: LPCWSTR, dwFlags: DWORD, ) -> LCID753     pub fn LocaleNameToLCID(
754         lpName: LPCWSTR,
755         dwFlags: DWORD,
756     ) -> LCID;
NormalizeString( NormForm: NORM_FORM, lpSrcString: LPCWSTR, cwSrcLength: c_int, lpDstString: LPWSTR, cwDstLength: c_int, ) -> c_int757     pub fn NormalizeString(
758         NormForm: NORM_FORM,
759         lpSrcString: LPCWSTR,
760         cwSrcLength: c_int,
761         lpDstString: LPWSTR,
762         cwDstLength: c_int,
763     ) -> c_int;
NotifyUILanguageChange( dwFlags: DWORD, pcwstrNewLanguage: PCWSTR, pcwstrPreviousLanguage: PCWSTR, dwReserved: DWORD, pdwStatusRtrn: PDWORD, ) -> BOOL764     pub fn NotifyUILanguageChange(
765         dwFlags: DWORD,
766         pcwstrNewLanguage: PCWSTR,
767         pcwstrPreviousLanguage: PCWSTR,
768         dwReserved: DWORD,
769         pdwStatusRtrn: PDWORD,
770     ) -> BOOL;
ResolveLocaleName( lpNameToResolve: LPCWSTR, lpLocaleName: LPWSTR, cchLocaleName: c_int, ) -> c_int771     pub fn ResolveLocaleName(
772         lpNameToResolve: LPCWSTR,
773         lpLocaleName: LPWSTR,
774         cchLocaleName: c_int,
775     ) -> c_int;
SetCalendarInfoA( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCSTR, ) -> BOOL776     pub fn SetCalendarInfoA(
777         Locale: LCID,
778         Calendar: CALID,
779         CalType: CALTYPE,
780         lpCalData: LPCSTR,
781     ) -> BOOL;
SetCalendarInfoW( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCWSTR, ) -> BOOL782     pub fn SetCalendarInfoW(
783         Locale: LCID,
784         Calendar: CALID,
785         CalType: CALTYPE,
786         lpCalData: LPCWSTR,
787     ) -> BOOL;
SetLocaleInfoA( Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR, ) -> BOOL788     pub fn SetLocaleInfoA(
789         Locale: LCID,
790         LCType: LCTYPE,
791         lpLCData: LPCSTR,
792     ) -> BOOL;
SetLocaleInfoW( Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR, ) -> BOOL793     pub fn SetLocaleInfoW(
794         Locale: LCID,
795         LCType: LCTYPE,
796         lpLCData: LPCWSTR,
797     ) -> BOOL;
SetProcessPreferredUILanguages( dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG, ) -> BOOL798     pub fn SetProcessPreferredUILanguages(
799         dwFlags: DWORD,
800         pwszLanguagesBuffer: PCZZWSTR,
801         pulNumLanguages: PULONG,
802     ) -> BOOL;
SetThreadLocale(Locale: LCID) -> BOOL803     pub fn SetThreadLocale(Locale: LCID) -> BOOL;
SetThreadPreferredUILanguages( dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG, ) -> BOOL804     pub fn SetThreadPreferredUILanguages(
805         dwFlags: DWORD,
806         pwszLanguagesBuffer: PCZZWSTR,
807         pulNumLanguages: PULONG,
808     ) -> BOOL;
SetThreadUILanguage(LangId: LANGID) -> LANGID809     pub fn SetThreadUILanguage(LangId: LANGID) -> LANGID;
SetUserGeoID(GeoId: GEOID) -> BOOL810     pub fn SetUserGeoID(GeoId: GEOID) -> BOOL;
VerifyScripts( dwFlags: DWORD, lpLocaleScripts: LPCWSTR, cchLocaleScripts: c_int, lpTestScripts: LPCWSTR, cchTestScripts: c_int, ) -> BOOL811     pub fn VerifyScripts(
812         dwFlags: DWORD,
813         lpLocaleScripts: LPCWSTR,
814         cchLocaleScripts: c_int,
815         lpTestScripts: LPCWSTR,
816         cchTestScripts: c_int,
817     ) -> BOOL;
818 }
819