github.com/sagernet/sing@v0.2.6/common/rw/writev_windows.go (about)

     1  package rw
     2  
     3  import (
     4  	"syscall"
     5  )
     6  
     7  // Deprecated: use vectorised writer
     8  func WriteV(fd uintptr, data [][]byte) (int, error) {
     9  	var n uint32
    10  	buffers := make([]*syscall.WSABuf, len(data))
    11  	for i, buf := range data {
    12  		buffers[i] = &syscall.WSABuf{
    13  			Len: uint32(len(buf)),
    14  			Buf: &buf[0],
    15  		}
    16  	}
    17  	err := syscall.WSASend(syscall.Handle(fd), buffers[0], uint32(len(buffers)), &n, 0, nil, nil)
    18  	return int(n), err
    19  }