func GetDefaultProxyConfiguration() (*ProxyInfo, error) {
	pInfo := new(ProxyInfo)
	if err := getDefaultProxyConfigurationP.Find(); err != nil {
		return nil, err
	}
	r, _, err := getDefaultProxyConfigurationP.Call(uintptr(unsafe.Pointer(pInfo)))
	if rTrue(r) {
		return pInfo, nil
	}
	return nil, err
}
/*
The WinHttpGetDefaultProxyConfiguration function retrieves the default WinHTTP proxy configuration from the registry.
WINHTTPAPI BOOL WinHttpGetDefaultProxyConfiguration(
IN OUT WINHTTP_PROXY_INFO *pProxyInfo
);
pProxyInfo
A pointer to a variable of type WINHTTP_PROXY_INFO that receives the default proxy configuration.
Returns TRUE if successful or FALSE otherwise.
package winhttp
import (
	"golang.org/x/sys/windows"
	"unicode/utf16"
	"unsafe"
)
const (
	WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001
	WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002
	WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001
	WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002
	WINHTTP_ACCESS_TYPE_NO_PROXY = 0x00000001
)
type (
	Lpwstr    *uint16
	Dword     uint32
	HInternet uintptr
	Allocated interface {
		Free() error
	}
	AutoProxyOptions struct {
		DwFlags                Dword
		DwAutoDetectFlags      Dword
		LpszAutoConfigUrl      Lpwstr
		lpvReserved            uintptr
		dwReserved             uint32
		FAutoLogonIfChallenged bool
	}
	ProxyInfo struct {
		DwAccessType    Dword
		LpszProxy       Lpwstr
		LpszProxyBypass Lpwstr
	}
	CurrentUserIEProxyConfig struct {
		FAutoDetect       bool
		LpszAutoConfigUrl Lpwstr
		LpszProxy         Lpwstr
		LpszProxyBypass   Lpwstr
	}
)
func Open(pszAgentW Lpwstr, dwAccessType Dword, pszProxyW Lpwstr, pszProxyBypassW Lpwstr, dwFlags Dword) (HInternet, error) {
	if err := openP.Find(); err != nil {
		return 0, err
	}
	r, _, err := openP.Call(
		uintptr(unsafe.Pointer(pszAgentW)),
		uintptr(dwAccessType),
		uintptr(unsafe.Pointer(pszProxyW)),
		uintptr(unsafe.Pointer(pszProxyBypassW)),
		uintptr(dwFlags),
	)
	if rNil(r) {
		return 0, err
	}
	return HInternet(r), nil
}
func CloseHandle(hInternet HInternet) error {
	if err := closeHandleP.Find(); err != nil {
		return err
	}
	r, _, err := closeHandleP.Call(uintptr(hInternet))
	if rTrue(r) {
		return nil
	}
	return err
}
func SetTimeouts(hInternet HInternet, nResolveTimeout int, nConnectTimeout int, nSendTimeout int, nReceiveTimeout int) error {
	if err := setTimeoutsP.Find(); err != nil {
		return err
	}
	r, _, err := setTimeoutsP.Call(
		uintptr(hInternet),
		uintptr(nResolveTimeout),
		uintptr(nConnectTimeout),
		uintptr(nSendTimeout),
		uintptr(nReceiveTimeout))
	if rTrue(r) {
		return nil
	}
	return err
}
func GetProxyForUrl(hInternet HInternet, lpcwszUrl Lpwstr, pAutoProxyOptions *AutoProxyOptions) (*ProxyInfo, error) {
	if err := getProxyForUrlP.Find(); err != nil {
		return nil, err
	}
	p := new(ProxyInfo)
	r, _, err := getProxyForUrlP.Call(
		uintptr(hInternet),
		uintptr(unsafe.Pointer(lpcwszUrl)),
		uintptr(unsafe.Pointer(pAutoProxyOptions)),
		uintptr(unsafe.Pointer(p)))
	if rTrue(r) {
		return p, nil
	}
	return nil, err
}
func GetIEProxyConfigForCurrentUser() (*CurrentUserIEProxyConfig, error) {
	if err := getIEProxyConfigForCurrentUserP.Find(); err != nil {
		return nil, err
	}
	p := new(CurrentUserIEProxyConfig)
	r, _, err := getIEProxyConfigForCurrentUserP.Call(uintptr(unsafe.Pointer(p)))
	if rTrue(r) {
		return p, nil
	}
	return nil, err
}