23 lines
		
	
	
		
			466 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			466 B
		
	
	
	
		
			Go
		
	
	
	
package websspi
 | 
						|
 | 
						|
import (
 | 
						|
	"unicode/utf16"
 | 
						|
	"unsafe"
 | 
						|
)
 | 
						|
 | 
						|
// UTF16PtrToString converts a pointer to a UTF16 string to a string
 | 
						|
func UTF16PtrToString(ptr *uint16, maxLen int) (s string) {
 | 
						|
	if ptr == nil {
 | 
						|
		return ""
 | 
						|
	}
 | 
						|
	buf := make([]uint16, 0, maxLen)
 | 
						|
	for i, p := 0, uintptr(unsafe.Pointer(ptr)); i < maxLen; i, p = i+1, p+2 {
 | 
						|
		char := *(*uint16)(unsafe.Pointer(p))
 | 
						|
		if char == 0 {
 | 
						|
			return string(utf16.Decode(buf))
 | 
						|
		}
 | 
						|
		buf = append(buf, char)
 | 
						|
	}
 | 
						|
	return ""
 | 
						|
}
 |