tailscale/util/winutil/zsyscall_windows.go
Aaron Klotz 17abf201a3 DNS Queries on Windows using DnsQueryEx and asynchronous procedure calls
Signed-off-by: Aaron Klotz <aaron@tailscale.com>
2021-12-08 11:50:14 -07:00

62 lines
1.5 KiB
Go

// Code generated by 'go generate'; DO NOT EDIT.
package winutil
import (
"syscall"
"unsafe"
"golang.org/x/sys/windows"
)
var _ unsafe.Pointer
// Do the interface allocations only once for common
// Errno values.
const (
errnoERROR_IO_PENDING = 997
)
var (
errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
errERROR_EINVAL error = syscall.EINVAL
)
// errnoErr returns common boxed Errno values, to prevent
// allocations at runtime.
func errnoErr(e syscall.Errno) error {
switch e {
case 0:
return errERROR_EINVAL
case errnoERROR_IO_PENDING:
return errERROR_IO_PENDING
}
// TODO: add more here, after collecting data on the common
// error values see on Windows. (perhaps when running
// all.bat?)
return e
}
var (
moddnsapi = windows.NewLazySystemDLL("dnsapi.dll")
procDnsCancelQuery = moddnsapi.NewProc("DnsCancelQuery")
procDnsQueryEx = moddnsapi.NewProc("DnsQueryEx")
)
func DnsCancelQuery(cancelHandle *DNSQueryCancel) (status error) {
r0, _, _ := syscall.Syscall(procDnsCancelQuery.Addr(), 1, uintptr(unsafe.Pointer(cancelHandle)), 0, 0)
if r0 != 0 {
status = syscall.Errno(r0)
}
return
}
func DnsQueryEx(request *DNSQueryRequest, result *DNSQueryResult, cancelHandle *DNSQueryCancel) (status error) {
r0, _, _ := syscall.Syscall(procDnsQueryEx.Addr(), 3, uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(cancelHandle)))
if r0 != 0 {
status = syscall.Errno(r0)
}
return
}