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