github.com/aporeto-inc/trireme-lib@v10.358.0+incompatible/utils/frontman/utils_windows.go (about)

     1  // +build windows
     2  
     3  package frontman
     4  
     5  import (
     6  	"syscall"
     7  	"unsafe"
     8  )
     9  
    10  // WideCharPointerToString converts a pointer to a zero-terminated wide character string to a golang string
    11  func WideCharPointerToString(pszWide *uint16) string {
    12  
    13  	ptr := uintptr(unsafe.Pointer(pszWide)) // nolint:govet
    14  	buf := make([]uint16, 0, 256)
    15  	for {
    16  		ch := *((*uint16)(unsafe.Pointer(ptr))) // nolint:govet
    17  		buf = append(buf, ch)
    18  		if ch == 0 {
    19  			break
    20  		}
    21  
    22  		ptr += 2
    23  	}
    24  	return syscall.UTF16ToString(buf)
    25  }