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