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 WSAECONNRESET syscall.Errno = 10054
36 // Invented values to support what package os expects.
52 // More invented values for signals
68 var signals = [...]string{
72 4: "illegal instruction",
73 5: "trace/breakpoint trap",
76 8: "floating point exception",
78 10: "user defined signal 1",
79 11: "segmentation fault",
80 12: "user defined signal 2",
87 GENERIC_READ = 0x80000000
88 GENERIC_WRITE = 0x40000000
89 GENERIC_EXECUTE = 0x20000000
90 GENERIC_ALL = 0x10000000
92 FILE_LIST_DIRECTORY = 0x00000001
93 FILE_APPEND_DATA = 0x00000004
94 FILE_WRITE_ATTRIBUTES = 0x00000100
96 FILE_SHARE_READ = 0x00000001
97 FILE_SHARE_WRITE = 0x00000002
98 FILE_SHARE_DELETE = 0x00000004
99 FILE_ATTRIBUTE_READONLY = 0x00000001
100 FILE_ATTRIBUTE_HIDDEN = 0x00000002
101 FILE_ATTRIBUTE_SYSTEM = 0x00000004
102 FILE_ATTRIBUTE_DIRECTORY = 0x00000010
103 FILE_ATTRIBUTE_ARCHIVE = 0x00000020
104 FILE_ATTRIBUTE_NORMAL = 0x00000080
105 FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
107 INVALID_FILE_ATTRIBUTES = 0xffffffff
113 TRUNCATE_EXISTING = 5
115 FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
116 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
117 FILE_FLAG_OVERLAPPED = 0x40000000
119 HANDLE_FLAG_INHERIT = 0x00000001
120 STARTF_USESTDHANDLES = 0x00000100
121 STARTF_USESHOWWINDOW = 0x00000001
122 DUPLICATE_CLOSE_SOURCE = 0x00000001
123 DUPLICATE_SAME_ACCESS = 0x00000002
125 STD_INPUT_HANDLE = -10 & (1<<32 - 1)
126 STD_OUTPUT_HANDLE = -11 & (1<<32 - 1)
127 STD_ERROR_HANDLE = -12 & (1<<32 - 1)
134 SUBLANG_ENGLISH_US = 0x01
136 FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
137 FORMAT_MESSAGE_IGNORE_INSERTS = 512
138 FORMAT_MESSAGE_FROM_STRING = 1024
139 FORMAT_MESSAGE_FROM_HMODULE = 2048
140 FORMAT_MESSAGE_FROM_SYSTEM = 4096
141 FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192
142 FORMAT_MESSAGE_MAX_WIDTH_MASK = 255
145 MAX_LONG_PATH = 32768
147 MAX_COMPUTERNAME_LENGTH = 15
149 TIME_ZONE_ID_UNKNOWN = 0
150 TIME_ZONE_ID_STANDARD = 1
152 TIME_ZONE_ID_DAYLIGHT = 2
154 INFINITE = 0xffffffff
157 WAIT_ABANDONED = 0x00000080
158 WAIT_OBJECT_0 = 0x00000000
159 WAIT_FAILED = 0xFFFFFFFF
161 CREATE_NEW_PROCESS_GROUP = 0x00000200
162 CREATE_UNICODE_ENVIRONMENT = 0x00000400
164 PROCESS_TERMINATE = 1
165 PROCESS_QUERY_INFORMATION = 0x00000400
166 SYNCHRONIZE = 0x00100000
169 PAGE_READWRITE = 0x04
170 PAGE_WRITECOPY = 0x08
171 PAGE_EXECUTE_READ = 0x20
172 PAGE_EXECUTE_READWRITE = 0x40
173 PAGE_EXECUTE_WRITECOPY = 0x80
176 FILE_MAP_WRITE = 0x02
178 FILE_MAP_EXECUTE = 0x20
183 // Windows reserves errors >= 1<<29 for application use.
184 APPLICATION_ERROR = 1 << 29
188 // flags for CreateToolhelp32Snapshot
189 TH32CS_SNAPHEAPLIST = 0x01
190 TH32CS_SNAPPROCESS = 0x02
191 TH32CS_SNAPTHREAD = 0x04
192 TH32CS_SNAPMODULE = 0x08
193 TH32CS_SNAPMODULE32 = 0x10
194 TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD
195 TH32CS_INHERIT = 0x80000000
199 // filters for ReadDirectoryChangesW
200 FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
201 FILE_NOTIFY_CHANGE_DIR_NAME = 0x002
202 FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004
203 FILE_NOTIFY_CHANGE_SIZE = 0x008
204 FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010
205 FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020
206 FILE_NOTIFY_CHANGE_CREATION = 0x040
207 FILE_NOTIFY_CHANGE_SECURITY = 0x100
212 FILE_ACTION_ADDED = iota + 1
215 FILE_ACTION_RENAMED_OLD_NAME
216 FILE_ACTION_RENAMED_NEW_NAME
227 PROV_RSA_SCHANNEL = 12
229 PROV_EC_ECDSA_SIG = 14
230 PROV_EC_ECNRA_SIG = 15
231 PROV_EC_ECDSA_FULL = 16
232 PROV_EC_ECNRA_FULL = 17
233 PROV_DH_SCHANNEL = 18
234 PROV_SPYRUS_LYNKS = 20
237 PROV_REPLACE_OWF = 23
239 CRYPT_VERIFYCONTEXT = 0xF0000000
240 CRYPT_NEWKEYSET = 0x00000008
241 CRYPT_DELETEKEYSET = 0x00000010
242 CRYPT_MACHINE_KEYSET = 0x00000020
243 CRYPT_SILENT = 0x00000040
244 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
246 USAGE_MATCH_TYPE_AND = 0
247 USAGE_MATCH_TYPE_OR = 1
249 X509_ASN_ENCODING = 0x00000001
250 PKCS_7_ASN_ENCODING = 0x00010000
252 CERT_STORE_PROV_MEMORY = 2
254 CERT_STORE_ADD_ALWAYS = 4
256 CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
258 CERT_TRUST_NO_ERROR = 0x00000000
259 CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
260 CERT_TRUST_IS_REVOKED = 0x00000004
261 CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
262 CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
263 CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
264 CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
265 CERT_TRUST_IS_CYCLIC = 0x00000080
266 CERT_TRUST_INVALID_EXTENSION = 0x00000100
267 CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
268 CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
269 CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
270 CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
271 CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
272 CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
273 CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
274 CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
275 CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
276 CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
277 CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
279 CERT_CHAIN_POLICY_BASE = 1
280 CERT_CHAIN_POLICY_AUTHENTICODE = 2
281 CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
282 CERT_CHAIN_POLICY_SSL = 4
283 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
284 CERT_CHAIN_POLICY_NT_AUTH = 6
285 CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
286 CERT_CHAIN_POLICY_EV = 8
288 CERT_E_EXPIRED = 0x800B0101
289 CERT_E_ROLE = 0x800B0103
290 CERT_E_PURPOSE = 0x800B0106
291 CERT_E_UNTRUSTEDROOT = 0x800B0109
292 CERT_E_CN_NO_MATCH = 0x800B010F
299 OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
300 OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
301 OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
304 // Invented values to support what package os expects.
305 type Timeval struct {
310 func (tv *Timeval) Nanoseconds() int64 {
311 return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
314 func NsecToTimeval(nsec int64) (tv Timeval) {
315 tv.Sec = int32(nsec / 1e9)
316 tv.Usec = int32(nsec % 1e9 / 1e3)
320 type SecurityAttributes struct {
322 SecurityDescriptor uintptr
326 type Overlapped struct {
334 type FileNotifyInformation struct {
335 NextEntryOffset uint32
337 FileNameLength uint32
341 type Filetime struct {
346 // Nanoseconds returns Filetime ft in nanoseconds
347 // since Epoch (00:00:00 UTC, January 1, 1970).
348 func (ft *Filetime) Nanoseconds() int64 {
349 // 100-nanosecond intervals since January 1, 1601
350 nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
351 // change starting time to the Epoch (00:00:00 UTC, January 1, 1970)
352 nsec -= 116444736000000000
353 // convert into nanoseconds
358 func NsecToFiletime(nsec int64) (ft Filetime) {
359 // convert into 100-nanosecond
361 // change starting time to January 1, 1601
362 nsec += 116444736000000000
363 // split into high / low
364 ft.LowDateTime = uint32(nsec & 0xffffffff)
365 ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
369 type Win32finddata struct {
370 FileAttributes uint32
371 CreationTime Filetime
372 LastAccessTime Filetime
373 LastWriteTime Filetime
378 FileName [MAX_PATH - 1]uint16
379 AlternateFileName [13]uint16
382 // This is the actual system call structure.
383 // Win32finddata is what we committed to in Go 1.
384 type win32finddata1 struct {
385 FileAttributes uint32
386 CreationTime Filetime
387 LastAccessTime Filetime
388 LastWriteTime Filetime
393 FileName [MAX_PATH]uint16
394 AlternateFileName [14]uint16
397 func copyFindData(dst *Win32finddata, src *win32finddata1) {
398 dst.FileAttributes = src.FileAttributes
399 dst.CreationTime = src.CreationTime
400 dst.LastAccessTime = src.LastAccessTime
401 dst.LastWriteTime = src.LastWriteTime
402 dst.FileSizeHigh = src.FileSizeHigh
403 dst.FileSizeLow = src.FileSizeLow
404 dst.Reserved0 = src.Reserved0
405 dst.Reserved1 = src.Reserved1
407 // The src is 1 element bigger than dst, but it must be NUL.
408 copy(dst.FileName[:], src.FileName[:])
409 copy(dst.AlternateFileName[:], src.AlternateFileName[:])
412 type ByHandleFileInformation struct {
413 FileAttributes uint32
414 CreationTime Filetime
415 LastAccessTime Filetime
416 LastWriteTime Filetime
417 VolumeSerialNumber uint32
426 GetFileExInfoStandard = 0
427 GetFileExMaxInfoLevel = 1
430 type Win32FileAttributeData struct {
431 FileAttributes uint32
432 CreationTime Filetime
433 LastAccessTime Filetime
434 LastWriteTime Filetime
439 // ShowWindow constants
448 SW_SHOWNOACTIVATE = 4
451 SW_SHOWMINNOACTIVE = 7
455 SW_FORCEMINIMIZE = 11
458 type StartupInfo struct {
479 type ProcessInformation struct {
486 type ProcessEntry32 struct {
490 DefaultHeapID uintptr
493 ParentProcessID uint32
496 ExeFile [MAX_PATH]uint16
499 type Systemtime struct {
510 type Timezoneinformation struct {
512 StandardName [32]uint16
513 StandardDate Systemtime
515 DaylightName [32]uint16
516 DaylightDate Systemtime
547 SO_UPDATE_ACCEPT_CONTEXT = 0x700b
548 SO_UPDATE_CONNECT_CONTEXT = 0x7010
552 IOC_VENDOR = 0x18000000
553 IOC_INOUT = IOC_IN | IOC_OUT
555 SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
556 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
557 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
559 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460
563 IP_MULTICAST_IF = 0x9
564 IP_MULTICAST_TTL = 0xa
565 IP_MULTICAST_LOOP = 0xb
566 IP_ADD_MEMBERSHIP = 0xc
567 IP_DROP_MEMBERSHIP = 0xd
570 IPV6_UNICAST_HOPS = 0x4
571 IPV6_MULTICAST_IF = 0x9
572 IPV6_MULTICAST_HOPS = 0xa
573 IPV6_MULTICAST_LOOP = 0xb
574 IPV6_JOIN_GROUP = 0xc
575 IPV6_LEAVE_GROUP = 0xd
577 SOMAXCONN = 0x7fffffff
585 WSADESCRIPTION_LEN = 256
586 WSASYS_STATUS_LEN = 128
594 // Invented values to support what package os expects.
614 FILE_TYPE_CHAR = 0x0002
615 FILE_TYPE_DISK = 0x0001
616 FILE_TYPE_PIPE = 0x0003
617 FILE_TYPE_REMOTE = 0x8000
618 FILE_TYPE_UNKNOWN = 0x0000
621 type Hostent struct {
629 type Protoent struct {
640 DNS_TYPE_CNAME = 0x0005
641 DNS_TYPE_SOA = 0x0006
645 DNS_TYPE_NULL = 0x000a
646 DNS_TYPE_WKS = 0x000b
647 DNS_TYPE_PTR = 0x000c
648 DNS_TYPE_HINFO = 0x000d
649 DNS_TYPE_MINFO = 0x000e
651 DNS_TYPE_TEXT = 0x0010
653 DNS_TYPE_AFSDB = 0x0012
654 DNS_TYPE_X25 = 0x0013
655 DNS_TYPE_ISDN = 0x0014
657 DNS_TYPE_NSAP = 0x0016
658 DNS_TYPE_NSAPPTR = 0x0017
659 DNS_TYPE_SIG = 0x0018
660 DNS_TYPE_KEY = 0x0019
662 DNS_TYPE_GPOS = 0x001b
663 DNS_TYPE_AAAA = 0x001c
664 DNS_TYPE_LOC = 0x001d
665 DNS_TYPE_NXT = 0x001e
666 DNS_TYPE_EID = 0x001f
667 DNS_TYPE_NIMLOC = 0x0020
668 DNS_TYPE_SRV = 0x0021
669 DNS_TYPE_ATMA = 0x0022
670 DNS_TYPE_NAPTR = 0x0023
672 DNS_TYPE_CERT = 0x0025
674 DNS_TYPE_DNAME = 0x0027
675 DNS_TYPE_SINK = 0x0028
676 DNS_TYPE_OPT = 0x0029
678 DNS_TYPE_RRSIG = 0x002E
679 DNS_TYPE_NSEC = 0x002F
680 DNS_TYPE_DNSKEY = 0x0030
681 DNS_TYPE_DHCID = 0x0031
682 DNS_TYPE_UINFO = 0x0064
683 DNS_TYPE_UID = 0x0065
684 DNS_TYPE_GID = 0x0066
685 DNS_TYPE_UNSPEC = 0x0067
686 DNS_TYPE_ADDRS = 0x00f8
687 DNS_TYPE_TKEY = 0x00f9
688 DNS_TYPE_TSIG = 0x00fa
689 DNS_TYPE_IXFR = 0x00fb
690 DNS_TYPE_AXFR = 0x00fc
691 DNS_TYPE_MAILB = 0x00fd
692 DNS_TYPE_MAILA = 0x00fe
693 DNS_TYPE_ALL = 0x00ff
694 DNS_TYPE_ANY = 0x00ff
695 DNS_TYPE_WINS = 0xff01
696 DNS_TYPE_WINSR = 0xff02
697 DNS_TYPE_NBSTAT = 0xff01
701 DNS_INFO_NO_RECORDS = 0x251D
705 // flags inside DNSRecord.Dw
706 DnsSectionQuestion = 0x0000
707 DnsSectionAnswer = 0x0001
708 DnsSectionAuthority = 0x0002
709 DnsSectionAdditional = 0x0003
712 type DNSSRVData struct {
720 type DNSPTRData struct {
724 type DNSMXData struct {
730 type DNSTXTData struct {
732 StringArray [1]*uint16
735 type DNSRecord struct {
750 TF_USE_DEFAULT_WORKER = 0
751 TF_USE_SYSTEM_THREAD = 16
752 TF_USE_KERNEL_APC = 32
755 type TransmitFileBuffers struct {
770 const SIO_GET_INTERFACE_LIST = 0x4004747F
772 // TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.
773 // will be fixed to change variable type as suitable.
775 type SockaddrGen [24]byte
777 type InterfaceInfo struct {
780 BroadcastAddress SockaddrGen
784 type IpAddressString struct {
788 type IpMaskString IpAddressString
790 type IpAddrString struct {
792 IpAddress IpAddressString
797 const MAX_ADAPTER_NAME_LENGTH = 256
798 const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
799 const MAX_ADAPTER_ADDRESS_LENGTH = 8
801 type IpAdapterInfo struct {
804 AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
805 Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
807 Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
811 CurrentIpAddress *IpAddrString
812 IpAddressList IpAddrString
813 GatewayList IpAddrString
814 DhcpServer IpAddrString
816 PrimaryWinsServer IpAddrString
817 SecondaryWinsServer IpAddrString
822 const MAXLEN_PHYSADDR = 8
823 const MAX_INTERFACE_NAME_LEN = 256
824 const MAXLEN_IFDESCR = 256
826 type MibIfRow struct {
827 Name [MAX_INTERFACE_NAME_LEN]uint16
833 PhysAddr [MAXLEN_PHYSADDR]byte
842 InUnknownProtos uint32
850 Descr [MAXLEN_IFDESCR]byte
853 type CertContext struct {
861 type CertChainContext struct {
863 TrustStatus CertTrustStatus
865 Chains **CertSimpleChain
866 LowerQualityChainCount uint32
867 LowerQualityChains **CertChainContext
868 HasRevocationFreshnessTime uint32
869 RevocationFreshnessTime uint32
872 type CertSimpleChain struct {
874 TrustStatus CertTrustStatus
876 Elements **CertChainElement
877 TrustListInfo uintptr
878 HasRevocationFreshnessTime uint32
879 RevocationFreshnessTime uint32
882 type CertChainElement struct {
884 CertContext *CertContext
885 TrustStatus CertTrustStatus
886 RevocationInfo *CertRevocationInfo
887 IssuanceUsage *CertEnhKeyUsage
888 ApplicationUsage *CertEnhKeyUsage
889 ExtendedErrorInfo *uint16
892 type CertRevocationInfo struct {
894 RevocationResult uint32
896 OidSpecificInfo uintptr
897 HasFreshnessTime uint32
899 CrlInfo uintptr // *CertRevocationCrlInfo
902 type CertTrustStatus struct {
907 type CertUsageMatch struct {
909 Usage CertEnhKeyUsage
912 type CertEnhKeyUsage struct {
914 UsageIdentifiers **byte
917 type CertChainPara struct {
919 RequestedUsage CertUsageMatch
920 RequstedIssuancePolicy CertUsageMatch
921 URLRetrievalTimeout uint32
922 CheckRevocationFreshnessTime uint32
923 RevocationFreshnessTime uint32
924 CacheResync *Filetime
927 type CertChainPolicyPara struct {
930 ExtraPolicyPara uintptr
933 type SSLExtraCertChainPolicyPara struct {
940 type CertChainPolicyStatus struct {
945 ExtraPolicyStatus uintptr
950 HKEY_CLASSES_ROOT = 0x80000000 + iota
954 HKEY_PERFORMANCE_DATA
960 KEY_CREATE_SUB_KEY = 4
961 KEY_ENUMERATE_SUB_KEYS = 8
965 KEY_EXECUTE = 0x20019
967 KEY_WOW64_64KEY = 0x0100
968 KEY_WOW64_32KEY = 0x0200
969 KEY_ALL_ACCESS = 0xf003f
978 REG_DWORD_LITTLE_ENDIAN
983 REG_FULL_RESOURCE_DESCRIPTOR
984 REG_RESOURCE_REQUIREMENTS_LIST
985 REG_QWORD_LITTLE_ENDIAN
986 REG_DWORD = REG_DWORD_LITTLE_ENDIAN
987 REG_QWORD = REG_QWORD_LITTLE_ENDIAN
990 type AddrinfoW struct {
1014 var WSAID_CONNECTEX = GUID{
1018 [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
1022 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
1023 FILE_SKIP_SET_EVENT_ON_HANDLE = 2
1027 WSAPROTOCOL_LEN = 255
1028 MAX_PROTOCOL_CHAIN = 7
1030 LAYERED_PROTOCOL = 0
1032 XP1_CONNECTIONLESS = 0x00000001
1033 XP1_GUARANTEED_DELIVERY = 0x00000002
1034 XP1_GUARANTEED_ORDER = 0x00000004
1035 XP1_MESSAGE_ORIENTED = 0x00000008
1036 XP1_PSEUDO_STREAM = 0x00000010
1037 XP1_GRACEFUL_CLOSE = 0x00000020
1038 XP1_EXPEDITED_DATA = 0x00000040
1039 XP1_CONNECT_DATA = 0x00000080
1040 XP1_DISCONNECT_DATA = 0x00000100
1041 XP1_SUPPORT_BROADCAST = 0x00000200
1042 XP1_SUPPORT_MULTIPOINT = 0x00000400
1043 XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
1044 XP1_MULTIPOINT_DATA_PLANE = 0x00001000
1045 XP1_QOS_SUPPORTED = 0x00002000
1046 XP1_UNI_SEND = 0x00008000
1047 XP1_UNI_RECV = 0x00010000
1048 XP1_IFS_HANDLES = 0x00020000
1049 XP1_PARTIAL_MESSAGE = 0x00040000
1050 XP1_SAN_SUPPORT_SDP = 0x00080000
1052 PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
1053 PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
1054 PFL_HIDDEN = 0x00000004
1055 PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
1056 PFL_NETWORKDIRECT_PROVIDER = 0x00000010
1059 type WSAProtocolInfo struct {
1060 ServiceFlags1 uint32
1061 ServiceFlags2 uint32
1062 ServiceFlags3 uint32
1063 ServiceFlags4 uint32
1064 ProviderFlags uint32
1066 CatalogEntryId uint32
1067 ProtocolChain WSAProtocolChain
1074 ProtocolMaxOffset int32
1075 NetworkByteOrder int32
1076 SecurityScheme int32
1078 ProviderReserved uint32
1079 ProtocolName [WSAPROTOCOL_LEN + 1]uint16
1082 type WSAProtocolChain struct {
1084 ChainEntries [MAX_PROTOCOL_CHAIN]uint32
1087 type TCPKeepalive struct {
1093 type symbolicLinkReparseBuffer struct {
1094 SubstituteNameOffset uint16
1095 SubstituteNameLength uint16
1096 PrintNameOffset uint16
1097 PrintNameLength uint16
1099 PathBuffer [1]uint16
1102 type mountPointReparseBuffer struct {
1103 SubstituteNameOffset uint16
1104 SubstituteNameLength uint16
1105 PrintNameOffset uint16
1106 PrintNameLength uint16
1107 PathBuffer [1]uint16
1110 type reparseDataBuffer struct {
1112 ReparseDataLength uint16
1115 // GenericReparseBuffer
1120 FSCTL_GET_REPARSE_POINT = 0x900A8
1121 MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
1122 IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
1123 IO_REPARSE_TAG_SYMLINK = 0xA000000C
1124 SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
1128 ComputerNameNetBIOS = 0
1129 ComputerNameDnsHostname = 1
1130 ComputerNameDnsDomain = 2
1131 ComputerNameDnsFullyQualified = 3
1132 ComputerNamePhysicalNetBIOS = 4
1133 ComputerNamePhysicalDnsHostname = 5
1134 ComputerNamePhysicalDnsDomain = 6
1135 ComputerNamePhysicalDnsFullyQualified = 7
1140 MOVEFILE_REPLACE_EXISTING = 0x1
1141 MOVEFILE_COPY_ALLOWED = 0x2
1142 MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
1143 MOVEFILE_WRITE_THROUGH = 0x8
1144 MOVEFILE_CREATE_HARDLINK = 0x10
1145 MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20
1148 const GAA_FLAG_INCLUDE_PREFIX = 0x00000010
1152 IF_TYPE_ETHERNET_CSMACD = 6
1153 IF_TYPE_ISO88025_TOKENRING = 9
1155 IF_TYPE_SOFTWARE_LOOPBACK = 24
1157 IF_TYPE_IEEE80211 = 71
1158 IF_TYPE_TUNNEL = 131
1159 IF_TYPE_IEEE1394 = 144
1162 type SocketAddress struct {
1163 Sockaddr *syscall.RawSockaddrAny
1164 SockaddrLength int32
1167 type IpAdapterUnicastAddress struct {
1170 Next *IpAdapterUnicastAddress
1171 Address SocketAddress
1175 ValidLifetime uint32
1176 PreferredLifetime uint32
1177 LeaseLifetime uint32
1178 OnLinkPrefixLength uint8
1181 type IpAdapterAnycastAddress struct {
1184 Next *IpAdapterAnycastAddress
1185 Address SocketAddress
1188 type IpAdapterMulticastAddress struct {
1191 Next *IpAdapterMulticastAddress
1192 Address SocketAddress
1195 type IpAdapterDnsServerAdapter struct {
1198 Next *IpAdapterDnsServerAdapter
1199 Address SocketAddress
1202 type IpAdapterPrefix struct {
1205 Next *IpAdapterPrefix
1206 Address SocketAddress
1210 type IpAdapterAddresses struct {
1213 Next *IpAdapterAddresses
1215 FirstUnicastAddress *IpAdapterUnicastAddress
1216 FirstAnycastAddress *IpAdapterAnycastAddress
1217 FirstMulticastAddress *IpAdapterMulticastAddress
1218 FirstDnsServerAddress *IpAdapterDnsServerAdapter
1221 FriendlyName *uint16
1222 PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte
1223 PhysicalAddressLength uint32
1229 ZoneIndices [16]uint32
1230 FirstPrefix *IpAdapterPrefix
1231 /* more fields might be present here. */
1236 IfOperStatusDown = 2
1237 IfOperStatusTesting = 3
1238 IfOperStatusUnknown = 4
1239 IfOperStatusDormant = 5
1240 IfOperStatusNotPresent = 6
1241 IfOperStatusLowerLayerDown = 7