]>
Commit | Line | Data |
---|---|---|
ff7c6d11 XL |
1 | // Copyright © 2016-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 | //! Type definitions for the basic types. | |
8 | use ctypes::{ | |
9 | __int64, __uint64, c_char, c_double, c_int, c_long, c_schar, c_short, c_uchar, c_ulong, | |
10 | c_ushort, c_void, wchar_t | |
11 | }; | |
12 | use shared::basetsd::{KAFFINITY, LONG_PTR, ULONG64, ULONG_PTR}; | |
13 | use shared::guiddef::GUID; | |
14 | #[cfg(target_arch = "x86_64")] | |
15 | IFDEF!{ | |
16 | pub const MAX_NATURAL_ALIGNMENT: usize = 8; | |
17 | pub const MEMORY_ALLOCATION_ALIGNMENT: usize = 16; | |
18 | } | |
19 | #[cfg(not(target_arch = "x86_64"))] | |
20 | IFDEF!{ | |
21 | pub const MAX_NATURAL_ALIGNMENT: usize = 4; | |
22 | pub const MEMORY_ALLOCATION_ALIGNMENT: usize = 8; | |
23 | } | |
24 | #[cfg(any(target_arch = "x86_64", target_arch = "x86"))] | |
25 | pub const SYSTEM_CACHE_ALIGNMENT_SIZE: usize = 64; | |
26 | #[cfg(not(any(target_arch = "x86_64", target_arch = "x86")))] | |
27 | pub const SYSTEM_CACHE_ALIGNMENT_SIZE: usize = 128; | |
28 | pub type PVOID = *mut c_void; | |
29 | pub type PVOID64 = u64; // This is a 64-bit pointer, even when in 32-bit | |
30 | pub type VOID = c_void; | |
31 | pub type CHAR = c_char; | |
32 | pub type SHORT = c_short; | |
33 | pub type LONG = c_long; | |
34 | pub type INT = c_int; | |
35 | pub type WCHAR = wchar_t; | |
36 | pub type PWCHAR = *mut WCHAR; | |
37 | pub type LPWCH = *mut WCHAR; | |
38 | pub type PWCH = *mut WCHAR; | |
39 | pub type LPCWCH = *const WCHAR; | |
40 | pub type PCWCH = *const WCHAR; | |
41 | pub type NWPSTR = *mut WCHAR; | |
42 | pub type LPWSTR = *mut WCHAR; | |
43 | pub type LPTSTR = LPSTR; | |
44 | pub type PWSTR = *mut WCHAR; | |
45 | pub type PZPWSTR = *mut PWSTR; | |
46 | pub type PCZPWSTR = *const PWSTR; | |
47 | pub type LPUWSTR = *mut WCHAR; // Unaligned pointer | |
48 | pub type PUWSTR = *mut WCHAR; // Unaligned pointer | |
49 | pub type LPCWSTR = *const WCHAR; | |
50 | pub type PCWSTR = *const WCHAR; | |
51 | pub type PZPCWSTR = *mut PCWSTR; | |
52 | pub type PCZPCWSTR = *const PCWSTR; | |
53 | pub type LPCUWSTR = *const WCHAR; // Unaligned pointer | |
54 | pub type PCUWSTR = *const WCHAR; // Unaligned pointer | |
55 | pub type PZZWSTR = *mut WCHAR; | |
56 | pub type PCZZWSTR = *const WCHAR; | |
57 | pub type PUZZWSTR = *mut WCHAR; // Unaligned pointer | |
58 | pub type PCUZZWSTR = *const WCHAR; // Unaligned pointer | |
59 | pub type PNZWCH = *mut WCHAR; | |
60 | pub type PCNZWCH = *const WCHAR; | |
61 | pub type PUNZWCH = *mut WCHAR; // Unaligned pointer | |
62 | pub type PCUNZWCH = *const WCHAR; // Unaligned pointer | |
63 | pub type LPCWCHAR = *const WCHAR; | |
64 | pub type PCWCHAR = *const WCHAR; | |
65 | pub type LPCUWCHAR = *const WCHAR; // Unaligned pointer | |
66 | pub type PCUWCHAR = *const WCHAR; // Unaligned pointer | |
67 | pub type UCSCHAR = c_ulong; | |
68 | pub const UCSCHAR_INVALID_CHARACTER: UCSCHAR = 0xffffffff; | |
69 | pub const MIN_UCSCHAR: UCSCHAR = 0; | |
70 | pub const MAX_UCSCHAR: UCSCHAR = 0x0010FFFF; | |
71 | pub type PUCSCHAR = *mut UCSCHAR; | |
72 | pub type PCUCSCHAR = *const UCSCHAR; | |
73 | pub type PUCSSTR = *mut UCSCHAR; | |
74 | pub type PUUCSSTR = *mut UCSCHAR; // Unaligned pointer | |
75 | pub type PCUCSSTR = *const UCSCHAR; | |
76 | pub type PCUUCSSTR = *const UCSCHAR; // Unaligned pointer | |
77 | pub type PUUCSCHAR = *mut UCSCHAR; // Unaligned pointer | |
78 | pub type PCUUCSCHAR = *const UCSCHAR; // Unaligned pointer | |
79 | pub type PCHAR = *mut CHAR; | |
80 | pub type LPCH = *mut CHAR; | |
81 | pub type PCH = *mut CHAR; | |
82 | pub type LPCCH = *const CHAR; | |
83 | pub type PCCH = *const CHAR; | |
84 | pub type NPSTR = *mut CHAR; | |
85 | pub type LPSTR = *mut CHAR; | |
86 | pub type PSTR = *mut CHAR; | |
87 | pub type PZPSTR = *mut PSTR; | |
88 | pub type PCZPSTR = *const PSTR; | |
89 | pub type LPCSTR = *const CHAR; | |
90 | pub type PCSTR = *const CHAR; | |
91 | pub type PZPCSTR = *mut PCSTR; | |
92 | pub type PCZPCSTR = *const PCSTR; | |
93 | pub type PZZSTR = *mut CHAR; | |
94 | pub type PCZZSTR = *const CHAR; | |
95 | pub type PNZCH = *mut CHAR; | |
96 | pub type PCNZCH = *const CHAR; | |
97 | // Skipping TCHAR things | |
98 | pub type DOUBLE = c_double; | |
99 | STRUCT!{struct QUAD { | |
100 | UseThisFieldToCopy: __int64, | |
101 | }} | |
102 | pub type PSHORT = *mut SHORT; | |
103 | pub type PLONG = *mut LONG; | |
104 | pub type PQUAD = *mut QUAD; | |
105 | pub type UCHAR = c_uchar; | |
106 | pub type USHORT = c_ushort; | |
107 | pub type ULONG = c_ulong; | |
108 | pub type UQUAD = QUAD; | |
109 | pub type PUCHAR = *mut UCHAR; | |
110 | pub type PUSHORT = *mut USHORT; | |
111 | pub type PULONG = *mut ULONG; | |
112 | pub type PUQUAD = *mut UQUAD; | |
113 | pub type PCUCHAR = *const UCHAR; | |
114 | pub type PCUSHORT = *const USHORT; | |
115 | pub type PCULONG = *const ULONG; | |
116 | pub type PCUQUAD = *const UQUAD; | |
117 | pub type SCHAR = c_schar; | |
118 | pub type PSCHAR = *mut SCHAR; | |
119 | pub type PCSCHAR = *const SCHAR; | |
120 | pub const ALL_PROCESSOR_GROUPS: USHORT = 0xffff; | |
121 | STRUCT!{struct PROCESSOR_NUMBER { | |
122 | Group: USHORT, | |
123 | Number: UCHAR, | |
124 | Reserved: UCHAR, | |
125 | }} | |
126 | pub type PPROCESSOR_NUMBER = *mut PROCESSOR_NUMBER; | |
127 | STRUCT!{struct GROUP_AFFINITY { | |
128 | Mask: KAFFINITY, | |
129 | Group: USHORT, | |
130 | Reserved: [USHORT; 3], | |
131 | }} | |
132 | pub type PGROUP_AFFINITY = *mut GROUP_AFFINITY; | |
133 | #[cfg(target_arch = "x86_64")] | |
134 | pub const MAXIMUM_PROC_PER_GROUP: UCHAR = 64; | |
135 | #[cfg(not(target_arch = "x86_64"))] | |
136 | pub const MAXIMUM_PROC_PER_GROUP: UCHAR = 32; | |
137 | pub const MAXIMUM_PROCESSORS: UCHAR = MAXIMUM_PROC_PER_GROUP; | |
138 | pub type HANDLE = *mut c_void; | |
139 | pub type PHANDLE = *mut HANDLE; | |
140 | pub type FCHAR = UCHAR; | |
141 | pub type FSHORT = USHORT; | |
142 | pub type FLONG = ULONG; | |
143 | pub type HRESULT = c_long; | |
144 | pub const OBJ_HANDLE_TAGBITS: usize = 0x00000003; | |
145 | pub type CCHAR = c_char; | |
146 | pub type CSHORT = c_short; | |
147 | pub type CLONG = ULONG; | |
148 | pub type PCCHAR = *mut CCHAR; | |
149 | pub type PCSHORT = *mut CSHORT; | |
150 | pub type PCLONG = *mut CLONG; | |
151 | pub type LCID = ULONG; | |
152 | pub type PLCID = PULONG; | |
153 | pub type LANGID = USHORT; | |
154 | ENUM!{enum COMPARTMENT_ID { | |
155 | UNSPECIFIED_COMPARTMENT_ID = 0, | |
156 | DEFAULT_COMPARTMENT_ID, | |
157 | }} | |
158 | pub type PCOMPARTMENT_ID = *mut COMPARTMENT_ID; | |
159 | pub type LOGICAL = ULONG; | |
160 | pub type PLOGICAL = *mut ULONG; | |
161 | pub type NTSTATUS = LONG; | |
162 | pub type PNTSTATUS = *mut NTSTATUS; | |
163 | pub type PCNTSTATUS = *const NTSTATUS; | |
164 | #[inline] | |
165 | pub fn NT_SUCCESS(Status: NTSTATUS) -> bool { | |
166 | Status >= 0 | |
167 | } | |
168 | #[inline] | |
169 | pub fn NT_INFORMATION(Status: NTSTATUS) -> bool { | |
170 | ((Status as ULONG) >> 30) == 1 | |
171 | } | |
172 | #[inline] | |
173 | pub fn NT_WARNING(Status: NTSTATUS) -> bool { | |
174 | ((Status as ULONG) >> 30) == 2 | |
175 | } | |
176 | #[inline] | |
177 | pub fn NT_ERROR(Status: NTSTATUS) -> bool { | |
178 | ((Status as ULONG) >> 30) == 3 | |
179 | } | |
180 | pub const APPLICATION_ERROR_MASK: ULONG = 0x20000000; | |
181 | pub const ERROR_SEVERITY_SUCCESS: ULONG = 0x00000000; | |
182 | pub const ERROR_SEVERITY_INFORMATIONAL: ULONG = 0x40000000; | |
183 | pub const ERROR_SEVERITY_WARNING: ULONG = 0x80000000; | |
184 | pub const ERROR_SEVERITY_ERROR: ULONG = 0xC0000000; | |
185 | pub type SECURITY_STATUS = c_long; | |
186 | pub type TIME = LARGE_INTEGER; | |
187 | pub type PTIME = *mut TIME; | |
188 | STRUCT!{struct FLOAT128 { | |
189 | LowPart: __int64, | |
190 | HighPart: __int64, | |
191 | }} | |
192 | pub type PFLOAT128 = *mut FLOAT128; | |
193 | pub type LONGLONG = __int64; | |
194 | pub type ULONGLONG = __uint64; | |
195 | pub const MAXLONGLONG: LONGLONG = 0x7fffffffffffffff; | |
196 | pub type PLONGLONG = *mut LONGLONG; | |
197 | pub type PULONGLONG = *mut ULONGLONG; | |
198 | pub type USN = LONGLONG; | |
199 | UNION!{union LARGE_INTEGER { | |
200 | [i64; 1], | |
201 | s s_mut: LARGE_INTEGER_s, | |
202 | QuadPart QuadPart_mut: LONGLONG, | |
203 | }} | |
204 | STRUCT!{struct LARGE_INTEGER_s { | |
205 | LowPart: ULONG, | |
206 | HighPart: LONG, | |
207 | }} | |
208 | pub type PLARGE_INTEGER = *mut LARGE_INTEGER; | |
209 | UNION!{union ULARGE_INTEGER { | |
210 | [u64; 1], | |
211 | s s_mut: ULARGE_INTEGER_s, | |
212 | QuadPart QuadPart_mut: ULONGLONG, | |
213 | }} | |
214 | STRUCT!{struct ULARGE_INTEGER_s { | |
215 | LowPart: ULONG, | |
216 | HighPart: ULONG, | |
217 | }} | |
218 | pub type PULARGE_INTEGER = *mut ULARGE_INTEGER; | |
219 | pub type RTL_REFERENCE_COUNT = LONG_PTR; | |
220 | pub type PRTL_REFERENCE_COUNT = *mut RTL_REFERENCE_COUNT; | |
221 | STRUCT!{struct LUID { | |
222 | LowPart: ULONG, | |
223 | HighPart: LONG, | |
224 | }} | |
225 | pub type PLUID = *mut LUID; | |
226 | pub type DWORDLONG = ULONGLONG; | |
227 | pub type PDWORDLONG = *mut DWORDLONG; | |
228 | pub type PHYSICAL_ADDRESS = LARGE_INTEGER; | |
229 | pub type PPHYSICAL_ADDRESS = *mut PHYSICAL_ADDRESS; | |
230 | ENUM!{enum EVENT_TYPE { | |
231 | NotificationEvent, | |
232 | SynchronizationEvent, | |
233 | }} | |
234 | ENUM!{enum TIMER_TYPE { | |
235 | NotificationTimer, | |
236 | SynchronizationTimer, | |
237 | }} | |
238 | ENUM!{enum WAIT_TYPE { | |
239 | WaitAll, | |
240 | WaitAny, | |
241 | WaitNotification, | |
242 | WaitDequeue, | |
243 | }} | |
244 | pub type PSZ = *mut CHAR; | |
245 | pub type PCSZ = *const c_char; | |
246 | pub type RTL_STRING_LENGTH_TYPE = USHORT; | |
247 | STRUCT!{struct STRING { | |
248 | Length: USHORT, | |
249 | MaximumLength: USHORT, | |
250 | Buffer: PCHAR, | |
251 | }} | |
252 | pub type PSTRING = *mut STRING; | |
253 | pub type ANSI_STRING = STRING; | |
254 | pub type PANSI_STRING = PSTRING; | |
255 | pub type OEM_STRING = STRING; | |
256 | pub type POEM_STRING = PSTRING; | |
257 | pub type PCOEM_STRING = *const STRING; | |
258 | STRUCT!{struct CSTRING { | |
259 | Length: USHORT, | |
260 | MaximumLength: USHORT, | |
261 | Buffer: *const c_char, | |
262 | }} | |
263 | pub type PCSTRING = *mut CSTRING; | |
264 | pub const ANSI_NULL: CHAR = 0; | |
265 | pub type CANSI_STRING = STRING; | |
266 | pub type PCANSI_STRING = PSTRING; | |
267 | STRUCT!{struct UNICODE_STRING { | |
268 | Length: USHORT, | |
269 | MaximumLength: USHORT, | |
270 | Buffer: PWCH, | |
271 | }} | |
272 | pub type PUNICODE_STRING = *mut UNICODE_STRING; | |
273 | pub type PCUNICODE_STRING = *const UNICODE_STRING; | |
274 | pub const UNICODE_NULL: WCHAR = 0; | |
275 | pub const UNICODE_STRING_MAX_BYTES: USHORT = 65534; | |
276 | pub const UNICODE_STRING_MAX_CHARS: usize = 32767; | |
277 | pub type BOOLEAN = UCHAR; | |
278 | pub type PBOOLEAN = *mut BOOLEAN; | |
279 | STRUCT!{struct LIST_ENTRY { | |
280 | Flink: *mut LIST_ENTRY, | |
281 | Blink: *mut LIST_ENTRY, | |
282 | }} | |
283 | pub type PLIST_ENTRY = *mut LIST_ENTRY; | |
284 | pub type PRLIST_ENTRY = *mut LIST_ENTRY; // Restricted pointer | |
285 | STRUCT!{struct SINGLE_LIST_ENTRY { | |
286 | Next: *mut SINGLE_LIST_ENTRY, | |
287 | }} | |
288 | pub type PSINGLE_LIST_ENTRY = *mut SINGLE_LIST_ENTRY; | |
289 | STRUCT!{struct RTL_BALANCED_NODE { | |
290 | u: RTL_BALANCED_NODE_u, | |
291 | ParentValue: ULONG_PTR, | |
292 | }} | |
293 | UNION!{union RTL_BALANCED_NODE_u { | |
294 | [usize; 2], | |
295 | Children Children_mut: [*mut RTL_BALANCED_NODE; 2], | |
296 | s s_mut: RTL_BALANCED_NODE_s, | |
297 | }} | |
298 | STRUCT!{struct RTL_BALANCED_NODE_s { | |
299 | Left: *mut RTL_BALANCED_NODE, | |
300 | Right: *mut RTL_BALANCED_NODE, | |
301 | }} | |
302 | pub const RTL_BALANCED_NODE_RESERVED_PARENT_MASK: ULONG_PTR = 3; | |
303 | pub type PRTL_BALANCED_NODE = *mut RTL_BALANCED_NODE; | |
304 | #[inline] | |
305 | pub unsafe fn RTL_BALANCED_NODE_GET_PARENT_POINTER( | |
306 | Node: PRTL_BALANCED_NODE, | |
307 | ) -> PRTL_BALANCED_NODE { | |
308 | ((*Node).ParentValue & !RTL_BALANCED_NODE_RESERVED_PARENT_MASK) as *mut RTL_BALANCED_NODE | |
309 | } | |
310 | STRUCT!{struct LIST_ENTRY32 { | |
311 | Flink: ULONG, | |
312 | Blink: ULONG, | |
313 | }} | |
314 | pub type PLIST_ENTRY32 = *mut LIST_ENTRY32; | |
315 | STRUCT!{struct LIST_ENTRY64 { | |
316 | Flink: ULONGLONG, | |
317 | Blink: ULONGLONG, | |
318 | }} | |
319 | pub type PLIST_ENTRY64 = *mut LIST_ENTRY64; | |
320 | STRUCT!{struct SINGLE_LIST_ENTRY32 { | |
321 | Next: ULONG, | |
322 | }} | |
323 | pub type PSINGLE_LIST_ENTRY32 = *mut SINGLE_LIST_ENTRY32; | |
324 | #[inline] | |
325 | pub unsafe fn ListEntry32To64(l32: PLIST_ENTRY32, l64: PLIST_ENTRY64) { | |
326 | (*l64).Flink = (*l32).Flink as ULONGLONG; | |
327 | (*l64).Blink = (*l32).Blink as ULONGLONG; | |
328 | } | |
329 | #[inline] | |
330 | pub unsafe fn ListEntry64To32(l64: PLIST_ENTRY64, l32: PLIST_ENTRY32) { | |
331 | (*l32).Flink = (*l64).Flink as ULONG; | |
332 | (*l32).Blink = (*l64).Blink as ULONG; | |
333 | } | |
334 | STRUCT!{struct WNF_STATE_NAME { | |
335 | Data: [ULONG; 2], | |
336 | }} | |
337 | pub type PWNF_STATE_NAME = *mut WNF_STATE_NAME; | |
338 | pub type PCWNF_STATE_NAME = *const WNF_STATE_NAME; | |
339 | STRUCT!{struct STRING32 { | |
340 | Length: USHORT, | |
341 | MaximumLength: USHORT, | |
342 | Buffer: ULONG, | |
343 | }} | |
344 | pub type PSTRING32 = *mut STRING32; | |
345 | pub type UNICODE_STRING32 = STRING32; | |
346 | pub type PUNICODE_STRING32 = *mut UNICODE_STRING32; | |
347 | pub type ANSI_STRING32 = STRING32; | |
348 | pub type PANSI_STRING32 = *mut ANSI_STRING32; | |
349 | STRUCT!{struct STRING64 { | |
350 | Length: USHORT, | |
351 | MaximumLength: USHORT, | |
352 | Buffer: ULONGLONG, | |
353 | }} | |
354 | pub type PSTRING64 = *mut STRING64; | |
355 | pub type UNICODE_STRING64 = STRING64; | |
356 | pub type PUNICODE_STRING64 = *mut UNICODE_STRING64; | |
357 | pub type ANSI_STRING64 = STRING64; | |
358 | pub type PANSI_STRING64 = *mut ANSI_STRING64; | |
359 | pub const OBJ_INHERIT: ULONG = 0x00000002; | |
360 | pub const OBJ_PERMANENT: ULONG = 0x00000010; | |
361 | pub const OBJ_EXCLUSIVE: ULONG = 0x00000020; | |
362 | pub const OBJ_CASE_INSENSITIVE: ULONG = 0x00000040; | |
363 | pub const OBJ_OPENIF: ULONG = 0x00000080; | |
364 | pub const OBJ_OPENLINK: ULONG = 0x00000100; | |
365 | pub const OBJ_KERNEL_HANDLE: ULONG = 0x00000200; | |
366 | pub const OBJ_FORCE_ACCESS_CHECK: ULONG = 0x00000400; | |
367 | pub const OBJ_IGNORE_IMPERSONATED_DEVICEMAP: ULONG = 0x00000800; | |
368 | pub const OBJ_DONT_REPARSE: ULONG = 0x00001000; | |
369 | pub const OBJ_VALID_ATTRIBUTES: ULONG = 0x00001FF2; | |
370 | STRUCT!{struct OBJECT_ATTRIBUTES64 { | |
371 | Length: ULONG, | |
372 | RootDirectory: ULONG64, | |
373 | ObjectName: ULONG64, | |
374 | Attributes: ULONG, | |
375 | SecurityDescriptor: ULONG64, | |
376 | SecurityQualityOfService: ULONG64, | |
377 | }} | |
378 | pub type POBJECT_ATTRIBUTES64 = *mut OBJECT_ATTRIBUTES64; | |
379 | pub type PCOBJECT_ATTRIBUTES64 = *const OBJECT_ATTRIBUTES64; | |
380 | STRUCT!{struct OBJECT_ATTRIBUTES32 { | |
381 | Length: ULONG, | |
382 | RootDirectory: ULONG, | |
383 | ObjectName: ULONG, | |
384 | Attributes: ULONG, | |
385 | SecurityDescriptor: ULONG, | |
386 | SecurityQualityOfService: ULONG, | |
387 | }} | |
388 | pub type POBJECT_ATTRIBUTES32 = *mut OBJECT_ATTRIBUTES32; | |
389 | pub type PCOBJECT_ATTRIBUTES32 = *const OBJECT_ATTRIBUTES32; | |
390 | STRUCT!{struct OBJECT_ATTRIBUTES { | |
391 | Length: ULONG, | |
392 | RootDirectory: HANDLE, | |
393 | ObjectName: PUNICODE_STRING, | |
394 | Attributes: ULONG, | |
395 | SecurityDescriptor: PVOID, | |
396 | SecurityQualityOfService: PVOID, | |
397 | }} | |
398 | pub type POBJECT_ATTRIBUTES = *mut OBJECT_ATTRIBUTES; | |
399 | pub type PCOBJECT_ATTRIBUTES = *const OBJECT_ATTRIBUTES; | |
400 | #[inline] | |
401 | pub unsafe fn InitializeObjectAttributes( | |
402 | p: POBJECT_ATTRIBUTES, | |
403 | n: PUNICODE_STRING, | |
404 | a: ULONG, | |
405 | r: HANDLE, | |
406 | s: PVOID, | |
407 | ) { | |
408 | use core::mem::size_of; | |
409 | (*p).Length = size_of::<OBJECT_ATTRIBUTES>() as ULONG; | |
410 | (*p).RootDirectory = r; | |
411 | (*p).Attributes = a; | |
412 | (*p).ObjectName = n; | |
413 | (*p).SecurityDescriptor = s; | |
414 | (*p).SecurityQualityOfService = NULL; | |
415 | } | |
416 | pub const FALSE: BOOLEAN = 0; | |
417 | pub const TRUE: BOOLEAN = 1; | |
418 | pub const NULL: PVOID = 0 as PVOID; | |
419 | pub const NULL64: PVOID64 = 0; | |
420 | STRUCT!{struct OBJECTID { | |
421 | Lineage: GUID, | |
422 | Uniquifier: ULONG, | |
423 | }} | |
424 | pub const MINCHAR: CHAR = 0x80; | |
425 | pub const MAXCHAR: CHAR = 0x7f; | |
426 | pub const MINSHORT: SHORT = 0x8000; | |
427 | pub const MAXSHORT: SHORT = 0x7fff; | |
428 | pub const MINLONG: LONG = 0x80000000; | |
429 | pub const MAXLONG: LONG = 0x7fffffff; | |
430 | pub const MAXUCHAR: UCHAR = 0xff; | |
431 | pub const MAXUSHORT: USHORT = 0xffff; | |
432 | pub const MAXULONG: ULONG = 0xffffffff; | |
433 | // PEXCEPTION_ROUTINE: Can't define here, because it needs EXCEPTION_RECORD and CONTEXT. | |
434 | pub type KIRQL = UCHAR; | |
435 | pub type PKIRQL = *mut KIRQL; | |
436 | ENUM!{enum NT_PRODUCT_TYPE { | |
437 | NtProductWinNt = 1, | |
438 | NtProductLanManNt, | |
439 | NtProductServer, | |
440 | }} | |
441 | pub type PNT_PRODUCT_TYPE = *mut NT_PRODUCT_TYPE; | |
442 | ENUM!{enum SUITE_TYPE { | |
443 | SmallBusiness, | |
444 | Enterprise, | |
445 | BackOffice, | |
446 | CommunicationServer, | |
447 | TerminalServer, | |
448 | SmallBusinessRestricted, | |
449 | EmbeddedNT, | |
450 | DataCenter, | |
451 | SingleUserTS, | |
452 | Personal, | |
453 | Blade, | |
454 | EmbeddedRestricted, | |
455 | SecurityAppliance, | |
456 | StorageServer, | |
457 | ComputeServer, | |
458 | WHServer, | |
459 | PhoneNT, | |
460 | MaxSuiteType, | |
461 | }} | |
462 | pub const VER_SERVER_NT: ULONG = 0x80000000; | |
463 | pub const VER_WORKSTATION_NT: ULONG = 0x40000000; | |
464 | pub const VER_SUITE_SMALLBUSINESS: ULONG = 0x00000001; | |
465 | pub const VER_SUITE_ENTERPRISE: ULONG = 0x00000002; | |
466 | pub const VER_SUITE_BACKOFFICE: ULONG = 0x00000004; | |
467 | pub const VER_SUITE_COMMUNICATIONS: ULONG = 0x00000008; | |
468 | pub const VER_SUITE_TERMINAL: ULONG = 0x00000010; | |
469 | pub const VER_SUITE_SMALLBUSINESS_RESTRICTED: ULONG = 0x00000020; | |
470 | pub const VER_SUITE_EMBEDDEDNT: ULONG = 0x00000040; | |
471 | pub const VER_SUITE_DATACENTER: ULONG = 0x00000080; | |
472 | pub const VER_SUITE_SINGLEUSERTS: ULONG = 0x00000100; | |
473 | pub const VER_SUITE_PERSONAL: ULONG = 0x00000200; | |
474 | pub const VER_SUITE_BLADE: ULONG = 0x00000400; | |
475 | pub const VER_SUITE_EMBEDDED_RESTRICTED: ULONG = 0x00000800; | |
476 | pub const VER_SUITE_SECURITY_APPLIANCE: ULONG = 0x00001000; | |
477 | pub const VER_SUITE_STORAGE_SERVER: ULONG = 0x00002000; | |
478 | pub const VER_SUITE_COMPUTE_SERVER: ULONG = 0x00004000; | |
479 | pub const VER_SUITE_WH_SERVER: ULONG = 0x00008000; | |
480 | pub const PRODUCT_UNDEFINED: ULONG = 0x00000000; | |
481 | pub const PRODUCT_ULTIMATE: ULONG = 0x00000001; | |
482 | pub const PRODUCT_HOME_BASIC: ULONG = 0x00000002; | |
483 | pub const PRODUCT_HOME_PREMIUM: ULONG = 0x00000003; | |
484 | pub const PRODUCT_ENTERPRISE: ULONG = 0x00000004; | |
485 | pub const PRODUCT_HOME_BASIC_N: ULONG = 0x00000005; | |
486 | pub const PRODUCT_BUSINESS: ULONG = 0x00000006; | |
487 | pub const PRODUCT_STANDARD_SERVER: ULONG = 0x00000007; | |
488 | pub const PRODUCT_DATACENTER_SERVER: ULONG = 0x00000008; | |
489 | pub const PRODUCT_SMALLBUSINESS_SERVER: ULONG = 0x00000009; | |
490 | pub const PRODUCT_ENTERPRISE_SERVER: ULONG = 0x0000000A; | |
491 | pub const PRODUCT_STARTER: ULONG = 0x0000000B; | |
492 | pub const PRODUCT_DATACENTER_SERVER_CORE: ULONG = 0x0000000C; | |
493 | pub const PRODUCT_STANDARD_SERVER_CORE: ULONG = 0x0000000D; | |
494 | pub const PRODUCT_ENTERPRISE_SERVER_CORE: ULONG = 0x0000000E; | |
495 | pub const PRODUCT_ENTERPRISE_SERVER_IA64: ULONG = 0x0000000F; | |
496 | pub const PRODUCT_BUSINESS_N: ULONG = 0x00000010; | |
497 | pub const PRODUCT_WEB_SERVER: ULONG = 0x00000011; | |
498 | pub const PRODUCT_CLUSTER_SERVER: ULONG = 0x00000012; | |
499 | pub const PRODUCT_HOME_SERVER: ULONG = 0x00000013; | |
500 | pub const PRODUCT_STORAGE_EXPRESS_SERVER: ULONG = 0x00000014; | |
501 | pub const PRODUCT_STORAGE_STANDARD_SERVER: ULONG = 0x00000015; | |
502 | pub const PRODUCT_STORAGE_WORKGROUP_SERVER: ULONG = 0x00000016; | |
503 | pub const PRODUCT_STORAGE_ENTERPRISE_SERVER: ULONG = 0x00000017; | |
504 | pub const PRODUCT_SERVER_FOR_SMALLBUSINESS: ULONG = 0x00000018; | |
505 | pub const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM: ULONG = 0x00000019; | |
506 | pub const PRODUCT_HOME_PREMIUM_N: ULONG = 0x0000001A; | |
507 | pub const PRODUCT_ENTERPRISE_N: ULONG = 0x0000001B; | |
508 | pub const PRODUCT_ULTIMATE_N: ULONG = 0x0000001C; | |
509 | pub const PRODUCT_WEB_SERVER_CORE: ULONG = 0x0000001D; | |
510 | pub const PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT: ULONG = 0x0000001E; | |
511 | pub const PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY: ULONG = 0x0000001F; | |
512 | pub const PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING: ULONG = 0x00000020; | |
513 | pub const PRODUCT_SERVER_FOUNDATION: ULONG = 0x00000021; | |
514 | pub const PRODUCT_HOME_PREMIUM_SERVER: ULONG = 0x00000022; | |
515 | pub const PRODUCT_SERVER_FOR_SMALLBUSINESS_V: ULONG = 0x00000023; | |
516 | pub const PRODUCT_STANDARD_SERVER_V: ULONG = 0x00000024; | |
517 | pub const PRODUCT_DATACENTER_SERVER_V: ULONG = 0x00000025; | |
518 | pub const PRODUCT_ENTERPRISE_SERVER_V: ULONG = 0x00000026; | |
519 | pub const PRODUCT_DATACENTER_SERVER_CORE_V: ULONG = 0x00000027; | |
520 | pub const PRODUCT_STANDARD_SERVER_CORE_V: ULONG = 0x00000028; | |
521 | pub const PRODUCT_ENTERPRISE_SERVER_CORE_V: ULONG = 0x00000029; | |
522 | pub const PRODUCT_HYPERV: ULONG = 0x0000002A; | |
523 | pub const PRODUCT_STORAGE_EXPRESS_SERVER_CORE: ULONG = 0x0000002B; | |
524 | pub const PRODUCT_STORAGE_STANDARD_SERVER_CORE: ULONG = 0x0000002C; | |
525 | pub const PRODUCT_STORAGE_WORKGROUP_SERVER_CORE: ULONG = 0x0000002D; | |
526 | pub const PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE: ULONG = 0x0000002E; | |
527 | pub const PRODUCT_STARTER_N: ULONG = 0x0000002F; | |
528 | pub const PRODUCT_PROFESSIONAL: ULONG = 0x00000030; | |
529 | pub const PRODUCT_PROFESSIONAL_N: ULONG = 0x00000031; | |
530 | pub const PRODUCT_SB_SOLUTION_SERVER: ULONG = 0x00000032; | |
531 | pub const PRODUCT_SERVER_FOR_SB_SOLUTIONS: ULONG = 0x00000033; | |
532 | pub const PRODUCT_STANDARD_SERVER_SOLUTIONS: ULONG = 0x00000034; | |
533 | pub const PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE: ULONG = 0x00000035; | |
534 | pub const PRODUCT_SB_SOLUTION_SERVER_EM: ULONG = 0x00000036; | |
535 | pub const PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM: ULONG = 0x00000037; | |
536 | pub const PRODUCT_SOLUTION_EMBEDDEDSERVER: ULONG = 0x00000038; | |
537 | pub const PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE: ULONG = 0x00000039; | |
538 | pub const PRODUCT_PROFESSIONAL_EMBEDDED: ULONG = 0x0000003A; | |
539 | pub const PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT: ULONG = 0x0000003B; | |
540 | pub const PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL: ULONG = 0x0000003C; | |
541 | pub const PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC: ULONG = 0x0000003D; | |
542 | pub const PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC: ULONG = 0x0000003E; | |
543 | pub const PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: ULONG = 0x0000003F; | |
544 | pub const PRODUCT_CLUSTER_SERVER_V: ULONG = 0x00000040; | |
545 | pub const PRODUCT_EMBEDDED: ULONG = 0x00000041; | |
546 | pub const PRODUCT_STARTER_E: ULONG = 0x00000042; | |
547 | pub const PRODUCT_HOME_BASIC_E: ULONG = 0x00000043; | |
548 | pub const PRODUCT_HOME_PREMIUM_E: ULONG = 0x00000044; | |
549 | pub const PRODUCT_PROFESSIONAL_E: ULONG = 0x00000045; | |
550 | pub const PRODUCT_ENTERPRISE_E: ULONG = 0x00000046; | |
551 | pub const PRODUCT_ULTIMATE_E: ULONG = 0x00000047; | |
552 | pub const PRODUCT_ENTERPRISE_EVALUATION: ULONG = 0x00000048; | |
553 | pub const PRODUCT_MULTIPOINT_STANDARD_SERVER: ULONG = 0x0000004C; | |
554 | pub const PRODUCT_MULTIPOINT_PREMIUM_SERVER: ULONG = 0x0000004D; | |
555 | pub const PRODUCT_STANDARD_EVALUATION_SERVER: ULONG = 0x0000004F; | |
556 | pub const PRODUCT_DATACENTER_EVALUATION_SERVER: ULONG = 0x00000050; | |
557 | pub const PRODUCT_ENTERPRISE_N_EVALUATION: ULONG = 0x00000054; | |
558 | pub const PRODUCT_EMBEDDED_AUTOMOTIVE: ULONG = 0x00000055; | |
559 | pub const PRODUCT_EMBEDDED_INDUSTRY_A: ULONG = 0x00000056; | |
560 | pub const PRODUCT_THINPC: ULONG = 0x00000057; | |
561 | pub const PRODUCT_EMBEDDED_A: ULONG = 0x00000058; | |
562 | pub const PRODUCT_EMBEDDED_INDUSTRY: ULONG = 0x00000059; | |
563 | pub const PRODUCT_EMBEDDED_E: ULONG = 0x0000005A; | |
564 | pub const PRODUCT_EMBEDDED_INDUSTRY_E: ULONG = 0x0000005B; | |
565 | pub const PRODUCT_EMBEDDED_INDUSTRY_A_E: ULONG = 0x0000005C; | |
566 | pub const PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER: ULONG = 0x0000005F; | |
567 | pub const PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER: ULONG = 0x00000060; | |
568 | pub const PRODUCT_CORE_ARM: ULONG = 0x00000061; | |
569 | pub const PRODUCT_CORE_N: ULONG = 0x00000062; | |
570 | pub const PRODUCT_CORE_COUNTRYSPECIFIC: ULONG = 0x00000063; | |
571 | pub const PRODUCT_CORE_SINGLELANGUAGE: ULONG = 0x00000064; | |
572 | pub const PRODUCT_CORE: ULONG = 0x00000065; | |
573 | pub const PRODUCT_PROFESSIONAL_WMC: ULONG = 0x00000067; | |
574 | pub const PRODUCT_MOBILE_CORE: ULONG = 0x00000068; | |
575 | pub const PRODUCT_EMBEDDED_INDUSTRY_EVAL: ULONG = 0x00000069; | |
576 | pub const PRODUCT_EMBEDDED_INDUSTRY_E_EVAL: ULONG = 0x0000006A; | |
577 | pub const PRODUCT_EMBEDDED_EVAL: ULONG = 0x0000006B; | |
578 | pub const PRODUCT_EMBEDDED_E_EVAL: ULONG = 0x0000006C; | |
579 | pub const PRODUCT_NANO_SERVER: ULONG = 0x0000006D; | |
580 | pub const PRODUCT_CLOUD_STORAGE_SERVER: ULONG = 0x0000006E; | |
581 | pub const PRODUCT_CORE_CONNECTED: ULONG = 0x0000006F; | |
582 | pub const PRODUCT_PROFESSIONAL_STUDENT: ULONG = 0x00000070; | |
583 | pub const PRODUCT_CORE_CONNECTED_N: ULONG = 0x00000071; | |
584 | pub const PRODUCT_PROFESSIONAL_STUDENT_N: ULONG = 0x00000072; | |
585 | pub const PRODUCT_CORE_CONNECTED_SINGLELANGUAGE: ULONG = 0x00000073; | |
586 | pub const PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC: ULONG = 0x00000074; | |
587 | pub const PRODUCT_CONNECTED_CAR: ULONG = 0x00000075; | |
588 | pub const PRODUCT_INDUSTRY_HANDHELD: ULONG = 0x00000076; | |
589 | pub const PRODUCT_PPI_PRO: ULONG = 0x00000077; | |
590 | pub const PRODUCT_ARM64_SERVER: ULONG = 0x00000078; | |
591 | pub const PRODUCT_EDUCATION: ULONG = 0x00000079; | |
592 | pub const PRODUCT_EDUCATION_N: ULONG = 0x0000007A; | |
593 | pub const PRODUCT_IOTUAP: ULONG = 0x0000007B; | |
594 | pub const PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER: ULONG = 0x0000007C; | |
595 | pub const PRODUCT_ENTERPRISE_S: ULONG = 0x0000007D; | |
596 | pub const PRODUCT_ENTERPRISE_S_N: ULONG = 0x0000007E; | |
597 | pub const PRODUCT_PROFESSIONAL_S: ULONG = 0x0000007F; | |
598 | pub const PRODUCT_PROFESSIONAL_S_N: ULONG = 0x00000080; | |
599 | pub const PRODUCT_ENTERPRISE_S_EVALUATION: ULONG = 0x00000081; | |
600 | pub const PRODUCT_ENTERPRISE_S_N_EVALUATION: ULONG = 0x00000082; | |
601 | pub const PRODUCT_HOLOGRAPHIC: ULONG = 0x00000087; | |
602 | pub const PRODUCT_PRO_SINGLE_LANGUAGE: ULONG = 0x0000008A; | |
603 | pub const PRODUCT_PRO_CHINA: ULONG = 0x0000008B; | |
604 | pub const PRODUCT_ENTERPRISE_SUBSCRIPTION: ULONG = 0x0000008C; | |
605 | pub const PRODUCT_ENTERPRISE_SUBSCRIPTION_N: ULONG = 0x0000008D; | |
606 | pub const PRODUCT_DATACENTER_NANO_SERVER: ULONG = 0x0000008F; | |
607 | pub const PRODUCT_STANDARD_NANO_SERVER: ULONG = 0x00000090; | |
608 | pub const PRODUCT_DATACENTER_A_SERVER_CORE: ULONG = 0x00000091; | |
609 | pub const PRODUCT_STANDARD_A_SERVER_CORE: ULONG = 0x00000092; | |
610 | pub const PRODUCT_DATACENTER_WS_SERVER_CORE: ULONG = 0x00000093; | |
611 | pub const PRODUCT_STANDARD_WS_SERVER_CORE: ULONG = 0x00000094; | |
612 | pub const PRODUCT_UTILITY_VM: ULONG = 0x00000095; | |
613 | pub const PRODUCT_DATACENTER_EVALUATION_SERVER_CORE: ULONG = 0x0000009F; | |
614 | pub const PRODUCT_STANDARD_EVALUATION_SERVER_CORE: ULONG = 0x000000A0; | |
615 | pub const PRODUCT_PRO_WORKSTATION: ULONG = 0x000000A1; | |
616 | pub const PRODUCT_PRO_WORKSTATION_N: ULONG = 0x000000A2; | |
617 | pub const PRODUCT_PRO_FOR_EDUCATION: ULONG = 0x000000A4; | |
618 | pub const PRODUCT_PRO_FOR_EDUCATION_N: ULONG = 0x000000A5; | |
619 | pub const PRODUCT_AZURE_SERVER_CORE: ULONG = 0x000000A8; | |
620 | pub const PRODUCT_AZURE_NANO_SERVER: ULONG = 0x000000A9; | |
621 | pub const PRODUCT_UNLICENSED: ULONG = 0xABCDABCD; | |
622 | pub const LANG_NEUTRAL: USHORT = 0x00; | |
623 | pub const LANG_INVARIANT: USHORT = 0x7f; | |
624 | pub const LANG_AFRIKAANS: USHORT = 0x36; | |
625 | pub const LANG_ALBANIAN: USHORT = 0x1c; | |
626 | pub const LANG_ALSATIAN: USHORT = 0x84; | |
627 | pub const LANG_AMHARIC: USHORT = 0x5e; | |
628 | pub const LANG_ARABIC: USHORT = 0x01; | |
629 | pub const LANG_ARMENIAN: USHORT = 0x2b; | |
630 | pub const LANG_ASSAMESE: USHORT = 0x4d; | |
631 | pub const LANG_AZERI: USHORT = 0x2c; | |
632 | pub const LANG_AZERBAIJANI: USHORT = 0x2c; | |
633 | pub const LANG_BANGLA: USHORT = 0x45; | |
634 | pub const LANG_BASHKIR: USHORT = 0x6d; | |
635 | pub const LANG_BASQUE: USHORT = 0x2d; | |
636 | pub const LANG_BELARUSIAN: USHORT = 0x23; | |
637 | pub const LANG_BENGALI: USHORT = 0x45; | |
638 | pub const LANG_BRETON: USHORT = 0x7e; | |
639 | pub const LANG_BOSNIAN: USHORT = 0x1a; | |
640 | pub const LANG_BOSNIAN_NEUTRAL: USHORT = 0x781a; | |
641 | pub const LANG_BULGARIAN: USHORT = 0x02; | |
642 | pub const LANG_CATALAN: USHORT = 0x03; | |
643 | pub const LANG_CENTRAL_KURDISH: USHORT = 0x92; | |
644 | pub const LANG_CHEROKEE: USHORT = 0x5c; | |
645 | pub const LANG_CHINESE: USHORT = 0x04; | |
646 | pub const LANG_CHINESE_SIMPLIFIED: USHORT = 0x04; | |
647 | pub const LANG_CHINESE_TRADITIONAL: USHORT = 0x7c04; | |
648 | pub const LANG_CORSICAN: USHORT = 0x83; | |
649 | pub const LANG_CROATIAN: USHORT = 0x1a; | |
650 | pub const LANG_CZECH: USHORT = 0x05; | |
651 | pub const LANG_DANISH: USHORT = 0x06; | |
652 | pub const LANG_DARI: USHORT = 0x8c; | |
653 | pub const LANG_DIVEHI: USHORT = 0x65; | |
654 | pub const LANG_DUTCH: USHORT = 0x13; | |
655 | pub const LANG_ENGLISH: USHORT = 0x09; | |
656 | pub const LANG_ESTONIAN: USHORT = 0x25; | |
657 | pub const LANG_FAEROESE: USHORT = 0x38; | |
658 | pub const LANG_FARSI: USHORT = 0x29; | |
659 | pub const LANG_FILIPINO: USHORT = 0x64; | |
660 | pub const LANG_FINNISH: USHORT = 0x0b; | |
661 | pub const LANG_FRENCH: USHORT = 0x0c; | |
662 | pub const LANG_FRISIAN: USHORT = 0x62; | |
663 | pub const LANG_FULAH: USHORT = 0x67; | |
664 | pub const LANG_GALICIAN: USHORT = 0x56; | |
665 | pub const LANG_GEORGIAN: USHORT = 0x37; | |
666 | pub const LANG_GERMAN: USHORT = 0x07; | |
667 | pub const LANG_GREEK: USHORT = 0x08; | |
668 | pub const LANG_GREENLANDIC: USHORT = 0x6f; | |
669 | pub const LANG_GUJARATI: USHORT = 0x47; | |
670 | pub const LANG_HAUSA: USHORT = 0x68; | |
671 | pub const LANG_HAWAIIAN: USHORT = 0x75; | |
672 | pub const LANG_HEBREW: USHORT = 0x0d; | |
673 | pub const LANG_HINDI: USHORT = 0x39; | |
674 | pub const LANG_HUNGARIAN: USHORT = 0x0e; | |
675 | pub const LANG_ICELANDIC: USHORT = 0x0f; | |
676 | pub const LANG_IGBO: USHORT = 0x70; | |
677 | pub const LANG_INDONESIAN: USHORT = 0x21; | |
678 | pub const LANG_INUKTITUT: USHORT = 0x5d; | |
679 | pub const LANG_IRISH: USHORT = 0x3c; | |
680 | pub const LANG_ITALIAN: USHORT = 0x10; | |
681 | pub const LANG_JAPANESE: USHORT = 0x11; | |
682 | pub const LANG_KANNADA: USHORT = 0x4b; | |
683 | pub const LANG_KASHMIRI: USHORT = 0x60; | |
684 | pub const LANG_KAZAK: USHORT = 0x3f; | |
685 | pub const LANG_KHMER: USHORT = 0x53; | |
686 | pub const LANG_KICHE: USHORT = 0x86; | |
687 | pub const LANG_KINYARWANDA: USHORT = 0x87; | |
688 | pub const LANG_KONKANI: USHORT = 0x57; | |
689 | pub const LANG_KOREAN: USHORT = 0x12; | |
690 | pub const LANG_KYRGYZ: USHORT = 0x40; | |
691 | pub const LANG_LAO: USHORT = 0x54; | |
692 | pub const LANG_LATVIAN: USHORT = 0x26; | |
693 | pub const LANG_LITHUANIAN: USHORT = 0x27; | |
694 | pub const LANG_LOWER_SORBIAN: USHORT = 0x2e; | |
695 | pub const LANG_LUXEMBOURGISH: USHORT = 0x6e; | |
696 | pub const LANG_MACEDONIAN: USHORT = 0x2f; | |
697 | pub const LANG_MALAY: USHORT = 0x3e; | |
698 | pub const LANG_MALAYALAM: USHORT = 0x4c; | |
699 | pub const LANG_MALTESE: USHORT = 0x3a; | |
700 | pub const LANG_MANIPURI: USHORT = 0x58; | |
701 | pub const LANG_MAORI: USHORT = 0x81; | |
702 | pub const LANG_MAPUDUNGUN: USHORT = 0x7a; | |
703 | pub const LANG_MARATHI: USHORT = 0x4e; | |
704 | pub const LANG_MOHAWK: USHORT = 0x7c; | |
705 | pub const LANG_MONGOLIAN: USHORT = 0x50; | |
706 | pub const LANG_NEPALI: USHORT = 0x61; | |
707 | pub const LANG_NORWEGIAN: USHORT = 0x14; | |
708 | pub const LANG_OCCITAN: USHORT = 0x82; | |
709 | pub const LANG_ODIA: USHORT = 0x48; | |
710 | pub const LANG_ORIYA: USHORT = 0x48; | |
711 | pub const LANG_PASHTO: USHORT = 0x63; | |
712 | pub const LANG_PERSIAN: USHORT = 0x29; | |
713 | pub const LANG_POLISH: USHORT = 0x15; | |
714 | pub const LANG_PORTUGUESE: USHORT = 0x16; | |
715 | pub const LANG_PULAR: USHORT = 0x67; | |
716 | pub const LANG_PUNJABI: USHORT = 0x46; | |
717 | pub const LANG_QUECHUA: USHORT = 0x6b; | |
718 | pub const LANG_ROMANIAN: USHORT = 0x18; | |
719 | pub const LANG_ROMANSH: USHORT = 0x17; | |
720 | pub const LANG_RUSSIAN: USHORT = 0x19; | |
721 | pub const LANG_SAKHA: USHORT = 0x85; | |
722 | pub const LANG_SAMI: USHORT = 0x3b; | |
723 | pub const LANG_SANSKRIT: USHORT = 0x4f; | |
724 | pub const LANG_SCOTTISH_GAELIC: USHORT = 0x91; | |
725 | pub const LANG_SERBIAN: USHORT = 0x1a; | |
726 | pub const LANG_SERBIAN_NEUTRAL: USHORT = 0x7c1a; | |
727 | pub const LANG_SINDHI: USHORT = 0x59; | |
728 | pub const LANG_SINHALESE: USHORT = 0x5b; | |
729 | pub const LANG_SLOVAK: USHORT = 0x1b; | |
730 | pub const LANG_SLOVENIAN: USHORT = 0x24; | |
731 | pub const LANG_SOTHO: USHORT = 0x6c; | |
732 | pub const LANG_SPANISH: USHORT = 0x0a; | |
733 | pub const LANG_SWAHILI: USHORT = 0x41; | |
734 | pub const LANG_SWEDISH: USHORT = 0x1d; | |
735 | pub const LANG_SYRIAC: USHORT = 0x5a; | |
736 | pub const LANG_TAJIK: USHORT = 0x28; | |
737 | pub const LANG_TAMAZIGHT: USHORT = 0x5f; | |
738 | pub const LANG_TAMIL: USHORT = 0x49; | |
739 | pub const LANG_TATAR: USHORT = 0x44; | |
740 | pub const LANG_TELUGU: USHORT = 0x4a; | |
741 | pub const LANG_THAI: USHORT = 0x1e; | |
742 | pub const LANG_TIBETAN: USHORT = 0x51; | |
743 | pub const LANG_TIGRIGNA: USHORT = 0x73; | |
744 | pub const LANG_TIGRINYA: USHORT = 0x73; | |
745 | pub const LANG_TSWANA: USHORT = 0x32; | |
746 | pub const LANG_TURKISH: USHORT = 0x1f; | |
747 | pub const LANG_TURKMEN: USHORT = 0x42; | |
748 | pub const LANG_UIGHUR: USHORT = 0x80; | |
749 | pub const LANG_UKRAINIAN: USHORT = 0x22; | |
750 | pub const LANG_UPPER_SORBIAN: USHORT = 0x2e; | |
751 | pub const LANG_URDU: USHORT = 0x20; | |
752 | pub const LANG_UZBEK: USHORT = 0x43; | |
753 | pub const LANG_VALENCIAN: USHORT = 0x03; | |
754 | pub const LANG_VIETNAMESE: USHORT = 0x2a; | |
755 | pub const LANG_WELSH: USHORT = 0x52; | |
756 | pub const LANG_WOLOF: USHORT = 0x88; | |
757 | pub const LANG_XHOSA: USHORT = 0x34; | |
758 | pub const LANG_YAKUT: USHORT = 0x85; | |
759 | pub const LANG_YI: USHORT = 0x78; | |
760 | pub const LANG_YORUBA: USHORT = 0x6a; | |
761 | pub const LANG_ZULU: USHORT = 0x35; | |
762 | pub const SUBLANG_NEUTRAL: USHORT = 0x00; | |
763 | pub const SUBLANG_DEFAULT: USHORT = 0x01; | |
764 | pub const SUBLANG_SYS_DEFAULT: USHORT = 0x02; | |
765 | pub const SUBLANG_CUSTOM_DEFAULT: USHORT = 0x03; | |
766 | pub const SUBLANG_CUSTOM_UNSPECIFIED: USHORT = 0x04; | |
767 | pub const SUBLANG_UI_CUSTOM_DEFAULT: USHORT = 0x05; | |
768 | pub const SUBLANG_AFRIKAANS_SOUTH_AFRICA: USHORT = 0x01; | |
769 | pub const SUBLANG_ALBANIAN_ALBANIA: USHORT = 0x01; | |
770 | pub const SUBLANG_ALSATIAN_FRANCE: USHORT = 0x01; | |
771 | pub const SUBLANG_AMHARIC_ETHIOPIA: USHORT = 0x01; | |
772 | pub const SUBLANG_ARABIC_SAUDI_ARABIA: USHORT = 0x01; | |
773 | pub const SUBLANG_ARABIC_IRAQ: USHORT = 0x02; | |
774 | pub const SUBLANG_ARABIC_EGYPT: USHORT = 0x03; | |
775 | pub const SUBLANG_ARABIC_LIBYA: USHORT = 0x04; | |
776 | pub const SUBLANG_ARABIC_ALGERIA: USHORT = 0x05; | |
777 | pub const SUBLANG_ARABIC_MOROCCO: USHORT = 0x06; | |
778 | pub const SUBLANG_ARABIC_TUNISIA: USHORT = 0x07; | |
779 | pub const SUBLANG_ARABIC_OMAN: USHORT = 0x08; | |
780 | pub const SUBLANG_ARABIC_YEMEN: USHORT = 0x09; | |
781 | pub const SUBLANG_ARABIC_SYRIA: USHORT = 0x0a; | |
782 | pub const SUBLANG_ARABIC_JORDAN: USHORT = 0x0b; | |
783 | pub const SUBLANG_ARABIC_LEBANON: USHORT = 0x0c; | |
784 | pub const SUBLANG_ARABIC_KUWAIT: USHORT = 0x0d; | |
785 | pub const SUBLANG_ARABIC_UAE: USHORT = 0x0e; | |
786 | pub const SUBLANG_ARABIC_BAHRAIN: USHORT = 0x0f; | |
787 | pub const SUBLANG_ARABIC_QATAR: USHORT = 0x10; | |
788 | pub const SUBLANG_ARMENIAN_ARMENIA: USHORT = 0x01; | |
789 | pub const SUBLANG_ASSAMESE_INDIA: USHORT = 0x01; | |
790 | pub const SUBLANG_AZERI_LATIN: USHORT = 0x01; | |
791 | pub const SUBLANG_AZERI_CYRILLIC: USHORT = 0x02; | |
792 | pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN: USHORT = 0x01; | |
793 | pub const SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC: USHORT = 0x02; | |
794 | pub const SUBLANG_BANGLA_INDIA: USHORT = 0x01; | |
795 | pub const SUBLANG_BANGLA_BANGLADESH: USHORT = 0x02; | |
796 | pub const SUBLANG_BASHKIR_RUSSIA: USHORT = 0x01; | |
797 | pub const SUBLANG_BASQUE_BASQUE: USHORT = 0x01; | |
798 | pub const SUBLANG_BELARUSIAN_BELARUS: USHORT = 0x01; | |
799 | pub const SUBLANG_BENGALI_INDIA: USHORT = 0x01; | |
800 | pub const SUBLANG_BENGALI_BANGLADESH: USHORT = 0x02; | |
801 | pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN: USHORT = 0x05; | |
802 | pub const SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC: USHORT = 0x08; | |
803 | pub const SUBLANG_BRETON_FRANCE: USHORT = 0x01; | |
804 | pub const SUBLANG_BULGARIAN_BULGARIA: USHORT = 0x01; | |
805 | pub const SUBLANG_CATALAN_CATALAN: USHORT = 0x01; | |
806 | pub const SUBLANG_CENTRAL_KURDISH_IRAQ: USHORT = 0x01; | |
807 | pub const SUBLANG_CHEROKEE_CHEROKEE: USHORT = 0x01; | |
808 | pub const SUBLANG_CHINESE_TRADITIONAL: USHORT = 0x01; | |
809 | pub const SUBLANG_CHINESE_SIMPLIFIED: USHORT = 0x02; | |
810 | pub const SUBLANG_CHINESE_HONGKONG: USHORT = 0x03; | |
811 | pub const SUBLANG_CHINESE_SINGAPORE: USHORT = 0x04; | |
812 | pub const SUBLANG_CHINESE_MACAU: USHORT = 0x05; | |
813 | pub const SUBLANG_CORSICAN_FRANCE: USHORT = 0x01; | |
814 | pub const SUBLANG_CZECH_CZECH_REPUBLIC: USHORT = 0x01; | |
815 | pub const SUBLANG_CROATIAN_CROATIA: USHORT = 0x01; | |
816 | pub const SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN: USHORT = 0x04; | |
817 | pub const SUBLANG_DANISH_DENMARK: USHORT = 0x01; | |
818 | pub const SUBLANG_DARI_AFGHANISTAN: USHORT = 0x01; | |
819 | pub const SUBLANG_DIVEHI_MALDIVES: USHORT = 0x01; | |
820 | pub const SUBLANG_DUTCH: USHORT = 0x01; | |
821 | pub const SUBLANG_DUTCH_BELGIAN: USHORT = 0x02; | |
822 | pub const SUBLANG_ENGLISH_US: USHORT = 0x01; | |
823 | pub const SUBLANG_ENGLISH_UK: USHORT = 0x02; | |
824 | pub const SUBLANG_ENGLISH_AUS: USHORT = 0x03; | |
825 | pub const SUBLANG_ENGLISH_CAN: USHORT = 0x04; | |
826 | pub const SUBLANG_ENGLISH_NZ: USHORT = 0x05; | |
827 | pub const SUBLANG_ENGLISH_EIRE: USHORT = 0x06; | |
828 | pub const SUBLANG_ENGLISH_SOUTH_AFRICA: USHORT = 0x07; | |
829 | pub const SUBLANG_ENGLISH_JAMAICA: USHORT = 0x08; | |
830 | pub const SUBLANG_ENGLISH_CARIBBEAN: USHORT = 0x09; | |
831 | pub const SUBLANG_ENGLISH_BELIZE: USHORT = 0x0a; | |
832 | pub const SUBLANG_ENGLISH_TRINIDAD: USHORT = 0x0b; | |
833 | pub const SUBLANG_ENGLISH_ZIMBABWE: USHORT = 0x0c; | |
834 | pub const SUBLANG_ENGLISH_PHILIPPINES: USHORT = 0x0d; | |
835 | pub const SUBLANG_ENGLISH_INDIA: USHORT = 0x10; | |
836 | pub const SUBLANG_ENGLISH_MALAYSIA: USHORT = 0x11; | |
837 | pub const SUBLANG_ENGLISH_SINGAPORE: USHORT = 0x12; | |
838 | pub const SUBLANG_ESTONIAN_ESTONIA: USHORT = 0x01; | |
839 | pub const SUBLANG_FAEROESE_FAROE_ISLANDS: USHORT = 0x01; | |
840 | pub const SUBLANG_FILIPINO_PHILIPPINES: USHORT = 0x01; | |
841 | pub const SUBLANG_FINNISH_FINLAND: USHORT = 0x01; | |
842 | pub const SUBLANG_FRENCH: USHORT = 0x01; | |
843 | pub const SUBLANG_FRENCH_BELGIAN: USHORT = 0x02; | |
844 | pub const SUBLANG_FRENCH_CANADIAN: USHORT = 0x03; | |
845 | pub const SUBLANG_FRENCH_SWISS: USHORT = 0x04; | |
846 | pub const SUBLANG_FRENCH_LUXEMBOURG: USHORT = 0x05; | |
847 | pub const SUBLANG_FRENCH_MONACO: USHORT = 0x06; | |
848 | pub const SUBLANG_FRISIAN_NETHERLANDS: USHORT = 0x01; | |
849 | pub const SUBLANG_FULAH_SENEGAL: USHORT = 0x02; | |
850 | pub const SUBLANG_GALICIAN_GALICIAN: USHORT = 0x01; | |
851 | pub const SUBLANG_GEORGIAN_GEORGIA: USHORT = 0x01; | |
852 | pub const SUBLANG_GERMAN: USHORT = 0x01; | |
853 | pub const SUBLANG_GERMAN_SWISS: USHORT = 0x02; | |
854 | pub const SUBLANG_GERMAN_AUSTRIAN: USHORT = 0x03; | |
855 | pub const SUBLANG_GERMAN_LUXEMBOURG: USHORT = 0x04; | |
856 | pub const SUBLANG_GERMAN_LIECHTENSTEIN: USHORT = 0x05; | |
857 | pub const SUBLANG_GREEK_GREECE: USHORT = 0x01; | |
858 | pub const SUBLANG_GREENLANDIC_GREENLAND: USHORT = 0x01; | |
859 | pub const SUBLANG_GUJARATI_INDIA: USHORT = 0x01; | |
860 | pub const SUBLANG_HAUSA_NIGERIA_LATIN: USHORT = 0x01; | |
861 | pub const SUBLANG_HAWAIIAN_US: USHORT = 0x01; | |
862 | pub const SUBLANG_HEBREW_ISRAEL: USHORT = 0x01; | |
863 | pub const SUBLANG_HINDI_INDIA: USHORT = 0x01; | |
864 | pub const SUBLANG_HUNGARIAN_HUNGARY: USHORT = 0x01; | |
865 | pub const SUBLANG_ICELANDIC_ICELAND: USHORT = 0x01; | |
866 | pub const SUBLANG_IGBO_NIGERIA: USHORT = 0x01; | |
867 | pub const SUBLANG_INDONESIAN_INDONESIA: USHORT = 0x01; | |
868 | pub const SUBLANG_INUKTITUT_CANADA: USHORT = 0x01; | |
869 | pub const SUBLANG_INUKTITUT_CANADA_LATIN: USHORT = 0x02; | |
870 | pub const SUBLANG_IRISH_IRELAND: USHORT = 0x02; | |
871 | pub const SUBLANG_ITALIAN: USHORT = 0x01; | |
872 | pub const SUBLANG_ITALIAN_SWISS: USHORT = 0x02; | |
873 | pub const SUBLANG_JAPANESE_JAPAN: USHORT = 0x01; | |
874 | pub const SUBLANG_KANNADA_INDIA: USHORT = 0x01; | |
875 | pub const SUBLANG_KASHMIRI_SASIA: USHORT = 0x02; | |
876 | pub const SUBLANG_KASHMIRI_INDIA: USHORT = 0x02; | |
877 | pub const SUBLANG_KAZAK_KAZAKHSTAN: USHORT = 0x01; | |
878 | pub const SUBLANG_KHMER_CAMBODIA: USHORT = 0x01; | |
879 | pub const SUBLANG_KICHE_GUATEMALA: USHORT = 0x01; | |
880 | pub const SUBLANG_KINYARWANDA_RWANDA: USHORT = 0x01; | |
881 | pub const SUBLANG_KONKANI_INDIA: USHORT = 0x01; | |
882 | pub const SUBLANG_KOREAN: USHORT = 0x01; | |
883 | pub const SUBLANG_KYRGYZ_KYRGYZSTAN: USHORT = 0x01; | |
884 | pub const SUBLANG_LAO_LAO: USHORT = 0x01; | |
885 | pub const SUBLANG_LATVIAN_LATVIA: USHORT = 0x01; | |
886 | pub const SUBLANG_LITHUANIAN: USHORT = 0x01; | |
887 | pub const SUBLANG_LOWER_SORBIAN_GERMANY: USHORT = 0x02; | |
888 | pub const SUBLANG_LUXEMBOURGISH_LUXEMBOURG: USHORT = 0x01; | |
889 | pub const SUBLANG_MACEDONIAN_MACEDONIA: USHORT = 0x01; | |
890 | pub const SUBLANG_MALAY_MALAYSIA: USHORT = 0x01; | |
891 | pub const SUBLANG_MALAY_BRUNEI_DARUSSALAM: USHORT = 0x02; | |
892 | pub const SUBLANG_MALAYALAM_INDIA: USHORT = 0x01; | |
893 | pub const SUBLANG_MALTESE_MALTA: USHORT = 0x01; | |
894 | pub const SUBLANG_MAORI_NEW_ZEALAND: USHORT = 0x01; | |
895 | pub const SUBLANG_MAPUDUNGUN_CHILE: USHORT = 0x01; | |
896 | pub const SUBLANG_MARATHI_INDIA: USHORT = 0x01; | |
897 | pub const SUBLANG_MOHAWK_MOHAWK: USHORT = 0x01; | |
898 | pub const SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA: USHORT = 0x01; | |
899 | pub const SUBLANG_MONGOLIAN_PRC: USHORT = 0x02; | |
900 | pub const SUBLANG_NEPALI_INDIA: USHORT = 0x02; | |
901 | pub const SUBLANG_NEPALI_NEPAL: USHORT = 0x01; | |
902 | pub const SUBLANG_NORWEGIAN_BOKMAL: USHORT = 0x01; | |
903 | pub const SUBLANG_NORWEGIAN_NYNORSK: USHORT = 0x02; | |
904 | pub const SUBLANG_OCCITAN_FRANCE: USHORT = 0x01; | |
905 | pub const SUBLANG_ODIA_INDIA: USHORT = 0x01; | |
906 | pub const SUBLANG_ORIYA_INDIA: USHORT = 0x01; | |
907 | pub const SUBLANG_PASHTO_AFGHANISTAN: USHORT = 0x01; | |
908 | pub const SUBLANG_PERSIAN_IRAN: USHORT = 0x01; | |
909 | pub const SUBLANG_POLISH_POLAND: USHORT = 0x01; | |
910 | pub const SUBLANG_PORTUGUESE: USHORT = 0x02; | |
911 | pub const SUBLANG_PORTUGUESE_BRAZILIAN: USHORT = 0x01; | |
912 | pub const SUBLANG_PULAR_SENEGAL: USHORT = 0x02; | |
913 | pub const SUBLANG_PUNJABI_INDIA: USHORT = 0x01; | |
914 | pub const SUBLANG_PUNJABI_PAKISTAN: USHORT = 0x02; | |
915 | pub const SUBLANG_QUECHUA_BOLIVIA: USHORT = 0x01; | |
916 | pub const SUBLANG_QUECHUA_ECUADOR: USHORT = 0x02; | |
917 | pub const SUBLANG_QUECHUA_PERU: USHORT = 0x03; | |
918 | pub const SUBLANG_ROMANIAN_ROMANIA: USHORT = 0x01; | |
919 | pub const SUBLANG_ROMANSH_SWITZERLAND: USHORT = 0x01; | |
920 | pub const SUBLANG_RUSSIAN_RUSSIA: USHORT = 0x01; | |
921 | pub const SUBLANG_SAKHA_RUSSIA: USHORT = 0x01; | |
922 | pub const SUBLANG_SAMI_NORTHERN_NORWAY: USHORT = 0x01; | |
923 | pub const SUBLANG_SAMI_NORTHERN_SWEDEN: USHORT = 0x02; | |
924 | pub const SUBLANG_SAMI_NORTHERN_FINLAND: USHORT = 0x03; | |
925 | pub const SUBLANG_SAMI_LULE_NORWAY: USHORT = 0x04; | |
926 | pub const SUBLANG_SAMI_LULE_SWEDEN: USHORT = 0x05; | |
927 | pub const SUBLANG_SAMI_SOUTHERN_NORWAY: USHORT = 0x06; | |
928 | pub const SUBLANG_SAMI_SOUTHERN_SWEDEN: USHORT = 0x07; | |
929 | pub const SUBLANG_SAMI_SKOLT_FINLAND: USHORT = 0x08; | |
930 | pub const SUBLANG_SAMI_INARI_FINLAND: USHORT = 0x09; | |
931 | pub const SUBLANG_SANSKRIT_INDIA: USHORT = 0x01; | |
932 | pub const SUBLANG_SCOTTISH_GAELIC: USHORT = 0x01; | |
933 | pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN: USHORT = 0x06; | |
934 | pub const SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC: USHORT = 0x07; | |
935 | pub const SUBLANG_SERBIAN_MONTENEGRO_LATIN: USHORT = 0x0b; | |
936 | pub const SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC: USHORT = 0x0c; | |
937 | pub const SUBLANG_SERBIAN_SERBIA_LATIN: USHORT = 0x09; | |
938 | pub const SUBLANG_SERBIAN_SERBIA_CYRILLIC: USHORT = 0x0a; | |
939 | pub const SUBLANG_SERBIAN_CROATIA: USHORT = 0x01; | |
940 | pub const SUBLANG_SERBIAN_LATIN: USHORT = 0x02; | |
941 | pub const SUBLANG_SERBIAN_CYRILLIC: USHORT = 0x03; | |
942 | pub const SUBLANG_SINDHI_INDIA: USHORT = 0x01; | |
943 | pub const SUBLANG_SINDHI_PAKISTAN: USHORT = 0x02; | |
944 | pub const SUBLANG_SINDHI_AFGHANISTAN: USHORT = 0x02; | |
945 | pub const SUBLANG_SINHALESE_SRI_LANKA: USHORT = 0x01; | |
946 | pub const SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA: USHORT = 0x01; | |
947 | pub const SUBLANG_SLOVAK_SLOVAKIA: USHORT = 0x01; | |
948 | pub const SUBLANG_SLOVENIAN_SLOVENIA: USHORT = 0x01; | |
949 | pub const SUBLANG_SPANISH: USHORT = 0x01; | |
950 | pub const SUBLANG_SPANISH_MEXICAN: USHORT = 0x02; | |
951 | pub const SUBLANG_SPANISH_MODERN: USHORT = 0x03; | |
952 | pub const SUBLANG_SPANISH_GUATEMALA: USHORT = 0x04; | |
953 | pub const SUBLANG_SPANISH_COSTA_RICA: USHORT = 0x05; | |
954 | pub const SUBLANG_SPANISH_PANAMA: USHORT = 0x06; | |
955 | pub const SUBLANG_SPANISH_DOMINICAN_REPUBLIC: USHORT = 0x07; | |
956 | pub const SUBLANG_SPANISH_VENEZUELA: USHORT = 0x08; | |
957 | pub const SUBLANG_SPANISH_COLOMBIA: USHORT = 0x09; | |
958 | pub const SUBLANG_SPANISH_PERU: USHORT = 0x0a; | |
959 | pub const SUBLANG_SPANISH_ARGENTINA: USHORT = 0x0b; | |
960 | pub const SUBLANG_SPANISH_ECUADOR: USHORT = 0x0c; | |
961 | pub const SUBLANG_SPANISH_CHILE: USHORT = 0x0d; | |
962 | pub const SUBLANG_SPANISH_URUGUAY: USHORT = 0x0e; | |
963 | pub const SUBLANG_SPANISH_PARAGUAY: USHORT = 0x0f; | |
964 | pub const SUBLANG_SPANISH_BOLIVIA: USHORT = 0x10; | |
965 | pub const SUBLANG_SPANISH_EL_SALVADOR: USHORT = 0x11; | |
966 | pub const SUBLANG_SPANISH_HONDURAS: USHORT = 0x12; | |
967 | pub const SUBLANG_SPANISH_NICARAGUA: USHORT = 0x13; | |
968 | pub const SUBLANG_SPANISH_PUERTO_RICO: USHORT = 0x14; | |
969 | pub const SUBLANG_SPANISH_US: USHORT = 0x15; | |
970 | pub const SUBLANG_SWAHILI_KENYA: USHORT = 0x01; | |
971 | pub const SUBLANG_SWEDISH: USHORT = 0x01; | |
972 | pub const SUBLANG_SWEDISH_FINLAND: USHORT = 0x02; | |
973 | pub const SUBLANG_SYRIAC_SYRIA: USHORT = 0x01; | |
974 | pub const SUBLANG_TAJIK_TAJIKISTAN: USHORT = 0x01; | |
975 | pub const SUBLANG_TAMAZIGHT_ALGERIA_LATIN: USHORT = 0x02; | |
976 | pub const SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH: USHORT = 0x04; | |
977 | pub const SUBLANG_TAMIL_INDIA: USHORT = 0x01; | |
978 | pub const SUBLANG_TAMIL_SRI_LANKA: USHORT = 0x02; | |
979 | pub const SUBLANG_TATAR_RUSSIA: USHORT = 0x01; | |
980 | pub const SUBLANG_TELUGU_INDIA: USHORT = 0x01; | |
981 | pub const SUBLANG_THAI_THAILAND: USHORT = 0x01; | |
982 | pub const SUBLANG_TIBETAN_PRC: USHORT = 0x01; | |
983 | pub const SUBLANG_TIGRIGNA_ERITREA: USHORT = 0x02; | |
984 | pub const SUBLANG_TIGRINYA_ERITREA: USHORT = 0x02; | |
985 | pub const SUBLANG_TIGRINYA_ETHIOPIA: USHORT = 0x01; | |
986 | pub const SUBLANG_TSWANA_BOTSWANA: USHORT = 0x02; | |
987 | pub const SUBLANG_TSWANA_SOUTH_AFRICA: USHORT = 0x01; | |
988 | pub const SUBLANG_TURKISH_TURKEY: USHORT = 0x01; | |
989 | pub const SUBLANG_TURKMEN_TURKMENISTAN: USHORT = 0x01; | |
990 | pub const SUBLANG_UIGHUR_PRC: USHORT = 0x01; | |
991 | pub const SUBLANG_UKRAINIAN_UKRAINE: USHORT = 0x01; | |
992 | pub const SUBLANG_UPPER_SORBIAN_GERMANY: USHORT = 0x01; | |
993 | pub const SUBLANG_URDU_PAKISTAN: USHORT = 0x01; | |
994 | pub const SUBLANG_URDU_INDIA: USHORT = 0x02; | |
995 | pub const SUBLANG_UZBEK_LATIN: USHORT = 0x01; | |
996 | pub const SUBLANG_UZBEK_CYRILLIC: USHORT = 0x02; | |
997 | pub const SUBLANG_VALENCIAN_VALENCIA: USHORT = 0x02; | |
998 | pub const SUBLANG_VIETNAMESE_VIETNAM: USHORT = 0x01; | |
999 | pub const SUBLANG_WELSH_UNITED_KINGDOM: USHORT = 0x01; | |
1000 | pub const SUBLANG_WOLOF_SENEGAL: USHORT = 0x01; | |
1001 | pub const SUBLANG_XHOSA_SOUTH_AFRICA: USHORT = 0x01; | |
1002 | pub const SUBLANG_YAKUT_RUSSIA: USHORT = 0x01; | |
1003 | pub const SUBLANG_YI_PRC: USHORT = 0x01; | |
1004 | pub const SUBLANG_YORUBA_NIGERIA: USHORT = 0x01; | |
1005 | pub const SUBLANG_ZULU_SOUTH_AFRICA: USHORT = 0x01; | |
1006 | pub const SORT_DEFAULT: USHORT = 0x0; | |
1007 | pub const SORT_INVARIANT_MATH: USHORT = 0x1; | |
1008 | pub const SORT_JAPANESE_XJIS: USHORT = 0x0; | |
1009 | pub const SORT_JAPANESE_UNICODE: USHORT = 0x1; | |
1010 | pub const SORT_JAPANESE_RADICALSTROKE: USHORT = 0x4; | |
1011 | pub const SORT_CHINESE_BIG5: USHORT = 0x0; | |
1012 | pub const SORT_CHINESE_PRCP: USHORT = 0x0; | |
1013 | pub const SORT_CHINESE_UNICODE: USHORT = 0x1; | |
1014 | pub const SORT_CHINESE_PRC: USHORT = 0x2; | |
1015 | pub const SORT_CHINESE_BOPOMOFO: USHORT = 0x3; | |
1016 | pub const SORT_CHINESE_RADICALSTROKE: USHORT = 0x4; | |
1017 | pub const SORT_KOREAN_KSC: USHORT = 0x0; | |
1018 | pub const SORT_KOREAN_UNICODE: USHORT = 0x1; | |
1019 | pub const SORT_GERMAN_PHONE_BOOK: USHORT = 0x1; | |
1020 | pub const SORT_HUNGARIAN_DEFAULT: USHORT = 0x0; | |
1021 | pub const SORT_HUNGARIAN_TECHNICAL: USHORT = 0x1; | |
1022 | pub const SORT_GEORGIAN_TRADITIONAL: USHORT = 0x0; | |
1023 | pub const SORT_GEORGIAN_MODERN: USHORT = 0x1; | |
1024 | macro_rules! MAKELANGID { | |
1025 | ($p:expr, $s:expr) => { | |
1026 | (($s as USHORT) << 10) | ($p as USHORT) | |
1027 | } | |
1028 | } | |
1029 | #[inline] | |
1030 | pub fn MAKELANGID(p: USHORT, s: USHORT) -> LANGID { (s << 10) | p } | |
1031 | #[inline] | |
1032 | pub fn PRIMARYLANGID(lgid: LANGID) -> USHORT { lgid & 0x3ff } | |
1033 | #[inline] | |
1034 | pub fn SUBLANGID(lgid: LANGID) -> USHORT { lgid >> 10 } | |
1035 | pub const NLS_VALID_LOCALE_MASK: ULONG = 0x000fffff; | |
1036 | macro_rules! MAKELCID { | |
1037 | ($lgid:expr, $srtid:expr) => { | |
1038 | (($srtid as ULONG) << 16) | ($lgid as ULONG) | |
1039 | } | |
1040 | } | |
1041 | #[inline] | |
1042 | pub fn MAKELCID(lgid: LANGID, srtid: USHORT) -> LCID { | |
1043 | ((srtid as ULONG) << 16) | (lgid as ULONG) | |
1044 | } | |
1045 | #[inline] | |
1046 | pub fn MAKESORTLCID(lgid: LANGID, srtid: USHORT, ver: USHORT) -> LCID { | |
1047 | MAKELCID(lgid, srtid) | ((ver as ULONG) << 20) | |
1048 | } | |
1049 | #[inline] | |
1050 | pub fn LANGIDFROMLCID(lcid: LCID) -> LANGID { lcid as LANGID } | |
1051 | #[inline] | |
1052 | pub fn SORTIDFROMLCID(lcid: LCID) -> USHORT { ((lcid >> 16) & 0xf) as USHORT } | |
1053 | #[inline] | |
1054 | pub fn SORTVERSIONFROMLCID(lcid: LCID) -> USHORT { ((lcid >> 16) & 0xf) as USHORT } | |
1055 | pub const LOCALE_NAME_MAX_LENGTH: usize = 85; | |
1056 | pub const LANG_SYSTEM_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT); | |
1057 | pub const LANG_USER_DEFAULT: LANGID = MAKELANGID!(LANG_NEUTRAL, SUBLANG_DEFAULT); | |
1058 | pub const LOCALE_SYSTEM_DEFAULT: LCID = MAKELCID!(LANG_SYSTEM_DEFAULT, SORT_DEFAULT); | |
1059 | pub const LOCALE_USER_DEFAULT: LCID = MAKELCID!(LANG_USER_DEFAULT, SORT_DEFAULT); | |
1060 | pub const LOCALE_CUSTOM_DEFAULT: LCID | |
1061 | = MAKELCID!(MAKELANGID!(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT); | |
1062 | pub const LOCALE_CUSTOM_UNSPECIFIED: LCID | |
1063 | = MAKELCID!(MAKELANGID!(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT); | |
1064 | pub const LOCALE_CUSTOM_UI_DEFAULT: LCID | |
1065 | = MAKELCID!(MAKELANGID!(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT); | |
1066 | pub const LOCALE_NEUTRAL: LCID | |
1067 | = MAKELCID!(MAKELANGID!(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT); | |
1068 | pub const LOCALE_INVARIANT: LCID | |
1069 | = MAKELCID!(MAKELANGID!(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT); | |
1070 | pub const LOCALE_TRANSIENT_KEYBOARD1: LCID = 0x2000; | |
1071 | pub const LOCALE_TRANSIENT_KEYBOARD2: LCID = 0x2400; | |
1072 | pub const LOCALE_TRANSIENT_KEYBOARD3: LCID = 0x2800; | |
1073 | pub const LOCALE_TRANSIENT_KEYBOARD4: LCID = 0x2c00; | |
1074 | pub const LOCALE_UNASSIGNED_LCID: LCID = LOCALE_CUSTOM_UNSPECIFIED; |