1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Procedure declarations, constant definitions, and macros for the NLS component.
7 use ctypes::c_int;
8 use shared::basetsd::LONG_PTR;
9 use shared::guiddef::GUID;
10 use shared::minwindef::{
11     BOOL, BYTE, DWORD, INT, LPARAM, LPDWORD, LPINT, LPVOID, LPWORD, MAX_PATH, PDWORD, PULONG,
12     UINT,
13 };
14 use um::minwinbase::SYSTEMTIME;
15 use um::winnt::{
16     CHAR, LANGID, LCID, LONG, LPCSTR, LPCWCH, LPCWSTR, LPSTR, LPWSTR, PCNZCH, PCNZWCH, PCWSTR,
17     PCZZWSTR, PULONGLONG, PWSTR, PZZWSTR, ULONGLONG, WCHAR,
18 };
19 pub const MAX_LEADBYTES: usize = 12;
20 pub const MAX_DEFAULTCHAR: usize = 2;
21 pub const MB_PRECOMPOSED: DWORD = 0x00000001;
22 pub const MB_COMPOSITE: DWORD = 0x00000002;
23 pub const MB_USEGLYPHCHARS: DWORD = 0x00000004;
24 pub const MB_ERR_INVALID_CHARS: DWORD = 0x00000008;
25 pub const WC_COMPOSITECHECK: DWORD = 0x00000200;
26 pub const WC_DISCARDNS: DWORD = 0x00000010;
27 pub const WC_SEPCHARS: DWORD = 0x00000020;
28 pub const WC_DEFAULTCHAR: DWORD = 0x00000040;
29 pub const WC_ERR_INVALID_CHARS: DWORD = 0x00000080;
30 pub const WC_NO_BEST_FIT_CHARS: DWORD = 0x00000400;
31 pub const CP_ACP: DWORD = 0;
32 pub const CP_OEMCP: DWORD = 1;
33 pub const CP_MACCP: DWORD = 2;
34 pub const CP_THREAD_ACP: DWORD = 3;
35 pub const CP_SYMBOL: DWORD = 42;
36 pub const CP_UTF7: DWORD = 65000;
37 pub const CP_UTF8: DWORD = 65001;
38 pub type LGRPID = DWORD;
39 pub type LCTYPE = DWORD;
40 pub type CALTYPE = DWORD;
41 pub type CALID = DWORD;
42 STRUCT!{struct CPINFO {
43     MaxCharSize: UINT,
44     DefaultChar: [BYTE; MAX_DEFAULTCHAR],
45     LeadByte: [BYTE; MAX_LEADBYTES],
46 }}
47 pub type LPCPINFO = *mut CPINFO;
48 STRUCT!{struct CPINFOEXA {
49     MaxCharSize: UINT,
50     DefaultChar: [BYTE; MAX_DEFAULTCHAR],
51     LeadByte: [BYTE; MAX_LEADBYTES],
52     UnicodeDefaultChar: WCHAR,
53     CodePage: UINT,
54     CodePageName: [CHAR; MAX_PATH],
55 }}
56 pub type LPCPINFOEXA = *mut CPINFOEXA;
57 STRUCT!{struct CPINFOEXW {
58     MaxCharSize: UINT,
59     DefaultChar: [BYTE; MAX_DEFAULTCHAR],
60     LeadByte: [BYTE; MAX_LEADBYTES],
61     UnicodeDefaultChar: WCHAR,
62     CodePage: UINT,
63     CodePageName: [WCHAR; MAX_PATH],
64 }}
65 pub type LPCPINFOEXW = *mut CPINFOEXW;
66 STRUCT!{struct NUMBERFMTA {
67     NumDigits: UINT,
68     LeadingZero: UINT,
69     Grouping: UINT,
70     lpDecimalSep: LPSTR,
71     lpThousandSep: LPSTR,
72     NegativeOrder: UINT,
73 }}
74 pub type LPNUMBERFMTA = *mut NUMBERFMTA;
75 STRUCT!{struct NUMBERFMTW {
76     NumDigits: UINT,
77     LeadingZero: UINT,
78     Grouping: UINT,
79     lpDecimalSep: LPWSTR,
80     lpThousandSep: LPWSTR,
81     NegativeOrder: UINT,
82 }}
83 pub type LPNUMBERFMTW = *mut NUMBERFMTW;
84 STRUCT!{struct CURRENCYFMTA {
85     NumDigits: UINT,
86     LeadingZero: UINT,
87     Grouping: UINT,
88     lpDecimalSep: LPSTR,
89     lpThousandSep: LPSTR,
90     NegativeOrder: UINT,
91     PositiveOrder: UINT,
92     lpCurrencySymbol: LPSTR,
93 }}
94 pub type LPCURRENCYFMTA = *mut CURRENCYFMTA;
95 STRUCT!{struct CURRENCYFMTW {
96     NumDigits: UINT,
97     LeadingZero: UINT,
98     Grouping: UINT,
99     lpDecimalSep: LPWSTR,
100     lpThousandSep: LPWSTR,
101     NegativeOrder: UINT,
102     PositiveOrder: UINT,
103     lpCurrencySymbol: LPWSTR,
104 }}
105 pub type LPCURRENCYFMTW = *mut CURRENCYFMTW;
106 pub type NLS_FUNCTION = DWORD;
107 STRUCT!{struct NLSVERSIONINFO {
108     dwNLSVersionInfoSize: DWORD,
109     dwNLSVersion: DWORD,
110     dwDefinedVersion: DWORD,
111     dwEffectiveId: DWORD,
112     guidCustomVersion: GUID,
113 }}
114 pub type LPNLSVERSIONINFO = *mut NLSVERSIONINFO;
115 STRUCT!{struct NLSVERSIONINFOEX {
116     dwNLSVersionInfoSize: DWORD,
117     dwNLSVersion: DWORD,
118     dwDefinedVersion: DWORD,
119     dwEffectiveId: DWORD,
120     guidCustomVersion: GUID,
121 }}
122 pub type LPNLSVERSIONINFOEX = *mut NLSVERSIONINFOEX;
123 pub type GEOID = LONG;
124 pub type GEOTYPE = DWORD;
125 pub type GEOCLASS = DWORD;
126 ENUM!{enum NORM_FORM {
127     NormalizationOther = 0,
128     NormalizationC = 0x1,
129     NormalizationD = 0x2,
130     NormalizationKC = 0x5,
131     NormalizationKD = 0x6,
132 }}
133 FN!{stdcall LANGUAGEGROUP_ENUMPROCA(
134     LGRPID,
135     LPSTR,
136     LPSTR,
137     DWORD,
138     LONG_PTR,
139 ) -> BOOL}
140 FN!{stdcall LANGGROUPLOCALE_ENUMPROCA(
141     LGRPID,
142     LCID,
143     LPSTR,
144     LONG_PTR,
145 ) -> BOOL}
146 FN!{stdcall UILANGUAGE_ENUMPROCA(
147     LPSTR,
148     LONG_PTR,
149 ) -> BOOL}
150 FN!{stdcall CODEPAGE_ENUMPROCA(
151     LPSTR,
152 ) -> BOOL}
153 FN!{stdcall DATEFMT_ENUMPROCA(
154     LPSTR,
155 ) -> BOOL}
156 FN!{stdcall DATEFMT_ENUMPROCEXA(
157     LPSTR,
158     CALID,
159 ) -> BOOL}
160 FN!{stdcall TIMEFMT_ENUMPROCA(
161     LPSTR,
162 ) -> BOOL}
163 FN!{stdcall CALINFO_ENUMPROCA(
164     LPSTR,
165 ) -> BOOL}
166 FN!{stdcall CALINFO_ENUMPROCEXA(
167     LPSTR,
168     CALID,
169 ) -> BOOL}
170 FN!{stdcall LOCALE_ENUMPROCA(
171     LPSTR,
172 ) -> BOOL}
173 FN!{stdcall LOCALE_ENUMPROCW(
174     LPWSTR,
175 ) -> BOOL}
176 FN!{stdcall LANGUAGEGROUP_ENUMPROCW(
177     LGRPID,
178     LPWSTR,
179     LPWSTR,
180     DWORD,
181     LONG_PTR,
182 ) -> BOOL}
183 FN!{stdcall LANGGROUPLOCALE_ENUMPROCW(
184     LGRPID,
185     LCID,
186     LPWSTR,
187     LONG_PTR,
188 ) -> BOOL}
189 FN!{stdcall UILANGUAGE_ENUMPROCW(
190     LPWSTR,
191     LONG_PTR,
192 ) -> BOOL}
193 FN!{stdcall CODEPAGE_ENUMPROCW(
194     LPWSTR,
195 ) -> BOOL}
196 FN!{stdcall DATEFMT_ENUMPROCW(
197     LPWSTR,
198 ) -> BOOL}
199 FN!{stdcall DATEFMT_ENUMPROCEXW(
200     LPWSTR,
201     CALID,
202 ) -> BOOL}
203 FN!{stdcall TIMEFMT_ENUMPROCW(
204     LPWSTR,
205 ) -> BOOL}
206 FN!{stdcall CALINFO_ENUMPROCW(
207     LPWSTR,
208 ) -> BOOL}
209 FN!{stdcall CALINFO_ENUMPROCEXW(
210     LPWSTR,
211     CALID,
212 ) -> BOOL}
213 FN!{stdcall GEO_ENUMPROC(
214     GEOID,
215 ) -> BOOL}
216 STRUCT!{struct FILEMUIINFO {
217     dwSize: DWORD,
218     dwVersion: DWORD,
219     dwFileType: DWORD,
220     pChecksum: [BYTE; 16],
221     pServiceChecksum: [BYTE; 16],
222     dwLanguageNameOffset: DWORD,
223     dwTypeIDMainSize: DWORD,
224     dwTypeIDMainOffset: DWORD,
225     dwTypeNameMainOffset: DWORD,
226     dwTypeIDMUISize: DWORD,
227     dwTypeIDMUIOffset: DWORD,
228     dwTypeNameMUIOffset: DWORD,
229     abBuffer: [BYTE; 8],
230 }}
231 pub type PFILEMUIINFO = *mut FILEMUIINFO;
232 FN!{stdcall CALINFO_ENUMPROCEXEX(
233     LPWSTR,
234     CALID,
235     LPWSTR,
236     LPARAM,
237 ) -> BOOL}
238 FN!{stdcall DATEFMT_ENUMPROCEXEX(
239     LPWSTR,
240     CALID,
241     LPARAM,
242 ) -> BOOL}
243 FN!{stdcall TIMEFMT_ENUMPROCEX(
244     LPWSTR,
245     LPARAM,
246 ) -> BOOL}
247 FN!{stdcall LOCALE_ENUMPROCEX(
248     LPWSTR,
249     DWORD,
250     LPARAM,
251 ) -> BOOL}
252 extern "system" {
CompareStringA( Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZCH, cchCount1: c_int, lpString2: PCNZCH, cchCount2: c_int, ) -> c_int253     pub fn CompareStringA(
254         Locale: LCID,
255         dwCmpFlags: DWORD,
256         lpString1: PCNZCH,
257         cchCount1: c_int,
258         lpString2: PCNZCH,
259         cchCount2: c_int,
260     ) -> c_int;
CompareStringEx( lpLocaleName: LPCWSTR, dwCmpFlags: DWORD, lpString1: LPCWCH, cchCount1: c_int, lpString2: LPCWCH, cchCount2: c_int, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, lParam: LPARAM, ) -> c_int261     pub fn CompareStringEx(
262         lpLocaleName: LPCWSTR,
263         dwCmpFlags: DWORD,
264         lpString1: LPCWCH,
265         cchCount1: c_int,
266         lpString2: LPCWCH,
267         cchCount2: c_int,
268         lpVersionInformation: LPNLSVERSIONINFO,
269         lpReserved: LPVOID,
270         lParam: LPARAM,
271     ) -> c_int;
CompareStringW( Locale: LCID, dwCmpFlags: DWORD, lpString1: PCNZWCH, cchCount1: c_int, lpString2: PCNZWCH, cchCount2: c_int, ) -> c_int272     pub fn CompareStringW(
273         Locale: LCID,
274         dwCmpFlags: DWORD,
275         lpString1: PCNZWCH,
276         cchCount1: c_int,
277         lpString2: PCNZWCH,
278         cchCount2: c_int,
279     ) -> c_int;
ConvertDefaultLocale(Locale: LCID) -> LCID280     pub fn ConvertDefaultLocale(Locale: LCID) -> LCID;
EnumCalendarInfoA( lpCalInfoEnumProc: CALINFO_ENUMPROCA, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL281     pub fn EnumCalendarInfoA(
282         lpCalInfoEnumProc: CALINFO_ENUMPROCA,
283         Locale: LCID,
284         Calendar: CALID,
285         CalType: CALTYPE,
286     ) -> BOOL;
EnumCalendarInfoExA( lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL287     pub fn EnumCalendarInfoExA(
288         lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA,
289         Locale: LCID,
290         Calendar: CALID,
291         CalType: CALTYPE,
292     ) -> BOOL;
EnumCalendarInfoExEx( pCalInfoEnumProcExEx: CALINFO_ENUMPROCEXEX, lpLocaleName: LPCWSTR, Calendar: CALID, lpReserved: LPCWSTR, CalType: CALTYPE, lParam: LPARAM, ) -> BOOL293     pub fn EnumCalendarInfoExEx(
294         pCalInfoEnumProcExEx: CALINFO_ENUMPROCEXEX,
295         lpLocaleName: LPCWSTR,
296         Calendar: CALID,
297         lpReserved: LPCWSTR,
298         CalType: CALTYPE,
299         lParam: LPARAM,
300     ) -> BOOL;
EnumCalendarInfoExW( lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL301     pub fn EnumCalendarInfoExW(
302         lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW,
303         Locale: LCID,
304         Calendar: CALID,
305         CalType: CALTYPE,
306     ) -> BOOL;
EnumCalendarInfoW( lpCalInfoEnumProc: CALINFO_ENUMPROCW, Locale: LCID, Calendar: CALID, CalType: CALTYPE, ) -> BOOL307     pub fn EnumCalendarInfoW(
308         lpCalInfoEnumProc: CALINFO_ENUMPROCW,
309         Locale: LCID,
310         Calendar: CALID,
311         CalType: CALTYPE,
312     ) -> BOOL;
EnumDateFormatsA( lpDateFmtEnumProc: DATEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD, ) -> BOOL313     pub fn EnumDateFormatsA(
314         lpDateFmtEnumProc: DATEFMT_ENUMPROCA,
315         Locale: LCID,
316         dwFlags: DWORD,
317     ) -> BOOL;
EnumDateFormatsExA( lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA, Locale: LCID, dwFlags: DWORD, ) -> BOOL318     pub fn EnumDateFormatsExA(
319         lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXA,
320         Locale: LCID,
321         dwFlags: DWORD,
322     ) -> BOOL;
EnumDateFormatsExEx( lpDateFmtEnumProcExEx: DATEFMT_ENUMPROCEXEX, lpLocaleName: LPCWSTR, dwFlags: DWORD, lParam: LPARAM, ) -> BOOL323     pub fn EnumDateFormatsExEx(
324         lpDateFmtEnumProcExEx: DATEFMT_ENUMPROCEXEX,
325         lpLocaleName: LPCWSTR,
326         dwFlags: DWORD,
327         lParam: LPARAM,
328     ) -> BOOL;
EnumDateFormatsExW( lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW, Locale: LCID, dwFlags: DWORD, ) -> BOOL329     pub fn EnumDateFormatsExW(
330         lpDateFmtEnumProcEx: DATEFMT_ENUMPROCEXW,
331         Locale: LCID,
332         dwFlags: DWORD,
333     ) -> BOOL;
EnumDateFormatsW( lpDateFmtEnumProc: DATEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD, ) -> BOOL334     pub fn EnumDateFormatsW(
335         lpDateFmtEnumProc: DATEFMT_ENUMPROCW,
336         Locale: LCID,
337         dwFlags: DWORD,
338     ) -> BOOL;
EnumLanguageGroupLocalesA( lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL339     pub fn EnumLanguageGroupLocalesA(
340         lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCA,
341         LanguageGroup: LGRPID,
342         dwFlags: DWORD,
343         lParam: LONG_PTR,
344     ) -> BOOL;
EnumLanguageGroupLocalesW( lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW, LanguageGroup: LGRPID, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL345     pub fn EnumLanguageGroupLocalesW(
346         lpLangGroupLocaleEnumProc: LANGGROUPLOCALE_ENUMPROCW,
347         LanguageGroup: LGRPID,
348         dwFlags: DWORD,
349         lParam: LONG_PTR,
350     ) -> BOOL;
EnumSystemCodePagesA( lpCodePageEnumProc: CODEPAGE_ENUMPROCA, dwFlags: DWORD, ) -> BOOL351     pub fn EnumSystemCodePagesA(
352         lpCodePageEnumProc: CODEPAGE_ENUMPROCA,
353         dwFlags: DWORD,
354     ) -> BOOL;
EnumSystemCodePagesW( lpCodePageEnumProc: CODEPAGE_ENUMPROCW, dwFlags: DWORD, ) -> BOOL355     pub fn EnumSystemCodePagesW(
356         lpCodePageEnumProc: CODEPAGE_ENUMPROCW,
357         dwFlags: DWORD,
358     ) -> BOOL;
EnumSystemGeoID( GeoClass: GEOCLASS, ParentGeoId: GEOID, lpGeoEnumProc: GEO_ENUMPROC, ) -> BOOL359     pub fn EnumSystemGeoID(
360         GeoClass: GEOCLASS,
361         ParentGeoId: GEOID,
362         lpGeoEnumProc: GEO_ENUMPROC,
363     ) -> BOOL;
EnumSystemLanguageGroupsA( lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL364     pub fn EnumSystemLanguageGroupsA(
365         lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCA,
366         dwFlags: DWORD,
367         lParam: LONG_PTR,
368     ) -> BOOL;
EnumSystemLanguageGroupsW( lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL369     pub fn EnumSystemLanguageGroupsW(
370         lpLanguageGroupEnumProc: LANGUAGEGROUP_ENUMPROCW,
371         dwFlags: DWORD,
372         lParam: LONG_PTR,
373     ) -> BOOL;
EnumSystemLocalesA( lpLocaleEnumProc: LOCALE_ENUMPROCA, dwFlags: DWORD, ) -> BOOL374     pub fn EnumSystemLocalesA(
375         lpLocaleEnumProc: LOCALE_ENUMPROCA,
376         dwFlags: DWORD,
377     ) -> BOOL;
EnumSystemLocalesEx( lpLocaleEnumProcEx: LOCALE_ENUMPROCEX, dwFlags: DWORD, lParam: LPARAM, lpReserved: LPVOID, ) -> BOOL378     pub fn EnumSystemLocalesEx(
379         lpLocaleEnumProcEx: LOCALE_ENUMPROCEX,
380         dwFlags: DWORD,
381         lParam: LPARAM,
382         lpReserved: LPVOID,
383     ) -> BOOL;
EnumSystemLocalesW( lpLocaleEnumProc: LOCALE_ENUMPROCW, dwFlags: DWORD, ) -> BOOL384     pub fn EnumSystemLocalesW(
385         lpLocaleEnumProc: LOCALE_ENUMPROCW,
386         dwFlags: DWORD,
387     ) -> BOOL;
EnumTimeFormatsA( lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA, Locale: LCID, dwFlags: DWORD, ) -> BOOL388     pub fn EnumTimeFormatsA(
389         lpTimeFmtEnumProc: TIMEFMT_ENUMPROCA,
390         Locale: LCID,
391         dwFlags: DWORD,
392     ) -> BOOL;
EnumTimeFormatsEx( lpTimeFmtEnumProcEx: TIMEFMT_ENUMPROCEX, lpLocaleName: LPCWSTR, dwFlags: DWORD, lParam: LPARAM, ) -> BOOL393     pub fn EnumTimeFormatsEx(
394         lpTimeFmtEnumProcEx: TIMEFMT_ENUMPROCEX,
395         lpLocaleName: LPCWSTR,
396         dwFlags: DWORD,
397         lParam: LPARAM,
398     ) -> BOOL;
EnumTimeFormatsW( lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW, Locale: LCID, dwFlags: DWORD, ) -> BOOL399     pub fn EnumTimeFormatsW(
400         lpTimeFmtEnumProc: TIMEFMT_ENUMPROCW,
401         Locale: LCID,
402         dwFlags: DWORD,
403     ) -> BOOL;
EnumUILanguagesA( lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL404     pub fn EnumUILanguagesA(
405         lpUILanguageEnumProc: UILANGUAGE_ENUMPROCA,
406         dwFlags: DWORD,
407         lParam: LONG_PTR,
408     ) -> BOOL;
EnumUILanguagesW( lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW, dwFlags: DWORD, lParam: LONG_PTR, ) -> BOOL409     pub fn EnumUILanguagesW(
410         lpUILanguageEnumProc: UILANGUAGE_ENUMPROCW,
411         dwFlags: DWORD,
412         lParam: LONG_PTR,
413     ) -> BOOL;
FindNLSString( Locale: LCID, dwFindNLSStringFlags: DWORD, lpStringSource: LPCWSTR, cchSource: c_int, lpStringValue: LPCWSTR, cchValue: c_int, pcchFound: LPINT, ) -> c_int414     pub fn FindNLSString(
415         Locale: LCID,
416         dwFindNLSStringFlags: DWORD,
417         lpStringSource: LPCWSTR,
418         cchSource: c_int,
419         lpStringValue: LPCWSTR,
420         cchValue: c_int,
421         pcchFound: LPINT,
422     ) -> 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_int423     pub fn FindNLSStringEx(
424         lpLocaleName: LPCWSTR,
425         dwFindNLSStringFlags: DWORD,
426         lpStringSource: LPCWSTR,
427         cchSource: c_int,
428         lpStringValue: LPCWSTR,
429         cchValue: c_int,
430         pcchFound: LPINT,
431         lpVersionInformation: LPNLSVERSIONINFO,
432         lpReserved: LPVOID,
433         sortHandle: LPARAM,
434     ) -> c_int;
FoldStringA( dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpDestStr: LPSTR, cchDest: c_int, ) -> c_int435     pub fn FoldStringA(
436         dwMapFlags: DWORD,
437         lpSrcStr: LPCSTR,
438         cchSrc: c_int,
439         lpDestStr: LPSTR,
440         cchDest: c_int,
441     ) -> c_int;
GetACP() -> UINT442     pub fn GetACP() -> UINT;
GetCPInfo( CodePage: UINT, lpCPInfo: LPCPINFO, ) -> BOOL443     pub fn GetCPInfo(
444         CodePage: UINT,
445         lpCPInfo: LPCPINFO,
446     ) -> BOOL;
GetCPInfoExA( CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXA, ) -> BOOL447     pub fn GetCPInfoExA(
448         CodePage: UINT,
449         dwFlags: DWORD,
450         lpCPInfoEx: LPCPINFOEXA,
451     ) -> BOOL;
GetCPInfoExW( CodePage: UINT, dwFlags: DWORD, lpCPInfoEx: LPCPINFOEXW, ) -> BOOL452     pub fn GetCPInfoExW(
453         CodePage: UINT,
454         dwFlags: DWORD,
455         lpCPInfoEx: LPCPINFOEXW,
456     ) -> BOOL;
GetCalendarInfoA( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPSTR, cchData: c_int, lpValue: LPDWORD, ) -> c_int457     pub fn GetCalendarInfoA(
458         Locale: LCID,
459         Calendar: CALID,
460         CalType: CALTYPE,
461         lpCalData: LPSTR,
462         cchData: c_int,
463         lpValue: LPDWORD,
464     ) -> c_int;
GetCalendarInfoEx( lpLocaleName: LPCWSTR, Calendar: CALID, lpReserved: LPCWSTR, CalType: CALTYPE, lpCalData: LPWSTR, cchData: c_int, lpValue: LPDWORD, ) -> c_int465     pub fn GetCalendarInfoEx(
466         lpLocaleName: LPCWSTR,
467         Calendar: CALID,
468         lpReserved: LPCWSTR,
469         CalType: CALTYPE,
470         lpCalData: LPWSTR,
471         cchData: c_int,
472         lpValue: LPDWORD,
473     ) -> c_int;
GetCalendarInfoW( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPWSTR, cchData: c_int, lpValue: LPDWORD, ) -> c_int474     pub fn GetCalendarInfoW(
475         Locale: LCID,
476         Calendar: CALID,
477         CalType: CALTYPE,
478         lpCalData: LPWSTR,
479         cchData: c_int,
480         lpValue: LPDWORD,
481     ) -> c_int;
GetCurrencyFormatA( Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: *const CURRENCYFMTA, lpCurrencyStr: LPSTR, cchCurrency: c_int, ) -> c_int482     pub fn GetCurrencyFormatA(
483         Locale: LCID,
484         dwFlags: DWORD,
485         lpValue: LPCSTR,
486         lpFormat: *const CURRENCYFMTA,
487         lpCurrencyStr: LPSTR,
488         cchCurrency: c_int,
489     ) -> c_int;
GetCurrencyFormatEx( lpLocaleName: LPCWSTR, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: c_int, ) -> c_int490     pub fn GetCurrencyFormatEx(
491         lpLocaleName: LPCWSTR,
492         dwFlags: DWORD,
493         lpValue: LPCWSTR,
494         lpFormat: *const CURRENCYFMTW,
495         lpCurrencyStr: LPWSTR,
496         cchCurrency: c_int,
497     ) -> c_int;
GetCurrencyFormatW( Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const CURRENCYFMTW, lpCurrencyStr: LPWSTR, cchCurrency: c_int, ) -> c_int498     pub fn GetCurrencyFormatW(
499         Locale: LCID,
500         dwFlags: DWORD,
501         lpValue: LPCWSTR,
502         lpFormat: *const CURRENCYFMTW,
503         lpCurrencyStr: LPWSTR,
504         cchCurrency: c_int,
505     ) -> c_int;
GetDurationFormat( Locale: LCID, dwFlags: DWORD, lpDuration: *const SYSTEMTIME, ullDuration: ULONGLONG, lpFormat: LPCWSTR, lpDurationStr: LPWSTR, cchDuration: c_int, ) -> c_int506     pub fn GetDurationFormat(
507         Locale: LCID,
508         dwFlags: DWORD,
509         lpDuration: *const SYSTEMTIME,
510         ullDuration: ULONGLONG,
511         lpFormat: LPCWSTR,
512         lpDurationStr: LPWSTR,
513         cchDuration: c_int,
514     ) -> c_int;
GetDurationFormatEx( lpLocaleName: LPCWSTR, dwFlags: DWORD, lpDuration: *const SYSTEMTIME, ullDuration: ULONGLONG, lpFormat: LPCWSTR, lpDurationStr: LPWSTR, cchDuration: c_int, ) -> c_int515     pub fn GetDurationFormatEx(
516         lpLocaleName: LPCWSTR,
517         dwFlags: DWORD,
518         lpDuration: *const SYSTEMTIME,
519         ullDuration: ULONGLONG,
520         lpFormat: LPCWSTR,
521         lpDurationStr: LPWSTR,
522         cchDuration: c_int,
523     ) -> c_int;
GetFileMUIInfo( dwFlags: DWORD, pcwszFilePath: PCWSTR, pFileMUIInfo: PFILEMUIINFO, pcbFileMUIInfo: *mut DWORD, ) -> BOOL524     pub fn GetFileMUIInfo(
525         dwFlags: DWORD,
526         pcwszFilePath: PCWSTR,
527         pFileMUIInfo: PFILEMUIINFO,
528         pcbFileMUIInfo: *mut DWORD,
529     ) -> BOOL;
GetFileMUIPath( dwFlags: DWORD, pcwszFilePath: PCWSTR, pwszLanguage: PWSTR, pcchLanguage: PULONG, pwszFileMUIPath: PWSTR, pcchFileMUIPath: PULONG, pululEnumerator: PULONGLONG, ) -> BOOL530     pub fn GetFileMUIPath(
531         dwFlags: DWORD,
532         pcwszFilePath: PCWSTR,
533         pwszLanguage: PWSTR,
534         pcchLanguage: PULONG,
535         pwszFileMUIPath: PWSTR,
536         pcchFileMUIPath: PULONG,
537         pululEnumerator: PULONGLONG,
538     ) -> BOOL;
GetGeoInfoA( Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPSTR, cchData: c_int, LangId: LANGID, ) -> c_int539     pub fn GetGeoInfoA(
540         Location: GEOID,
541         GeoType: GEOTYPE,
542         lpGeoData: LPSTR,
543         cchData: c_int,
544         LangId: LANGID,
545     ) -> c_int;
GetGeoInfoW( Location: GEOID, GeoType: GEOTYPE, lpGeoData: LPWSTR, cchData: c_int, LangId: LANGID, ) -> c_int546     pub fn GetGeoInfoW(
547         Location: GEOID,
548         GeoType: GEOTYPE,
549         lpGeoData: LPWSTR,
550         cchData: c_int,
551         LangId: LANGID,
552     ) -> c_int;
GetLocaleInfoA( Locale: LCID, LCType: LCTYPE, lpLCData: LPSTR, cchData: c_int, ) -> c_int553     pub fn GetLocaleInfoA(
554         Locale: LCID,
555         LCType: LCTYPE,
556         lpLCData: LPSTR,
557         cchData: c_int,
558     ) -> c_int;
GetLocaleInfoEx( lpLocaleName: LPCWSTR, LCType: LCTYPE, lpLCData: LPWSTR, cchData: c_int, ) -> c_int559     pub fn GetLocaleInfoEx(
560         lpLocaleName: LPCWSTR,
561         LCType: LCTYPE,
562         lpLCData: LPWSTR,
563         cchData: c_int,
564     ) -> c_int;
GetLocaleInfoW( Locale: LCID, LCType: LCTYPE, lpLCData: LPWSTR, cchData: c_int, ) -> c_int565     pub fn GetLocaleInfoW(
566         Locale: LCID,
567         LCType: LCTYPE,
568         lpLCData: LPWSTR,
569         cchData: c_int,
570     ) -> c_int;
GetNLSVersion( Function: NLS_FUNCTION, Locale: LCID, lpVersionInformation: LPNLSVERSIONINFO, ) -> BOOL571     pub fn GetNLSVersion(
572         Function: NLS_FUNCTION,
573         Locale: LCID,
574         lpVersionInformation: LPNLSVERSIONINFO,
575     ) -> BOOL;
GetNLSVersionEx( function: NLS_FUNCTION, lpLocaleName: LPCWSTR, lpVersionInformation: LPNLSVERSIONINFOEX, ) -> BOOL576     pub fn GetNLSVersionEx(
577         function: NLS_FUNCTION,
578         lpLocaleName: LPCWSTR,
579         lpVersionInformation: LPNLSVERSIONINFOEX,
580     ) -> BOOL;
GetNumberFormatA( Locale: LCID, dwFlags: DWORD, lpValue: LPCSTR, lpFormat: *const NUMBERFMTA, lpNumberStr: LPSTR, cchNumber: c_int, ) -> c_int581     pub fn GetNumberFormatA(
582         Locale: LCID,
583         dwFlags: DWORD,
584         lpValue: LPCSTR,
585         lpFormat: *const NUMBERFMTA,
586         lpNumberStr: LPSTR,
587         cchNumber: c_int,
588     ) -> c_int;
GetNumberFormatEx( lpLocaleName: LPCWSTR, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: c_int, ) -> c_int589     pub fn GetNumberFormatEx(
590         lpLocaleName: LPCWSTR,
591         dwFlags: DWORD,
592         lpValue: LPCWSTR,
593         lpFormat: *const NUMBERFMTW,
594         lpNumberStr: LPWSTR,
595         cchNumber: c_int,
596     ) -> c_int;
GetNumberFormatW( Locale: LCID, dwFlags: DWORD, lpValue: LPCWSTR, lpFormat: *const NUMBERFMTW, lpNumberStr: LPWSTR, cchNumber: c_int, ) -> c_int597     pub fn GetNumberFormatW(
598         Locale: LCID,
599         dwFlags: DWORD,
600         lpValue: LPCWSTR,
601         lpFormat: *const NUMBERFMTW,
602         lpNumberStr: LPWSTR,
603         cchNumber: c_int,
604     ) -> c_int;
GetOEMCP() -> UINT605     pub fn GetOEMCP() -> UINT;
GetProcessPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL606     pub fn GetProcessPreferredUILanguages(
607         dwFlags: DWORD,
608         pulNumLanguages: PULONG,
609         pwszLanguagesBuffer: PZZWSTR,
610         pcchLanguagesBuffer: PULONG,
611     ) -> BOOL;
GetStringScripts( dwFlags: DWORD, lpString: LPCWSTR, cchString: c_int, lpScripts: LPWSTR, cchScripts: c_int, ) -> c_int612     pub fn GetStringScripts(
613         dwFlags: DWORD,
614         lpString: LPCWSTR,
615         cchString: c_int,
616         lpScripts: LPWSTR,
617         cchScripts: c_int,
618     ) -> c_int;
GetStringTypeA( Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpCharType: LPWORD, ) -> BOOL619     pub fn GetStringTypeA(
620         Locale: LCID,
621         dwInfoType: DWORD,
622         lpSrcStr: LPCSTR,
623         cchSrc: c_int,
624         lpCharType: LPWORD,
625     ) -> BOOL;
GetStringTypeExA( Locale: LCID, dwInfoType: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpCharType: LPWORD, ) -> BOOL626     pub fn GetStringTypeExA(
627         Locale: LCID,
628         dwInfoType: DWORD,
629         lpSrcStr: LPCSTR,
630         cchSrc: c_int,
631         lpCharType: LPWORD,
632     ) -> BOOL;
GetStringTypeW( dwInfoType: DWORD, lpSrcStr: LPCWCH, cchSrc: c_int, lpCharType: LPWORD, ) -> BOOL633     pub fn GetStringTypeW(
634         dwInfoType: DWORD,
635         lpSrcStr: LPCWCH,
636         cchSrc: c_int,
637         lpCharType: LPWORD,
638     ) -> BOOL;
GetSystemDefaultLCID() -> LCID639     pub fn GetSystemDefaultLCID() -> LCID;
GetSystemDefaultLangID() -> LANGID640     pub fn GetSystemDefaultLangID() -> LANGID;
GetSystemDefaultLocaleName( lpLocaleName: LPWSTR, cchLocaleName: c_int, ) -> c_int641     pub fn GetSystemDefaultLocaleName(
642         lpLocaleName: LPWSTR,
643         cchLocaleName: c_int,
644     ) -> c_int;
GetSystemDefaultUILanguage() -> LANGID645     pub fn GetSystemDefaultUILanguage() -> LANGID;
GetSystemPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL646     pub fn GetSystemPreferredUILanguages(
647         dwFlags: DWORD,
648         pulNumLanguages: PULONG,
649         pwszLanguagesBuffer: PZZWSTR,
650         pcchLanguagesBuffer: PULONG,
651     ) -> BOOL;
GetThreadLocale() -> LCID652     pub fn GetThreadLocale() -> LCID;
GetThreadPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL653     pub fn GetThreadPreferredUILanguages(
654         dwFlags: DWORD,
655         pulNumLanguages: PULONG,
656         pwszLanguagesBuffer: PZZWSTR,
657         pcchLanguagesBuffer: PULONG,
658     ) -> BOOL;
GetThreadUILanguage() -> LANGID659     pub fn GetThreadUILanguage() -> LANGID;
GetUILanguageInfo( dwFlags: DWORD, pwmszLanguage: PCZZWSTR, pwszFallbackLanguages: PZZWSTR, pcchFallbackLanguages: PDWORD, pAttributes: PDWORD, ) -> BOOL660     pub fn GetUILanguageInfo(
661         dwFlags: DWORD,
662         pwmszLanguage: PCZZWSTR,
663         pwszFallbackLanguages: PZZWSTR,
664         pcchFallbackLanguages: PDWORD,
665         pAttributes: PDWORD,
666     ) -> BOOL;
GetUserDefaultLCID() -> LCID667     pub fn GetUserDefaultLCID() -> LCID;
GetUserDefaultLangID() -> LANGID668     pub fn GetUserDefaultLangID() -> LANGID;
GetUserDefaultLocaleName( lpLocaleName: LPWSTR, cchLocaleName: c_int, ) -> c_int669     pub fn GetUserDefaultLocaleName(
670         lpLocaleName: LPWSTR,
671         cchLocaleName: c_int,
672     ) -> c_int;
GetUserDefaultUILanguage() -> LANGID673     pub fn GetUserDefaultUILanguage() -> LANGID;
GetUserGeoID(GeoClass: GEOCLASS) -> GEOID674     pub fn GetUserGeoID(GeoClass: GEOCLASS) -> GEOID;
GetUserPreferredUILanguages( dwFlags: DWORD, pulNumLanguages: PULONG, pwszLanguagesBuffer: PZZWSTR, pcchLanguagesBuffer: PULONG, ) -> BOOL675     pub fn GetUserPreferredUILanguages(
676         dwFlags: DWORD,
677         pulNumLanguages: PULONG,
678         pwszLanguagesBuffer: PZZWSTR,
679         pcchLanguagesBuffer: PULONG,
680     ) -> BOOL;
IsDBCSLeadByte( TestChar: BYTE, ) -> BOOL681     pub fn IsDBCSLeadByte(
682         TestChar: BYTE,
683     ) -> BOOL;
IsDBCSLeadByteEx( CodePage: UINT, TestChar: BYTE, ) -> BOOL684     pub fn IsDBCSLeadByteEx(
685         CodePage: UINT,
686         TestChar: BYTE,
687     ) -> BOOL;
IsNLSDefinedString( Function: NLS_FUNCTION, dwFlags: DWORD, lpVersionInformation: LPNLSVERSIONINFO, lpString: LPCWSTR, cchStr: INT, ) -> BOOL688     pub fn IsNLSDefinedString(
689         Function: NLS_FUNCTION,
690         dwFlags: DWORD,
691         lpVersionInformation: LPNLSVERSIONINFO,
692         lpString: LPCWSTR,
693         cchStr: INT,
694     ) -> BOOL;
IsNormalizedString( NormForm: NORM_FORM, lpString: LPCWSTR, cwLength: c_int, ) -> BOOL695     pub fn IsNormalizedString(
696         NormForm: NORM_FORM,
697         lpString: LPCWSTR,
698         cwLength: c_int,
699     ) -> BOOL;
IsValidCodePage( CodePage: UINT, ) -> BOOL700     pub fn IsValidCodePage(
701         CodePage: UINT,
702     ) -> BOOL;
IsValidLanguageGroup( LanguageGroup: LGRPID, dwFlags: DWORD, ) -> BOOL703     pub fn IsValidLanguageGroup(
704         LanguageGroup: LGRPID,
705         dwFlags: DWORD,
706     ) -> BOOL;
IsValidLocale( Locale: LCID, dwFlags: DWORD, ) -> BOOL707     pub fn IsValidLocale(
708         Locale: LCID,
709         dwFlags: DWORD,
710     ) -> BOOL;
IsValidLocaleName( lpLocaleName: LPCWSTR, ) -> BOOL711     pub fn IsValidLocaleName(
712         lpLocaleName: LPCWSTR,
713     ) -> BOOL;
IsValidNLSVersion( function: NLS_FUNCTION, lpLocaleName: LPCWSTR, lpVersionInformation: LPNLSVERSIONINFOEX, ) -> BOOL714     pub fn IsValidNLSVersion(
715         function: NLS_FUNCTION,
716         lpLocaleName: LPCWSTR,
717         lpVersionInformation: LPNLSVERSIONINFOEX,
718     ) -> BOOL;
LCIDToLocaleName( Locale: LCID, lpName: LPWSTR, cchName: c_int, dwFlags: DWORD, ) -> c_int719     pub fn LCIDToLocaleName(
720         Locale: LCID,
721         lpName: LPWSTR,
722         cchName: c_int,
723         dwFlags: DWORD,
724     ) -> c_int;
LCMapStringA( Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCSTR, cchSrc: c_int, lpDestStr: LPSTR, cchDest: c_int, ) -> c_int725     pub fn LCMapStringA(
726         Locale: LCID,
727         dwMapFlags: DWORD,
728         lpSrcStr: LPCSTR,
729         cchSrc: c_int,
730         lpDestStr: LPSTR,
731         cchDest: c_int,
732     ) -> c_int;
LCMapStringEx( lpLocaleName: LPCWSTR, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: c_int, lpDestStr: LPWSTR, cchDest: c_int, lpVersionInformation: LPNLSVERSIONINFO, lpReserved: LPVOID, sortHandle: LPARAM, ) -> c_int733     pub fn LCMapStringEx(
734         lpLocaleName: LPCWSTR,
735         dwMapFlags: DWORD,
736         lpSrcStr: LPCWSTR,
737         cchSrc: c_int,
738         lpDestStr: LPWSTR,
739         cchDest: c_int,
740         lpVersionInformation: LPNLSVERSIONINFO,
741         lpReserved: LPVOID,
742         sortHandle: LPARAM,
743     ) -> c_int;
LCMapStringW( Locale: LCID, dwMapFlags: DWORD, lpSrcStr: LPCWSTR, cchSrc: c_int, lpDestStr: LPWSTR, cchDest: c_int, ) -> c_int744     pub fn LCMapStringW(
745         Locale: LCID,
746         dwMapFlags: DWORD,
747         lpSrcStr: LPCWSTR,
748         cchSrc: c_int,
749         lpDestStr: LPWSTR,
750         cchDest: c_int,
751     ) -> c_int;
LocaleNameToLCID( lpName: LPCWSTR, dwFlags: DWORD, ) -> LCID752     pub fn LocaleNameToLCID(
753         lpName: LPCWSTR,
754         dwFlags: DWORD,
755     ) -> LCID;
NormalizeString( NormForm: NORM_FORM, lpSrcString: LPCWSTR, cwSrcLength: c_int, lpDstString: LPWSTR, cwDstLength: c_int, ) -> c_int756     pub fn NormalizeString(
757         NormForm: NORM_FORM,
758         lpSrcString: LPCWSTR,
759         cwSrcLength: c_int,
760         lpDstString: LPWSTR,
761         cwDstLength: c_int,
762     ) -> c_int;
NotifyUILanguageChange( dwFlags: DWORD, pcwstrNewLanguage: PCWSTR, pcwstrPreviousLanguage: PCWSTR, dwReserved: DWORD, pdwStatusRtrn: PDWORD, ) -> BOOL763     pub fn NotifyUILanguageChange(
764         dwFlags: DWORD,
765         pcwstrNewLanguage: PCWSTR,
766         pcwstrPreviousLanguage: PCWSTR,
767         dwReserved: DWORD,
768         pdwStatusRtrn: PDWORD,
769     ) -> BOOL;
ResolveLocaleName( lpNameToResolve: LPCWSTR, lpLocaleName: LPWSTR, cchLocaleName: c_int, ) -> c_int770     pub fn ResolveLocaleName(
771         lpNameToResolve: LPCWSTR,
772         lpLocaleName: LPWSTR,
773         cchLocaleName: c_int,
774     ) -> c_int;
SetCalendarInfoA( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCSTR, ) -> BOOL775     pub fn SetCalendarInfoA(
776         Locale: LCID,
777         Calendar: CALID,
778         CalType: CALTYPE,
779         lpCalData: LPCSTR,
780     ) -> BOOL;
SetCalendarInfoW( Locale: LCID, Calendar: CALID, CalType: CALTYPE, lpCalData: LPCWSTR, ) -> BOOL781     pub fn SetCalendarInfoW(
782         Locale: LCID,
783         Calendar: CALID,
784         CalType: CALTYPE,
785         lpCalData: LPCWSTR,
786     ) -> BOOL;
SetLocaleInfoA( Locale: LCID, LCType: LCTYPE, lpLCData: LPCSTR, ) -> BOOL787     pub fn SetLocaleInfoA(
788         Locale: LCID,
789         LCType: LCTYPE,
790         lpLCData: LPCSTR,
791     ) -> BOOL;
SetLocaleInfoW( Locale: LCID, LCType: LCTYPE, lpLCData: LPCWSTR, ) -> BOOL792     pub fn SetLocaleInfoW(
793         Locale: LCID,
794         LCType: LCTYPE,
795         lpLCData: LPCWSTR,
796     ) -> BOOL;
SetProcessPreferredUILanguages( dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG, ) -> BOOL797     pub fn SetProcessPreferredUILanguages(
798         dwFlags: DWORD,
799         pwszLanguagesBuffer: PCZZWSTR,
800         pulNumLanguages: PULONG,
801     ) -> BOOL;
SetThreadLocale(Locale: LCID) -> BOOL802     pub fn SetThreadLocale(Locale: LCID) -> BOOL;
SetThreadPreferredUILanguages( dwFlags: DWORD, pwszLanguagesBuffer: PCZZWSTR, pulNumLanguages: PULONG, ) -> BOOL803     pub fn SetThreadPreferredUILanguages(
804         dwFlags: DWORD,
805         pwszLanguagesBuffer: PCZZWSTR,
806         pulNumLanguages: PULONG,
807     ) -> BOOL;
SetThreadUILanguage(LangId: LANGID) -> LANGID808     pub fn SetThreadUILanguage(LangId: LANGID) -> LANGID;
SetUserGeoID(GeoId: GEOID) -> BOOL809     pub fn SetUserGeoID(GeoId: GEOID) -> BOOL;
VerifyScripts( dwFlags: DWORD, lpLocaleScripts: LPCWSTR, cchLocaleScripts: c_int, lpTestScripts: LPCWSTR, cchTestScripts: c_int, ) -> BOOL810     pub fn VerifyScripts(
811         dwFlags: DWORD,
812         lpLocaleScripts: LPCWSTR,
813         cchLocaleScripts: c_int,
814         lpTestScripts: LPCWSTR,
815         cchTestScripts: c_int,
816     ) -> BOOL;
817 }
818