github.com/4ad/go@v0.0.0-20161219182952-69a12818b605/src/internal/syscall/windows/syscall_windows.go (about) 1 // Copyright 2014 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 5 package windows 6 7 import "syscall" 8 9 //go:generate go run ../../../syscall/mksyscall_windows.go -output zsyscall_windows.go syscall_windows.go 10 11 const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 12 13 const ( 14 IF_TYPE_OTHER = 1 15 IF_TYPE_ETHERNET_CSMACD = 6 16 IF_TYPE_ISO88025_TOKENRING = 9 17 IF_TYPE_PPP = 23 18 IF_TYPE_SOFTWARE_LOOPBACK = 24 19 IF_TYPE_ATM = 37 20 IF_TYPE_IEEE80211 = 71 21 IF_TYPE_TUNNEL = 131 22 IF_TYPE_IEEE1394 = 144 23 ) 24 25 type SocketAddress struct { 26 Sockaddr *syscall.RawSockaddrAny 27 SockaddrLength int32 28 } 29 30 type IpAdapterUnicastAddress struct { 31 Length uint32 32 Flags uint32 33 Next *IpAdapterUnicastAddress 34 Address SocketAddress 35 PrefixOrigin int32 36 SuffixOrigin int32 37 DadState int32 38 ValidLifetime uint32 39 PreferredLifetime uint32 40 LeaseLifetime uint32 41 OnLinkPrefixLength uint8 42 } 43 44 type IpAdapterAnycastAddress struct { 45 Length uint32 46 Flags uint32 47 Next *IpAdapterAnycastAddress 48 Address SocketAddress 49 } 50 51 type IpAdapterMulticastAddress struct { 52 Length uint32 53 Flags uint32 54 Next *IpAdapterMulticastAddress 55 Address SocketAddress 56 } 57 58 type IpAdapterDnsServerAdapter struct { 59 Length uint32 60 Reserved uint32 61 Next *IpAdapterDnsServerAdapter 62 Address SocketAddress 63 } 64 65 type IpAdapterPrefix struct { 66 Length uint32 67 Flags uint32 68 Next *IpAdapterPrefix 69 Address SocketAddress 70 PrefixLength uint32 71 } 72 73 type IpAdapterAddresses struct { 74 Length uint32 75 IfIndex uint32 76 Next *IpAdapterAddresses 77 AdapterName *byte 78 FirstUnicastAddress *IpAdapterUnicastAddress 79 FirstAnycastAddress *IpAdapterAnycastAddress 80 FirstMulticastAddress *IpAdapterMulticastAddress 81 FirstDnsServerAddress *IpAdapterDnsServerAdapter 82 DnsSuffix *uint16 83 Description *uint16 84 FriendlyName *uint16 85 PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte 86 PhysicalAddressLength uint32 87 Flags uint32 88 Mtu uint32 89 IfType uint32 90 OperStatus uint32 91 Ipv6IfIndex uint32 92 ZoneIndices [16]uint32 93 FirstPrefix *IpAdapterPrefix 94 /* more fields might be present here. */ 95 } 96 97 const ( 98 IfOperStatusUp = 1 99 IfOperStatusDown = 2 100 IfOperStatusTesting = 3 101 IfOperStatusUnknown = 4 102 IfOperStatusDormant = 5 103 IfOperStatusNotPresent = 6 104 IfOperStatusLowerLayerDown = 7 105 ) 106 107 //sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses 108 //sys GetComputerNameEx(nameformat uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW 109 //sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW 110 111 const ( 112 ComputerNameNetBIOS = 0 113 ComputerNameDnsHostname = 1 114 ComputerNameDnsDomain = 2 115 ComputerNameDnsFullyQualified = 3 116 ComputerNamePhysicalNetBIOS = 4 117 ComputerNamePhysicalDnsHostname = 5 118 ComputerNamePhysicalDnsDomain = 6 119 ComputerNamePhysicalDnsFullyQualified = 7 120 ComputerNameMax = 8 121 122 MOVEFILE_REPLACE_EXISTING = 0x1 123 MOVEFILE_COPY_ALLOWED = 0x2 124 MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 125 MOVEFILE_WRITE_THROUGH = 0x8 126 MOVEFILE_CREATE_HARDLINK = 0x10 127 MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 128 ) 129 130 func Rename(oldpath, newpath string) error { 131 from, err := syscall.UTF16PtrFromString(oldpath) 132 if err != nil { 133 return err 134 } 135 to, err := syscall.UTF16PtrFromString(newpath) 136 if err != nil { 137 return err 138 } 139 return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) 140 } 141 142 //sys GetACP() (acp uint32) = kernel32.GetACP 143 //sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar