1 // 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.
11 ERROR_FILE_NOT_FOUND syscall.Errno = 2
12 ERROR_PATH_NOT_FOUND syscall.Errno = 3
13 ERROR_ACCESS_DENIED syscall.Errno = 5
14 ERROR_NO_MORE_FILES syscall.Errno = 18
15 ERROR_HANDLE_EOF syscall.Errno = 38
16 ERROR_NETNAME_DELETED syscall.Errno = 64
17 ERROR_FILE_EXISTS syscall.Errno = 80
18 ERROR_BROKEN_PIPE syscall.Errno = 109
19 ERROR_BUFFER_OVERFLOW syscall.Errno = 111
20 ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122
21 ERROR_MOD_NOT_FOUND syscall.Errno = 126
22 ERROR_PROC_NOT_FOUND syscall.Errno = 127
23 ERROR_ALREADY_EXISTS syscall.Errno = 183
24 ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203
25 ERROR_MORE_DATA syscall.Errno = 234
26 ERROR_OPERATION_ABORTED syscall.Errno = 995
27 ERROR_IO_PENDING syscall.Errno = 997
28 ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066
29 ERROR_NOT_FOUND syscall.Errno = 1168
30 ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314
31 WSAEACCES syscall.Errno = 10013
32 WSAEMSGSIZE syscall.Errno = 10040
33 WSAECONNRESET syscall.Errno = 10054
37 // Invented values to support what package os expects.
53 // More invented values for signals
69 var signals = [...]string{
73 4: "illegal instruction",
74 5: "trace/breakpoint trap",
77 8: "floating point exception",
79 10: "user defined signal 1",
80 11: "segmentation fault",
81 12: "user defined signal 2",
88 GENERIC_READ = 0x80000000
89 GENERIC_WRITE = 0x40000000
90 GENERIC_EXECUTE = 0x20000000
91 GENERIC_ALL = 0x10000000
93 FILE_LIST_DIRECTORY = 0x00000001
94 FILE_APPEND_DATA = 0x00000004
95 FILE_WRITE_ATTRIBUTES = 0x00000100
97 FILE_SHARE_READ = 0x00000001
98 FILE_SHARE_WRITE = 0x00000002
99 FILE_SHARE_DELETE = 0x00000004
101 FILE_ATTRIBUTE_READONLY = 0x00000001
102 FILE_ATTRIBUTE_HIDDEN = 0x00000002
103 FILE_ATTRIBUTE_SYSTEM = 0x00000004
104 FILE_ATTRIBUTE_DIRECTORY = 0x00000010
105 FILE_ATTRIBUTE_ARCHIVE = 0x00000020
106 FILE_ATTRIBUTE_DEVICE = 0x00000040
107 FILE_ATTRIBUTE_NORMAL = 0x00000080
108 FILE_ATTRIBUTE_TEMPORARY = 0x00000100
109 FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
110 FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
111 FILE_ATTRIBUTE_COMPRESSED = 0x00000800
112 FILE_ATTRIBUTE_OFFLINE = 0x00001000
113 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
114 FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
115 FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000
116 FILE_ATTRIBUTE_VIRTUAL = 0x00010000
117 FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000
118 FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000
119 FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000
121 INVALID_FILE_ATTRIBUTES = 0xffffffff
127 TRUNCATE_EXISTING = 5
129 FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000
130 FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000
131 FILE_FLAG_OPEN_NO_RECALL = 0x00100000
132 FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
133 FILE_FLAG_SESSION_AWARE = 0x00800000
134 FILE_FLAG_POSIX_SEMANTICS = 0x01000000
135 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
136 FILE_FLAG_DELETE_ON_CLOSE = 0x04000000
137 FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000
138 FILE_FLAG_RANDOM_ACCESS = 0x10000000
139 FILE_FLAG_NO_BUFFERING = 0x20000000
140 FILE_FLAG_OVERLAPPED = 0x40000000
141 FILE_FLAG_WRITE_THROUGH = 0x80000000
143 HANDLE_FLAG_INHERIT = 0x00000001
144 STARTF_USESTDHANDLES = 0x00000100
145 STARTF_USESHOWWINDOW = 0x00000001
146 DUPLICATE_CLOSE_SOURCE = 0x00000001
147 DUPLICATE_SAME_ACCESS = 0x00000002
149 STD_INPUT_HANDLE = -10 & (1<<32 - 1)
150 STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
151 STD_ERROR_HANDLE = -12 & (1<<32 - 1)
158 SUBLANG_ENGLISH_US = 0x01
160 FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
161 FORMAT_MESSAGE_IGNORE_INSERTS = 512
162 FORMAT_MESSAGE_FROM_STRING = 1024
163 FORMAT_MESSAGE_FROM_HMODULE = 2048
164 FORMAT_MESSAGE_FROM_SYSTEM = 4096
165 FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
166 FORMAT_MESSAGE_MAX_WIDTH_MASK = 255
169 MAX_LONG_PATH = 32768
171 MAX_COMPUTERNAME_LENGTH = 15
173 TIME_ZONE_ID_UNKNOWN = 0
174 TIME_ZONE_ID_STANDARD = 1
176 TIME_ZONE_ID_DAYLIGHT = 2
178 INFINITE = 0xffffffff
181 WAIT_ABANDONED = 0x00000080
182 WAIT_OBJECT_0 = 0x00000000
183 WAIT_FAILED = 0xFFFFFFFF
185 PROCESS_TERMINATE = 1
186 PROCESS_QUERY_INFORMATION = 0x00000400
187 SYNCHRONIZE = 0x00100000
190 FILE_MAP_WRITE = 0x02
192 FILE_MAP_EXECUTE = 0x20
197 // Windows reserves errors >= 1<<29 for application use.
198 APPLICATION_ERROR = 1 << 29
202 // Process creation flags.
203 CREATE_BREAKAWAY_FROM_JOB = 0x01000000
204 CREATE_DEFAULT_ERROR_MODE = 0x04000000
205 CREATE_NEW_CONSOLE = 0x00000010
206 CREATE_NEW_PROCESS_GROUP = 0x00000200
207 CREATE_NO_WINDOW = 0x08000000
208 CREATE_PROTECTED_PROCESS = 0x00040000
209 CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
210 CREATE_SEPARATE_WOW_VDM = 0x00000800
211 CREATE_SHARED_WOW_VDM = 0x00001000
212 CREATE_SUSPENDED = 0x00000004
213 CREATE_UNICODE_ENVIRONMENT = 0x00000400
214 DEBUG_ONLY_THIS_PROCESS = 0x00000002
215 DEBUG_PROCESS = 0x00000001
216 DETACHED_PROCESS = 0x00000008
217 EXTENDED_STARTUPINFO_PRESENT = 0x00080000
218 INHERIT_PARENT_AFFINITY = 0x00010000
222 // flags for CreateToolhelp32Snapshot
223 TH32CS_SNAPHEAPLIST = 0x01
224 TH32CS_SNAPPROCESS = 0x02
225 TH32CS_SNAPTHREAD = 0x04
226 TH32CS_SNAPMODULE = 0x08
227 TH32CS_SNAPMODULE32 = 0x10
228 TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
229 TH32CS_INHERIT = 0x80000000
233 // filters for ReadDirectoryChangesW
234 FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
235 FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
236 FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
237 FILE_NOTIFY_CHANGE_SIZE = 0x008
238 FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010
239 FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
240 FILE_NOTIFY_CHANGE_CREATION = 0x040
241 FILE_NOTIFY_CHANGE_SECURITY = 0x100
246 FILE_ACTION_ADDED = iota + 1
249 FILE_ACTION_RENAMED_OLD_NAME
250 FILE_ACTION_RENAMED_NEW_NAME
261 PROV_RSA_SCHANNEL = 12
263 PROV_EC_ECDSA_SIG = 14
264 PROV_EC_ECNRA_SIG = 15
265 PROV_EC_ECDSA_FULL = 16
266 PROV_EC_ECNRA_FULL = 17
267 PROV_DH_SCHANNEL = 18
268 PROV_SPYRUS_LYNKS = 20
271 PROV_REPLACE_OWF = 23
273 CRYPT_VERIFYCONTEXT = 0xF0000000
274 CRYPT_NEWKEYSET = 0x00000008
275 CRYPT_DELETEKEYSET = 0x00000010
276 CRYPT_MACHINE_KEYSET = 0x00000020
277 CRYPT_SILENT = 0x00000040
278 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
280 USAGE_MATCH_TYPE_AND = 0
281 USAGE_MATCH_TYPE_OR = 1
283 /* msgAndCertEncodingType values for CertOpenStore function */
284 X509_ASN_ENCODING = 0x00000001
285 PKCS_7_ASN_ENCODING = 0x00010000
287 /* storeProvider values for CertOpenStore function */
288 CERT_STORE_PROV_MSG = 1
289 CERT_STORE_PROV_MEMORY = 2
290 CERT_STORE_PROV_FILE = 3
291 CERT_STORE_PROV_REG = 4
292 CERT_STORE_PROV_PKCS7 = 5
293 CERT_STORE_PROV_SERIALIZED = 6
294 CERT_STORE_PROV_FILENAME_A = 7
295 CERT_STORE_PROV_FILENAME_W = 8
296 CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W
297 CERT_STORE_PROV_SYSTEM_A = 9
298 CERT_STORE_PROV_SYSTEM_W = 10
299 CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W
300 CERT_STORE_PROV_COLLECTION = 11
301 CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12
302 CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13
303 CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W
304 CERT_STORE_PROV_PHYSICAL_W = 14
305 CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W
306 CERT_STORE_PROV_SMART_CARD_W = 15
307 CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W
308 CERT_STORE_PROV_LDAP_W = 16
309 CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W
310 CERT_STORE_PROV_PKCS12 = 17
312 /* store characteristics (low WORD of flag) for CertOpenStore function */
313 CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001
314 CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002
315 CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
316 CERT_STORE_DELETE_FLAG = 0x00000010
317 CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020
318 CERT_STORE_SHARE_STORE_FLAG = 0x00000040
319 CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080
320 CERT_STORE_MANIFOLD_FLAG = 0x00000100
321 CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200
322 CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400
323 CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800
324 CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000
325 CERT_STORE_CREATE_NEW_FLAG = 0x00002000
326 CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000
327 CERT_STORE_READONLY_FLAG = 0x00008000
329 /* store locations (high WORD of flag) for CertOpenStore function */
330 CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000
331 CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000
332 CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000
333 CERT_SYSTEM_STORE_SERVICES = 0x00050000
334 CERT_SYSTEM_STORE_USERS = 0x00060000
335 CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000
336 CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000
337 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000
338 CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000
339 CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000
341 /* Miscellaneous high-WORD flags for CertOpenStore function */
342 CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000
343 CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000
344 CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000
345 CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000
346 CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000
347 CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000
348 CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000
349 CERT_LDAP_STORE_SIGN_FLAG = 0x00010000
350 CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000
351 CERT_LDAP_STORE_OPENED_FLAG = 0x00040000
352 CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000
354 /* addDisposition values for CertAddCertificateContextToStore function */
355 CERT_STORE_ADD_NEW = 1
356 CERT_STORE_ADD_USE_EXISTING = 2
357 CERT_STORE_ADD_REPLACE_EXISTING = 3
358 CERT_STORE_ADD_ALWAYS = 4
359 CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5
360 CERT_STORE_ADD_NEWER = 6
361 CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7
363 /* ErrorStatus values for CertTrustStatus struct */
364 CERT_TRUST_NO_ERROR = 0x00000000
365 CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
366 CERT_TRUST_IS_REVOKED = 0x00000004
367 CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
368 CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
369 CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
370 CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
371 CERT_TRUST_IS_CYCLIC = 0x00000080
372 CERT_TRUST_INVALID_EXTENSION = 0x00000100
373 CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
374 CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
375 CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
376 CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
377 CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
378 CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
379 CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
380 CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000
381 CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000
382 CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000
383 CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000
384 CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000
385 CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
386 CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
387 CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
388 CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
390 /* InfoStatus values for CertTrustStatus struct */
391 CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001
392 CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002
393 CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004
394 CERT_TRUST_IS_SELF_SIGNED = 0x00000008
395 CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100
396 CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400
397 CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400
398 CERT_TRUST_IS_PEER_TRUSTED = 0x00000800
399 CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000
400 CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000
401 CERT_TRUST_IS_CA_TRUSTED = 0x00004000
402 CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000
404 /* policyOID values for CertVerifyCertificateChainPolicy function */
405 CERT_CHAIN_POLICY_BASE = 1
406 CERT_CHAIN_POLICY_AUTHENTICODE = 2
407 CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
408 CERT_CHAIN_POLICY_SSL = 4
409 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
410 CERT_CHAIN_POLICY_NT_AUTH = 6
411 CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
412 CERT_CHAIN_POLICY_EV = 8
413 CERT_CHAIN_POLICY_SSL_F12 = 9
415 CERT_E_EXPIRED = 0x800B0101
416 CERT_E_ROLE = 0x800B0103
417 CERT_E_PURPOSE = 0x800B0106
418 CERT_E_UNTRUSTEDROOT = 0x800B0109
419 CERT_E_CN_NO_MATCH = 0x800B010F
421 /* AuthType values for SSLExtraCertChainPolicyPara struct */
425 /* Checks values for SSLExtraCertChainPolicyPara struct */
426 SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080
427 SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100
428 SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200
429 SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000
430 SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000
434 OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
435 OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
436 OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
439 // Pointer represents a pointer to an arbitrary Windows type.
441 // Pointer-typed fields may point to one of many different types. It's
442 // up to the caller to provide a pointer to the appropriate type, cast
443 // to Pointer. The caller must obey the unsafe.Pointer rules while
445 type Pointer *struct{}
447 // Invented values to support what package os expects.
448 type Timeval struct {
453 func (tv *Timeval) Nanoseconds() int64 {
454 return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
457 func NsecToTimeval(nsec int64) (tv Timeval) {
458 tv.Sec = int32(nsec / 1e9)
459 tv.Usec = int32(nsec % 1e9 / 1e3)
463 type SecurityAttributes struct {
465 SecurityDescriptor uintptr
469 type Overlapped struct {
477 type FileNotifyInformation struct {
478 NextEntryOffset uint32
480 FileNameLength uint32
484 type Filetime struct {
489 // Nanoseconds returns Filetime ft in nanoseconds
490 // since Epoch (00:00:00 UTC, January 1, 1970).
491 func (ft *Filetime) Nanoseconds() int64 {
492 // 100-nanosecond intervals since January 1, 1601
493 nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
494 // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
495 nsec -= 116444736000000000
496 // convert into nanoseconds
501 func NsecToFiletime(nsec int64) (ft Filetime) {
502 // convert into 100-nanosecond
504 // change starting time to January 1, 1601
505 nsec += 116444736000000000
506 // split into high / low
507 ft.LowDateTime = uint32(nsec & 0xffffffff)
508 ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
512 type Win32finddata struct {
513 FileAttributes uint32
514 CreationTime Filetime
515 LastAccessTime Filetime
516 LastWriteTime Filetime
521 FileName [MAX_PATH - 1]uint16
522 AlternateFileName [13]uint16
525 // This is the actual system call structure.
526 // Win32finddata is what we committed to in Go 1.
527 type win32finddata1 struct {
528 FileAttributes uint32
529 CreationTime Filetime
530 LastAccessTime Filetime
531 LastWriteTime Filetime
536 FileName [MAX_PATH]uint16
537 AlternateFileName [14]uint16
540 func copyFindData(dst *Win32finddata, src *win32finddata1) {
541 dst.FileAttributes = src.FileAttributes
542 dst.CreationTime = src.CreationTime
543 dst.LastAccessTime = src.LastAccessTime
544 dst.LastWriteTime = src.LastWriteTime
545 dst.FileSizeHigh = src.FileSizeHigh
546 dst.FileSizeLow = src.FileSizeLow
547 dst.Reserved0 = src.Reserved0
548 dst.Reserved1 = src.Reserved1
550 // The src is 1 element bigger than dst, but it must be NUL.
551 copy(dst.FileName[:], src.FileName[:])
552 copy(dst.AlternateFileName[:], src.AlternateFileName[:])
555 type ByHandleFileInformation struct {
556 FileAttributes uint32
557 CreationTime Filetime
558 LastAccessTime Filetime
559 LastWriteTime Filetime
560 VolumeSerialNumber uint32
569 GetFileExInfoStandard = 0
570 GetFileExMaxInfoLevel = 1
573 type Win32FileAttributeData struct {
574 FileAttributes uint32
575 CreationTime Filetime
576 LastAccessTime Filetime
577 LastWriteTime Filetime
582 // ShowWindow constants
591 SW_SHOWNOACTIVATE = 4
594 SW_SHOWMINNOACTIVE = 7
598 SW_FORCEMINIMIZE = 11
601 type StartupInfo struct {
622 type ProcessInformation struct {
629 type ProcessEntry32 struct {
633 DefaultHeapID uintptr
636 ParentProcessID uint32
639 ExeFile [MAX_PATH]uint16
642 type Systemtime struct {
653 type Timezoneinformation struct {
655 StandardName [32]uint16
656 StandardDate Systemtime
658 DaylightName [32]uint16
659 DaylightDate Systemtime
690 SO_UPDATE_ACCEPT_CONTEXT = 0x700b
691 SO_UPDATE_CONNECT_CONTEXT = 0x7010
695 IOC_VENDOR = 0x18000000
696 IOC_INOUT = IOC_IN | IOC_OUT
698 SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
699 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
700 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
702 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
706 IP_MULTICAST_IF = 0x9
707 IP_MULTICAST_TTL = 0xa
708 IP_MULTICAST_LOOP = 0xb
709 IP_ADD_MEMBERSHIP = 0xc
710 IP_DROP_MEMBERSHIP = 0xd
713 IPV6_UNICAST_HOPS = 0x4
714 IPV6_MULTICAST_IF = 0x9
715 IPV6_MULTICAST_HOPS = 0xa
716 IPV6_MULTICAST_LOOP = 0xb
717 IPV6_JOIN_GROUP = 0xc
718 IPV6_LEAVE_GROUP = 0xd
730 SOMAXCONN = 0x7fffffff
738 WSADESCRIPTION_LEN = 256
739 WSASYS_STATUS_LEN = 128
748 Name *syscall.RawSockaddrAny
756 // Invented values to support what package os expects.
776 FILE_TYPE_CHAR = 0x0002
777 FILE_TYPE_DISK = 0x0001
778 FILE_TYPE_PIPE = 0x0003
779 FILE_TYPE_REMOTE = 0x8000
780 FILE_TYPE_UNKNOWN = 0x0000
783 type Hostent struct {
791 type Protoent struct {
802 DNS_TYPE_CNAME = 0x0005
803 DNS_TYPE_SOA = 0x0006
807 DNS_TYPE_NULL = 0x000a
808 DNS_TYPE_WKS = 0x000b
809 DNS_TYPE_PTR = 0x000c
810 DNS_TYPE_HINFO = 0x000d
811 DNS_TYPE_MINFO = 0x000e
813 DNS_TYPE_TEXT = 0x0010
815 DNS_TYPE_AFSDB = 0x0012
816 DNS_TYPE_X25 = 0x0013
817 DNS_TYPE_ISDN = 0x0014
819 DNS_TYPE_NSAP = 0x0016
820 DNS_TYPE_NSAPPTR = 0x0017
821 DNS_TYPE_SIG = 0x0018
822 DNS_TYPE_KEY = 0x0019
824 DNS_TYPE_GPOS = 0x001b
825 DNS_TYPE_AAAA = 0x001c
826 DNS_TYPE_LOC = 0x001d
827 DNS_TYPE_NXT = 0x001e
828 DNS_TYPE_EID = 0x001f
829 DNS_TYPE_NIMLOC = 0x0020
830 DNS_TYPE_SRV = 0x0021
831 DNS_TYPE_ATMA = 0x0022
832 DNS_TYPE_NAPTR = 0x0023
834 DNS_TYPE_CERT = 0x0025
836 DNS_TYPE_DNAME = 0x0027
837 DNS_TYPE_SINK = 0x0028
838 DNS_TYPE_OPT = 0x0029
840 DNS_TYPE_RRSIG = 0x002E
841 DNS_TYPE_NSEC = 0x002F
842 DNS_TYPE_DNSKEY = 0x0030
843 DNS_TYPE_DHCID = 0x0031
844 DNS_TYPE_UINFO = 0x0064
845 DNS_TYPE_UID = 0x0065
846 DNS_TYPE_GID = 0x0066
847 DNS_TYPE_UNSPEC = 0x0067
848 DNS_TYPE_ADDRS = 0x00f8
849 DNS_TYPE_TKEY = 0x00f9
850 DNS_TYPE_TSIG = 0x00fa
851 DNS_TYPE_IXFR = 0x00fb
852 DNS_TYPE_AXFR = 0x00fc
853 DNS_TYPE_MAILB = 0x00fd
854 DNS_TYPE_MAILA = 0x00fe
855 DNS_TYPE_ALL = 0x00ff
856 DNS_TYPE_ANY = 0x00ff
857 DNS_TYPE_WINS = 0xff01
858 DNS_TYPE_WINSR = 0xff02
859 DNS_TYPE_NBSTAT = 0xff01
863 DNS_INFO_NO_RECORDS = 0x251D
867 // flags inside DNSRecord.Dw
868 DnsSectionQuestion = 0x0000
869 DnsSectionAnswer = 0x0001
870 DnsSectionAuthority = 0x0002
871 DnsSectionAdditional = 0x0003
874 type DNSSRVData struct {
882 type DNSPTRData struct {
886 type DNSMXData struct {
892 type DNSTXTData struct {
894 StringArray [1]*uint16
897 type DNSRecord struct {
912 TF_USE_DEFAULT_WORKER = 0
913 TF_USE_SYSTEM_THREAD = 16
914 TF_USE_KERNEL_APC = 32
917 type TransmitFileBuffers struct {
932 const SIO_GET_INTERFACE_LIST = 0x4004747F
934 // TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
935 // will be fixed to change variable type as suitable.
937 type SockaddrGen [24]byte
939 type InterfaceInfo struct {
942 BroadcastAddress SockaddrGen
946 type IpAddressString struct {
950 type IpMaskString IpAddressString
952 type IpAddrString struct {
954 IpAddress IpAddressString
959 const MAX_ADAPTER_NAME_LENGTH = 256
960 const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
961 const MAX_ADAPTER_ADDRESS_LENGTH = 8
963 type IpAdapterInfo struct {
966 AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
967 Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
969 Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
973 CurrentIpAddress *IpAddrString
974 IpAddressList IpAddrString
975 GatewayList IpAddrString
976 DhcpServer IpAddrString
978 PrimaryWinsServer IpAddrString
979 SecondaryWinsServer IpAddrString
984 const MAXLEN_PHYSADDR = 8
985 const MAX_INTERFACE_NAME_LEN = 256
986 const MAXLEN_IFDESCR = 256
988 type MibIfRow struct {
989 Name [MAX_INTERFACE_NAME_LEN]uint16
995 PhysAddr [MAXLEN_PHYSADDR]byte
1004 InUnknownProtos uint32
1007 OutNUcastPkts uint32
1012 Descr [MAXLEN_IFDESCR]byte
1015 type CertInfo struct {
1019 type CertContext struct {
1027 type CertChainContext struct {
1029 TrustStatus CertTrustStatus
1031 Chains **CertSimpleChain
1032 LowerQualityChainCount uint32
1033 LowerQualityChains **CertChainContext
1034 HasRevocationFreshnessTime uint32
1035 RevocationFreshnessTime uint32
1038 type CertTrustListInfo struct {
1042 type CertSimpleChain struct {
1044 TrustStatus CertTrustStatus
1046 Elements **CertChainElement
1047 TrustListInfo *CertTrustListInfo
1048 HasRevocationFreshnessTime uint32
1049 RevocationFreshnessTime uint32
1052 type CertChainElement struct {
1054 CertContext *CertContext
1055 TrustStatus CertTrustStatus
1056 RevocationInfo *CertRevocationInfo
1057 IssuanceUsage *CertEnhKeyUsage
1058 ApplicationUsage *CertEnhKeyUsage
1059 ExtendedErrorInfo *uint16
1062 type CertRevocationCrlInfo struct {
1066 type CertRevocationInfo struct {
1068 RevocationResult uint32
1070 OidSpecificInfo Pointer
1071 HasFreshnessTime uint32
1072 FreshnessTime uint32
1073 CrlInfo *CertRevocationCrlInfo
1076 type CertTrustStatus struct {
1081 type CertUsageMatch struct {
1083 Usage CertEnhKeyUsage
1086 type CertEnhKeyUsage struct {
1088 UsageIdentifiers **byte
1091 type CertChainPara struct {
1093 RequestedUsage CertUsageMatch
1094 RequstedIssuancePolicy CertUsageMatch
1095 URLRetrievalTimeout uint32
1096 CheckRevocationFreshnessTime uint32
1097 RevocationFreshnessTime uint32
1098 CacheResync *Filetime
1101 type CertChainPolicyPara struct {
1104 ExtraPolicyPara Pointer
1107 type SSLExtraCertChainPolicyPara struct {
1114 type CertChainPolicyStatus struct {
1119 ExtraPolicyStatus Pointer
1124 HKEY_CLASSES_ROOT = 0x80000000 + iota
1128 HKEY_PERFORMANCE_DATA
1134 KEY_CREATE_SUB_KEY = 4
1135 KEY_ENUMERATE_SUB_KEYS = 8
1137 KEY_CREATE_LINK = 32
1139 KEY_EXECUTE = 0x20019
1141 KEY_WOW64_64KEY = 0x0100
1142 KEY_WOW64_32KEY = 0x0200
1143 KEY_ALL_ACCESS = 0xf003f
1152 REG_DWORD_LITTLE_ENDIAN
1153 REG_DWORD_BIG_ENDIAN
1157 REG_FULL_RESOURCE_DESCRIPTOR
1158 REG_RESOURCE_REQUIREMENTS_LIST
1159 REG_QWORD_LITTLE_ENDIAN
1160 REG_DWORD = REG_DWORD_LITTLE_ENDIAN
1161 REG_QWORD = REG_QWORD_LITTLE_ENDIAN
1164 type AddrinfoW struct {
1188 var WSAID_CONNECTEX = GUID{
1192 [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
1195 var WSAID_WSASENDMSG = GUID{
1199 [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},
1202 var WSAID_WSARECVMSG = GUID{
1206 [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},
1210 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
1211 FILE_SKIP_SET_EVENT_ON_HANDLE = 2
1215 WSAPROTOCOL_LEN = 255
1216 MAX_PROTOCOL_CHAIN = 7
1218 LAYERED_PROTOCOL = 0
1220 XP1_CONNECTIONLESS = 0x00000001
1221 XP1_GUARANTEED_DELIVERY = 0x00000002
1222 XP1_GUARANTEED_ORDER = 0x00000004
1223 XP1_MESSAGE_ORIENTED = 0x00000008
1224 XP1_PSEUDO_STREAM = 0x00000010
1225 XP1_GRACEFUL_CLOSE = 0x00000020
1226 XP1_EXPEDITED_DATA = 0x00000040
1227 XP1_CONNECT_DATA = 0x00000080
1228 XP1_DISCONNECT_DATA = 0x00000100
1229 XP1_SUPPORT_BROADCAST = 0x00000200
1230 XP1_SUPPORT_MULTIPOINT = 0x00000400
1231 XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
1232 XP1_MULTIPOINT_DATA_PLANE = 0x00001000
1233 XP1_QOS_SUPPORTED = 0x00002000
1234 XP1_UNI_SEND = 0x00008000
1235 XP1_UNI_RECV = 0x00010000
1236 XP1_IFS_HANDLES = 0x00020000
1237 XP1_PARTIAL_MESSAGE = 0x00040000
1238 XP1_SAN_SUPPORT_SDP = 0x00080000
1240 PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
1241 PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
1242 PFL_HIDDEN = 0x00000004
1243 PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
1244 PFL_NETWORKDIRECT_PROVIDER = 0x00000010
1247 type WSAProtocolInfo struct {
1248 ServiceFlags1 uint32
1249 ServiceFlags2 uint32
1250 ServiceFlags3 uint32
1251 ServiceFlags4 uint32
1252 ProviderFlags uint32
1254 CatalogEntryId uint32
1255 ProtocolChain WSAProtocolChain
1262 ProtocolMaxOffset int32
1263 NetworkByteOrder int32
1264 SecurityScheme int32
1266 ProviderReserved uint32
1267 ProtocolName [WSAPROTOCOL_LEN + 1]uint16
1270 type WSAProtocolChain struct {
1272 ChainEntries [MAX_PROTOCOL_CHAIN]uint32
1275 type TCPKeepalive struct {
1281 type symbolicLinkReparseBuffer struct {
1282 SubstituteNameOffset uint16
1283 SubstituteNameLength uint16
1284 PrintNameOffset uint16
1285 PrintNameLength uint16
1287 PathBuffer [1]uint16
1290 type mountPointReparseBuffer struct {
1291 SubstituteNameOffset uint16
1292 SubstituteNameLength uint16
1293 PrintNameOffset uint16
1294 PrintNameLength uint16
1295 PathBuffer [1]uint16
1298 type reparseDataBuffer struct {
1300 ReparseDataLength uint16
1303 // GenericReparseBuffer
1308 FSCTL_GET_REPARSE_POINT = 0x900A8
1309 MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
1310 IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
1311 IO_REPARSE_TAG_SYMLINK = 0xA000000C
1312 SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
1316 ComputerNameNetBIOS = 0
1317 ComputerNameDnsHostname = 1
1318 ComputerNameDnsDomain = 2
1319 ComputerNameDnsFullyQualified = 3
1320 ComputerNamePhysicalNetBIOS = 4
1321 ComputerNamePhysicalDnsHostname = 5
1322 ComputerNamePhysicalDnsDomain = 6
1323 ComputerNamePhysicalDnsFullyQualified = 7
1328 MOVEFILE_REPLACE_EXISTING = 0x1
1329 MOVEFILE_COPY_ALLOWED = 0x2
1330 MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
1331 MOVEFILE_WRITE_THROUGH = 0x8
1332 MOVEFILE_CREATE_HARDLINK = 0x10
1333 MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
1336 const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
1340 IF_TYPE_ETHERNET_CSMACD = 6
1341 IF_TYPE_ISO88025_TOKENRING = 9
1343 IF_TYPE_SOFTWARE_LOOPBACK = 24
1345 IF_TYPE_IEEE80211 = 71
1346 IF_TYPE_TUNNEL = 131
1347 IF_TYPE_IEEE1394 = 144
1350 type SocketAddress struct {
1351 Sockaddr *syscall.RawSockaddrAny
1352 SockaddrLength int32
1355 type IpAdapterUnicastAddress struct {
1358 Next *IpAdapterUnicastAddress
1359 Address SocketAddress
1363 ValidLifetime uint32
1364 PreferredLifetime uint32
1365 LeaseLifetime uint32
1366 OnLinkPrefixLength uint8
1369 type IpAdapterAnycastAddress struct {
1372 Next *IpAdapterAnycastAddress
1373 Address SocketAddress
1376 type IpAdapterMulticastAddress struct {
1379 Next *IpAdapterMulticastAddress
1380 Address SocketAddress
1383 type IpAdapterDnsServerAdapter struct {
1386 Next *IpAdapterDnsServerAdapter
1387 Address SocketAddress
1390 type IpAdapterPrefix struct {
1393 Next *IpAdapterPrefix
1394 Address SocketAddress
1398 type IpAdapterAddresses struct {
1401 Next *IpAdapterAddresses
1403 FirstUnicastAddress *IpAdapterUnicastAddress
1404 FirstAnycastAddress *IpAdapterAnycastAddress
1405 FirstMulticastAddress *IpAdapterMulticastAddress
1406 FirstDnsServerAddress *IpAdapterDnsServerAdapter
1409 FriendlyName *uint16
1410 PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
1411 PhysicalAddressLength uint32
1417 ZoneIndices [16]uint32
1418 FirstPrefix *IpAdapterPrefix
1419 /* more fields might be present here. */
1424 IfOperStatusDown = 2
1425 IfOperStatusTesting = 3
1426 IfOperStatusUnknown = 4
1427 IfOperStatusDormant = 5
1428 IfOperStatusNotPresent = 6
1429 IfOperStatusLowerLayerDown = 7
1432 // Console related constants used for the mode parameter to SetConsoleMode. See
1433 // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.
1436 ENABLE_PROCESSED_INPUT = 0x1
1437 ENABLE_LINE_INPUT = 0x2
1438 ENABLE_ECHO_INPUT = 0x4
1439 ENABLE_WINDOW_INPUT = 0x8
1440 ENABLE_MOUSE_INPUT = 0x10
1441 ENABLE_INSERT_MODE = 0x20
1442 ENABLE_QUICK_EDIT_MODE = 0x40
1443 ENABLE_EXTENDED_FLAGS = 0x80
1444 ENABLE_AUTO_POSITION = 0x100
1445 ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200
1447 ENABLE_PROCESSED_OUTPUT = 0x1
1448 ENABLE_WRAP_AT_EOL_OUTPUT = 0x2
1449 ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4
1450 DISABLE_NEWLINE_AUTO_RETURN = 0x8
1451 ENABLE_LVB_GRID_WORLDWIDE = 0x10
1459 type SmallRect struct {
1466 // Used with GetConsoleScreenBuffer to retrieve information about a console
1467 // screen buffer. See
1468 // https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str
1471 type ConsoleScreenBufferInfo struct {
1473 CursorPosition Coord
1476 MaximumWindowSize Coord
1479 const UNIX_PATH_MAX = 108 // defined in afunix.h