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. 4 5package windows 6 7import "syscall" 8 9const ( 10 // Windows errors. 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 34) 35 36const ( 37 // Invented values to support what package os expects. 38 O_RDONLY = 0x00000 39 O_WRONLY = 0x00001 40 O_RDWR = 0x00002 41 O_CREAT = 0x00040 42 O_EXCL = 0x00080 43 O_NOCTTY = 0x00100 44 O_TRUNC = 0x00200 45 O_NONBLOCK = 0x00800 46 O_APPEND = 0x00400 47 O_SYNC = 0x01000 48 O_ASYNC = 0x02000 49 O_CLOEXEC = 0x80000 50) 51 52const ( 53 // More invented values for signals 54 SIGHUP = Signal(0x1) 55 SIGINT = Signal(0x2) 56 SIGQUIT = Signal(0x3) 57 SIGILL = Signal(0x4) 58 SIGTRAP = Signal(0x5) 59 SIGABRT = Signal(0x6) 60 SIGBUS = Signal(0x7) 61 SIGFPE = Signal(0x8) 62 SIGKILL = Signal(0x9) 63 SIGSEGV = Signal(0xb) 64 SIGPIPE = Signal(0xd) 65 SIGALRM = Signal(0xe) 66 SIGTERM = Signal(0xf) 67) 68 69var signals = [...]string{ 70 1: "hangup", 71 2: "interrupt", 72 3: "quit", 73 4: "illegal instruction", 74 5: "trace/breakpoint trap", 75 6: "aborted", 76 7: "bus error", 77 8: "floating point exception", 78 9: "killed", 79 10: "user defined signal 1", 80 11: "segmentation fault", 81 12: "user defined signal 2", 82 13: "broken pipe", 83 14: "alarm clock", 84 15: "terminated", 85} 86 87const ( 88 GENERIC_READ = 0x80000000 89 GENERIC_WRITE = 0x40000000 90 GENERIC_EXECUTE = 0x20000000 91 GENERIC_ALL = 0x10000000 92 93 FILE_LIST_DIRECTORY = 0x00000001 94 FILE_APPEND_DATA = 0x00000004 95 FILE_WRITE_ATTRIBUTES = 0x00000100 96 97 FILE_SHARE_READ = 0x00000001 98 FILE_SHARE_WRITE = 0x00000002 99 FILE_SHARE_DELETE = 0x00000004 100 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 120 121 INVALID_FILE_ATTRIBUTES = 0xffffffff 122 123 CREATE_NEW = 1 124 CREATE_ALWAYS = 2 125 OPEN_EXISTING = 3 126 OPEN_ALWAYS = 4 127 TRUNCATE_EXISTING = 5 128 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 142 143 HANDLE_FLAG_INHERIT = 0x00000001 144 STARTF_USESTDHANDLES = 0x00000100 145 STARTF_USESHOWWINDOW = 0x00000001 146 DUPLICATE_CLOSE_SOURCE = 0x00000001 147 DUPLICATE_SAME_ACCESS = 0x00000002 148 149 STD_INPUT_HANDLE = -10 & (1<<32 - 1) 150 STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) 151 STD_ERROR_HANDLE = -12 & (1<<32 - 1) 152 153 FILE_BEGIN = 0 154 FILE_CURRENT = 1 155 FILE_END = 2 156 157 LANG_ENGLISH = 0x09 158 SUBLANG_ENGLISH_US = 0x01 159 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 167 168 MAX_PATH = 260 169 MAX_LONG_PATH = 32768 170 171 MAX_COMPUTERNAME_LENGTH = 15 172 173 TIME_ZONE_ID_UNKNOWN = 0 174 TIME_ZONE_ID_STANDARD = 1 175 176 TIME_ZONE_ID_DAYLIGHT = 2 177 IGNORE = 0 178 INFINITE = 0xffffffff 179 180 WAIT_TIMEOUT = 258 181 WAIT_ABANDONED = 0x00000080 182 WAIT_OBJECT_0 = 0x00000000 183 WAIT_FAILED = 0xFFFFFFFF 184 185 PROCESS_TERMINATE = 1 186 PROCESS_QUERY_INFORMATION = 0x00000400 187 SYNCHRONIZE = 0x00100000 188 189 FILE_MAP_COPY = 0x01 190 FILE_MAP_WRITE = 0x02 191 FILE_MAP_READ = 0x04 192 FILE_MAP_EXECUTE = 0x20 193 194 CTRL_C_EVENT = 0 195 CTRL_BREAK_EVENT = 1 196 197 // Windows reserves errors >= 1<<29 for application use. 198 APPLICATION_ERROR = 1 << 29 199) 200 201const ( 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 219) 220 221const ( 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 230) 231 232const ( 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 242) 243 244const ( 245 // do not reorder 246 FILE_ACTION_ADDED = iota + 1 247 FILE_ACTION_REMOVED 248 FILE_ACTION_MODIFIED 249 FILE_ACTION_RENAMED_OLD_NAME 250 FILE_ACTION_RENAMED_NEW_NAME 251) 252 253const ( 254 // wincrypt.h 255 PROV_RSA_FULL = 1 256 PROV_RSA_SIG = 2 257 PROV_DSS = 3 258 PROV_FORTEZZA = 4 259 PROV_MS_EXCHANGE = 5 260 PROV_SSL = 6 261 PROV_RSA_SCHANNEL = 12 262 PROV_DSS_DH = 13 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 269 PROV_RNG = 21 270 PROV_INTEL_SEC = 22 271 PROV_REPLACE_OWF = 23 272 PROV_RSA_AES = 24 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 279 280 USAGE_MATCH_TYPE_AND = 0 281 USAGE_MATCH_TYPE_OR = 1 282 283 /* msgAndCertEncodingType values for CertOpenStore function */ 284 X509_ASN_ENCODING = 0x00000001 285 PKCS_7_ASN_ENCODING = 0x00010000 286 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 311 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 328 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 340 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 353 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 362 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 389 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 403 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 414 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 420 421 /* AuthType values for SSLExtraCertChainPolicyPara struct */ 422 AUTHTYPE_CLIENT = 1 423 AUTHTYPE_SERVER = 2 424 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 431) 432 433var ( 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") 437) 438 439// Pointer represents a pointer to an arbitrary Windows type. 440// 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 444// doing so. 445type Pointer *struct{} 446 447// Invented values to support what package os expects. 448type Timeval struct { 449 Sec int32 450 Usec int32 451} 452 453func (tv *Timeval) Nanoseconds() int64 { 454 return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 455} 456 457func NsecToTimeval(nsec int64) (tv Timeval) { 458 tv.Sec = int32(nsec / 1e9) 459 tv.Usec = int32(nsec % 1e9 / 1e3) 460 return 461} 462 463type SecurityAttributes struct { 464 Length uint32 465 SecurityDescriptor uintptr 466 InheritHandle uint32 467} 468 469type Overlapped struct { 470 Internal uintptr 471 InternalHigh uintptr 472 Offset uint32 473 OffsetHigh uint32 474 HEvent Handle 475} 476 477type FileNotifyInformation struct { 478 NextEntryOffset uint32 479 Action uint32 480 FileNameLength uint32 481 FileName uint16 482} 483 484type Filetime struct { 485 LowDateTime uint32 486 HighDateTime uint32 487} 488 489// Nanoseconds returns Filetime ft in nanoseconds 490// since Epoch (00:00:00 UTC, January 1, 1970). 491func (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 497 nsec *= 100 498 return nsec 499} 500 501func NsecToFiletime(nsec int64) (ft Filetime) { 502 // convert into 100-nanosecond 503 nsec /= 100 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) 509 return ft 510} 511 512type Win32finddata struct { 513 FileAttributes uint32 514 CreationTime Filetime 515 LastAccessTime Filetime 516 LastWriteTime Filetime 517 FileSizeHigh uint32 518 FileSizeLow uint32 519 Reserved0 uint32 520 Reserved1 uint32 521 FileName [MAX_PATH - 1]uint16 522 AlternateFileName [13]uint16 523} 524 525// This is the actual system call structure. 526// Win32finddata is what we committed to in Go 1. 527type win32finddata1 struct { 528 FileAttributes uint32 529 CreationTime Filetime 530 LastAccessTime Filetime 531 LastWriteTime Filetime 532 FileSizeHigh uint32 533 FileSizeLow uint32 534 Reserved0 uint32 535 Reserved1 uint32 536 FileName [MAX_PATH]uint16 537 AlternateFileName [14]uint16 538} 539 540func 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 549 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[:]) 553} 554 555type ByHandleFileInformation struct { 556 FileAttributes uint32 557 CreationTime Filetime 558 LastAccessTime Filetime 559 LastWriteTime Filetime 560 VolumeSerialNumber uint32 561 FileSizeHigh uint32 562 FileSizeLow uint32 563 NumberOfLinks uint32 564 FileIndexHigh uint32 565 FileIndexLow uint32 566} 567 568const ( 569 GetFileExInfoStandard = 0 570 GetFileExMaxInfoLevel = 1 571) 572 573type Win32FileAttributeData struct { 574 FileAttributes uint32 575 CreationTime Filetime 576 LastAccessTime Filetime 577 LastWriteTime Filetime 578 FileSizeHigh uint32 579 FileSizeLow uint32 580} 581 582// ShowWindow constants 583const ( 584 // winuser.h 585 SW_HIDE = 0 586 SW_NORMAL = 1 587 SW_SHOWNORMAL = 1 588 SW_SHOWMINIMIZED = 2 589 SW_SHOWMAXIMIZED = 3 590 SW_MAXIMIZE = 3 591 SW_SHOWNOACTIVATE = 4 592 SW_SHOW = 5 593 SW_MINIMIZE = 6 594 SW_SHOWMINNOACTIVE = 7 595 SW_SHOWNA = 8 596 SW_RESTORE = 9 597 SW_SHOWDEFAULT = 10 598 SW_FORCEMINIMIZE = 11 599) 600 601type StartupInfo struct { 602 Cb uint32 603 _ *uint16 604 Desktop *uint16 605 Title *uint16 606 X uint32 607 Y uint32 608 XSize uint32 609 YSize uint32 610 XCountChars uint32 611 YCountChars uint32 612 FillAttribute uint32 613 Flags uint32 614 ShowWindow uint16 615 _ uint16 616 _ *byte 617 StdInput Handle 618 StdOutput Handle 619 StdErr Handle 620} 621 622type ProcessInformation struct { 623 Process Handle 624 Thread Handle 625 ProcessId uint32 626 ThreadId uint32 627} 628 629type ProcessEntry32 struct { 630 Size uint32 631 Usage uint32 632 ProcessID uint32 633 DefaultHeapID uintptr 634 ModuleID uint32 635 Threads uint32 636 ParentProcessID uint32 637 PriClassBase int32 638 Flags uint32 639 ExeFile [MAX_PATH]uint16 640} 641 642type Systemtime struct { 643 Year uint16 644 Month uint16 645 DayOfWeek uint16 646 Day uint16 647 Hour uint16 648 Minute uint16 649 Second uint16 650 Milliseconds uint16 651} 652 653type Timezoneinformation struct { 654 Bias int32 655 StandardName [32]uint16 656 StandardDate Systemtime 657 StandardBias int32 658 DaylightName [32]uint16 659 DaylightDate Systemtime 660 DaylightBias int32 661} 662 663// Socket related. 664 665const ( 666 AF_UNSPEC = 0 667 AF_UNIX = 1 668 AF_INET = 2 669 AF_INET6 = 23 670 AF_NETBIOS = 17 671 672 SOCK_STREAM = 1 673 SOCK_DGRAM = 2 674 SOCK_RAW = 3 675 SOCK_SEQPACKET = 5 676 677 IPPROTO_IP = 0 678 IPPROTO_IPV6 = 0x29 679 IPPROTO_TCP = 6 680 IPPROTO_UDP = 17 681 682 SOL_SOCKET = 0xffff 683 SO_REUSEADDR = 4 684 SO_KEEPALIVE = 8 685 SO_DONTROUTE = 16 686 SO_BROADCAST = 32 687 SO_LINGER = 128 688 SO_RCVBUF = 0x1002 689 SO_SNDBUF = 0x1001 690 SO_UPDATE_ACCEPT_CONTEXT = 0x700b 691 SO_UPDATE_CONNECT_CONTEXT = 0x7010 692 693 IOC_OUT = 0x40000000 694 IOC_IN = 0x80000000 695 IOC_VENDOR = 0x18000000 696 IOC_INOUT = IOC_IN | IOC_OUT 697 IOC_WS2 = 0x08000000 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 701 702 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 703 704 IP_TOS = 0x3 705 IP_TTL = 0x4 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 711 712 IPV6_V6ONLY = 0x1b 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 719 720 MSG_OOB = 0x1 721 MSG_PEEK = 0x2 722 MSG_DONTROUTE = 0x4 723 MSG_WAITALL = 0x8 724 725 MSG_TRUNC = 0x0100 726 MSG_CTRUNC = 0x0200 727 MSG_BCAST = 0x0400 728 MSG_MCAST = 0x0800 729 730 SOMAXCONN = 0x7fffffff 731 732 TCP_NODELAY = 1 733 734 SHUT_RD = 0 735 SHUT_WR = 1 736 SHUT_RDWR = 2 737 738 WSADESCRIPTION_LEN = 256 739 WSASYS_STATUS_LEN = 128 740) 741 742type WSABuf struct { 743 Len uint32 744 Buf *byte 745} 746 747type WSAMsg struct { 748 Name *syscall.RawSockaddrAny 749 Namelen int32 750 Buffers *WSABuf 751 BufferCount uint32 752 Control WSABuf 753 Flags uint32 754} 755 756// Invented values to support what package os expects. 757const ( 758 S_IFMT = 0x1f000 759 S_IFIFO = 0x1000 760 S_IFCHR = 0x2000 761 S_IFDIR = 0x4000 762 S_IFBLK = 0x6000 763 S_IFREG = 0x8000 764 S_IFLNK = 0xa000 765 S_IFSOCK = 0xc000 766 S_ISUID = 0x800 767 S_ISGID = 0x400 768 S_ISVTX = 0x200 769 S_IRUSR = 0x100 770 S_IWRITE = 0x80 771 S_IWUSR = 0x80 772 S_IXUSR = 0x40 773) 774 775const ( 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 781) 782 783type Hostent struct { 784 Name *byte 785 Aliases **byte 786 AddrType uint16 787 Length uint16 788 AddrList **byte 789} 790 791type Protoent struct { 792 Name *byte 793 Aliases **byte 794 Proto uint16 795} 796 797const ( 798 DNS_TYPE_A = 0x0001 799 DNS_TYPE_NS = 0x0002 800 DNS_TYPE_MD = 0x0003 801 DNS_TYPE_MF = 0x0004 802 DNS_TYPE_CNAME = 0x0005 803 DNS_TYPE_SOA = 0x0006 804 DNS_TYPE_MB = 0x0007 805 DNS_TYPE_MG = 0x0008 806 DNS_TYPE_MR = 0x0009 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 812 DNS_TYPE_MX = 0x000f 813 DNS_TYPE_TEXT = 0x0010 814 DNS_TYPE_RP = 0x0011 815 DNS_TYPE_AFSDB = 0x0012 816 DNS_TYPE_X25 = 0x0013 817 DNS_TYPE_ISDN = 0x0014 818 DNS_TYPE_RT = 0x0015 819 DNS_TYPE_NSAP = 0x0016 820 DNS_TYPE_NSAPPTR = 0x0017 821 DNS_TYPE_SIG = 0x0018 822 DNS_TYPE_KEY = 0x0019 823 DNS_TYPE_PX = 0x001a 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 833 DNS_TYPE_KX = 0x0024 834 DNS_TYPE_CERT = 0x0025 835 DNS_TYPE_A6 = 0x0026 836 DNS_TYPE_DNAME = 0x0027 837 DNS_TYPE_SINK = 0x0028 838 DNS_TYPE_OPT = 0x0029 839 DNS_TYPE_DS = 0x002B 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 860) 861 862const ( 863 DNS_INFO_NO_RECORDS = 0x251D 864) 865 866const ( 867 // flags inside DNSRecord.Dw 868 DnsSectionQuestion = 0x0000 869 DnsSectionAnswer = 0x0001 870 DnsSectionAuthority = 0x0002 871 DnsSectionAdditional = 0x0003 872) 873 874type DNSSRVData struct { 875 Target *uint16 876 Priority uint16 877 Weight uint16 878 Port uint16 879 Pad uint16 880} 881 882type DNSPTRData struct { 883 Host *uint16 884} 885 886type DNSMXData struct { 887 NameExchange *uint16 888 Preference uint16 889 Pad uint16 890} 891 892type DNSTXTData struct { 893 StringCount uint16 894 StringArray [1]*uint16 895} 896 897type DNSRecord struct { 898 Next *DNSRecord 899 Name *uint16 900 Type uint16 901 Length uint16 902 Dw uint32 903 Ttl uint32 904 Reserved uint32 905 Data [40]byte 906} 907 908const ( 909 TF_DISCONNECT = 1 910 TF_REUSE_SOCKET = 2 911 TF_WRITE_BEHIND = 4 912 TF_USE_DEFAULT_WORKER = 0 913 TF_USE_SYSTEM_THREAD = 16 914 TF_USE_KERNEL_APC = 32 915) 916 917type TransmitFileBuffers struct { 918 Head uintptr 919 HeadLength uint32 920 Tail uintptr 921 TailLength uint32 922} 923 924const ( 925 IFF_UP = 1 926 IFF_BROADCAST = 2 927 IFF_LOOPBACK = 4 928 IFF_POINTTOPOINT = 8 929 IFF_MULTICAST = 16 930) 931 932const SIO_GET_INTERFACE_LIST = 0x4004747F 933 934// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. 935// will be fixed to change variable type as suitable. 936 937type SockaddrGen [24]byte 938 939type InterfaceInfo struct { 940 Flags uint32 941 Address SockaddrGen 942 BroadcastAddress SockaddrGen 943 Netmask SockaddrGen 944} 945 946type IpAddressString struct { 947 String [16]byte 948} 949 950type IpMaskString IpAddressString 951 952type IpAddrString struct { 953 Next *IpAddrString 954 IpAddress IpAddressString 955 IpMask IpMaskString 956 Context uint32 957} 958 959const MAX_ADAPTER_NAME_LENGTH = 256 960const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 961const MAX_ADAPTER_ADDRESS_LENGTH = 8 962 963type IpAdapterInfo struct { 964 Next *IpAdapterInfo 965 ComboIndex uint32 966 AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte 967 Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte 968 AddressLength uint32 969 Address [MAX_ADAPTER_ADDRESS_LENGTH]byte 970 Index uint32 971 Type uint32 972 DhcpEnabled uint32 973 CurrentIpAddress *IpAddrString 974 IpAddressList IpAddrString 975 GatewayList IpAddrString 976 DhcpServer IpAddrString 977 HaveWins bool 978 PrimaryWinsServer IpAddrString 979 SecondaryWinsServer IpAddrString 980 LeaseObtained int64 981 LeaseExpires int64 982} 983 984const MAXLEN_PHYSADDR = 8 985const MAX_INTERFACE_NAME_LEN = 256 986const MAXLEN_IFDESCR = 256 987 988type MibIfRow struct { 989 Name [MAX_INTERFACE_NAME_LEN]uint16 990 Index uint32 991 Type uint32 992 Mtu uint32 993 Speed uint32 994 PhysAddrLen uint32 995 PhysAddr [MAXLEN_PHYSADDR]byte 996 AdminStatus uint32 997 OperStatus uint32 998 LastChange uint32 999 InOctets uint32 1000 InUcastPkts uint32 1001 InNUcastPkts uint32 1002 InDiscards uint32 1003 InErrors uint32 1004 InUnknownProtos uint32 1005 OutOctets uint32 1006 OutUcastPkts uint32 1007 OutNUcastPkts uint32 1008 OutDiscards uint32 1009 OutErrors uint32 1010 OutQLen uint32 1011 DescrLen uint32 1012 Descr [MAXLEN_IFDESCR]byte 1013} 1014 1015type CertInfo struct { 1016 // Not implemented 1017} 1018 1019type CertContext struct { 1020 EncodingType uint32 1021 EncodedCert *byte 1022 Length uint32 1023 CertInfo *CertInfo 1024 Store Handle 1025} 1026 1027type CertChainContext struct { 1028 Size uint32 1029 TrustStatus CertTrustStatus 1030 ChainCount uint32 1031 Chains **CertSimpleChain 1032 LowerQualityChainCount uint32 1033 LowerQualityChains **CertChainContext 1034 HasRevocationFreshnessTime uint32 1035 RevocationFreshnessTime uint32 1036} 1037 1038type CertTrustListInfo struct { 1039 // Not implemented 1040} 1041 1042type CertSimpleChain struct { 1043 Size uint32 1044 TrustStatus CertTrustStatus 1045 NumElements uint32 1046 Elements **CertChainElement 1047 TrustListInfo *CertTrustListInfo 1048 HasRevocationFreshnessTime uint32 1049 RevocationFreshnessTime uint32 1050} 1051 1052type CertChainElement struct { 1053 Size uint32 1054 CertContext *CertContext 1055 TrustStatus CertTrustStatus 1056 RevocationInfo *CertRevocationInfo 1057 IssuanceUsage *CertEnhKeyUsage 1058 ApplicationUsage *CertEnhKeyUsage 1059 ExtendedErrorInfo *uint16 1060} 1061 1062type CertRevocationCrlInfo struct { 1063 // Not implemented 1064} 1065 1066type CertRevocationInfo struct { 1067 Size uint32 1068 RevocationResult uint32 1069 RevocationOid *byte 1070 OidSpecificInfo Pointer 1071 HasFreshnessTime uint32 1072 FreshnessTime uint32 1073 CrlInfo *CertRevocationCrlInfo 1074} 1075 1076type CertTrustStatus struct { 1077 ErrorStatus uint32 1078 InfoStatus uint32 1079} 1080 1081type CertUsageMatch struct { 1082 Type uint32 1083 Usage CertEnhKeyUsage 1084} 1085 1086type CertEnhKeyUsage struct { 1087 Length uint32 1088 UsageIdentifiers **byte 1089} 1090 1091type CertChainPara struct { 1092 Size uint32 1093 RequestedUsage CertUsageMatch 1094 RequstedIssuancePolicy CertUsageMatch 1095 URLRetrievalTimeout uint32 1096 CheckRevocationFreshnessTime uint32 1097 RevocationFreshnessTime uint32 1098 CacheResync *Filetime 1099} 1100 1101type CertChainPolicyPara struct { 1102 Size uint32 1103 Flags uint32 1104 ExtraPolicyPara Pointer 1105} 1106 1107type SSLExtraCertChainPolicyPara struct { 1108 Size uint32 1109 AuthType uint32 1110 Checks uint32 1111 ServerName *uint16 1112} 1113 1114type CertChainPolicyStatus struct { 1115 Size uint32 1116 Error uint32 1117 ChainIndex uint32 1118 ElementIndex uint32 1119 ExtraPolicyStatus Pointer 1120} 1121 1122const ( 1123 // do not reorder 1124 HKEY_CLASSES_ROOT = 0x80000000 + iota 1125 HKEY_CURRENT_USER 1126 HKEY_LOCAL_MACHINE 1127 HKEY_USERS 1128 HKEY_PERFORMANCE_DATA 1129 HKEY_CURRENT_CONFIG 1130 HKEY_DYN_DATA 1131 1132 KEY_QUERY_VALUE = 1 1133 KEY_SET_VALUE = 2 1134 KEY_CREATE_SUB_KEY = 4 1135 KEY_ENUMERATE_SUB_KEYS = 8 1136 KEY_NOTIFY = 16 1137 KEY_CREATE_LINK = 32 1138 KEY_WRITE = 0x20006 1139 KEY_EXECUTE = 0x20019 1140 KEY_READ = 0x20019 1141 KEY_WOW64_64KEY = 0x0100 1142 KEY_WOW64_32KEY = 0x0200 1143 KEY_ALL_ACCESS = 0xf003f 1144) 1145 1146const ( 1147 // do not reorder 1148 REG_NONE = iota 1149 REG_SZ 1150 REG_EXPAND_SZ 1151 REG_BINARY 1152 REG_DWORD_LITTLE_ENDIAN 1153 REG_DWORD_BIG_ENDIAN 1154 REG_LINK 1155 REG_MULTI_SZ 1156 REG_RESOURCE_LIST 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 1162) 1163 1164type AddrinfoW struct { 1165 Flags int32 1166 Family int32 1167 Socktype int32 1168 Protocol int32 1169 Addrlen uintptr 1170 Canonname *uint16 1171 Addr uintptr 1172 Next *AddrinfoW 1173} 1174 1175const ( 1176 AI_PASSIVE = 1 1177 AI_CANONNAME = 2 1178 AI_NUMERICHOST = 4 1179) 1180 1181type GUID struct { 1182 Data1 uint32 1183 Data2 uint16 1184 Data3 uint16 1185 Data4 [8]byte 1186} 1187 1188var WSAID_CONNECTEX = GUID{ 1189 0x25a207b9, 1190 0xddf3, 1191 0x4660, 1192 [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, 1193} 1194 1195var WSAID_WSASENDMSG = GUID{ 1196 0xa441e712, 1197 0x754f, 1198 0x43ca, 1199 [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, 1200} 1201 1202var WSAID_WSARECVMSG = GUID{ 1203 0xf689d7c8, 1204 0x6f1f, 1205 0x436b, 1206 [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, 1207} 1208 1209const ( 1210 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 1211 FILE_SKIP_SET_EVENT_ON_HANDLE = 2 1212) 1213 1214const ( 1215 WSAPROTOCOL_LEN = 255 1216 MAX_PROTOCOL_CHAIN = 7 1217 BASE_PROTOCOL = 1 1218 LAYERED_PROTOCOL = 0 1219 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 1239 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 1245) 1246 1247type WSAProtocolInfo struct { 1248 ServiceFlags1 uint32 1249 ServiceFlags2 uint32 1250 ServiceFlags3 uint32 1251 ServiceFlags4 uint32 1252 ProviderFlags uint32 1253 ProviderId GUID 1254 CatalogEntryId uint32 1255 ProtocolChain WSAProtocolChain 1256 Version int32 1257 AddressFamily int32 1258 MaxSockAddr int32 1259 MinSockAddr int32 1260 SocketType int32 1261 Protocol int32 1262 ProtocolMaxOffset int32 1263 NetworkByteOrder int32 1264 SecurityScheme int32 1265 MessageSize uint32 1266 ProviderReserved uint32 1267 ProtocolName [WSAPROTOCOL_LEN + 1]uint16 1268} 1269 1270type WSAProtocolChain struct { 1271 ChainLen int32 1272 ChainEntries [MAX_PROTOCOL_CHAIN]uint32 1273} 1274 1275type TCPKeepalive struct { 1276 OnOff uint32 1277 Time uint32 1278 Interval uint32 1279} 1280 1281type symbolicLinkReparseBuffer struct { 1282 SubstituteNameOffset uint16 1283 SubstituteNameLength uint16 1284 PrintNameOffset uint16 1285 PrintNameLength uint16 1286 Flags uint32 1287 PathBuffer [1]uint16 1288} 1289 1290type mountPointReparseBuffer struct { 1291 SubstituteNameOffset uint16 1292 SubstituteNameLength uint16 1293 PrintNameOffset uint16 1294 PrintNameLength uint16 1295 PathBuffer [1]uint16 1296} 1297 1298type reparseDataBuffer struct { 1299 ReparseTag uint32 1300 ReparseDataLength uint16 1301 Reserved uint16 1302 1303 // GenericReparseBuffer 1304 reparseBuffer byte 1305} 1306 1307const ( 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 1313) 1314 1315const ( 1316 ComputerNameNetBIOS = 0 1317 ComputerNameDnsHostname = 1 1318 ComputerNameDnsDomain = 2 1319 ComputerNameDnsFullyQualified = 3 1320 ComputerNamePhysicalNetBIOS = 4 1321 ComputerNamePhysicalDnsHostname = 5 1322 ComputerNamePhysicalDnsDomain = 6 1323 ComputerNamePhysicalDnsFullyQualified = 7 1324 ComputerNameMax = 8 1325) 1326 1327const ( 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 1334) 1335 1336const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 1337 1338const ( 1339 IF_TYPE_OTHER = 1 1340 IF_TYPE_ETHERNET_CSMACD = 6 1341 IF_TYPE_ISO88025_TOKENRING = 9 1342 IF_TYPE_PPP = 23 1343 IF_TYPE_SOFTWARE_LOOPBACK = 24 1344 IF_TYPE_ATM = 37 1345 IF_TYPE_IEEE80211 = 71 1346 IF_TYPE_TUNNEL = 131 1347 IF_TYPE_IEEE1394 = 144 1348) 1349 1350type SocketAddress struct { 1351 Sockaddr *syscall.RawSockaddrAny 1352 SockaddrLength int32 1353} 1354 1355type IpAdapterUnicastAddress struct { 1356 Length uint32 1357 Flags uint32 1358 Next *IpAdapterUnicastAddress 1359 Address SocketAddress 1360 PrefixOrigin int32 1361 SuffixOrigin int32 1362 DadState int32 1363 ValidLifetime uint32 1364 PreferredLifetime uint32 1365 LeaseLifetime uint32 1366 OnLinkPrefixLength uint8 1367} 1368 1369type IpAdapterAnycastAddress struct { 1370 Length uint32 1371 Flags uint32 1372 Next *IpAdapterAnycastAddress 1373 Address SocketAddress 1374} 1375 1376type IpAdapterMulticastAddress struct { 1377 Length uint32 1378 Flags uint32 1379 Next *IpAdapterMulticastAddress 1380 Address SocketAddress 1381} 1382 1383type IpAdapterDnsServerAdapter struct { 1384 Length uint32 1385 Reserved uint32 1386 Next *IpAdapterDnsServerAdapter 1387 Address SocketAddress 1388} 1389 1390type IpAdapterPrefix struct { 1391 Length uint32 1392 Flags uint32 1393 Next *IpAdapterPrefix 1394 Address SocketAddress 1395 PrefixLength uint32 1396} 1397 1398type IpAdapterAddresses struct { 1399 Length uint32 1400 IfIndex uint32 1401 Next *IpAdapterAddresses 1402 AdapterName *byte 1403 FirstUnicastAddress *IpAdapterUnicastAddress 1404 FirstAnycastAddress *IpAdapterAnycastAddress 1405 FirstMulticastAddress *IpAdapterMulticastAddress 1406 FirstDnsServerAddress *IpAdapterDnsServerAdapter 1407 DnsSuffix *uint16 1408 Description *uint16 1409 FriendlyName *uint16 1410 PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte 1411 PhysicalAddressLength uint32 1412 Flags uint32 1413 Mtu uint32 1414 IfType uint32 1415 OperStatus uint32 1416 Ipv6IfIndex uint32 1417 ZoneIndices [16]uint32 1418 FirstPrefix *IpAdapterPrefix 1419 /* more fields might be present here. */ 1420} 1421 1422const ( 1423 IfOperStatusUp = 1 1424 IfOperStatusDown = 2 1425 IfOperStatusTesting = 3 1426 IfOperStatusUnknown = 4 1427 IfOperStatusDormant = 5 1428 IfOperStatusNotPresent = 6 1429 IfOperStatusLowerLayerDown = 7 1430) 1431 1432// Console related constants used for the mode parameter to SetConsoleMode. See 1433// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. 1434 1435const ( 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 1446 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 1452) 1453 1454type Coord struct { 1455 X int16 1456 Y int16 1457} 1458 1459type SmallRect struct { 1460 Left int16 1461 Top int16 1462 Right int16 1463 Bottom int16 1464} 1465 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 1469// for details. 1470 1471type ConsoleScreenBufferInfo struct { 1472 Size Coord 1473 CursorPosition Coord 1474 Attributes uint16 1475 Window SmallRect 1476 MaximumWindowSize Coord 1477} 1478 1479const UNIX_PATH_MAX = 108 // defined in afunix.h 1480