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