12345678910111213141516171819202122232425262728 |
- 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)
- }
|