github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/net/internal/socket/sys_windows.go (about)

     1  // Copyright 2017 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 socket
     6  
     7  import (
     8  	"syscall"
     9  	"unsafe"
    10  
    11  	"golang.org/x/sys/windows"
    12  )
    13  
    14  func probeProtocolStack() int {
    15  	var p uintptr
    16  	return int(unsafe.Sizeof(p))
    17  }
    18  
    19  const (
    20  	sysAF_UNSPEC = windows.AF_UNSPEC
    21  	sysAF_INET   = windows.AF_INET
    22  	sysAF_INET6  = windows.AF_INET6
    23  
    24  	sysSOCK_RAW = windows.SOCK_RAW
    25  
    26  	sizeofSockaddrInet4 = 0x10
    27  	sizeofSockaddrInet6 = 0x1c
    28  )
    29  
    30  func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
    31  	l := uint32(len(b))
    32  	err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l)))
    33  	return int(l), err
    34  }
    35  
    36  func setsockopt(s uintptr, level, name int, b []byte) error {
    37  	return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b)))
    38  }
    39  
    40  func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
    41  	return 0, errNotImplemented
    42  }
    43  
    44  func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
    45  	return 0, errNotImplemented
    46  }
    47  
    48  func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
    49  	return 0, errNotImplemented
    50  }
    51  
    52  func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
    53  	return 0, errNotImplemented
    54  }