code: func utf16PtrToString(wstr *uint16) string {
  	if wstr != nil {
  		for len := 0; ; len++ {
  			ptr := unsafe.Pointer(uintptr(unsafe.Pointer(wstr)) + uintptr(len)*unsafe.Sizeof(*wstr)) // see https://golang.org/pkg/unsafe/#Pointer (3)
  			if *(*uint16)(ptr) == 0 {
  				return string(utf16.Decode(*(*[]uint16)(unsafe.Pointer(&reflect.SliceHeader{
  					Data: uintptr(unsafe.Pointer(wstr)),
  					Len:  len,
  					Cap:  len,
  				}))))
  			}
  		}
  	}
  	return ""
  }
docs: // uf16PtrToString creates a Go string from a pointer to a UTF16 encoded zero-terminated string.
  // Such pointers are returned from the Windows API calls.
  // The function creates a copy of the string.