Source file
src/syscall/types_windows.go
1
2
3
4
5 package syscall
6
7 const (
8
9 ERROR_FILE_NOT_FOUND Errno = 2
10 ERROR_PATH_NOT_FOUND Errno = 3
11 ERROR_ACCESS_DENIED Errno = 5
12 ERROR_NO_MORE_FILES Errno = 18
13 ERROR_HANDLE_EOF Errno = 38
14 ERROR_NETNAME_DELETED Errno = 64
15 ERROR_FILE_EXISTS Errno = 80
16 ERROR_BROKEN_PIPE Errno = 109
17 ERROR_BUFFER_OVERFLOW Errno = 111
18 ERROR_INSUFFICIENT_BUFFER Errno = 122
19 ERROR_MOD_NOT_FOUND Errno = 126
20 ERROR_PROC_NOT_FOUND Errno = 127
21 ERROR_DIR_NOT_EMPTY Errno = 145
22 ERROR_ALREADY_EXISTS Errno = 183
23 ERROR_ENVVAR_NOT_FOUND Errno = 203
24 ERROR_MORE_DATA Errno = 234
25 ERROR_OPERATION_ABORTED Errno = 995
26 ERROR_IO_PENDING Errno = 997
27 ERROR_NOT_FOUND Errno = 1168
28 ERROR_PRIVILEGE_NOT_HELD Errno = 1314
29 WSAEACCES Errno = 10013
30 WSAENOPROTOOPT Errno = 10042
31 WSAECONNABORTED Errno = 10053
32 WSAECONNRESET Errno = 10054
33 )
34
35 const (
36
37 O_RDONLY = 0x00000
38 O_WRONLY = 0x00001
39 O_RDWR = 0x00002
40 O_CREAT = 0x00040
41 O_EXCL = 0x00080
42 O_NOCTTY = 0x00100
43 O_TRUNC = 0x00200
44 O_NONBLOCK = 0x00800
45 O_APPEND = 0x00400
46 O_SYNC = 0x01000
47 O_ASYNC = 0x02000
48 O_CLOEXEC = 0x80000
49 )
50
51 const (
52
53 SIGHUP = Signal(0x1)
54 SIGINT = Signal(0x2)
55 SIGQUIT = Signal(0x3)
56 SIGILL = Signal(0x4)
57 SIGTRAP = Signal(0x5)
58 SIGABRT = Signal(0x6)
59 SIGBUS = Signal(0x7)
60 SIGFPE = Signal(0x8)
61 SIGKILL = Signal(0x9)
62 SIGSEGV = Signal(0xb)
63 SIGPIPE = Signal(0xd)
64 SIGALRM = Signal(0xe)
65 SIGTERM = Signal(0xf)
66 )
67
68 var signals = [...]string{
69 1: "hangup",
70 2: "interrupt",
71 3: "quit",
72 4: "illegal instruction",
73 5: "trace/breakpoint trap",
74 6: "aborted",
75 7: "bus error",
76 8: "floating point exception",
77 9: "killed",
78 10: "user defined signal 1",
79 11: "segmentation fault",
80 12: "user defined signal 2",
81 13: "broken pipe",
82 14: "alarm clock",
83 15: "terminated",
84 }
85
86 const (
87 GENERIC_READ = 0x80000000
88 GENERIC_WRITE = 0x40000000
89 GENERIC_EXECUTE = 0x20000000
90 GENERIC_ALL = 0x10000000
91
92 FILE_LIST_DIRECTORY = 0x00000001
93 FILE_APPEND_DATA = 0x00000004
94 FILE_WRITE_ATTRIBUTES = 0x00000100
95
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
106
107 INVALID_FILE_ATTRIBUTES = 0xffffffff
108
109 CREATE_NEW = 1
110 CREATE_ALWAYS = 2
111 OPEN_EXISTING = 3
112 OPEN_ALWAYS = 4
113 TRUNCATE_EXISTING = 5
114
115 FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000
116 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
117 FILE_FLAG_OVERLAPPED = 0x40000000
118
119 HANDLE_FLAG_INHERIT = 0x00000001
120 STARTF_USESTDHANDLES = 0x00000100
121 STARTF_USESHOWWINDOW = 0x00000001
122 DUPLICATE_CLOSE_SOURCE = 0x00000001
123 DUPLICATE_SAME_ACCESS = 0x00000002
124
125 STD_INPUT_HANDLE = -10
126 STD_OUTPUT_HANDLE = -11
127 STD_ERROR_HANDLE = -12
128
129 FILE_BEGIN = 0
130 FILE_CURRENT = 1
131 FILE_END = 2
132
133 LANG_ENGLISH = 0x09
134 SUBLANG_ENGLISH_US = 0x01
135
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
143
144 MAX_PATH = 260
145 MAX_LONG_PATH = 32768
146
147 MAX_COMPUTERNAME_LENGTH = 15
148
149 TIME_ZONE_ID_UNKNOWN = 0
150 TIME_ZONE_ID_STANDARD = 1
151
152 TIME_ZONE_ID_DAYLIGHT = 2
153 IGNORE = 0
154 INFINITE = 0xffffffff
155
156 WAIT_TIMEOUT = 258
157 WAIT_ABANDONED = 0x00000080
158 WAIT_OBJECT_0 = 0x00000000
159 WAIT_FAILED = 0xFFFFFFFF
160
161 CREATE_NEW_PROCESS_GROUP = 0x00000200
162 CREATE_UNICODE_ENVIRONMENT = 0x00000400
163
164 PROCESS_TERMINATE = 1
165 PROCESS_QUERY_INFORMATION = 0x00000400
166 SYNCHRONIZE = 0x00100000
167
168 PAGE_READONLY = 0x02
169 PAGE_READWRITE = 0x04
170 PAGE_WRITECOPY = 0x08
171 PAGE_EXECUTE_READ = 0x20
172 PAGE_EXECUTE_READWRITE = 0x40
173 PAGE_EXECUTE_WRITECOPY = 0x80
174
175 FILE_MAP_COPY = 0x01
176 FILE_MAP_WRITE = 0x02
177 FILE_MAP_READ = 0x04
178 FILE_MAP_EXECUTE = 0x20
179
180 CTRL_C_EVENT = 0
181 CTRL_BREAK_EVENT = 1
182 CTRL_CLOSE_EVENT = 2
183 CTRL_LOGOFF_EVENT = 5
184 CTRL_SHUTDOWN_EVENT = 6
185 )
186
187 const (
188
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
196 )
197
198 const (
199
200 FILE_NOTIFY_CHANGE_FILE_NAME = 1 << iota
201 FILE_NOTIFY_CHANGE_DIR_NAME
202 FILE_NOTIFY_CHANGE_ATTRIBUTES
203 FILE_NOTIFY_CHANGE_SIZE
204 FILE_NOTIFY_CHANGE_LAST_WRITE
205 FILE_NOTIFY_CHANGE_LAST_ACCESS
206 FILE_NOTIFY_CHANGE_CREATION
207 )
208
209 const (
210
211 FILE_ACTION_ADDED = iota + 1
212 FILE_ACTION_REMOVED
213 FILE_ACTION_MODIFIED
214 FILE_ACTION_RENAMED_OLD_NAME
215 FILE_ACTION_RENAMED_NEW_NAME
216 )
217
218 const (
219
220 PROV_RSA_FULL = 1
221 PROV_RSA_SIG = 2
222 PROV_DSS = 3
223 PROV_FORTEZZA = 4
224 PROV_MS_EXCHANGE = 5
225 PROV_SSL = 6
226 PROV_RSA_SCHANNEL = 12
227 PROV_DSS_DH = 13
228 PROV_EC_ECDSA_SIG = 14
229 PROV_EC_ECNRA_SIG = 15
230 PROV_EC_ECDSA_FULL = 16
231 PROV_EC_ECNRA_FULL = 17
232 PROV_DH_SCHANNEL = 18
233 PROV_SPYRUS_LYNKS = 20
234 PROV_RNG = 21
235 PROV_INTEL_SEC = 22
236 PROV_REPLACE_OWF = 23
237 PROV_RSA_AES = 24
238 CRYPT_VERIFYCONTEXT = 0xF0000000
239 CRYPT_NEWKEYSET = 0x00000008
240 CRYPT_DELETEKEYSET = 0x00000010
241 CRYPT_MACHINE_KEYSET = 0x00000020
242 CRYPT_SILENT = 0x00000040
243 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080
244
245 USAGE_MATCH_TYPE_AND = 0
246 USAGE_MATCH_TYPE_OR = 1
247
248 X509_ASN_ENCODING = 0x00000001
249 PKCS_7_ASN_ENCODING = 0x00010000
250
251 CERT_STORE_PROV_MEMORY = 2
252
253 CERT_STORE_ADD_ALWAYS = 4
254
255 CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004
256
257 CERT_TRUST_NO_ERROR = 0x00000000
258 CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001
259 CERT_TRUST_IS_REVOKED = 0x00000004
260 CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008
261 CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010
262 CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020
263 CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040
264 CERT_TRUST_IS_CYCLIC = 0x00000080
265 CERT_TRUST_INVALID_EXTENSION = 0x00000100
266 CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200
267 CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400
268 CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800
269 CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000
270 CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000
271 CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000
272 CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000
273 CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000
274 CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000
275 CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000
276 CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000
277
278 CERT_CHAIN_POLICY_BASE = 1
279 CERT_CHAIN_POLICY_AUTHENTICODE = 2
280 CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3
281 CERT_CHAIN_POLICY_SSL = 4
282 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5
283 CERT_CHAIN_POLICY_NT_AUTH = 6
284 CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7
285 CERT_CHAIN_POLICY_EV = 8
286
287 CERT_E_EXPIRED = 0x800B0101
288 CERT_E_ROLE = 0x800B0103
289 CERT_E_PURPOSE = 0x800B0106
290 CERT_E_UNTRUSTEDROOT = 0x800B0109
291 CERT_E_CN_NO_MATCH = 0x800B010F
292
293 AUTHTYPE_CLIENT = 1
294 AUTHTYPE_SERVER = 2
295 )
296
297 var (
298 OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00")
299 OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00")
300 OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
301 )
302
303
304
305
306
307
308
309 type Pointer *struct{}
310
311
312 type Timeval struct {
313 Sec int32
314 Usec int32
315 }
316
317 func (tv *Timeval) Nanoseconds() int64 {
318 return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3
319 }
320
321 func NsecToTimeval(nsec int64) (tv Timeval) {
322 tv.Sec = int32(nsec / 1e9)
323 tv.Usec = int32(nsec % 1e9 / 1e3)
324 return
325 }
326
327 type SecurityAttributes struct {
328 Length uint32
329 SecurityDescriptor uintptr
330 InheritHandle uint32
331 }
332
333 type Overlapped struct {
334 Internal uintptr
335 InternalHigh uintptr
336 Offset uint32
337 OffsetHigh uint32
338 HEvent Handle
339 }
340
341 type FileNotifyInformation struct {
342 NextEntryOffset uint32
343 Action uint32
344 FileNameLength uint32
345 FileName uint16
346 }
347
348 type Filetime struct {
349 LowDateTime uint32
350 HighDateTime uint32
351 }
352
353
354
355 func (ft *Filetime) Nanoseconds() int64 {
356
357 nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)
358
359 nsec -= 116444736000000000
360
361 nsec *= 100
362 return nsec
363 }
364
365 func NsecToFiletime(nsec int64) (ft Filetime) {
366
367 nsec /= 100
368
369 nsec += 116444736000000000
370
371 ft.LowDateTime = uint32(nsec & 0xffffffff)
372 ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)
373 return ft
374 }
375
376 type Win32finddata struct {
377 FileAttributes uint32
378 CreationTime Filetime
379 LastAccessTime Filetime
380 LastWriteTime Filetime
381 FileSizeHigh uint32
382 FileSizeLow uint32
383 Reserved0 uint32
384 Reserved1 uint32
385 FileName [MAX_PATH - 1]uint16
386 AlternateFileName [13]uint16
387 }
388
389
390
391 type win32finddata1 struct {
392 FileAttributes uint32
393 CreationTime Filetime
394 LastAccessTime Filetime
395 LastWriteTime Filetime
396 FileSizeHigh uint32
397 FileSizeLow uint32
398 Reserved0 uint32
399 Reserved1 uint32
400 FileName [MAX_PATH]uint16
401 AlternateFileName [14]uint16
402
403
404
405
406
407
408
409
410 }
411
412 func copyFindData(dst *Win32finddata, src *win32finddata1) {
413 dst.FileAttributes = src.FileAttributes
414 dst.CreationTime = src.CreationTime
415 dst.LastAccessTime = src.LastAccessTime
416 dst.LastWriteTime = src.LastWriteTime
417 dst.FileSizeHigh = src.FileSizeHigh
418 dst.FileSizeLow = src.FileSizeLow
419 dst.Reserved0 = src.Reserved0
420 dst.Reserved1 = src.Reserved1
421
422
423 copy(dst.FileName[:], src.FileName[:])
424 copy(dst.AlternateFileName[:], src.AlternateFileName[:])
425 }
426
427 type ByHandleFileInformation struct {
428 FileAttributes uint32
429 CreationTime Filetime
430 LastAccessTime Filetime
431 LastWriteTime Filetime
432 VolumeSerialNumber uint32
433 FileSizeHigh uint32
434 FileSizeLow uint32
435 NumberOfLinks uint32
436 FileIndexHigh uint32
437 FileIndexLow uint32
438 }
439
440 const (
441 GetFileExInfoStandard = 0
442 GetFileExMaxInfoLevel = 1
443 )
444
445 type Win32FileAttributeData struct {
446 FileAttributes uint32
447 CreationTime Filetime
448 LastAccessTime Filetime
449 LastWriteTime Filetime
450 FileSizeHigh uint32
451 FileSizeLow uint32
452 }
453
454
455 const (
456
457 SW_HIDE = 0
458 SW_NORMAL = 1
459 SW_SHOWNORMAL = 1
460 SW_SHOWMINIMIZED = 2
461 SW_SHOWMAXIMIZED = 3
462 SW_MAXIMIZE = 3
463 SW_SHOWNOACTIVATE = 4
464 SW_SHOW = 5
465 SW_MINIMIZE = 6
466 SW_SHOWMINNOACTIVE = 7
467 SW_SHOWNA = 8
468 SW_RESTORE = 9
469 SW_SHOWDEFAULT = 10
470 SW_FORCEMINIMIZE = 11
471 )
472
473 type StartupInfo struct {
474 Cb uint32
475 _ *uint16
476 Desktop *uint16
477 Title *uint16
478 X uint32
479 Y uint32
480 XSize uint32
481 YSize uint32
482 XCountChars uint32
483 YCountChars uint32
484 FillAttribute uint32
485 Flags uint32
486 ShowWindow uint16
487 _ uint16
488 _ *byte
489 StdInput Handle
490 StdOutput Handle
491 StdErr Handle
492 }
493
494 type _PROC_THREAD_ATTRIBUTE_LIST struct {
495 _ [1]byte
496 }
497
498 const (
499 _PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000
500 _PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002
501 )
502
503 type _STARTUPINFOEXW struct {
504 StartupInfo
505 ProcThreadAttributeList *_PROC_THREAD_ATTRIBUTE_LIST
506 }
507
508 const _EXTENDED_STARTUPINFO_PRESENT = 0x00080000
509
510 type ProcessInformation struct {
511 Process Handle
512 Thread Handle
513 ProcessId uint32
514 ThreadId uint32
515 }
516
517 type ProcessEntry32 struct {
518 Size uint32
519 Usage uint32
520 ProcessID uint32
521 DefaultHeapID uintptr
522 ModuleID uint32
523 Threads uint32
524 ParentProcessID uint32
525 PriClassBase int32
526 Flags uint32
527 ExeFile [MAX_PATH]uint16
528 }
529
530 type Systemtime struct {
531 Year uint16
532 Month uint16
533 DayOfWeek uint16
534 Day uint16
535 Hour uint16
536 Minute uint16
537 Second uint16
538 Milliseconds uint16
539 }
540
541 type Timezoneinformation struct {
542 Bias int32
543 StandardName [32]uint16
544 StandardDate Systemtime
545 StandardBias int32
546 DaylightName [32]uint16
547 DaylightDate Systemtime
548 DaylightBias int32
549 }
550
551
552
553 const (
554 AF_UNSPEC = 0
555 AF_UNIX = 1
556 AF_INET = 2
557 AF_INET6 = 23
558 AF_NETBIOS = 17
559
560 SOCK_STREAM = 1
561 SOCK_DGRAM = 2
562 SOCK_RAW = 3
563 SOCK_SEQPACKET = 5
564
565 IPPROTO_IP = 0
566 IPPROTO_IPV6 = 0x29
567 IPPROTO_TCP = 6
568 IPPROTO_UDP = 17
569
570 SOL_SOCKET = 0xffff
571 SO_REUSEADDR = 4
572 SO_KEEPALIVE = 8
573 SO_DONTROUTE = 16
574 SO_BROADCAST = 32
575 SO_LINGER = 128
576 SO_RCVBUF = 0x1002
577 SO_SNDBUF = 0x1001
578 SO_UPDATE_ACCEPT_CONTEXT = 0x700b
579 SO_UPDATE_CONNECT_CONTEXT = 0x7010
580
581 IOC_OUT = 0x40000000
582 IOC_IN = 0x80000000
583 IOC_VENDOR = 0x18000000
584 IOC_INOUT = IOC_IN | IOC_OUT
585 IOC_WS2 = 0x08000000
586 SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6
587 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4
588 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12
589
590
591
592 IP_TOS = 0x3
593 IP_TTL = 0x4
594 IP_MULTICAST_IF = 0x9
595 IP_MULTICAST_TTL = 0xa
596 IP_MULTICAST_LOOP = 0xb
597 IP_ADD_MEMBERSHIP = 0xc
598 IP_DROP_MEMBERSHIP = 0xd
599
600 IPV6_V6ONLY = 0x1b
601 IPV6_UNICAST_HOPS = 0x4
602 IPV6_MULTICAST_IF = 0x9
603 IPV6_MULTICAST_HOPS = 0xa
604 IPV6_MULTICAST_LOOP = 0xb
605 IPV6_JOIN_GROUP = 0xc
606 IPV6_LEAVE_GROUP = 0xd
607
608 SOMAXCONN = 0x7fffffff
609
610 TCP_NODELAY = 1
611
612 SHUT_RD = 0
613 SHUT_WR = 1
614 SHUT_RDWR = 2
615
616 WSADESCRIPTION_LEN = 256
617 WSASYS_STATUS_LEN = 128
618 )
619
620 type WSABuf struct {
621 Len uint32
622 Buf *byte
623 }
624
625
626 const (
627 S_IFMT = 0x1f000
628 S_IFIFO = 0x1000
629 S_IFCHR = 0x2000
630 S_IFDIR = 0x4000
631 S_IFBLK = 0x6000
632 S_IFREG = 0x8000
633 S_IFLNK = 0xa000
634 S_IFSOCK = 0xc000
635 S_ISUID = 0x800
636 S_ISGID = 0x400
637 S_ISVTX = 0x200
638 S_IRUSR = 0x100
639 S_IWRITE = 0x80
640 S_IWUSR = 0x80
641 S_IXUSR = 0x40
642 )
643
644 const (
645 FILE_TYPE_CHAR = 0x0002
646 FILE_TYPE_DISK = 0x0001
647 FILE_TYPE_PIPE = 0x0003
648 FILE_TYPE_REMOTE = 0x8000
649 FILE_TYPE_UNKNOWN = 0x0000
650 )
651
652 type Hostent struct {
653 Name *byte
654 Aliases **byte
655 AddrType uint16
656 Length uint16
657 AddrList **byte
658 }
659
660 type Protoent struct {
661 Name *byte
662 Aliases **byte
663 Proto uint16
664 }
665
666 const (
667 DNS_TYPE_A = 0x0001
668 DNS_TYPE_NS = 0x0002
669 DNS_TYPE_MD = 0x0003
670 DNS_TYPE_MF = 0x0004
671 DNS_TYPE_CNAME = 0x0005
672 DNS_TYPE_SOA = 0x0006
673 DNS_TYPE_MB = 0x0007
674 DNS_TYPE_MG = 0x0008
675 DNS_TYPE_MR = 0x0009
676 DNS_TYPE_NULL = 0x000a
677 DNS_TYPE_WKS = 0x000b
678 DNS_TYPE_PTR = 0x000c
679 DNS_TYPE_HINFO = 0x000d
680 DNS_TYPE_MINFO = 0x000e
681 DNS_TYPE_MX = 0x000f
682 DNS_TYPE_TEXT = 0x0010
683 DNS_TYPE_RP = 0x0011
684 DNS_TYPE_AFSDB = 0x0012
685 DNS_TYPE_X25 = 0x0013
686 DNS_TYPE_ISDN = 0x0014
687 DNS_TYPE_RT = 0x0015
688 DNS_TYPE_NSAP = 0x0016
689 DNS_TYPE_NSAPPTR = 0x0017
690 DNS_TYPE_SIG = 0x0018
691 DNS_TYPE_KEY = 0x0019
692 DNS_TYPE_PX = 0x001a
693 DNS_TYPE_GPOS = 0x001b
694 DNS_TYPE_AAAA = 0x001c
695 DNS_TYPE_LOC = 0x001d
696 DNS_TYPE_NXT = 0x001e
697 DNS_TYPE_EID = 0x001f
698 DNS_TYPE_NIMLOC = 0x0020
699 DNS_TYPE_SRV = 0x0021
700 DNS_TYPE_ATMA = 0x0022
701 DNS_TYPE_NAPTR = 0x0023
702 DNS_TYPE_KX = 0x0024
703 DNS_TYPE_CERT = 0x0025
704 DNS_TYPE_A6 = 0x0026
705 DNS_TYPE_DNAME = 0x0027
706 DNS_TYPE_SINK = 0x0028
707 DNS_TYPE_OPT = 0x0029
708 DNS_TYPE_DS = 0x002B
709 DNS_TYPE_RRSIG = 0x002E
710 DNS_TYPE_NSEC = 0x002F
711 DNS_TYPE_DNSKEY = 0x0030
712 DNS_TYPE_DHCID = 0x0031
713 DNS_TYPE_UINFO = 0x0064
714 DNS_TYPE_UID = 0x0065
715 DNS_TYPE_GID = 0x0066
716 DNS_TYPE_UNSPEC = 0x0067
717 DNS_TYPE_ADDRS = 0x00f8
718 DNS_TYPE_TKEY = 0x00f9
719 DNS_TYPE_TSIG = 0x00fa
720 DNS_TYPE_IXFR = 0x00fb
721 DNS_TYPE_AXFR = 0x00fc
722 DNS_TYPE_MAILB = 0x00fd
723 DNS_TYPE_MAILA = 0x00fe
724 DNS_TYPE_ALL = 0x00ff
725 DNS_TYPE_ANY = 0x00ff
726 DNS_TYPE_WINS = 0xff01
727 DNS_TYPE_WINSR = 0xff02
728 DNS_TYPE_NBSTAT = 0xff01
729 )
730
731 const (
732 DNS_INFO_NO_RECORDS = 0x251D
733 )
734
735 const (
736
737 DnsSectionQuestion = 0x0000
738 DnsSectionAnswer = 0x0001
739 DnsSectionAuthority = 0x0002
740 DnsSectionAdditional = 0x0003
741 )
742
743 type DNSSRVData struct {
744 Target *uint16
745 Priority uint16
746 Weight uint16
747 Port uint16
748 Pad uint16
749 }
750
751 type DNSPTRData struct {
752 Host *uint16
753 }
754
755 type DNSMXData struct {
756 NameExchange *uint16
757 Preference uint16
758 Pad uint16
759 }
760
761 type DNSTXTData struct {
762 StringCount uint16
763 StringArray [1]*uint16
764 }
765
766 type DNSRecord struct {
767 Next *DNSRecord
768 Name *uint16
769 Type uint16
770 Length uint16
771 Dw uint32
772 Ttl uint32
773 Reserved uint32
774 Data [40]byte
775 }
776
777 const (
778 TF_DISCONNECT = 1
779 TF_REUSE_SOCKET = 2
780 TF_WRITE_BEHIND = 4
781 TF_USE_DEFAULT_WORKER = 0
782 TF_USE_SYSTEM_THREAD = 16
783 TF_USE_KERNEL_APC = 32
784 )
785
786 type TransmitFileBuffers struct {
787 Head uintptr
788 HeadLength uint32
789 Tail uintptr
790 TailLength uint32
791 }
792
793 const (
794 IFF_UP = 1
795 IFF_BROADCAST = 2
796 IFF_LOOPBACK = 4
797 IFF_POINTTOPOINT = 8
798 IFF_MULTICAST = 16
799 )
800
801 const SIO_GET_INTERFACE_LIST = 0x4004747F
802
803
804
805
806 type SockaddrGen [24]byte
807
808 type InterfaceInfo struct {
809 Flags uint32
810 Address SockaddrGen
811 BroadcastAddress SockaddrGen
812 Netmask SockaddrGen
813 }
814
815 type IpAddressString struct {
816 String [16]byte
817 }
818
819 type IpMaskString IpAddressString
820
821 type IpAddrString struct {
822 Next *IpAddrString
823 IpAddress IpAddressString
824 IpMask IpMaskString
825 Context uint32
826 }
827
828 const MAX_ADAPTER_NAME_LENGTH = 256
829 const MAX_ADAPTER_DESCRIPTION_LENGTH = 128
830 const MAX_ADAPTER_ADDRESS_LENGTH = 8
831
832 type IpAdapterInfo struct {
833 Next *IpAdapterInfo
834 ComboIndex uint32
835 AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte
836 Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte
837 AddressLength uint32
838 Address [MAX_ADAPTER_ADDRESS_LENGTH]byte
839 Index uint32
840 Type uint32
841 DhcpEnabled uint32
842 CurrentIpAddress *IpAddrString
843 IpAddressList IpAddrString
844 GatewayList IpAddrString
845 DhcpServer IpAddrString
846 HaveWins bool
847 PrimaryWinsServer IpAddrString
848 SecondaryWinsServer IpAddrString
849 LeaseObtained int64
850 LeaseExpires int64
851 }
852
853 const MAXLEN_PHYSADDR = 8
854 const MAX_INTERFACE_NAME_LEN = 256
855 const MAXLEN_IFDESCR = 256
856
857 type MibIfRow struct {
858 Name [MAX_INTERFACE_NAME_LEN]uint16
859 Index uint32
860 Type uint32
861 Mtu uint32
862 Speed uint32
863 PhysAddrLen uint32
864 PhysAddr [MAXLEN_PHYSADDR]byte
865 AdminStatus uint32
866 OperStatus uint32
867 LastChange uint32
868 InOctets uint32
869 InUcastPkts uint32
870 InNUcastPkts uint32
871 InDiscards uint32
872 InErrors uint32
873 InUnknownProtos uint32
874 OutOctets uint32
875 OutUcastPkts uint32
876 OutNUcastPkts uint32
877 OutDiscards uint32
878 OutErrors uint32
879 OutQLen uint32
880 DescrLen uint32
881 Descr [MAXLEN_IFDESCR]byte
882 }
883
884 type CertInfo struct {
885
886 }
887
888 type CertContext struct {
889 EncodingType uint32
890 EncodedCert *byte
891 Length uint32
892 CertInfo *CertInfo
893 Store Handle
894 }
895
896 type CertChainContext struct {
897 Size uint32
898 TrustStatus CertTrustStatus
899 ChainCount uint32
900 Chains **CertSimpleChain
901 LowerQualityChainCount uint32
902 LowerQualityChains **CertChainContext
903 HasRevocationFreshnessTime uint32
904 RevocationFreshnessTime uint32
905 }
906
907 type CertTrustListInfo struct {
908
909 }
910
911 type CertSimpleChain struct {
912 Size uint32
913 TrustStatus CertTrustStatus
914 NumElements uint32
915 Elements **CertChainElement
916 TrustListInfo *CertTrustListInfo
917 HasRevocationFreshnessTime uint32
918 RevocationFreshnessTime uint32
919 }
920
921 type CertChainElement struct {
922 Size uint32
923 CertContext *CertContext
924 TrustStatus CertTrustStatus
925 RevocationInfo *CertRevocationInfo
926 IssuanceUsage *CertEnhKeyUsage
927 ApplicationUsage *CertEnhKeyUsage
928 ExtendedErrorInfo *uint16
929 }
930
931 type CertRevocationCrlInfo struct {
932
933 }
934
935 type CertRevocationInfo struct {
936 Size uint32
937 RevocationResult uint32
938 RevocationOid *byte
939 OidSpecificInfo Pointer
940 HasFreshnessTime uint32
941 FreshnessTime uint32
942 CrlInfo *CertRevocationCrlInfo
943 }
944
945 type CertTrustStatus struct {
946 ErrorStatus uint32
947 InfoStatus uint32
948 }
949
950 type CertUsageMatch struct {
951 Type uint32
952 Usage CertEnhKeyUsage
953 }
954
955 type CertEnhKeyUsage struct {
956 Length uint32
957 UsageIdentifiers **byte
958 }
959
960 type CertChainPara struct {
961 Size uint32
962 RequestedUsage CertUsageMatch
963 RequstedIssuancePolicy CertUsageMatch
964 URLRetrievalTimeout uint32
965 CheckRevocationFreshnessTime uint32
966 RevocationFreshnessTime uint32
967 CacheResync *Filetime
968 }
969
970 type CertChainPolicyPara struct {
971 Size uint32
972 Flags uint32
973 ExtraPolicyPara Pointer
974 }
975
976 type SSLExtraCertChainPolicyPara struct {
977 Size uint32
978 AuthType uint32
979 Checks uint32
980 ServerName *uint16
981 }
982
983 type CertChainPolicyStatus struct {
984 Size uint32
985 Error uint32
986 ChainIndex uint32
987 ElementIndex uint32
988 ExtraPolicyStatus Pointer
989 }
990
991 const (
992
993 HKEY_CLASSES_ROOT = 0x80000000 + iota
994 HKEY_CURRENT_USER
995 HKEY_LOCAL_MACHINE
996 HKEY_USERS
997 HKEY_PERFORMANCE_DATA
998 HKEY_CURRENT_CONFIG
999 HKEY_DYN_DATA
1000
1001 KEY_QUERY_VALUE = 1
1002 KEY_SET_VALUE = 2
1003 KEY_CREATE_SUB_KEY = 4
1004 KEY_ENUMERATE_SUB_KEYS = 8
1005 KEY_NOTIFY = 16
1006 KEY_CREATE_LINK = 32
1007 KEY_WRITE = 0x20006
1008 KEY_EXECUTE = 0x20019
1009 KEY_READ = 0x20019
1010 KEY_WOW64_64KEY = 0x0100
1011 KEY_WOW64_32KEY = 0x0200
1012 KEY_ALL_ACCESS = 0xf003f
1013 )
1014
1015 const (
1016
1017 REG_NONE = iota
1018 REG_SZ
1019 REG_EXPAND_SZ
1020 REG_BINARY
1021 REG_DWORD_LITTLE_ENDIAN
1022 REG_DWORD_BIG_ENDIAN
1023 REG_LINK
1024 REG_MULTI_SZ
1025 REG_RESOURCE_LIST
1026 REG_FULL_RESOURCE_DESCRIPTOR
1027 REG_RESOURCE_REQUIREMENTS_LIST
1028 REG_QWORD_LITTLE_ENDIAN
1029 REG_DWORD = REG_DWORD_LITTLE_ENDIAN
1030 REG_QWORD = REG_QWORD_LITTLE_ENDIAN
1031 )
1032
1033 type AddrinfoW struct {
1034 Flags int32
1035 Family int32
1036 Socktype int32
1037 Protocol int32
1038 Addrlen uintptr
1039 Canonname *uint16
1040 Addr Pointer
1041 Next *AddrinfoW
1042 }
1043
1044 const (
1045 AI_PASSIVE = 1
1046 AI_CANONNAME = 2
1047 AI_NUMERICHOST = 4
1048 )
1049
1050 type GUID struct {
1051 Data1 uint32
1052 Data2 uint16
1053 Data3 uint16
1054 Data4 [8]byte
1055 }
1056
1057 var WSAID_CONNECTEX = GUID{
1058 0x25a207b9,
1059 0xddf3,
1060 0x4660,
1061 [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
1062 }
1063
1064 const (
1065 FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1
1066 FILE_SKIP_SET_EVENT_ON_HANDLE = 2
1067 )
1068
1069 const (
1070 WSAPROTOCOL_LEN = 255
1071 MAX_PROTOCOL_CHAIN = 7
1072 BASE_PROTOCOL = 1
1073 LAYERED_PROTOCOL = 0
1074
1075 XP1_CONNECTIONLESS = 0x00000001
1076 XP1_GUARANTEED_DELIVERY = 0x00000002
1077 XP1_GUARANTEED_ORDER = 0x00000004
1078 XP1_MESSAGE_ORIENTED = 0x00000008
1079 XP1_PSEUDO_STREAM = 0x00000010
1080 XP1_GRACEFUL_CLOSE = 0x00000020
1081 XP1_EXPEDITED_DATA = 0x00000040
1082 XP1_CONNECT_DATA = 0x00000080
1083 XP1_DISCONNECT_DATA = 0x00000100
1084 XP1_SUPPORT_BROADCAST = 0x00000200
1085 XP1_SUPPORT_MULTIPOINT = 0x00000400
1086 XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800
1087 XP1_MULTIPOINT_DATA_PLANE = 0x00001000
1088 XP1_QOS_SUPPORTED = 0x00002000
1089 XP1_UNI_SEND = 0x00008000
1090 XP1_UNI_RECV = 0x00010000
1091 XP1_IFS_HANDLES = 0x00020000
1092 XP1_PARTIAL_MESSAGE = 0x00040000
1093 XP1_SAN_SUPPORT_SDP = 0x00080000
1094
1095 PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001
1096 PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002
1097 PFL_HIDDEN = 0x00000004
1098 PFL_MATCHES_PROTOCOL_ZERO = 0x00000008
1099 PFL_NETWORKDIRECT_PROVIDER = 0x00000010
1100 )
1101
1102 type WSAProtocolInfo struct {
1103 ServiceFlags1 uint32
1104 ServiceFlags2 uint32
1105 ServiceFlags3 uint32
1106 ServiceFlags4 uint32
1107 ProviderFlags uint32
1108 ProviderId GUID
1109 CatalogEntryId uint32
1110 ProtocolChain WSAProtocolChain
1111 Version int32
1112 AddressFamily int32
1113 MaxSockAddr int32
1114 MinSockAddr int32
1115 SocketType int32
1116 Protocol int32
1117 ProtocolMaxOffset int32
1118 NetworkByteOrder int32
1119 SecurityScheme int32
1120 MessageSize uint32
1121 ProviderReserved uint32
1122 ProtocolName [WSAPROTOCOL_LEN + 1]uint16
1123 }
1124
1125 type WSAProtocolChain struct {
1126 ChainLen int32
1127 ChainEntries [MAX_PROTOCOL_CHAIN]uint32
1128 }
1129
1130 type TCPKeepalive struct {
1131 OnOff uint32
1132 Time uint32
1133 Interval uint32
1134 }
1135
1136 type symbolicLinkReparseBuffer struct {
1137 SubstituteNameOffset uint16
1138 SubstituteNameLength uint16
1139 PrintNameOffset uint16
1140 PrintNameLength uint16
1141 Flags uint32
1142 PathBuffer [1]uint16
1143 }
1144
1145 type mountPointReparseBuffer struct {
1146 SubstituteNameOffset uint16
1147 SubstituteNameLength uint16
1148 PrintNameOffset uint16
1149 PrintNameLength uint16
1150 PathBuffer [1]uint16
1151 }
1152
1153 type reparseDataBuffer struct {
1154 ReparseTag uint32
1155 ReparseDataLength uint16
1156 Reserved uint16
1157
1158
1159 reparseBuffer byte
1160 }
1161
1162 const (
1163 FSCTL_GET_REPARSE_POINT = 0x900A8
1164 MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
1165 _IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
1166 IO_REPARSE_TAG_SYMLINK = 0xA000000C
1167 SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1
1168 _SYMLINK_FLAG_RELATIVE = 1
1169 )
1170
1171 const UNIX_PATH_MAX = 108
1172
View as plain text