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