blob: da1652e74b013c40231784a8164c55429a02d877 [file] [log] [blame]
khenaidooab1f7bd2019-11-14 14:00:27 -05001// Copyright 2011 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package windows
6
7import (
8 "net"
9 "syscall"
10 "unsafe"
11)
12
13const (
14 // Invented values to support what package os expects.
15 O_RDONLY = 0x00000
16 O_WRONLY = 0x00001
17 O_RDWR = 0x00002
18 O_CREAT = 0x00040
19 O_EXCL = 0x00080
20 O_NOCTTY = 0x00100
21 O_TRUNC = 0x00200
22 O_NONBLOCK = 0x00800
23 O_APPEND = 0x00400
24 O_SYNC = 0x01000
25 O_ASYNC = 0x02000
26 O_CLOEXEC = 0x80000
27)
28
29const (
30 // More invented values for signals
31 SIGHUP = Signal(0x1)
32 SIGINT = Signal(0x2)
33 SIGQUIT = Signal(0x3)
34 SIGILL = Signal(0x4)
35 SIGTRAP = Signal(0x5)
36 SIGABRT = Signal(0x6)
37 SIGBUS = Signal(0x7)
38 SIGFPE = Signal(0x8)
39 SIGKILL = Signal(0x9)
40 SIGSEGV = Signal(0xb)
41 SIGPIPE = Signal(0xd)
42 SIGALRM = Signal(0xe)
43 SIGTERM = Signal(0xf)
44)
45
46var signals = [...]string{
47 1: "hangup",
48 2: "interrupt",
49 3: "quit",
50 4: "illegal instruction",
51 5: "trace/breakpoint trap",
52 6: "aborted",
53 7: "bus error",
54 8: "floating point exception",
55 9: "killed",
56 10: "user defined signal 1",
57 11: "segmentation fault",
58 12: "user defined signal 2",
59 13: "broken pipe",
60 14: "alarm clock",
61 15: "terminated",
62}
63
64const (
65 FILE_LIST_DIRECTORY = 0x00000001
66 FILE_APPEND_DATA = 0x00000004
67 FILE_WRITE_ATTRIBUTES = 0x00000100
68
69 FILE_SHARE_READ = 0x00000001
70 FILE_SHARE_WRITE = 0x00000002
71 FILE_SHARE_DELETE = 0x00000004
72
73 FILE_ATTRIBUTE_READONLY = 0x00000001
74 FILE_ATTRIBUTE_HIDDEN = 0x00000002
75 FILE_ATTRIBUTE_SYSTEM = 0x00000004
76 FILE_ATTRIBUTE_DIRECTORY = 0x00000010
77 FILE_ATTRIBUTE_ARCHIVE = 0x00000020
78 FILE_ATTRIBUTE_DEVICE = 0x00000040
79 FILE_ATTRIBUTE_NORMAL = 0x00000080
80 FILE_ATTRIBUTE_TEMPORARY = 0x00000100
81 FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
82 FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
83 FILE_ATTRIBUTE_COMPRESSED = 0x00000800
84 FILE_ATTRIBUTE_OFFLINE = 0x00001000
85 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
86 FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
87 FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000
88 FILE_ATTRIBUTE_VIRTUAL = 0x00010000
89 FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000
90 FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000
91 FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000
92
93 INVALID_FILE_ATTRIBUTES = 0xffffffff
94
95 CREATE_NEW = 1
96 CREATE_ALWAYS = 2
97 OPEN_EXISTING = 3
98 OPEN_ALWAYS = 4
99 TRUNCATE_EXISTING = 5
100
101 FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000
102 FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
103 FILE_FLAG_OPEN_NO_RECALL = 0x00100000
104 FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
105 FILE_FLAG_SESSION_AWARE = 0x00800000
106 FILE_FLAG_POSIX_SEMANTICS = 0x01000000
107 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
108 FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
109 FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
110 FILE_FLAG_RANDOM_ACCESS = 0x10000000
111 FILE_FLAG_NO_BUFFERING = 0x20000000
112 FILE_FLAG_OVERLAPPED = 0x40000000
113 FILE_FLAG_WRITE_THROUGH = 0x80000000
114
115 HANDLE_FLAG_INHERIT = 0x00000001
116 STARTF_USESTDHANDLES = 0x00000100
117 STARTF_USESHOWWINDOW = 0x00000001
118 DUPLICATE_CLOSE_SOURCE = 0x00000001
119 DUPLICATE_SAME_ACCESS = 0x00000002
120
121 STD_INPUT_HANDLE = -10 & (1<<32 - 1)
122 STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
123 STD_ERROR_HANDLE = -12 & (1<<32 - 1)
124
125 FILE_BEGIN = 0
126 FILE_CURRENT = 1
127 FILE_END = 2
128
129 LANG_ENGLISH = 0x09
130 SUBLANG_ENGLISH_US = 0x01
131
132 FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
133 FORMAT_MESSAGE_IGNORE_INSERTS = 512
134 FORMAT_MESSAGE_FROM_STRING = 1024
135 FORMAT_MESSAGE_FROM_HMODULE = 2048
136 FORMAT_MESSAGE_FROM_SYSTEM = 4096
137 FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
138 FORMAT_MESSAGE_MAX_WIDTH_MASK = 255
139
140 MAX_PATH = 260
141 MAX_LONG_PATH = 32768
142
143 MAX_COMPUTERNAME_LENGTH = 15
144
145 TIME_ZONE_ID_UNKNOWN = 0
146 TIME_ZONE_ID_STANDARD = 1
147
148 TIME_ZONE_ID_DAYLIGHT = 2
149 IGNORE = 0
150 INFINITE = 0xffffffff
151
152 WAIT_ABANDONED = 0x00000080
153 WAIT_OBJECT_0 = 0x00000000
154 WAIT_FAILED = 0xFFFFFFFF
155
156 // Access rights for process.
157 PROCESS_CREATE_PROCESS = 0x0080
158 PROCESS_CREATE_THREAD = 0x0002
159 PROCESS_DUP_HANDLE = 0x0040
160 PROCESS_QUERY_INFORMATION = 0x0400
161 PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
162 PROCESS_SET_INFORMATION = 0x0200
163 PROCESS_SET_QUOTA = 0x0100
164 PROCESS_SUSPEND_RESUME = 0x0800
165 PROCESS_TERMINATE = 0x0001
166 PROCESS_VM_OPERATION = 0x0008
167 PROCESS_VM_READ = 0x0010
168 PROCESS_VM_WRITE = 0x0020
169
170 // Access rights for thread.
171 THREAD_DIRECT_IMPERSONATION = 0x0200
172 THREAD_GET_CONTEXT = 0x0008
173 THREAD_IMPERSONATE = 0x0100
174 THREAD_QUERY_INFORMATION = 0x0040
175 THREAD_QUERY_LIMITED_INFORMATION = 0x0800
176 THREAD_SET_CONTEXT = 0x0010
177 THREAD_SET_INFORMATION = 0x0020
178 THREAD_SET_LIMITED_INFORMATION = 0x0400
179 THREAD_SET_THREAD_TOKEN = 0x0080
180 THREAD_SUSPEND_RESUME = 0x0002
181 THREAD_TERMINATE = 0x0001
182
183 FILE_MAP_COPY = 0x01
184 FILE_MAP_WRITE = 0x02
185 FILE_MAP_READ = 0x04
186 FILE_MAP_EXECUTE = 0x20
187
188 CTRL_C_EVENT = 0
189 CTRL_BREAK_EVENT = 1
190 CTRL_CLOSE_EVENT = 2
191 CTRL_LOGOFF_EVENT = 5
192 CTRL_SHUTDOWN_EVENT = 6
193
194 // Windows reserves errors >= 1<<29 for application use.
195 APPLICATION_ERROR = 1 << 29
196)
197
198const (
199 // Process creation flags.
200 CREATE_BREAKAWAY_FROM_JOB = 0x01000000
201 CREATE_DEFAULT_ERROR_MODE = 0x04000000
202 CREATE_NEW_CONSOLE = 0x00000010
203 CREATE_NEW_PROCESS_GROUP = 0x00000200
204 CREATE_NO_WINDOW = 0x08000000
205 CREATE_PROTECTED_PROCESS = 0x00040000
206 CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
207 CREATE_SEPARATE_WOW_VDM = 0x00000800
208 CREATE_SHARED_WOW_VDM = 0x00001000
209 CREATE_SUSPENDED = 0x00000004
210 CREATE_UNICODE_ENVIRONMENT = 0x00000400
211 DEBUG_ONLY_THIS_PROCESS = 0x00000002
212 DEBUG_PROCESS = 0x00000001
213 DETACHED_PROCESS = 0x00000008
214 EXTENDED_STARTUPINFO_PRESENT = 0x00080000
215 INHERIT_PARENT_AFFINITY = 0x00010000
216)
217
218const (
219 // flags for CreateToolhelp32Snapshot
220 TH32CS_SNAPHEAPLIST = 0x01
221 TH32CS_SNAPPROCESS = 0x02
222 TH32CS_SNAPTHREAD = 0x04
223 TH32CS_SNAPMODULE = 0x08
224 TH32CS_SNAPMODULE32 = 0x10
225 TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
226 TH32CS_INHERIT = 0x80000000
227)
228
229const (
230 // filters for ReadDirectoryChangesW
231 FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
232 FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
233 FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
234 FILE_NOTIFY_CHANGE_SIZE = 0x008
235 FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010
236 FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
237 FILE_NOTIFY_CHANGE_CREATION = 0x040
238 FILE_NOTIFY_CHANGE_SECURITY = 0x100
239)
240
241const (
242 // do not reorder
243 FILE_ACTION_ADDED = iota + 1
244 FILE_ACTION_REMOVED
245 FILE_ACTION_MODIFIED
246 FILE_ACTION_RENAMED_OLD_NAME
247 FILE_ACTION_RENAMED_NEW_NAME
248)
249
250const (
251 // wincrypt.h
252 PROV_RSA_FULL = 1
253 PROV_RSA_SIG = 2
254 PROV_DSS = 3
255 PROV_FORTEZZA = 4
256 PROV_MS_EXCHANGE = 5
257 PROV_SSL = 6
258 PROV_RSA_SCHANNEL = 12
259 PROV_DSS_DH = 13
260 PROV_EC_ECDSA_SIG = 14
261 PROV_EC_ECNRA_SIG = 15
262 PROV_EC_ECDSA_FULL = 16
263 PROV_EC_ECNRA_FULL = 17
264 PROV_DH_SCHANNEL = 18
265 PROV_SPYRUS_LYNKS = 20
266 PROV_RNG = 21
267 PROV_INTEL_SEC = 22
268 PROV_REPLACE_OWF = 23
269 PROV_RSA_AES = 24
270 CRYPT_VERIFYCONTEXT = 0xF0000000
271 CRYPT_NEWKEYSET = 0x00000008
272 CRYPT_DELETEKEYSET = 0x00000010
273 CRYPT_MACHINE_KEYSET = 0x00000020
274 CRYPT_SILENT = 0x00000040
275 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
276
277 USAGE_MATCH_TYPE_AND = 0
278 USAGE_MATCH_TYPE_OR = 1
279
280 /* msgAndCertEncodingType values for CertOpenStore function */
281 X509_ASN_ENCODING = 0x00000001
282 PKCS_7_ASN_ENCODING = 0x00010000
283
284 /* storeProvider values for CertOpenStore function */
285 CERT_STORE_PROV_MSG = 1
286 CERT_STORE_PROV_MEMORY = 2
287 CERT_STORE_PROV_FILE = 3
288 CERT_STORE_PROV_REG = 4
289 CERT_STORE_PROV_PKCS7 = 5
290 CERT_STORE_PROV_SERIALIZED = 6
291 CERT_STORE_PROV_FILENAME_A = 7
292 CERT_STORE_PROV_FILENAME_W = 8
293 CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W
294 CERT_STORE_PROV_SYSTEM_A = 9
295 CERT_STORE_PROV_SYSTEM_W = 10
296 CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W
297 CERT_STORE_PROV_COLLECTION = 11
298 CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12
299 CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13
300 CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W
301 CERT_STORE_PROV_PHYSICAL_W = 14
302 CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W
303 CERT_STORE_PROV_SMART_CARD_W = 15
304 CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W
305 CERT_STORE_PROV_LDAP_W = 16
306 CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W
307 CERT_STORE_PROV_PKCS12 = 17
308
309 /* store characteristics (low WORD of flag) for CertOpenStore function */
310 CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001
311 CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002
312 CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
313 CERT_STORE_DELETE_FLAG = 0x00000010
314 CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020
315 CERT_STORE_SHARE_STORE_FLAG = 0x00000040
316 CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080
317 CERT_STORE_MANIFOLD_FLAG = 0x00000100
318 CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200
319 CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400
320 CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800
321 CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000
322 CERT_STORE_CREATE_NEW_FLAG = 0x00002000
323 CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
324 CERT_STORE_READONLY_FLAG = 0x00008000
325
326 /* store locations (high WORD of flag) for CertOpenStore function */
327 CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000
328 CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000
329 CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000
330 CERT_SYSTEM_STORE_SERVICES = 0x00050000
331 CERT_SYSTEM_STORE_USERS = 0x00060000
332 CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000
333 CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000
334 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000
335 CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000
336 CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000
337
338 /* Miscellaneous high-WORD flags for CertOpenStore function */
339 CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000
340 CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000
341 CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000
342 CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000
343 CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000
344 CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000
345 CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000
346 CERT_LDAP_STORE_SIGN_FLAG = 0x00010000
347 CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000
348 CERT_LDAP_STORE_OPENED_FLAG = 0x00040000
349 CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000
350
351 /* addDisposition values for CertAddCertificateContextToStore function */
352 CERT_STORE_ADD_NEW = 1
353 CERT_STORE_ADD_USE_EXISTING = 2
354 CERT_STORE_ADD_REPLACE_EXISTING = 3
355 CERT_STORE_ADD_ALWAYS = 4
356 CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5
357 CERT_STORE_ADD_NEWER = 6
358 CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7
359
360 /* ErrorStatus values for CertTrustStatus struct */
361 CERT_TRUST_NO_ERROR = 0x00000000
362 CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
363 CERT_TRUST_IS_REVOKED = 0x00000004
364 CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
365 CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
366 CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
367 CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
368 CERT_TRUST_IS_CYCLIC = 0x00000080
369 CERT_TRUST_INVALID_EXTENSION = 0x00000100
370 CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
371 CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
372 CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
373 CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
374 CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
375 CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
376 CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
377 CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000
378 CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000
379 CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000
380 CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000
381 CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000
382 CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
383 CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
384 CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
385 CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
386
387 /* InfoStatus values for CertTrustStatus struct */
388 CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001
389 CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002
390 CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004
391 CERT_TRUST_IS_SELF_SIGNED = 0x00000008
392 CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100
393 CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400
394 CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400
395 CERT_TRUST_IS_PEER_TRUSTED = 0x00000800
396 CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000
397 CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000
398 CERT_TRUST_IS_CA_TRUSTED = 0x00004000
399 CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000
400
401 /* policyOID values for CertVerifyCertificateChainPolicy function */
402 CERT_CHAIN_POLICY_BASE = 1
403 CERT_CHAIN_POLICY_AUTHENTICODE = 2
404 CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
405 CERT_CHAIN_POLICY_SSL = 4
406 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
407 CERT_CHAIN_POLICY_NT_AUTH = 6
408 CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
409 CERT_CHAIN_POLICY_EV = 8
410 CERT_CHAIN_POLICY_SSL_F12 = 9
411
412 /* AuthType values for SSLExtraCertChainPolicyPara struct */
413 AUTHTYPE_CLIENT = 1
414 AUTHTYPE_SERVER = 2
415
416 /* Checks values for SSLExtraCertChainPolicyPara struct */
417 SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080
418 SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100
419 SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
420 SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
421 SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
422)
423
424const (
425 // flags for SetErrorMode
426 SEM_FAILCRITICALERRORS = 0x0001
427 SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
428 SEM_NOGPFAULTERRORBOX = 0x0002
429 SEM_NOOPENFILEERRORBOX = 0x8000
430)
431
432const (
433 // Priority class.
434 ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
435 BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
436 HIGH_PRIORITY_CLASS = 0x00000080
437 IDLE_PRIORITY_CLASS = 0x00000040
438 NORMAL_PRIORITY_CLASS = 0x00000020
439 PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000
440 PROCESS_MODE_BACKGROUND_END = 0x00200000
441 REALTIME_PRIORITY_CLASS = 0x00000100
442)
443
444var (
445 OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
446 OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
447 OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
448)
449
450// Pointer represents a pointer to an arbitrary Windows type.
451//
452// Pointer-typed fields may point to one of many different types. It's
453// up to the caller to provide a pointer to the appropriate type, cast
454// to Pointer. The caller must obey the unsafe.Pointer rules while
455// doing so.
456type Pointer *struct{}
457
458// Invented values to support what package os expects.
459type Timeval struct {
460 Sec int32
461 Usec int32
462}
463
464func (tv *Timeval) Nanoseconds() int64 {
465 return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
466}
467
468func NsecToTimeval(nsec int64) (tv Timeval) {
469 tv.Sec = int32(nsec / 1e9)
470 tv.Usec = int32(nsec % 1e9 / 1e3)
471 return
472}
473
474type Overlapped struct {
475 Internal uintptr
476 InternalHigh uintptr
477 Offset uint32
478 OffsetHigh uint32
479 HEvent Handle
480}
481
482type FileNotifyInformation struct {
483 NextEntryOffset uint32
484 Action uint32
485 FileNameLength uint32
486 FileName uint16
487}
488
489type Filetime struct {
490 LowDateTime uint32
491 HighDateTime uint32
492}
493
494// Nanoseconds returns Filetime ft in nanoseconds
495// since Epoch (00:00:00 UTC, January 1, 1970).
496func (ft *Filetime) Nanoseconds() int64 {
497 // 100-nanosecond intervals since January 1, 1601
498 nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
499 // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
500 nsec -= 116444736000000000
501 // convert into nanoseconds
502 nsec *= 100
503 return nsec
504}
505
506func NsecToFiletime(nsec int64) (ft Filetime) {
507 // convert into 100-nanosecond
508 nsec /= 100
509 // change starting time to January 1, 1601
510 nsec += 116444736000000000
511 // split into high / low
512 ft.LowDateTime = uint32(nsec & 0xffffffff)
513 ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
514 return ft
515}
516
517type Win32finddata struct {
518 FileAttributes uint32
519 CreationTime Filetime
520 LastAccessTime Filetime
521 LastWriteTime Filetime
522 FileSizeHigh uint32
523 FileSizeLow uint32
524 Reserved0 uint32
525 Reserved1 uint32
526 FileName [MAX_PATH - 1]uint16
527 AlternateFileName [13]uint16
528}
529
530// This is the actual system call structure.
531// Win32finddata is what we committed to in Go 1.
532type win32finddata1 struct {
533 FileAttributes uint32
534 CreationTime Filetime
535 LastAccessTime Filetime
536 LastWriteTime Filetime
537 FileSizeHigh uint32
538 FileSizeLow uint32
539 Reserved0 uint32
540 Reserved1 uint32
541 FileName [MAX_PATH]uint16
542 AlternateFileName [14]uint16
543}
544
545func copyFindData(dst *Win32finddata, src *win32finddata1) {
546 dst.FileAttributes = src.FileAttributes
547 dst.CreationTime = src.CreationTime
548 dst.LastAccessTime = src.LastAccessTime
549 dst.LastWriteTime = src.LastWriteTime
550 dst.FileSizeHigh = src.FileSizeHigh
551 dst.FileSizeLow = src.FileSizeLow
552 dst.Reserved0 = src.Reserved0
553 dst.Reserved1 = src.Reserved1
554
555 // The src is 1 element bigger than dst, but it must be NUL.
556 copy(dst.FileName[:], src.FileName[:])
557 copy(dst.AlternateFileName[:], src.AlternateFileName[:])
558}
559
560type ByHandleFileInformation struct {
561 FileAttributes uint32
562 CreationTime Filetime
563 LastAccessTime Filetime
564 LastWriteTime Filetime
565 VolumeSerialNumber uint32
566 FileSizeHigh uint32
567 FileSizeLow uint32
568 NumberOfLinks uint32
569 FileIndexHigh uint32
570 FileIndexLow uint32
571}
572
573const (
574 GetFileExInfoStandard = 0
575 GetFileExMaxInfoLevel = 1
576)
577
578type Win32FileAttributeData struct {
579 FileAttributes uint32
580 CreationTime Filetime
581 LastAccessTime Filetime
582 LastWriteTime Filetime
583 FileSizeHigh uint32
584 FileSizeLow uint32
585}
586
587// ShowWindow constants
588const (
589 // winuser.h
590 SW_HIDE = 0
591 SW_NORMAL = 1
592 SW_SHOWNORMAL = 1
593 SW_SHOWMINIMIZED = 2
594 SW_SHOWMAXIMIZED = 3
595 SW_MAXIMIZE = 3
596 SW_SHOWNOACTIVATE = 4
597 SW_SHOW = 5
598 SW_MINIMIZE = 6
599 SW_SHOWMINNOACTIVE = 7
600 SW_SHOWNA = 8
601 SW_RESTORE = 9
602 SW_SHOWDEFAULT = 10
603 SW_FORCEMINIMIZE = 11
604)
605
606type StartupInfo struct {
607 Cb uint32
608 _ *uint16
609 Desktop *uint16
610 Title *uint16
611 X uint32
612 Y uint32
613 XSize uint32
614 YSize uint32
615 XCountChars uint32
616 YCountChars uint32
617 FillAttribute uint32
618 Flags uint32
619 ShowWindow uint16
620 _ uint16
621 _ *byte
622 StdInput Handle
623 StdOutput Handle
624 StdErr Handle
625}
626
627type ProcessInformation struct {
628 Process Handle
629 Thread Handle
630 ProcessId uint32
631 ThreadId uint32
632}
633
634type ProcessEntry32 struct {
635 Size uint32
636 Usage uint32
637 ProcessID uint32
638 DefaultHeapID uintptr
639 ModuleID uint32
640 Threads uint32
641 ParentProcessID uint32
642 PriClassBase int32
643 Flags uint32
644 ExeFile [MAX_PATH]uint16
645}
646
647type ThreadEntry32 struct {
648 Size uint32
649 Usage uint32
650 ThreadID uint32
651 OwnerProcessID uint32
652 BasePri int32
653 DeltaPri int32
654 Flags uint32
655}
656
657type Systemtime struct {
658 Year uint16
659 Month uint16
660 DayOfWeek uint16
661 Day uint16
662 Hour uint16
663 Minute uint16
664 Second uint16
665 Milliseconds uint16
666}
667
668type Timezoneinformation struct {
669 Bias int32
670 StandardName [32]uint16
671 StandardDate Systemtime
672 StandardBias int32
673 DaylightName [32]uint16
674 DaylightDate Systemtime
675 DaylightBias int32
676}
677
678// Socket related.
679
680const (
681 AF_UNSPEC = 0
682 AF_UNIX = 1
683 AF_INET = 2
khenaidooab1f7bd2019-11-14 14:00:27 -0500684 AF_NETBIOS = 17
Andrea Campanella3614a922021-02-25 12:40:42 +0100685 AF_INET6 = 23
686 AF_IRDA = 26
687 AF_BTH = 32
khenaidooab1f7bd2019-11-14 14:00:27 -0500688
689 SOCK_STREAM = 1
690 SOCK_DGRAM = 2
691 SOCK_RAW = 3
Andrea Campanella3614a922021-02-25 12:40:42 +0100692 SOCK_RDM = 4
khenaidooab1f7bd2019-11-14 14:00:27 -0500693 SOCK_SEQPACKET = 5
694
Andrea Campanella3614a922021-02-25 12:40:42 +0100695 IPPROTO_IP = 0
696 IPPROTO_ICMP = 1
697 IPPROTO_IGMP = 2
698 BTHPROTO_RFCOMM = 3
699 IPPROTO_TCP = 6
700 IPPROTO_UDP = 17
701 IPPROTO_IPV6 = 41
702 IPPROTO_ICMPV6 = 58
703 IPPROTO_RM = 113
khenaidooab1f7bd2019-11-14 14:00:27 -0500704
705 SOL_SOCKET = 0xffff
706 SO_REUSEADDR = 4
707 SO_KEEPALIVE = 8
708 SO_DONTROUTE = 16
709 SO_BROADCAST = 32
710 SO_LINGER = 128
711 SO_RCVBUF = 0x1002
Andrea Campanella3614a922021-02-25 12:40:42 +0100712 SO_RCVTIMEO = 0x1006
khenaidooab1f7bd2019-11-14 14:00:27 -0500713 SO_SNDBUF = 0x1001
714 SO_UPDATE_ACCEPT_CONTEXT = 0x700b
715 SO_UPDATE_CONNECT_CONTEXT = 0x7010
716
717 IOC_OUT = 0x40000000
718 IOC_IN = 0x80000000
719 IOC_VENDOR = 0x18000000
720 IOC_INOUT = IOC_IN | IOC_OUT
721 IOC_WS2 = 0x08000000
722 SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
723 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
724 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
725
726 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
727
728 IP_TOS = 0x3
729 IP_TTL = 0x4
730 IP_MULTICAST_IF = 0x9
731 IP_MULTICAST_TTL = 0xa
732 IP_MULTICAST_LOOP = 0xb
733 IP_ADD_MEMBERSHIP = 0xc
734 IP_DROP_MEMBERSHIP = 0xd
735
736 IPV6_V6ONLY = 0x1b
737 IPV6_UNICAST_HOPS = 0x4
738 IPV6_MULTICAST_IF = 0x9
739 IPV6_MULTICAST_HOPS = 0xa
740 IPV6_MULTICAST_LOOP = 0xb
741 IPV6_JOIN_GROUP = 0xc
742 IPV6_LEAVE_GROUP = 0xd
743
744 MSG_OOB = 0x1
745 MSG_PEEK = 0x2
746 MSG_DONTROUTE = 0x4
747 MSG_WAITALL = 0x8
748
749 MSG_TRUNC = 0x0100
750 MSG_CTRUNC = 0x0200
751 MSG_BCAST = 0x0400
752 MSG_MCAST = 0x0800
753
754 SOMAXCONN = 0x7fffffff
755
756 TCP_NODELAY = 1
757
758 SHUT_RD = 0
759 SHUT_WR = 1
760 SHUT_RDWR = 2
761
762 WSADESCRIPTION_LEN = 256
763 WSASYS_STATUS_LEN = 128
764)
765
766type WSABuf struct {
767 Len uint32
768 Buf *byte
769}
770
771type WSAMsg struct {
772 Name *syscall.RawSockaddrAny
773 Namelen int32
774 Buffers *WSABuf
775 BufferCount uint32
776 Control WSABuf
777 Flags uint32
778}
779
780// Invented values to support what package os expects.
781const (
782 S_IFMT = 0x1f000
783 S_IFIFO = 0x1000
784 S_IFCHR = 0x2000
785 S_IFDIR = 0x4000
786 S_IFBLK = 0x6000
787 S_IFREG = 0x8000
788 S_IFLNK = 0xa000
789 S_IFSOCK = 0xc000
790 S_ISUID = 0x800
791 S_ISGID = 0x400
792 S_ISVTX = 0x200
793 S_IRUSR = 0x100
794 S_IWRITE = 0x80
795 S_IWUSR = 0x80
796 S_IXUSR = 0x40
797)
798
799const (
800 FILE_TYPE_CHAR = 0x0002
801 FILE_TYPE_DISK = 0x0001
802 FILE_TYPE_PIPE = 0x0003
803 FILE_TYPE_REMOTE = 0x8000
804 FILE_TYPE_UNKNOWN = 0x0000
805)
806
807type Hostent struct {
808 Name *byte
809 Aliases **byte
810 AddrType uint16
811 Length uint16
812 AddrList **byte
813}
814
815type Protoent struct {
816 Name *byte
817 Aliases **byte
818 Proto uint16
819}
820
821const (
822 DNS_TYPE_A = 0x0001
823 DNS_TYPE_NS = 0x0002
824 DNS_TYPE_MD = 0x0003
825 DNS_TYPE_MF = 0x0004
826 DNS_TYPE_CNAME = 0x0005
827 DNS_TYPE_SOA = 0x0006
828 DNS_TYPE_MB = 0x0007
829 DNS_TYPE_MG = 0x0008
830 DNS_TYPE_MR = 0x0009
831 DNS_TYPE_NULL = 0x000a
832 DNS_TYPE_WKS = 0x000b
833 DNS_TYPE_PTR = 0x000c
834 DNS_TYPE_HINFO = 0x000d
835 DNS_TYPE_MINFO = 0x000e
836 DNS_TYPE_MX = 0x000f
837 DNS_TYPE_TEXT = 0x0010
838 DNS_TYPE_RP = 0x0011
839 DNS_TYPE_AFSDB = 0x0012
840 DNS_TYPE_X25 = 0x0013
841 DNS_TYPE_ISDN = 0x0014
842 DNS_TYPE_RT = 0x0015
843 DNS_TYPE_NSAP = 0x0016
844 DNS_TYPE_NSAPPTR = 0x0017
845 DNS_TYPE_SIG = 0x0018
846 DNS_TYPE_KEY = 0x0019
847 DNS_TYPE_PX = 0x001a
848 DNS_TYPE_GPOS = 0x001b
849 DNS_TYPE_AAAA = 0x001c
850 DNS_TYPE_LOC = 0x001d
851 DNS_TYPE_NXT = 0x001e
852 DNS_TYPE_EID = 0x001f
853 DNS_TYPE_NIMLOC = 0x0020
854 DNS_TYPE_SRV = 0x0021
855 DNS_TYPE_ATMA = 0x0022
856 DNS_TYPE_NAPTR = 0x0023
857 DNS_TYPE_KX = 0x0024
858 DNS_TYPE_CERT = 0x0025
859 DNS_TYPE_A6 = 0x0026
860 DNS_TYPE_DNAME = 0x0027
861 DNS_TYPE_SINK = 0x0028
862 DNS_TYPE_OPT = 0x0029
863 DNS_TYPE_DS = 0x002B
864 DNS_TYPE_RRSIG = 0x002E
865 DNS_TYPE_NSEC = 0x002F
866 DNS_TYPE_DNSKEY = 0x0030
867 DNS_TYPE_DHCID = 0x0031
868 DNS_TYPE_UINFO = 0x0064
869 DNS_TYPE_UID = 0x0065
870 DNS_TYPE_GID = 0x0066
871 DNS_TYPE_UNSPEC = 0x0067
872 DNS_TYPE_ADDRS = 0x00f8
873 DNS_TYPE_TKEY = 0x00f9
874 DNS_TYPE_TSIG = 0x00fa
875 DNS_TYPE_IXFR = 0x00fb
876 DNS_TYPE_AXFR = 0x00fc
877 DNS_TYPE_MAILB = 0x00fd
878 DNS_TYPE_MAILA = 0x00fe
879 DNS_TYPE_ALL = 0x00ff
880 DNS_TYPE_ANY = 0x00ff
881 DNS_TYPE_WINS = 0xff01
882 DNS_TYPE_WINSR = 0xff02
883 DNS_TYPE_NBSTAT = 0xff01
884)
885
886const (
887 // flags inside DNSRecord.Dw
888 DnsSectionQuestion = 0x0000
889 DnsSectionAnswer = 0x0001
890 DnsSectionAuthority = 0x0002
891 DnsSectionAdditional = 0x0003
892)
893
894type DNSSRVData struct {
895 Target *uint16
896 Priority uint16
897 Weight uint16
898 Port uint16
899 Pad uint16
900}
901
902type DNSPTRData struct {
903 Host *uint16
904}
905
906type DNSMXData struct {
907 NameExchange *uint16
908 Preference uint16
909 Pad uint16
910}
911
912type DNSTXTData struct {
913 StringCount uint16
914 StringArray [1]*uint16
915}
916
917type DNSRecord struct {
918 Next *DNSRecord
919 Name *uint16
920 Type uint16
921 Length uint16
922 Dw uint32
923 Ttl uint32
924 Reserved uint32
925 Data [40]byte
926}
927
928const (
929 TF_DISCONNECT = 1
930 TF_REUSE_SOCKET = 2
931 TF_WRITE_BEHIND = 4
932 TF_USE_DEFAULT_WORKER = 0
933 TF_USE_SYSTEM_THREAD = 16
934 TF_USE_KERNEL_APC = 32
935)
936
937type TransmitFileBuffers struct {
938 Head uintptr
939 HeadLength uint32
940 Tail uintptr
941 TailLength uint32
942}
943
944const (
945 IFF_UP = 1
946 IFF_BROADCAST = 2
947 IFF_LOOPBACK = 4
948 IFF_POINTTOPOINT = 8
949 IFF_MULTICAST = 16
950)
951
952const SIO_GET_INTERFACE_LIST = 0x4004747F
953
954// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
955// will be fixed to change variable type as suitable.
956
957type SockaddrGen [24]byte
958
959type InterfaceInfo struct {
960 Flags uint32
961 Address SockaddrGen
962 BroadcastAddress SockaddrGen
963 Netmask SockaddrGen
964}
965
966type IpAddressString struct {
967 String [16]byte
968}
969
970type IpMaskString IpAddressString
971
972type IpAddrString struct {
973 Next *IpAddrString
974 IpAddress IpAddressString
975 IpMask IpMaskString
976 Context uint32
977}
978
979const MAX_ADAPTER_NAME_LENGTH = 256
980const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
981const MAX_ADAPTER_ADDRESS_LENGTH = 8
982
983type IpAdapterInfo struct {
984 Next *IpAdapterInfo
985 ComboIndex uint32
986 AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
987 Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
988 AddressLength uint32
989 Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
990 Index uint32
991 Type uint32
992 DhcpEnabled uint32
993 CurrentIpAddress *IpAddrString
994 IpAddressList IpAddrString
995 GatewayList IpAddrString
996 DhcpServer IpAddrString
997 HaveWins bool
998 PrimaryWinsServer IpAddrString
999 SecondaryWinsServer IpAddrString
1000 LeaseObtained int64
1001 LeaseExpires int64
1002}
1003
1004const MAXLEN_PHYSADDR = 8
1005const MAX_INTERFACE_NAME_LEN = 256
1006const MAXLEN_IFDESCR = 256
1007
1008type MibIfRow struct {
1009 Name [MAX_INTERFACE_NAME_LEN]uint16
1010 Index uint32
1011 Type uint32
1012 Mtu uint32
1013 Speed uint32
1014 PhysAddrLen uint32
1015 PhysAddr [MAXLEN_PHYSADDR]byte
1016 AdminStatus uint32
1017 OperStatus uint32
1018 LastChange uint32
1019 InOctets uint32
1020 InUcastPkts uint32
1021 InNUcastPkts uint32
1022 InDiscards uint32
1023 InErrors uint32
1024 InUnknownProtos uint32
1025 OutOctets uint32
1026 OutUcastPkts uint32
1027 OutNUcastPkts uint32
1028 OutDiscards uint32
1029 OutErrors uint32
1030 OutQLen uint32
1031 DescrLen uint32
1032 Descr [MAXLEN_IFDESCR]byte
1033}
1034
1035type CertInfo struct {
1036 // Not implemented
1037}
1038
1039type CertContext struct {
1040 EncodingType uint32
1041 EncodedCert *byte
1042 Length uint32
1043 CertInfo *CertInfo
1044 Store Handle
1045}
1046
1047type CertChainContext struct {
1048 Size uint32
1049 TrustStatus CertTrustStatus
1050 ChainCount uint32
1051 Chains **CertSimpleChain
1052 LowerQualityChainCount uint32
1053 LowerQualityChains **CertChainContext
1054 HasRevocationFreshnessTime uint32
1055 RevocationFreshnessTime uint32
1056}
1057
1058type CertTrustListInfo struct {
1059 // Not implemented
1060}
1061
1062type CertSimpleChain struct {
1063 Size uint32
1064 TrustStatus CertTrustStatus
1065 NumElements uint32
1066 Elements **CertChainElement
1067 TrustListInfo *CertTrustListInfo
1068 HasRevocationFreshnessTime uint32
1069 RevocationFreshnessTime uint32
1070}
1071
1072type CertChainElement struct {
1073 Size uint32
1074 CertContext *CertContext
1075 TrustStatus CertTrustStatus
1076 RevocationInfo *CertRevocationInfo
1077 IssuanceUsage *CertEnhKeyUsage
1078 ApplicationUsage *CertEnhKeyUsage
1079 ExtendedErrorInfo *uint16
1080}
1081
1082type CertRevocationCrlInfo struct {
1083 // Not implemented
1084}
1085
1086type CertRevocationInfo struct {
1087 Size uint32
1088 RevocationResult uint32
1089 RevocationOid *byte
1090 OidSpecificInfo Pointer
1091 HasFreshnessTime uint32
1092 FreshnessTime uint32
1093 CrlInfo *CertRevocationCrlInfo
1094}
1095
1096type CertTrustStatus struct {
1097 ErrorStatus uint32
1098 InfoStatus uint32
1099}
1100
1101type CertUsageMatch struct {
1102 Type uint32
1103 Usage CertEnhKeyUsage
1104}
1105
1106type CertEnhKeyUsage struct {
1107 Length uint32
1108 UsageIdentifiers **byte
1109}
1110
1111type CertChainPara struct {
1112 Size uint32
1113 RequestedUsage CertUsageMatch
1114 RequstedIssuancePolicy CertUsageMatch
1115 URLRetrievalTimeout uint32
1116 CheckRevocationFreshnessTime uint32
1117 RevocationFreshnessTime uint32
1118 CacheResync *Filetime
1119}
1120
1121type CertChainPolicyPara struct {
1122 Size uint32
1123 Flags uint32
1124 ExtraPolicyPara Pointer
1125}
1126
1127type SSLExtraCertChainPolicyPara struct {
1128 Size uint32
1129 AuthType uint32
1130 Checks uint32
1131 ServerName *uint16
1132}
1133
1134type CertChainPolicyStatus struct {
1135 Size uint32
1136 Error uint32
1137 ChainIndex uint32
1138 ElementIndex uint32
1139 ExtraPolicyStatus Pointer
1140}
1141
1142const (
1143 // do not reorder
1144 HKEY_CLASSES_ROOT = 0x80000000 + iota
1145 HKEY_CURRENT_USER
1146 HKEY_LOCAL_MACHINE
1147 HKEY_USERS
1148 HKEY_PERFORMANCE_DATA
1149 HKEY_CURRENT_CONFIG
1150 HKEY_DYN_DATA
1151
1152 KEY_QUERY_VALUE = 1
1153 KEY_SET_VALUE = 2
1154 KEY_CREATE_SUB_KEY = 4
1155 KEY_ENUMERATE_SUB_KEYS = 8
1156 KEY_NOTIFY = 16
1157 KEY_CREATE_LINK = 32
1158 KEY_WRITE = 0x20006
1159 KEY_EXECUTE = 0x20019
1160 KEY_READ = 0x20019
1161 KEY_WOW64_64KEY = 0x0100
1162 KEY_WOW64_32KEY = 0x0200
1163 KEY_ALL_ACCESS = 0xf003f
1164)
1165
1166const (
1167 // do not reorder
1168 REG_NONE = iota
1169 REG_SZ
1170 REG_EXPAND_SZ
1171 REG_BINARY
1172 REG_DWORD_LITTLE_ENDIAN
1173 REG_DWORD_BIG_ENDIAN
1174 REG_LINK
1175 REG_MULTI_SZ
1176 REG_RESOURCE_LIST
1177 REG_FULL_RESOURCE_DESCRIPTOR
1178 REG_RESOURCE_REQUIREMENTS_LIST
1179 REG_QWORD_LITTLE_ENDIAN
1180 REG_DWORD = REG_DWORD_LITTLE_ENDIAN
1181 REG_QWORD = REG_QWORD_LITTLE_ENDIAN
1182)
1183
1184const (
1185 EVENT_MODIFY_STATE = 0x0002
1186 EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
1187
1188 MUTANT_QUERY_STATE = 0x0001
1189 MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE
1190
1191 SEMAPHORE_MODIFY_STATE = 0x0002
1192 SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3
1193
1194 TIMER_QUERY_STATE = 0x0001
1195 TIMER_MODIFY_STATE = 0x0002
1196 TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE
1197
1198 MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE
1199 MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS
1200
1201 CREATE_EVENT_MANUAL_RESET = 0x1
1202 CREATE_EVENT_INITIAL_SET = 0x2
1203 CREATE_MUTEX_INITIAL_OWNER = 0x1
1204)
1205
1206type AddrinfoW struct {
1207 Flags int32
1208 Family int32
1209 Socktype int32
1210 Protocol int32
1211 Addrlen uintptr
1212 Canonname *uint16
1213 Addr uintptr
1214 Next *AddrinfoW
1215}
1216
1217const (
1218 AI_PASSIVE = 1
1219 AI_CANONNAME = 2
1220 AI_NUMERICHOST = 4
1221)
1222
1223type GUID struct {
1224 Data1 uint32
1225 Data2 uint16
1226 Data3 uint16
1227 Data4 [8]byte
1228}
1229
1230var WSAID_CONNECTEX = GUID{
1231 0x25a207b9,
1232 0xddf3,
1233 0x4660,
1234 [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
1235}
1236
1237var WSAID_WSASENDMSG = GUID{
1238 0xa441e712,
1239 0x754f,
1240 0x43ca,
1241 [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},
1242}
1243
1244var WSAID_WSARECVMSG = GUID{
1245 0xf689d7c8,
1246 0x6f1f,
1247 0x436b,
1248 [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},
1249}
1250
1251const (
1252 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
1253 FILE_SKIP_SET_EVENT_ON_HANDLE = 2
1254)
1255
1256const (
1257 WSAPROTOCOL_LEN = 255
1258 MAX_PROTOCOL_CHAIN = 7
1259 BASE_PROTOCOL = 1
1260 LAYERED_PROTOCOL = 0
1261
1262 XP1_CONNECTIONLESS = 0x00000001
1263 XP1_GUARANTEED_DELIVERY = 0x00000002
1264 XP1_GUARANTEED_ORDER = 0x00000004
1265 XP1_MESSAGE_ORIENTED = 0x00000008
1266 XP1_PSEUDO_STREAM = 0x00000010
1267 XP1_GRACEFUL_CLOSE = 0x00000020
1268 XP1_EXPEDITED_DATA = 0x00000040
1269 XP1_CONNECT_DATA = 0x00000080
1270 XP1_DISCONNECT_DATA = 0x00000100
1271 XP1_SUPPORT_BROADCAST = 0x00000200
1272 XP1_SUPPORT_MULTIPOINT = 0x00000400
1273 XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
1274 XP1_MULTIPOINT_DATA_PLANE = 0x00001000
1275 XP1_QOS_SUPPORTED = 0x00002000
1276 XP1_UNI_SEND = 0x00008000
1277 XP1_UNI_RECV = 0x00010000
1278 XP1_IFS_HANDLES = 0x00020000
1279 XP1_PARTIAL_MESSAGE = 0x00040000
1280 XP1_SAN_SUPPORT_SDP = 0x00080000
1281
1282 PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
1283 PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
1284 PFL_HIDDEN = 0x00000004
1285 PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
1286 PFL_NETWORKDIRECT_PROVIDER = 0x00000010
1287)
1288
1289type WSAProtocolInfo struct {
1290 ServiceFlags1 uint32
1291 ServiceFlags2 uint32
1292 ServiceFlags3 uint32
1293 ServiceFlags4 uint32
1294 ProviderFlags uint32
1295 ProviderId GUID
1296 CatalogEntryId uint32
1297 ProtocolChain WSAProtocolChain
1298 Version int32
1299 AddressFamily int32
1300 MaxSockAddr int32
1301 MinSockAddr int32
1302 SocketType int32
1303 Protocol int32
1304 ProtocolMaxOffset int32
1305 NetworkByteOrder int32
1306 SecurityScheme int32
1307 MessageSize uint32
1308 ProviderReserved uint32
1309 ProtocolName [WSAPROTOCOL_LEN + 1]uint16
1310}
1311
1312type WSAProtocolChain struct {
1313 ChainLen int32
1314 ChainEntries [MAX_PROTOCOL_CHAIN]uint32
1315}
1316
1317type TCPKeepalive struct {
1318 OnOff uint32
1319 Time uint32
1320 Interval uint32
1321}
1322
1323type symbolicLinkReparseBuffer struct {
1324 SubstituteNameOffset uint16
1325 SubstituteNameLength uint16
1326 PrintNameOffset uint16
1327 PrintNameLength uint16
1328 Flags uint32
1329 PathBuffer [1]uint16
1330}
1331
1332type mountPointReparseBuffer struct {
1333 SubstituteNameOffset uint16
1334 SubstituteNameLength uint16
1335 PrintNameOffset uint16
1336 PrintNameLength uint16
1337 PathBuffer [1]uint16
1338}
1339
1340type reparseDataBuffer struct {
1341 ReparseTag uint32
1342 ReparseDataLength uint16
1343 Reserved uint16
1344
1345 // GenericReparseBuffer
1346 reparseBuffer byte
1347}
1348
1349const (
1350 FSCTL_GET_REPARSE_POINT = 0x900A8
1351 MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
1352 IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
1353 IO_REPARSE_TAG_SYMLINK = 0xA000000C
1354 SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
1355)
1356
1357const (
1358 ComputerNameNetBIOS = 0
1359 ComputerNameDnsHostname = 1
1360 ComputerNameDnsDomain = 2
1361 ComputerNameDnsFullyQualified = 3
1362 ComputerNamePhysicalNetBIOS = 4
1363 ComputerNamePhysicalDnsHostname = 5
1364 ComputerNamePhysicalDnsDomain = 6
1365 ComputerNamePhysicalDnsFullyQualified = 7
1366 ComputerNameMax = 8
1367)
1368
1369// For MessageBox()
1370const (
1371 MB_OK = 0x00000000
1372 MB_OKCANCEL = 0x00000001
1373 MB_ABORTRETRYIGNORE = 0x00000002
1374 MB_YESNOCANCEL = 0x00000003
1375 MB_YESNO = 0x00000004
1376 MB_RETRYCANCEL = 0x00000005
1377 MB_CANCELTRYCONTINUE = 0x00000006
1378 MB_ICONHAND = 0x00000010
1379 MB_ICONQUESTION = 0x00000020
1380 MB_ICONEXCLAMATION = 0x00000030
1381 MB_ICONASTERISK = 0x00000040
1382 MB_USERICON = 0x00000080
1383 MB_ICONWARNING = MB_ICONEXCLAMATION
1384 MB_ICONERROR = MB_ICONHAND
1385 MB_ICONINFORMATION = MB_ICONASTERISK
1386 MB_ICONSTOP = MB_ICONHAND
1387 MB_DEFBUTTON1 = 0x00000000
1388 MB_DEFBUTTON2 = 0x00000100
1389 MB_DEFBUTTON3 = 0x00000200
1390 MB_DEFBUTTON4 = 0x00000300
1391 MB_APPLMODAL = 0x00000000
1392 MB_SYSTEMMODAL = 0x00001000
1393 MB_TASKMODAL = 0x00002000
1394 MB_HELP = 0x00004000
1395 MB_NOFOCUS = 0x00008000
1396 MB_SETFOREGROUND = 0x00010000
1397 MB_DEFAULT_DESKTOP_ONLY = 0x00020000
1398 MB_TOPMOST = 0x00040000
1399 MB_RIGHT = 0x00080000
1400 MB_RTLREADING = 0x00100000
1401 MB_SERVICE_NOTIFICATION = 0x00200000
1402)
1403
1404const (
1405 MOVEFILE_REPLACE_EXISTING = 0x1
1406 MOVEFILE_COPY_ALLOWED = 0x2
1407 MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
1408 MOVEFILE_WRITE_THROUGH = 0x8
1409 MOVEFILE_CREATE_HARDLINK = 0x10
1410 MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
1411)
1412
1413const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
1414
1415const (
1416 IF_TYPE_OTHER = 1
1417 IF_TYPE_ETHERNET_CSMACD = 6
1418 IF_TYPE_ISO88025_TOKENRING = 9
1419 IF_TYPE_PPP = 23
1420 IF_TYPE_SOFTWARE_LOOPBACK = 24
1421 IF_TYPE_ATM = 37
1422 IF_TYPE_IEEE80211 = 71
1423 IF_TYPE_TUNNEL = 131
1424 IF_TYPE_IEEE1394 = 144
1425)
1426
1427type SocketAddress struct {
1428 Sockaddr *syscall.RawSockaddrAny
1429 SockaddrLength int32
1430}
1431
1432// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither.
1433func (addr *SocketAddress) IP() net.IP {
1434 if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET {
1435 return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
1436 } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 {
1437 return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:]
1438 }
1439 return nil
1440}
1441
1442type IpAdapterUnicastAddress struct {
1443 Length uint32
1444 Flags uint32
1445 Next *IpAdapterUnicastAddress
1446 Address SocketAddress
1447 PrefixOrigin int32
1448 SuffixOrigin int32
1449 DadState int32
1450 ValidLifetime uint32
1451 PreferredLifetime uint32
1452 LeaseLifetime uint32
1453 OnLinkPrefixLength uint8
1454}
1455
1456type IpAdapterAnycastAddress struct {
1457 Length uint32
1458 Flags uint32
1459 Next *IpAdapterAnycastAddress
1460 Address SocketAddress
1461}
1462
1463type IpAdapterMulticastAddress struct {
1464 Length uint32
1465 Flags uint32
1466 Next *IpAdapterMulticastAddress
1467 Address SocketAddress
1468}
1469
1470type IpAdapterDnsServerAdapter struct {
1471 Length uint32
1472 Reserved uint32
1473 Next *IpAdapterDnsServerAdapter
1474 Address SocketAddress
1475}
1476
1477type IpAdapterPrefix struct {
1478 Length uint32
1479 Flags uint32
1480 Next *IpAdapterPrefix
1481 Address SocketAddress
1482 PrefixLength uint32
1483}
1484
1485type IpAdapterAddresses struct {
1486 Length uint32
1487 IfIndex uint32
1488 Next *IpAdapterAddresses
1489 AdapterName *byte
1490 FirstUnicastAddress *IpAdapterUnicastAddress
1491 FirstAnycastAddress *IpAdapterAnycastAddress
1492 FirstMulticastAddress *IpAdapterMulticastAddress
1493 FirstDnsServerAddress *IpAdapterDnsServerAdapter
1494 DnsSuffix *uint16
1495 Description *uint16
1496 FriendlyName *uint16
1497 PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
1498 PhysicalAddressLength uint32
1499 Flags uint32
1500 Mtu uint32
1501 IfType uint32
1502 OperStatus uint32
1503 Ipv6IfIndex uint32
1504 ZoneIndices [16]uint32
1505 FirstPrefix *IpAdapterPrefix
1506 /* more fields might be present here. */
1507}
1508
1509const (
1510 IfOperStatusUp = 1
1511 IfOperStatusDown = 2
1512 IfOperStatusTesting = 3
1513 IfOperStatusUnknown = 4
1514 IfOperStatusDormant = 5
1515 IfOperStatusNotPresent = 6
1516 IfOperStatusLowerLayerDown = 7
1517)
1518
1519// Console related constants used for the mode parameter to SetConsoleMode. See
1520// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
1521
1522const (
1523 ENABLE_PROCESSED_INPUT = 0x1
1524 ENABLE_LINE_INPUT = 0x2
1525 ENABLE_ECHO_INPUT = 0x4
1526 ENABLE_WINDOW_INPUT = 0x8
1527 ENABLE_MOUSE_INPUT = 0x10
1528 ENABLE_INSERT_MODE = 0x20
1529 ENABLE_QUICK_EDIT_MODE = 0x40
1530 ENABLE_EXTENDED_FLAGS = 0x80
1531 ENABLE_AUTO_POSITION = 0x100
1532 ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200
1533
1534 ENABLE_PROCESSED_OUTPUT = 0x1
1535 ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
1536 ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
1537 DISABLE_NEWLINE_AUTO_RETURN = 0x8
1538 ENABLE_LVB_GRID_WORLDWIDE = 0x10
1539)
1540
1541type Coord struct {
1542 X int16
1543 Y int16
1544}
1545
1546type SmallRect struct {
1547 Left int16
1548 Top int16
1549 Right int16
1550 Bottom int16
1551}
1552
1553// Used with GetConsoleScreenBuffer to retrieve information about a console
1554// screen buffer. See
1555// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str
1556// for details.
1557
1558type ConsoleScreenBufferInfo struct {
1559 Size Coord
1560 CursorPosition Coord
1561 Attributes uint16
1562 Window SmallRect
1563 MaximumWindowSize Coord
1564}
1565
1566const UNIX_PATH_MAX = 108 // defined in afunix.h
1567
1568const (
1569 // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags
1570 JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008
1571 JOB_OBJECT_LIMIT_AFFINITY = 0x00000010
1572 JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800
1573 JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400
1574 JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200
1575 JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004
1576 JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000
1577 JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040
1578 JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020
1579 JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100
1580 JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002
1581 JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080
1582 JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000
1583 JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000
1584 JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001
1585)
1586
khenaidooab1f7bd2019-11-14 14:00:27 -05001587type IO_COUNTERS struct {
1588 ReadOperationCount uint64
1589 WriteOperationCount uint64
1590 OtherOperationCount uint64
1591 ReadTransferCount uint64
1592 WriteTransferCount uint64
1593 OtherTransferCount uint64
1594}
1595
1596type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {
1597 BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION
1598 IoInfo IO_COUNTERS
1599 ProcessMemoryLimit uintptr
1600 JobMemoryLimit uintptr
1601 PeakProcessMemoryUsed uintptr
1602 PeakJobMemoryUsed uintptr
1603}
1604
1605const (
1606 // UIRestrictionsClass
1607 JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040
1608 JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010
1609 JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080
1610 JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020
1611 JOB_OBJECT_UILIMIT_HANDLES = 0x00000001
1612 JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002
1613 JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008
1614 JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004
1615)
1616
1617type JOBOBJECT_BASIC_UI_RESTRICTIONS struct {
1618 UIRestrictionsClass uint32
1619}
1620
1621const (
1622 // JobObjectInformationClass
1623 JobObjectAssociateCompletionPortInformation = 7
1624 JobObjectBasicLimitInformation = 2
1625 JobObjectBasicUIRestrictions = 4
1626 JobObjectCpuRateControlInformation = 15
1627 JobObjectEndOfJobTimeInformation = 6
1628 JobObjectExtendedLimitInformation = 9
1629 JobObjectGroupInformation = 11
1630 JobObjectGroupInformationEx = 14
1631 JobObjectLimitViolationInformation2 = 35
1632 JobObjectNetRateControlInformation = 32
1633 JobObjectNotificationLimitInformation = 12
1634 JobObjectNotificationLimitInformation2 = 34
1635 JobObjectSecurityLimitInformation = 5
1636)
1637
1638const (
1639 KF_FLAG_DEFAULT = 0x00000000
1640 KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000
1641 KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000
1642 KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000
1643 KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000
1644 KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000
1645 KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000
1646 KF_FLAG_CREATE = 0x00008000
1647 KF_FLAG_DONT_VERIFY = 0x00004000
1648 KF_FLAG_DONT_UNEXPAND = 0x00002000
1649 KF_FLAG_NO_ALIAS = 0x00001000
1650 KF_FLAG_INIT = 0x00000800
1651 KF_FLAG_DEFAULT_PATH = 0x00000400
1652 KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200
1653 KF_FLAG_SIMPLE_IDLIST = 0x00000100
1654 KF_FLAG_ALIAS_ONLY = 0x80000000
1655)
1656
1657type OsVersionInfoEx struct {
1658 osVersionInfoSize uint32
1659 MajorVersion uint32
1660 MinorVersion uint32
1661 BuildNumber uint32
1662 PlatformId uint32
1663 CsdVersion [128]uint16
1664 ServicePackMajor uint16
1665 ServicePackMinor uint16
1666 SuiteMask uint16
1667 ProductType byte
1668 _ byte
1669}
1670
1671const (
1672 EWX_LOGOFF = 0x00000000
1673 EWX_SHUTDOWN = 0x00000001
1674 EWX_REBOOT = 0x00000002
1675 EWX_FORCE = 0x00000004
1676 EWX_POWEROFF = 0x00000008
1677 EWX_FORCEIFHUNG = 0x00000010
1678 EWX_QUICKRESOLVE = 0x00000020
1679 EWX_RESTARTAPPS = 0x00000040
1680 EWX_HYBRID_SHUTDOWN = 0x00400000
1681 EWX_BOOTOPTIONS = 0x01000000
1682
1683 SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000
1684 SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000
1685 SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000
1686 SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000
1687 SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000
1688 SHTDN_REASON_FLAG_PLANNED = 0x80000000
1689 SHTDN_REASON_MAJOR_OTHER = 0x00000000
1690 SHTDN_REASON_MAJOR_NONE = 0x00000000
1691 SHTDN_REASON_MAJOR_HARDWARE = 0x00010000
1692 SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000
1693 SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000
1694 SHTDN_REASON_MAJOR_APPLICATION = 0x00040000
1695 SHTDN_REASON_MAJOR_SYSTEM = 0x00050000
1696 SHTDN_REASON_MAJOR_POWER = 0x00060000
1697 SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000
1698 SHTDN_REASON_MINOR_OTHER = 0x00000000
1699 SHTDN_REASON_MINOR_NONE = 0x000000ff
1700 SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001
1701 SHTDN_REASON_MINOR_INSTALLATION = 0x00000002
1702 SHTDN_REASON_MINOR_UPGRADE = 0x00000003
1703 SHTDN_REASON_MINOR_RECONFIG = 0x00000004
1704 SHTDN_REASON_MINOR_HUNG = 0x00000005
1705 SHTDN_REASON_MINOR_UNSTABLE = 0x00000006
1706 SHTDN_REASON_MINOR_DISK = 0x00000007
1707 SHTDN_REASON_MINOR_PROCESSOR = 0x00000008
1708 SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009
1709 SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a
1710 SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b
1711 SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c
1712 SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d
1713 SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e
1714 SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F
1715 SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010
1716 SHTDN_REASON_MINOR_HOTFIX = 0x00000011
1717 SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012
1718 SHTDN_REASON_MINOR_SECURITY = 0x00000013
1719 SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014
1720 SHTDN_REASON_MINOR_WMI = 0x00000015
1721 SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016
1722 SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017
1723 SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018
1724 SHTDN_REASON_MINOR_MMC = 0x00000019
1725 SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a
1726 SHTDN_REASON_MINOR_TERMSRV = 0x00000020
1727 SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021
1728 SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022
1729 SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE
1730 SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED
1731 SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff
1732
1733 SHUTDOWN_NORETRY = 0x1
1734)
Andrea Campanella3614a922021-02-25 12:40:42 +01001735
1736// Flags used for GetModuleHandleEx
1737const (
1738 GET_MODULE_HANDLE_EX_FLAG_PIN = 1
1739 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2
1740 GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4
1741)
1742
1743// MUI function flag values
1744const (
1745 MUI_LANGUAGE_ID = 0x4
1746 MUI_LANGUAGE_NAME = 0x8
1747 MUI_MERGE_SYSTEM_FALLBACK = 0x10
1748 MUI_MERGE_USER_FALLBACK = 0x20
1749 MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK
1750 MUI_THREAD_LANGUAGES = 0x40
1751 MUI_CONSOLE_FILTER = 0x100
1752 MUI_COMPLEX_SCRIPT_FILTER = 0x200
1753 MUI_RESET_FILTERS = 0x001
1754 MUI_USER_PREFERRED_UI_LANGUAGES = 0x10
1755 MUI_USE_INSTALLED_LANGUAGES = 0x20
1756 MUI_USE_SEARCH_ALL_LANGUAGES = 0x40
1757 MUI_LANG_NEUTRAL_PE_FILE = 0x100
1758 MUI_NON_LANG_NEUTRAL_FILE = 0x200
1759 MUI_MACHINE_LANGUAGE_SETTINGS = 0x400
1760 MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001
1761 MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002
1762 MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004
1763 MUI_QUERY_TYPE = 0x001
1764 MUI_QUERY_CHECKSUM = 0x002
1765 MUI_QUERY_LANGUAGE_NAME = 0x004
1766 MUI_QUERY_RESOURCE_TYPES = 0x008
1767 MUI_FILEINFO_VERSION = 0x001
1768
1769 MUI_FULL_LANGUAGE = 0x01
1770 MUI_PARTIAL_LANGUAGE = 0x02
1771 MUI_LIP_LANGUAGE = 0x04
1772 MUI_LANGUAGE_INSTALLED = 0x20
1773 MUI_LANGUAGE_LICENSED = 0x40
1774)