mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			28 lines
		
	
	
		
			683 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			683 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package interop
 | |
| 
 | |
| import (
 | |
| 	"syscall"
 | |
| 	"unsafe"
 | |
| )
 | |
| 
 | |
| //go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go interop.go
 | |
| 
 | |
| //sys coTaskMemFree(buffer unsafe.Pointer) = api_ms_win_core_com_l1_1_0.CoTaskMemFree
 | |
| 
 | |
| func ConvertAndFreeCoTaskMemString(buffer *uint16) string {
 | |
| 	str := syscall.UTF16ToString((*[1 << 29]uint16)(unsafe.Pointer(buffer))[:])
 | |
| 	coTaskMemFree(unsafe.Pointer(buffer))
 | |
| 	return str
 | |
| }
 | |
| 
 | |
| func ConvertAndFreeCoTaskMemBytes(buffer *uint16) []byte {
 | |
| 	return []byte(ConvertAndFreeCoTaskMemString(buffer))
 | |
| }
 | |
| 
 | |
| func Win32FromHresult(hr uintptr) syscall.Errno {
 | |
| 	if hr&0x1fff0000 == 0x00070000 {
 | |
| 		return syscall.Errno(hr & 0xffff)
 | |
| 	}
 | |
| 	return syscall.Errno(hr)
 | |
| }
 | 
