feat(telemetry): instrument inference duration and frame age
This commit is contained in:
		
							
								
								
									
										13
									
								
								vendor/golang.org/x/sys/windows/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/golang.org/x/sys/windows/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
// Copyright 2018 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
// +build go1.9
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import "syscall"
 | 
			
		||||
 | 
			
		||||
type Errno = syscall.Errno
 | 
			
		||||
type SysProcAttr = syscall.SysProcAttr
 | 
			
		||||
							
								
								
									
										416
									
								
								vendor/golang.org/x/sys/windows/dll_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										416
									
								
								vendor/golang.org/x/sys/windows/dll_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,416 @@
 | 
			
		||||
// Copyright 2011 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"sync"
 | 
			
		||||
	"sync/atomic"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// We need to use LoadLibrary and GetProcAddress from the Go runtime, because
 | 
			
		||||
// the these symbols are loaded by the system linker and are required to
 | 
			
		||||
// dynamically load additional symbols. Note that in the Go runtime, these
 | 
			
		||||
// return syscall.Handle and syscall.Errno, but these are the same, in fact,
 | 
			
		||||
// as windows.Handle and windows.Errno, and we intend to keep these the same.
 | 
			
		||||
 | 
			
		||||
//go:linkname syscall_loadlibrary syscall.loadlibrary
 | 
			
		||||
func syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)
 | 
			
		||||
 | 
			
		||||
//go:linkname syscall_getprocaddress syscall.getprocaddress
 | 
			
		||||
func syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)
 | 
			
		||||
 | 
			
		||||
// DLLError describes reasons for DLL load failures.
 | 
			
		||||
type DLLError struct {
 | 
			
		||||
	Err     error
 | 
			
		||||
	ObjName string
 | 
			
		||||
	Msg     string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (e *DLLError) Error() string { return e.Msg }
 | 
			
		||||
 | 
			
		||||
func (e *DLLError) Unwrap() error { return e.Err }
 | 
			
		||||
 | 
			
		||||
// A DLL implements access to a single DLL.
 | 
			
		||||
type DLL struct {
 | 
			
		||||
	Name   string
 | 
			
		||||
	Handle Handle
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LoadDLL loads DLL file into memory.
 | 
			
		||||
//
 | 
			
		||||
// Warning: using LoadDLL without an absolute path name is subject to
 | 
			
		||||
// DLL preloading attacks. To safely load a system DLL, use LazyDLL
 | 
			
		||||
// with System set to true, or use LoadLibraryEx directly.
 | 
			
		||||
func LoadDLL(name string) (dll *DLL, err error) {
 | 
			
		||||
	namep, err := UTF16PtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	h, e := syscall_loadlibrary(namep)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return nil, &DLLError{
 | 
			
		||||
			Err:     e,
 | 
			
		||||
			ObjName: name,
 | 
			
		||||
			Msg:     "Failed to load " + name + ": " + e.Error(),
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	d := &DLL{
 | 
			
		||||
		Name:   name,
 | 
			
		||||
		Handle: h,
 | 
			
		||||
	}
 | 
			
		||||
	return d, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MustLoadDLL is like LoadDLL but panics if load operation failes.
 | 
			
		||||
func MustLoadDLL(name string) *DLL {
 | 
			
		||||
	d, e := LoadDLL(name)
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		panic(e)
 | 
			
		||||
	}
 | 
			
		||||
	return d
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindProc searches DLL d for procedure named name and returns *Proc
 | 
			
		||||
// if found. It returns an error if search fails.
 | 
			
		||||
func (d *DLL) FindProc(name string) (proc *Proc, err error) {
 | 
			
		||||
	namep, err := BytePtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	a, e := syscall_getprocaddress(d.Handle, namep)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return nil, &DLLError{
 | 
			
		||||
			Err:     e,
 | 
			
		||||
			ObjName: name,
 | 
			
		||||
			Msg:     "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	p := &Proc{
 | 
			
		||||
		Dll:  d,
 | 
			
		||||
		Name: name,
 | 
			
		||||
		addr: a,
 | 
			
		||||
	}
 | 
			
		||||
	return p, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MustFindProc is like FindProc but panics if search fails.
 | 
			
		||||
func (d *DLL) MustFindProc(name string) *Proc {
 | 
			
		||||
	p, e := d.FindProc(name)
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		panic(e)
 | 
			
		||||
	}
 | 
			
		||||
	return p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc
 | 
			
		||||
// if found. It returns an error if search fails.
 | 
			
		||||
func (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {
 | 
			
		||||
	a, e := GetProcAddressByOrdinal(d.Handle, ordinal)
 | 
			
		||||
	name := "#" + itoa(int(ordinal))
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		return nil, &DLLError{
 | 
			
		||||
			Err:     e,
 | 
			
		||||
			ObjName: name,
 | 
			
		||||
			Msg:     "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	p := &Proc{
 | 
			
		||||
		Dll:  d,
 | 
			
		||||
		Name: name,
 | 
			
		||||
		addr: a,
 | 
			
		||||
	}
 | 
			
		||||
	return p, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.
 | 
			
		||||
func (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {
 | 
			
		||||
	p, e := d.FindProcByOrdinal(ordinal)
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		panic(e)
 | 
			
		||||
	}
 | 
			
		||||
	return p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Release unloads DLL d from memory.
 | 
			
		||||
func (d *DLL) Release() (err error) {
 | 
			
		||||
	return FreeLibrary(d.Handle)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A Proc implements access to a procedure inside a DLL.
 | 
			
		||||
type Proc struct {
 | 
			
		||||
	Dll  *DLL
 | 
			
		||||
	Name string
 | 
			
		||||
	addr uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Addr returns the address of the procedure represented by p.
 | 
			
		||||
// The return value can be passed to Syscall to run the procedure.
 | 
			
		||||
func (p *Proc) Addr() uintptr {
 | 
			
		||||
	return p.addr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:uintptrescapes
 | 
			
		||||
 | 
			
		||||
// Call executes procedure p with arguments a. It will panic, if more than 15 arguments
 | 
			
		||||
// are supplied.
 | 
			
		||||
//
 | 
			
		||||
// The returned error is always non-nil, constructed from the result of GetLastError.
 | 
			
		||||
// Callers must inspect the primary return value to decide whether an error occurred
 | 
			
		||||
// (according to the semantics of the specific function being called) before consulting
 | 
			
		||||
// the error. The error will be guaranteed to contain windows.Errno.
 | 
			
		||||
func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
 | 
			
		||||
	switch len(a) {
 | 
			
		||||
	case 0:
 | 
			
		||||
		return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)
 | 
			
		||||
	case 1:
 | 
			
		||||
		return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)
 | 
			
		||||
	case 2:
 | 
			
		||||
		return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)
 | 
			
		||||
	case 3:
 | 
			
		||||
		return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])
 | 
			
		||||
	case 4:
 | 
			
		||||
		return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)
 | 
			
		||||
	case 5:
 | 
			
		||||
		return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)
 | 
			
		||||
	case 6:
 | 
			
		||||
		return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])
 | 
			
		||||
	case 7:
 | 
			
		||||
		return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)
 | 
			
		||||
	case 8:
 | 
			
		||||
		return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)
 | 
			
		||||
	case 9:
 | 
			
		||||
		return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])
 | 
			
		||||
	case 10:
 | 
			
		||||
		return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)
 | 
			
		||||
	case 11:
 | 
			
		||||
		return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)
 | 
			
		||||
	case 12:
 | 
			
		||||
		return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
 | 
			
		||||
	case 13:
 | 
			
		||||
		return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)
 | 
			
		||||
	case 14:
 | 
			
		||||
		return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)
 | 
			
		||||
	case 15:
 | 
			
		||||
		return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])
 | 
			
		||||
	default:
 | 
			
		||||
		panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A LazyDLL implements access to a single DLL.
 | 
			
		||||
// It will delay the load of the DLL until the first
 | 
			
		||||
// call to its Handle method or to one of its
 | 
			
		||||
// LazyProc's Addr method.
 | 
			
		||||
type LazyDLL struct {
 | 
			
		||||
	Name string
 | 
			
		||||
 | 
			
		||||
	// System determines whether the DLL must be loaded from the
 | 
			
		||||
	// Windows System directory, bypassing the normal DLL search
 | 
			
		||||
	// path.
 | 
			
		||||
	System bool
 | 
			
		||||
 | 
			
		||||
	mu  sync.Mutex
 | 
			
		||||
	dll *DLL // non nil once DLL is loaded
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Load loads DLL file d.Name into memory. It returns an error if fails.
 | 
			
		||||
// Load will not try to load DLL, if it is already loaded into memory.
 | 
			
		||||
func (d *LazyDLL) Load() error {
 | 
			
		||||
	// Non-racy version of:
 | 
			
		||||
	// if d.dll != nil {
 | 
			
		||||
	if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	d.mu.Lock()
 | 
			
		||||
	defer d.mu.Unlock()
 | 
			
		||||
	if d.dll != nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// kernel32.dll is special, since it's where LoadLibraryEx comes from.
 | 
			
		||||
	// The kernel already special-cases its name, so it's always
 | 
			
		||||
	// loaded from system32.
 | 
			
		||||
	var dll *DLL
 | 
			
		||||
	var err error
 | 
			
		||||
	if d.Name == "kernel32.dll" {
 | 
			
		||||
		dll, err = LoadDLL(d.Name)
 | 
			
		||||
	} else {
 | 
			
		||||
		dll, err = loadLibraryEx(d.Name, d.System)
 | 
			
		||||
	}
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Non-racy version of:
 | 
			
		||||
	// d.dll = dll
 | 
			
		||||
	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll))
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// mustLoad is like Load but panics if search fails.
 | 
			
		||||
func (d *LazyDLL) mustLoad() {
 | 
			
		||||
	e := d.Load()
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		panic(e)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Handle returns d's module handle.
 | 
			
		||||
func (d *LazyDLL) Handle() uintptr {
 | 
			
		||||
	d.mustLoad()
 | 
			
		||||
	return uintptr(d.dll.Handle)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewProc returns a LazyProc for accessing the named procedure in the DLL d.
 | 
			
		||||
func (d *LazyDLL) NewProc(name string) *LazyProc {
 | 
			
		||||
	return &LazyProc{l: d, Name: name}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewLazyDLL creates new LazyDLL associated with DLL file.
 | 
			
		||||
func NewLazyDLL(name string) *LazyDLL {
 | 
			
		||||
	return &LazyDLL{Name: name}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewLazySystemDLL is like NewLazyDLL, but will only
 | 
			
		||||
// search Windows System directory for the DLL if name is
 | 
			
		||||
// a base name (like "advapi32.dll").
 | 
			
		||||
func NewLazySystemDLL(name string) *LazyDLL {
 | 
			
		||||
	return &LazyDLL{Name: name, System: true}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A LazyProc implements access to a procedure inside a LazyDLL.
 | 
			
		||||
// It delays the lookup until the Addr method is called.
 | 
			
		||||
type LazyProc struct {
 | 
			
		||||
	Name string
 | 
			
		||||
 | 
			
		||||
	mu   sync.Mutex
 | 
			
		||||
	l    *LazyDLL
 | 
			
		||||
	proc *Proc
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Find searches DLL for procedure named p.Name. It returns
 | 
			
		||||
// an error if search fails. Find will not search procedure,
 | 
			
		||||
// if it is already found and loaded into memory.
 | 
			
		||||
func (p *LazyProc) Find() error {
 | 
			
		||||
	// Non-racy version of:
 | 
			
		||||
	// if p.proc == nil {
 | 
			
		||||
	if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil {
 | 
			
		||||
		p.mu.Lock()
 | 
			
		||||
		defer p.mu.Unlock()
 | 
			
		||||
		if p.proc == nil {
 | 
			
		||||
			e := p.l.Load()
 | 
			
		||||
			if e != nil {
 | 
			
		||||
				return e
 | 
			
		||||
			}
 | 
			
		||||
			proc, e := p.l.dll.FindProc(p.Name)
 | 
			
		||||
			if e != nil {
 | 
			
		||||
				return e
 | 
			
		||||
			}
 | 
			
		||||
			// Non-racy version of:
 | 
			
		||||
			// p.proc = proc
 | 
			
		||||
			atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc))
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// mustFind is like Find but panics if search fails.
 | 
			
		||||
func (p *LazyProc) mustFind() {
 | 
			
		||||
	e := p.Find()
 | 
			
		||||
	if e != nil {
 | 
			
		||||
		panic(e)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Addr returns the address of the procedure represented by p.
 | 
			
		||||
// The return value can be passed to Syscall to run the procedure.
 | 
			
		||||
// It will panic if the procedure cannot be found.
 | 
			
		||||
func (p *LazyProc) Addr() uintptr {
 | 
			
		||||
	p.mustFind()
 | 
			
		||||
	return p.proc.Addr()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//go:uintptrescapes
 | 
			
		||||
 | 
			
		||||
// Call executes procedure p with arguments a. It will panic, if more than 15 arguments
 | 
			
		||||
// are supplied. It will also panic if the procedure cannot be found.
 | 
			
		||||
//
 | 
			
		||||
// The returned error is always non-nil, constructed from the result of GetLastError.
 | 
			
		||||
// Callers must inspect the primary return value to decide whether an error occurred
 | 
			
		||||
// (according to the semantics of the specific function being called) before consulting
 | 
			
		||||
// the error. The error will be guaranteed to contain windows.Errno.
 | 
			
		||||
func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
 | 
			
		||||
	p.mustFind()
 | 
			
		||||
	return p.proc.Call(a...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var canDoSearchSystem32Once struct {
 | 
			
		||||
	sync.Once
 | 
			
		||||
	v bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func initCanDoSearchSystem32() {
 | 
			
		||||
	// https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says:
 | 
			
		||||
	// "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows
 | 
			
		||||
	// Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on
 | 
			
		||||
	// systems that have KB2533623 installed. To determine whether the
 | 
			
		||||
	// flags are available, use GetProcAddress to get the address of the
 | 
			
		||||
	// AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories
 | 
			
		||||
	// function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_*
 | 
			
		||||
	// flags can be used with LoadLibraryEx."
 | 
			
		||||
	canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func canDoSearchSystem32() bool {
 | 
			
		||||
	canDoSearchSystem32Once.Do(initCanDoSearchSystem32)
 | 
			
		||||
	return canDoSearchSystem32Once.v
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func isBaseName(name string) bool {
 | 
			
		||||
	for _, c := range name {
 | 
			
		||||
		if c == ':' || c == '/' || c == '\\' {
 | 
			
		||||
			return false
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// loadLibraryEx wraps the Windows LoadLibraryEx function.
 | 
			
		||||
//
 | 
			
		||||
// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx
 | 
			
		||||
//
 | 
			
		||||
// If name is not an absolute path, LoadLibraryEx searches for the DLL
 | 
			
		||||
// in a variety of automatic locations unless constrained by flags.
 | 
			
		||||
// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx
 | 
			
		||||
func loadLibraryEx(name string, system bool) (*DLL, error) {
 | 
			
		||||
	loadDLL := name
 | 
			
		||||
	var flags uintptr
 | 
			
		||||
	if system {
 | 
			
		||||
		if canDoSearchSystem32() {
 | 
			
		||||
			flags = LOAD_LIBRARY_SEARCH_SYSTEM32
 | 
			
		||||
		} else if isBaseName(name) {
 | 
			
		||||
			// WindowsXP or unpatched Windows machine
 | 
			
		||||
			// trying to load "foo.dll" out of the system
 | 
			
		||||
			// folder, but LoadLibraryEx doesn't support
 | 
			
		||||
			// that yet on their system, so emulate it.
 | 
			
		||||
			systemdir, err := GetSystemDirectory()
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			loadDLL = systemdir + "\\" + name
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	h, err := LoadLibraryEx(loadDLL, 0, flags)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &DLL{Name: name, Handle: h}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type errString string
 | 
			
		||||
 | 
			
		||||
func (s errString) Error() string { return string(s) }
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/windows/empty.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/windows/empty.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
// Copyright 2019 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
//go:build !go1.12
 | 
			
		||||
// +build !go1.12
 | 
			
		||||
 | 
			
		||||
// This file is here to allow bodyless functions with go:linkname for Go 1.11
 | 
			
		||||
// and earlier (see https://golang.org/issue/23311).
 | 
			
		||||
							
								
								
									
										54
									
								
								vendor/golang.org/x/sys/windows/env_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vendor/golang.org/x/sys/windows/env_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
// Copyright 2010 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// Windows environment variables.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Getenv(key string) (value string, found bool) {
 | 
			
		||||
	return syscall.Getenv(key)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Setenv(key, value string) error {
 | 
			
		||||
	return syscall.Setenv(key, value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Clearenv() {
 | 
			
		||||
	syscall.Clearenv()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Environ() []string {
 | 
			
		||||
	return syscall.Environ()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Returns a default environment associated with the token, rather than the current
 | 
			
		||||
// process. If inheritExisting is true, then this environment also inherits the
 | 
			
		||||
// environment of the current process.
 | 
			
		||||
func (token Token) Environ(inheritExisting bool) (env []string, err error) {
 | 
			
		||||
	var block *uint16
 | 
			
		||||
	err = CreateEnvironmentBlock(&block, token, inheritExisting)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	defer DestroyEnvironmentBlock(block)
 | 
			
		||||
	blockp := uintptr(unsafe.Pointer(block))
 | 
			
		||||
	for {
 | 
			
		||||
		entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp)))
 | 
			
		||||
		if len(entry) == 0 {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		env = append(env, entry)
 | 
			
		||||
		blockp += 2 * (uintptr(len(entry)) + 1)
 | 
			
		||||
	}
 | 
			
		||||
	return env, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Unsetenv(key string) error {
 | 
			
		||||
	return syscall.Unsetenv(key)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								vendor/golang.org/x/sys/windows/eventlog.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/golang.org/x/sys/windows/eventlog.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
// Copyright 2012 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	EVENTLOG_SUCCESS          = 0
 | 
			
		||||
	EVENTLOG_ERROR_TYPE       = 1
 | 
			
		||||
	EVENTLOG_WARNING_TYPE     = 2
 | 
			
		||||
	EVENTLOG_INFORMATION_TYPE = 4
 | 
			
		||||
	EVENTLOG_AUDIT_SUCCESS    = 8
 | 
			
		||||
	EVENTLOG_AUDIT_FAILURE    = 16
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//sys	RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW
 | 
			
		||||
//sys	DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource
 | 
			
		||||
//sys	ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW
 | 
			
		||||
							
								
								
									
										132
									
								
								vendor/golang.org/x/sys/windows/exec_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								vendor/golang.org/x/sys/windows/exec_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,132 @@
 | 
			
		||||
// Copyright 2009 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// Fork, exec, wait, etc.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	errorspkg "errors"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// EscapeArg rewrites command line argument s as prescribed
 | 
			
		||||
// in http://msdn.microsoft.com/en-us/library/ms880421.
 | 
			
		||||
// This function returns "" (2 double quotes) if s is empty.
 | 
			
		||||
// Alternatively, these transformations are done:
 | 
			
		||||
// - every back slash (\) is doubled, but only if immediately
 | 
			
		||||
//   followed by double quote (");
 | 
			
		||||
// - every double quote (") is escaped by back slash (\);
 | 
			
		||||
// - finally, s is wrapped with double quotes (arg -> "arg"),
 | 
			
		||||
//   but only if there is space or tab inside s.
 | 
			
		||||
func EscapeArg(s string) string {
 | 
			
		||||
	if len(s) == 0 {
 | 
			
		||||
		return "\"\""
 | 
			
		||||
	}
 | 
			
		||||
	n := len(s)
 | 
			
		||||
	hasSpace := false
 | 
			
		||||
	for i := 0; i < len(s); i++ {
 | 
			
		||||
		switch s[i] {
 | 
			
		||||
		case '"', '\\':
 | 
			
		||||
			n++
 | 
			
		||||
		case ' ', '\t':
 | 
			
		||||
			hasSpace = true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if hasSpace {
 | 
			
		||||
		n += 2
 | 
			
		||||
	}
 | 
			
		||||
	if n == len(s) {
 | 
			
		||||
		return s
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	qs := make([]byte, n)
 | 
			
		||||
	j := 0
 | 
			
		||||
	if hasSpace {
 | 
			
		||||
		qs[j] = '"'
 | 
			
		||||
		j++
 | 
			
		||||
	}
 | 
			
		||||
	slashes := 0
 | 
			
		||||
	for i := 0; i < len(s); i++ {
 | 
			
		||||
		switch s[i] {
 | 
			
		||||
		default:
 | 
			
		||||
			slashes = 0
 | 
			
		||||
			qs[j] = s[i]
 | 
			
		||||
		case '\\':
 | 
			
		||||
			slashes++
 | 
			
		||||
			qs[j] = s[i]
 | 
			
		||||
		case '"':
 | 
			
		||||
			for ; slashes > 0; slashes-- {
 | 
			
		||||
				qs[j] = '\\'
 | 
			
		||||
				j++
 | 
			
		||||
			}
 | 
			
		||||
			qs[j] = '\\'
 | 
			
		||||
			j++
 | 
			
		||||
			qs[j] = s[i]
 | 
			
		||||
		}
 | 
			
		||||
		j++
 | 
			
		||||
	}
 | 
			
		||||
	if hasSpace {
 | 
			
		||||
		for ; slashes > 0; slashes-- {
 | 
			
		||||
			qs[j] = '\\'
 | 
			
		||||
			j++
 | 
			
		||||
		}
 | 
			
		||||
		qs[j] = '"'
 | 
			
		||||
		j++
 | 
			
		||||
	}
 | 
			
		||||
	return string(qs[:j])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CloseOnExec(fd Handle) {
 | 
			
		||||
	SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FullPath retrieves the full path of the specified file.
 | 
			
		||||
func FullPath(name string) (path string, err error) {
 | 
			
		||||
	p, err := UTF16PtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	n := uint32(100)
 | 
			
		||||
	for {
 | 
			
		||||
		buf := make([]uint16, n)
 | 
			
		||||
		n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return "", err
 | 
			
		||||
		}
 | 
			
		||||
		if n <= uint32(len(buf)) {
 | 
			
		||||
			return UTF16ToString(buf[:n]), nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewProcThreadAttributeList allocates a new ProcThreadAttributeList, with the requested maximum number of attributes.
 | 
			
		||||
func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeList, error) {
 | 
			
		||||
	var size uintptr
 | 
			
		||||
	err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)
 | 
			
		||||
	if err != ERROR_INSUFFICIENT_BUFFER {
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			return nil, errorspkg.New("unable to query buffer size from InitializeProcThreadAttributeList")
 | 
			
		||||
		}
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	const psize = unsafe.Sizeof(uintptr(0))
 | 
			
		||||
	// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.
 | 
			
		||||
	al := (*ProcThreadAttributeList)(unsafe.Pointer(&make([]unsafe.Pointer, (size+psize-1)/psize)[0]))
 | 
			
		||||
	err = initializeProcThreadAttributeList(al, maxAttrCount, 0, &size)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return al, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.
 | 
			
		||||
func (al *ProcThreadAttributeList) Update(attribute uintptr, flags uint32, value unsafe.Pointer, size uintptr, prevValue unsafe.Pointer, returnedSize *uintptr) error {
 | 
			
		||||
	return updateProcThreadAttribute(al, flags, attribute, value, size, prevValue, returnedSize)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Delete frees ProcThreadAttributeList's resources.
 | 
			
		||||
func (al *ProcThreadAttributeList) Delete() {
 | 
			
		||||
	deleteProcThreadAttributeList(al)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								vendor/golang.org/x/sys/windows/memory_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								vendor/golang.org/x/sys/windows/memory_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
// Copyright 2017 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	MEM_COMMIT      = 0x00001000
 | 
			
		||||
	MEM_RESERVE     = 0x00002000
 | 
			
		||||
	MEM_DECOMMIT    = 0x00004000
 | 
			
		||||
	MEM_RELEASE     = 0x00008000
 | 
			
		||||
	MEM_RESET       = 0x00080000
 | 
			
		||||
	MEM_TOP_DOWN    = 0x00100000
 | 
			
		||||
	MEM_WRITE_WATCH = 0x00200000
 | 
			
		||||
	MEM_PHYSICAL    = 0x00400000
 | 
			
		||||
	MEM_RESET_UNDO  = 0x01000000
 | 
			
		||||
	MEM_LARGE_PAGES = 0x20000000
 | 
			
		||||
 | 
			
		||||
	PAGE_NOACCESS          = 0x00000001
 | 
			
		||||
	PAGE_READONLY          = 0x00000002
 | 
			
		||||
	PAGE_READWRITE         = 0x00000004
 | 
			
		||||
	PAGE_WRITECOPY         = 0x00000008
 | 
			
		||||
	PAGE_EXECUTE           = 0x00000010
 | 
			
		||||
	PAGE_EXECUTE_READ      = 0x00000020
 | 
			
		||||
	PAGE_EXECUTE_READWRITE = 0x00000040
 | 
			
		||||
	PAGE_EXECUTE_WRITECOPY = 0x00000080
 | 
			
		||||
	PAGE_GUARD             = 0x00000100
 | 
			
		||||
	PAGE_NOCACHE           = 0x00000200
 | 
			
		||||
	PAGE_WRITECOMBINE      = 0x00000400
 | 
			
		||||
	PAGE_TARGETS_INVALID   = 0x40000000
 | 
			
		||||
	PAGE_TARGETS_NO_UPDATE = 0x40000000
 | 
			
		||||
 | 
			
		||||
	QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002
 | 
			
		||||
	QUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001
 | 
			
		||||
	QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
 | 
			
		||||
	QUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										70
									
								
								vendor/golang.org/x/sys/windows/mkerrors.bash
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								vendor/golang.org/x/sys/windows/mkerrors.bash
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Copyright 2019 The Go Authors. All rights reserved.
 | 
			
		||||
# Use of this source code is governed by a BSD-style
 | 
			
		||||
# license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
shopt -s nullglob
 | 
			
		||||
 | 
			
		||||
winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)"
 | 
			
		||||
[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; }
 | 
			
		||||
ntstatus="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)"
 | 
			
		||||
[[ -n $ntstatus ]] || { echo "Unable to find ntstatus.h" >&2; exit 1; }
 | 
			
		||||
 | 
			
		||||
declare -A errors
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT."
 | 
			
		||||
	echo
 | 
			
		||||
	echo "package windows"
 | 
			
		||||
	echo "import \"syscall\""
 | 
			
		||||
	echo "const ("
 | 
			
		||||
 | 
			
		||||
	while read -r line; do
 | 
			
		||||
		unset vtype
 | 
			
		||||
		if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then
 | 
			
		||||
			key="${BASH_REMATCH[1]}"
 | 
			
		||||
			value="${BASH_REMATCH[3]}"
 | 
			
		||||
		elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then
 | 
			
		||||
			key="${BASH_REMATCH[1]}"
 | 
			
		||||
			value="${BASH_REMATCH[3]}"
 | 
			
		||||
			vtype="${BASH_REMATCH[2]}"
 | 
			
		||||
		elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then
 | 
			
		||||
			key="${BASH_REMATCH[1]}"
 | 
			
		||||
			value="${BASH_REMATCH[3]}"
 | 
			
		||||
			vtype="${BASH_REMATCH[2]}"
 | 
			
		||||
		else
 | 
			
		||||
			continue
 | 
			
		||||
		fi
 | 
			
		||||
		[[ -n $key && -n $value ]] || continue
 | 
			
		||||
		[[ -z ${errors["$key"]} ]] || continue
 | 
			
		||||
		errors["$key"]="$value"
 | 
			
		||||
		if [[ -v vtype ]]; then
 | 
			
		||||
			if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then
 | 
			
		||||
				vtype=""
 | 
			
		||||
			elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then
 | 
			
		||||
				vtype="Handle"
 | 
			
		||||
			else
 | 
			
		||||
				vtype="syscall.Errno"
 | 
			
		||||
			fi
 | 
			
		||||
			last_vtype="$vtype"
 | 
			
		||||
		else
 | 
			
		||||
			vtype=""
 | 
			
		||||
			if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then
 | 
			
		||||
				value="S_OK"
 | 
			
		||||
			elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then
 | 
			
		||||
				value="ERROR_SUCCESS"
 | 
			
		||||
			fi
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		echo "$key $vtype = $value"
 | 
			
		||||
	done < "$winerror"
 | 
			
		||||
 | 
			
		||||
	while read -r line; do
 | 
			
		||||
		[[ $line =~ ^#define\ (STATUS_[^\s]+)\ +\(\(NTSTATUS\)((0x)?[0-9a-fA-F]+)L?\) ]] || continue
 | 
			
		||||
		echo "${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}"
 | 
			
		||||
	done < "$ntstatus"
 | 
			
		||||
 | 
			
		||||
	echo ")"
 | 
			
		||||
} | gofmt > "zerrors_windows.go"
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/golang.org/x/sys/windows/mkknownfolderids.bash
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/golang.org/x/sys/windows/mkknownfolderids.bash
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Copyright 2019 The Go Authors. All rights reserved.
 | 
			
		||||
# Use of this source code is governed by a BSD-style
 | 
			
		||||
# license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
shopt -s nullglob
 | 
			
		||||
 | 
			
		||||
knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)"
 | 
			
		||||
[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; }
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT."
 | 
			
		||||
	echo
 | 
			
		||||
	echo "package windows"
 | 
			
		||||
	echo "type KNOWNFOLDERID GUID"
 | 
			
		||||
	echo "var ("
 | 
			
		||||
	while read -r line; do
 | 
			
		||||
		[[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue
 | 
			
		||||
		printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \
 | 
			
		||||
			"${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \
 | 
			
		||||
			$(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \
 | 
			
		||||
			$(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" ))
 | 
			
		||||
	done < "$knownfolders"
 | 
			
		||||
	echo ")"
 | 
			
		||||
} | gofmt > "zknownfolderids_windows.go"
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/windows/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/windows/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
// Copyright 2009 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build generate
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/windows/race.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/windows/race.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
// Copyright 2012 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows,race
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const raceenabled = true
 | 
			
		||||
 | 
			
		||||
func raceAcquire(addr unsafe.Pointer) {
 | 
			
		||||
	runtime.RaceAcquire(addr)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func raceReleaseMerge(addr unsafe.Pointer) {
 | 
			
		||||
	runtime.RaceReleaseMerge(addr)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func raceReadRange(addr unsafe.Pointer, len int) {
 | 
			
		||||
	runtime.RaceReadRange(addr, len)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func raceWriteRange(addr unsafe.Pointer, len int) {
 | 
			
		||||
	runtime.RaceWriteRange(addr, len)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								vendor/golang.org/x/sys/windows/race0.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								vendor/golang.org/x/sys/windows/race0.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
// Copyright 2012 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows,!race
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const raceenabled = false
 | 
			
		||||
 | 
			
		||||
func raceAcquire(addr unsafe.Pointer) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func raceReleaseMerge(addr unsafe.Pointer) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func raceReadRange(addr unsafe.Pointer, len int) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func raceWriteRange(addr unsafe.Pointer, len int) {
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										198
									
								
								vendor/golang.org/x/sys/windows/registry/key.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										198
									
								
								vendor/golang.org/x/sys/windows/registry/key.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,198 @@
 | 
			
		||||
// Copyright 2015 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
// Package registry provides access to the Windows registry.
 | 
			
		||||
//
 | 
			
		||||
// Here is a simple example, opening a registry key and reading a string value from it.
 | 
			
		||||
//
 | 
			
		||||
//	k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE)
 | 
			
		||||
//	if err != nil {
 | 
			
		||||
//		log.Fatal(err)
 | 
			
		||||
//	}
 | 
			
		||||
//	defer k.Close()
 | 
			
		||||
//
 | 
			
		||||
//	s, _, err := k.GetStringValue("SystemRoot")
 | 
			
		||||
//	if err != nil {
 | 
			
		||||
//		log.Fatal(err)
 | 
			
		||||
//	}
 | 
			
		||||
//	fmt.Printf("Windows system root is %q\n", s)
 | 
			
		||||
//
 | 
			
		||||
package registry
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// Registry key security and access rights.
 | 
			
		||||
	// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx
 | 
			
		||||
	// for details.
 | 
			
		||||
	ALL_ACCESS         = 0xf003f
 | 
			
		||||
	CREATE_LINK        = 0x00020
 | 
			
		||||
	CREATE_SUB_KEY     = 0x00004
 | 
			
		||||
	ENUMERATE_SUB_KEYS = 0x00008
 | 
			
		||||
	EXECUTE            = 0x20019
 | 
			
		||||
	NOTIFY             = 0x00010
 | 
			
		||||
	QUERY_VALUE        = 0x00001
 | 
			
		||||
	READ               = 0x20019
 | 
			
		||||
	SET_VALUE          = 0x00002
 | 
			
		||||
	WOW64_32KEY        = 0x00200
 | 
			
		||||
	WOW64_64KEY        = 0x00100
 | 
			
		||||
	WRITE              = 0x20006
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Key is a handle to an open Windows registry key.
 | 
			
		||||
// Keys can be obtained by calling OpenKey; there are
 | 
			
		||||
// also some predefined root keys such as CURRENT_USER.
 | 
			
		||||
// Keys can be used directly in the Windows API.
 | 
			
		||||
type Key syscall.Handle
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// Windows defines some predefined root keys that are always open.
 | 
			
		||||
	// An application can use these keys as entry points to the registry.
 | 
			
		||||
	// Normally these keys are used in OpenKey to open new keys,
 | 
			
		||||
	// but they can also be used anywhere a Key is required.
 | 
			
		||||
	CLASSES_ROOT     = Key(syscall.HKEY_CLASSES_ROOT)
 | 
			
		||||
	CURRENT_USER     = Key(syscall.HKEY_CURRENT_USER)
 | 
			
		||||
	LOCAL_MACHINE    = Key(syscall.HKEY_LOCAL_MACHINE)
 | 
			
		||||
	USERS            = Key(syscall.HKEY_USERS)
 | 
			
		||||
	CURRENT_CONFIG   = Key(syscall.HKEY_CURRENT_CONFIG)
 | 
			
		||||
	PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Close closes open key k.
 | 
			
		||||
func (k Key) Close() error {
 | 
			
		||||
	return syscall.RegCloseKey(syscall.Handle(k))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OpenKey opens a new key with path name relative to key k.
 | 
			
		||||
// It accepts any open key, including CURRENT_USER and others,
 | 
			
		||||
// and returns the new key and an error.
 | 
			
		||||
// The access parameter specifies desired access rights to the
 | 
			
		||||
// key to be opened.
 | 
			
		||||
func OpenKey(k Key, path string, access uint32) (Key, error) {
 | 
			
		||||
	p, err := syscall.UTF16PtrFromString(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	var subkey syscall.Handle
 | 
			
		||||
	err = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return Key(subkey), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OpenRemoteKey opens a predefined registry key on another
 | 
			
		||||
// computer pcname. The key to be opened is specified by k, but
 | 
			
		||||
// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS.
 | 
			
		||||
// If pcname is "", OpenRemoteKey returns local computer key.
 | 
			
		||||
func OpenRemoteKey(pcname string, k Key) (Key, error) {
 | 
			
		||||
	var err error
 | 
			
		||||
	var p *uint16
 | 
			
		||||
	if pcname != "" {
 | 
			
		||||
		p, err = syscall.UTF16PtrFromString(`\\` + pcname)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return 0, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	var remoteKey syscall.Handle
 | 
			
		||||
	err = regConnectRegistry(p, syscall.Handle(k), &remoteKey)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return Key(remoteKey), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadSubKeyNames returns the names of subkeys of key k.
 | 
			
		||||
// The parameter n controls the number of returned names,
 | 
			
		||||
// analogous to the way os.File.Readdirnames works.
 | 
			
		||||
func (k Key) ReadSubKeyNames(n int) ([]string, error) {
 | 
			
		||||
	names := make([]string, 0)
 | 
			
		||||
	// Registry key size limit is 255 bytes and described there:
 | 
			
		||||
	// https://msdn.microsoft.com/library/windows/desktop/ms724872.aspx
 | 
			
		||||
	buf := make([]uint16, 256) //plus extra room for terminating zero byte
 | 
			
		||||
loopItems:
 | 
			
		||||
	for i := uint32(0); ; i++ {
 | 
			
		||||
		if n > 0 {
 | 
			
		||||
			if len(names) == n {
 | 
			
		||||
				return names, nil
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		l := uint32(len(buf))
 | 
			
		||||
		for {
 | 
			
		||||
			err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
			if err == syscall.ERROR_MORE_DATA {
 | 
			
		||||
				// Double buffer size and try again.
 | 
			
		||||
				l = uint32(2 * len(buf))
 | 
			
		||||
				buf = make([]uint16, l)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if err == _ERROR_NO_MORE_ITEMS {
 | 
			
		||||
				break loopItems
 | 
			
		||||
			}
 | 
			
		||||
			return names, err
 | 
			
		||||
		}
 | 
			
		||||
		names = append(names, syscall.UTF16ToString(buf[:l]))
 | 
			
		||||
	}
 | 
			
		||||
	if n > len(names) {
 | 
			
		||||
		return names, io.EOF
 | 
			
		||||
	}
 | 
			
		||||
	return names, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateKey creates a key named path under open key k.
 | 
			
		||||
// CreateKey returns the new key and a boolean flag that reports
 | 
			
		||||
// whether the key already existed.
 | 
			
		||||
// The access parameter specifies the access rights for the key
 | 
			
		||||
// to be created.
 | 
			
		||||
func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {
 | 
			
		||||
	var h syscall.Handle
 | 
			
		||||
	var d uint32
 | 
			
		||||
	err = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path),
 | 
			
		||||
		0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, false, err
 | 
			
		||||
	}
 | 
			
		||||
	return Key(h), d == _REG_OPENED_EXISTING_KEY, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeleteKey deletes the subkey path of key k and its values.
 | 
			
		||||
func DeleteKey(k Key, path string) error {
 | 
			
		||||
	return regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A KeyInfo describes the statistics of a key. It is returned by Stat.
 | 
			
		||||
type KeyInfo struct {
 | 
			
		||||
	SubKeyCount     uint32
 | 
			
		||||
	MaxSubKeyLen    uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte
 | 
			
		||||
	ValueCount      uint32
 | 
			
		||||
	MaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte
 | 
			
		||||
	MaxValueLen     uint32 // longest data component among the key's values, in bytes
 | 
			
		||||
	lastWriteTime   syscall.Filetime
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ModTime returns the key's last write time.
 | 
			
		||||
func (ki *KeyInfo) ModTime() time.Time {
 | 
			
		||||
	return time.Unix(0, ki.lastWriteTime.Nanoseconds())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Stat retrieves information about the open key k.
 | 
			
		||||
func (k Key) Stat() (*KeyInfo, error) {
 | 
			
		||||
	var ki KeyInfo
 | 
			
		||||
	err := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil,
 | 
			
		||||
		&ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount,
 | 
			
		||||
		&ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &ki, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/windows/registry/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/windows/registry/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
// Copyright 2015 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build generate
 | 
			
		||||
 | 
			
		||||
package registry
 | 
			
		||||
 | 
			
		||||
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall.go
 | 
			
		||||
							
								
								
									
										32
									
								
								vendor/golang.org/x/sys/windows/registry/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/golang.org/x/sys/windows/registry/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
// Copyright 2015 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package registry
 | 
			
		||||
 | 
			
		||||
import "syscall"
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	_REG_OPTION_NON_VOLATILE = 0
 | 
			
		||||
 | 
			
		||||
	_REG_CREATED_NEW_KEY     = 1
 | 
			
		||||
	_REG_OPENED_EXISTING_KEY = 2
 | 
			
		||||
 | 
			
		||||
	_ERROR_NO_MORE_ITEMS syscall.Errno = 259
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func LoadRegLoadMUIString() error {
 | 
			
		||||
	return procRegLoadMUIStringW.Find()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW
 | 
			
		||||
//sys	regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW
 | 
			
		||||
//sys	regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW
 | 
			
		||||
//sys	regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW
 | 
			
		||||
//sys	regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW
 | 
			
		||||
//sys   regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW
 | 
			
		||||
//sys	regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW
 | 
			
		||||
 | 
			
		||||
//sys	expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW
 | 
			
		||||
							
								
								
									
										386
									
								
								vendor/golang.org/x/sys/windows/registry/value.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								vendor/golang.org/x/sys/windows/registry/value.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,386 @@
 | 
			
		||||
// Copyright 2015 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package registry
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"io"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unicode/utf16"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// Registry value types.
 | 
			
		||||
	NONE                       = 0
 | 
			
		||||
	SZ                         = 1
 | 
			
		||||
	EXPAND_SZ                  = 2
 | 
			
		||||
	BINARY                     = 3
 | 
			
		||||
	DWORD                      = 4
 | 
			
		||||
	DWORD_BIG_ENDIAN           = 5
 | 
			
		||||
	LINK                       = 6
 | 
			
		||||
	MULTI_SZ                   = 7
 | 
			
		||||
	RESOURCE_LIST              = 8
 | 
			
		||||
	FULL_RESOURCE_DESCRIPTOR   = 9
 | 
			
		||||
	RESOURCE_REQUIREMENTS_LIST = 10
 | 
			
		||||
	QWORD                      = 11
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// ErrShortBuffer is returned when the buffer was too short for the operation.
 | 
			
		||||
	ErrShortBuffer = syscall.ERROR_MORE_DATA
 | 
			
		||||
 | 
			
		||||
	// ErrNotExist is returned when a registry key or value does not exist.
 | 
			
		||||
	ErrNotExist = syscall.ERROR_FILE_NOT_FOUND
 | 
			
		||||
 | 
			
		||||
	// ErrUnexpectedType is returned by Get*Value when the value's type was unexpected.
 | 
			
		||||
	ErrUnexpectedType = errors.New("unexpected key value type")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetValue retrieves the type and data for the specified value associated
 | 
			
		||||
// with an open key k. It fills up buffer buf and returns the retrieved
 | 
			
		||||
// byte count n. If buf is too small to fit the stored value it returns
 | 
			
		||||
// ErrShortBuffer error along with the required buffer size n.
 | 
			
		||||
// If no buffer is provided, it returns true and actual buffer size n.
 | 
			
		||||
// If no buffer is provided, GetValue returns the value's type only.
 | 
			
		||||
// If the value does not exist, the error returned is ErrNotExist.
 | 
			
		||||
//
 | 
			
		||||
// GetValue is a low level function. If value's type is known, use the appropriate
 | 
			
		||||
// Get*Value function instead.
 | 
			
		||||
func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) {
 | 
			
		||||
	pname, err := syscall.UTF16PtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, 0, err
 | 
			
		||||
	}
 | 
			
		||||
	var pbuf *byte
 | 
			
		||||
	if len(buf) > 0 {
 | 
			
		||||
		pbuf = (*byte)(unsafe.Pointer(&buf[0]))
 | 
			
		||||
	}
 | 
			
		||||
	l := uint32(len(buf))
 | 
			
		||||
	err = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return int(l), valtype, err
 | 
			
		||||
	}
 | 
			
		||||
	return int(l), valtype, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (k Key) getValue(name string, buf []byte) (data []byte, valtype uint32, err error) {
 | 
			
		||||
	p, err := syscall.UTF16PtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, 0, err
 | 
			
		||||
	}
 | 
			
		||||
	var t uint32
 | 
			
		||||
	n := uint32(len(buf))
 | 
			
		||||
	for {
 | 
			
		||||
		err = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			return buf[:n], t, nil
 | 
			
		||||
		}
 | 
			
		||||
		if err != syscall.ERROR_MORE_DATA {
 | 
			
		||||
			return nil, 0, err
 | 
			
		||||
		}
 | 
			
		||||
		if n <= uint32(len(buf)) {
 | 
			
		||||
			return nil, 0, err
 | 
			
		||||
		}
 | 
			
		||||
		buf = make([]byte, n)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetStringValue retrieves the string value for the specified
 | 
			
		||||
// value name associated with an open key k. It also returns the value's type.
 | 
			
		||||
// If value does not exist, GetStringValue returns ErrNotExist.
 | 
			
		||||
// If value is not SZ or EXPAND_SZ, it will return the correct value
 | 
			
		||||
// type and ErrUnexpectedType.
 | 
			
		||||
func (k Key) GetStringValue(name string) (val string, valtype uint32, err error) {
 | 
			
		||||
	data, typ, err2 := k.getValue(name, make([]byte, 64))
 | 
			
		||||
	if err2 != nil {
 | 
			
		||||
		return "", typ, err2
 | 
			
		||||
	}
 | 
			
		||||
	switch typ {
 | 
			
		||||
	case SZ, EXPAND_SZ:
 | 
			
		||||
	default:
 | 
			
		||||
		return "", typ, ErrUnexpectedType
 | 
			
		||||
	}
 | 
			
		||||
	if len(data) == 0 {
 | 
			
		||||
		return "", typ, nil
 | 
			
		||||
	}
 | 
			
		||||
	u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]
 | 
			
		||||
	return syscall.UTF16ToString(u), typ, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetMUIStringValue retrieves the localized string value for
 | 
			
		||||
// the specified value name associated with an open key k.
 | 
			
		||||
// If the value name doesn't exist or the localized string value
 | 
			
		||||
// can't be resolved, GetMUIStringValue returns ErrNotExist.
 | 
			
		||||
// GetMUIStringValue panics if the system doesn't support
 | 
			
		||||
// regLoadMUIString; use LoadRegLoadMUIString to check if
 | 
			
		||||
// regLoadMUIString is supported before calling this function.
 | 
			
		||||
func (k Key) GetMUIStringValue(name string) (string, error) {
 | 
			
		||||
	pname, err := syscall.UTF16PtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	buf := make([]uint16, 1024)
 | 
			
		||||
	var buflen uint32
 | 
			
		||||
	var pdir *uint16
 | 
			
		||||
 | 
			
		||||
	err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
 | 
			
		||||
	if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path
 | 
			
		||||
 | 
			
		||||
		// Try to resolve the string value using the system directory as
 | 
			
		||||
		// a DLL search path; this assumes the string value is of the form
 | 
			
		||||
		// @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320.
 | 
			
		||||
 | 
			
		||||
		// This approach works with tzres.dll but may have to be revised
 | 
			
		||||
		// in the future to allow callers to provide custom search paths.
 | 
			
		||||
 | 
			
		||||
		var s string
 | 
			
		||||
		s, err = ExpandString("%SystemRoot%\\system32\\")
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return "", err
 | 
			
		||||
		}
 | 
			
		||||
		pdir, err = syscall.UTF16PtrFromString(s)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return "", err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for err == syscall.ERROR_MORE_DATA { // Grow buffer if needed
 | 
			
		||||
		if buflen <= uint32(len(buf)) {
 | 
			
		||||
			break // Buffer not growing, assume race; break
 | 
			
		||||
		}
 | 
			
		||||
		buf = make([]uint16, buflen)
 | 
			
		||||
		err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return syscall.UTF16ToString(buf), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ExpandString expands environment-variable strings and replaces
 | 
			
		||||
// them with the values defined for the current user.
 | 
			
		||||
// Use ExpandString to expand EXPAND_SZ strings.
 | 
			
		||||
func ExpandString(value string) (string, error) {
 | 
			
		||||
	if value == "" {
 | 
			
		||||
		return "", nil
 | 
			
		||||
	}
 | 
			
		||||
	p, err := syscall.UTF16PtrFromString(value)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	r := make([]uint16, 100)
 | 
			
		||||
	for {
 | 
			
		||||
		n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return "", err
 | 
			
		||||
		}
 | 
			
		||||
		if n <= uint32(len(r)) {
 | 
			
		||||
			return syscall.UTF16ToString(r[:n]), nil
 | 
			
		||||
		}
 | 
			
		||||
		r = make([]uint16, n)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetStringsValue retrieves the []string value for the specified
 | 
			
		||||
// value name associated with an open key k. It also returns the value's type.
 | 
			
		||||
// If value does not exist, GetStringsValue returns ErrNotExist.
 | 
			
		||||
// If value is not MULTI_SZ, it will return the correct value
 | 
			
		||||
// type and ErrUnexpectedType.
 | 
			
		||||
func (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) {
 | 
			
		||||
	data, typ, err2 := k.getValue(name, make([]byte, 64))
 | 
			
		||||
	if err2 != nil {
 | 
			
		||||
		return nil, typ, err2
 | 
			
		||||
	}
 | 
			
		||||
	if typ != MULTI_SZ {
 | 
			
		||||
		return nil, typ, ErrUnexpectedType
 | 
			
		||||
	}
 | 
			
		||||
	if len(data) == 0 {
 | 
			
		||||
		return nil, typ, nil
 | 
			
		||||
	}
 | 
			
		||||
	p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]
 | 
			
		||||
	if len(p) == 0 {
 | 
			
		||||
		return nil, typ, nil
 | 
			
		||||
	}
 | 
			
		||||
	if p[len(p)-1] == 0 {
 | 
			
		||||
		p = p[:len(p)-1] // remove terminating null
 | 
			
		||||
	}
 | 
			
		||||
	val = make([]string, 0, 5)
 | 
			
		||||
	from := 0
 | 
			
		||||
	for i, c := range p {
 | 
			
		||||
		if c == 0 {
 | 
			
		||||
			val = append(val, string(utf16.Decode(p[from:i])))
 | 
			
		||||
			from = i + 1
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return val, typ, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetIntegerValue retrieves the integer value for the specified
 | 
			
		||||
// value name associated with an open key k. It also returns the value's type.
 | 
			
		||||
// If value does not exist, GetIntegerValue returns ErrNotExist.
 | 
			
		||||
// If value is not DWORD or QWORD, it will return the correct value
 | 
			
		||||
// type and ErrUnexpectedType.
 | 
			
		||||
func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) {
 | 
			
		||||
	data, typ, err2 := k.getValue(name, make([]byte, 8))
 | 
			
		||||
	if err2 != nil {
 | 
			
		||||
		return 0, typ, err2
 | 
			
		||||
	}
 | 
			
		||||
	switch typ {
 | 
			
		||||
	case DWORD:
 | 
			
		||||
		if len(data) != 4 {
 | 
			
		||||
			return 0, typ, errors.New("DWORD value is not 4 bytes long")
 | 
			
		||||
		}
 | 
			
		||||
		var val32 uint32
 | 
			
		||||
		copy((*[4]byte)(unsafe.Pointer(&val32))[:], data)
 | 
			
		||||
		return uint64(val32), DWORD, nil
 | 
			
		||||
	case QWORD:
 | 
			
		||||
		if len(data) != 8 {
 | 
			
		||||
			return 0, typ, errors.New("QWORD value is not 8 bytes long")
 | 
			
		||||
		}
 | 
			
		||||
		copy((*[8]byte)(unsafe.Pointer(&val))[:], data)
 | 
			
		||||
		return val, QWORD, nil
 | 
			
		||||
	default:
 | 
			
		||||
		return 0, typ, ErrUnexpectedType
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetBinaryValue retrieves the binary value for the specified
 | 
			
		||||
// value name associated with an open key k. It also returns the value's type.
 | 
			
		||||
// If value does not exist, GetBinaryValue returns ErrNotExist.
 | 
			
		||||
// If value is not BINARY, it will return the correct value
 | 
			
		||||
// type and ErrUnexpectedType.
 | 
			
		||||
func (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) {
 | 
			
		||||
	data, typ, err2 := k.getValue(name, make([]byte, 64))
 | 
			
		||||
	if err2 != nil {
 | 
			
		||||
		return nil, typ, err2
 | 
			
		||||
	}
 | 
			
		||||
	if typ != BINARY {
 | 
			
		||||
		return nil, typ, ErrUnexpectedType
 | 
			
		||||
	}
 | 
			
		||||
	return data, typ, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (k Key) setValue(name string, valtype uint32, data []byte) error {
 | 
			
		||||
	p, err := syscall.UTF16PtrFromString(name)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if len(data) == 0 {
 | 
			
		||||
		return regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0)
 | 
			
		||||
	}
 | 
			
		||||
	return regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data)))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetDWordValue sets the data and type of a name value
 | 
			
		||||
// under key k to value and DWORD.
 | 
			
		||||
func (k Key) SetDWordValue(name string, value uint32) error {
 | 
			
		||||
	return k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetQWordValue sets the data and type of a name value
 | 
			
		||||
// under key k to value and QWORD.
 | 
			
		||||
func (k Key) SetQWordValue(name string, value uint64) error {
 | 
			
		||||
	return k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (k Key) setStringValue(name string, valtype uint32, value string) error {
 | 
			
		||||
	v, err := syscall.UTF16FromString(value)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]
 | 
			
		||||
	return k.setValue(name, valtype, buf)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetStringValue sets the data and type of a name value
 | 
			
		||||
// under key k to value and SZ. The value must not contain a zero byte.
 | 
			
		||||
func (k Key) SetStringValue(name, value string) error {
 | 
			
		||||
	return k.setStringValue(name, SZ, value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetExpandStringValue sets the data and type of a name value
 | 
			
		||||
// under key k to value and EXPAND_SZ. The value must not contain a zero byte.
 | 
			
		||||
func (k Key) SetExpandStringValue(name, value string) error {
 | 
			
		||||
	return k.setStringValue(name, EXPAND_SZ, value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetStringsValue sets the data and type of a name value
 | 
			
		||||
// under key k to value and MULTI_SZ. The value strings
 | 
			
		||||
// must not contain a zero byte.
 | 
			
		||||
func (k Key) SetStringsValue(name string, value []string) error {
 | 
			
		||||
	ss := ""
 | 
			
		||||
	for _, s := range value {
 | 
			
		||||
		for i := 0; i < len(s); i++ {
 | 
			
		||||
			if s[i] == 0 {
 | 
			
		||||
				return errors.New("string cannot have 0 inside")
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		ss += s + "\x00"
 | 
			
		||||
	}
 | 
			
		||||
	v := utf16.Encode([]rune(ss + "\x00"))
 | 
			
		||||
	buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]
 | 
			
		||||
	return k.setValue(name, MULTI_SZ, buf)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetBinaryValue sets the data and type of a name value
 | 
			
		||||
// under key k to value and BINARY.
 | 
			
		||||
func (k Key) SetBinaryValue(name string, value []byte) error {
 | 
			
		||||
	return k.setValue(name, BINARY, value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeleteValue removes a named value from the key k.
 | 
			
		||||
func (k Key) DeleteValue(name string) error {
 | 
			
		||||
	return regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadValueNames returns the value names of key k.
 | 
			
		||||
// The parameter n controls the number of returned names,
 | 
			
		||||
// analogous to the way os.File.Readdirnames works.
 | 
			
		||||
func (k Key) ReadValueNames(n int) ([]string, error) {
 | 
			
		||||
	ki, err := k.Stat()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	names := make([]string, 0, ki.ValueCount)
 | 
			
		||||
	buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character
 | 
			
		||||
loopItems:
 | 
			
		||||
	for i := uint32(0); ; i++ {
 | 
			
		||||
		if n > 0 {
 | 
			
		||||
			if len(names) == n {
 | 
			
		||||
				return names, nil
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		l := uint32(len(buf))
 | 
			
		||||
		for {
 | 
			
		||||
			err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
			if err == syscall.ERROR_MORE_DATA {
 | 
			
		||||
				// Double buffer size and try again.
 | 
			
		||||
				l = uint32(2 * len(buf))
 | 
			
		||||
				buf = make([]uint16, l)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if err == _ERROR_NO_MORE_ITEMS {
 | 
			
		||||
				break loopItems
 | 
			
		||||
			}
 | 
			
		||||
			return names, err
 | 
			
		||||
		}
 | 
			
		||||
		names = append(names, syscall.UTF16ToString(buf[:l]))
 | 
			
		||||
	}
 | 
			
		||||
	if n > len(names) {
 | 
			
		||||
		return names, io.EOF
 | 
			
		||||
	}
 | 
			
		||||
	return names, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										117
									
								
								vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,117 @@
 | 
			
		||||
// Code generated by 'go generate'; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
package registry
 | 
			
		||||
 | 
			
		||||
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 (
 | 
			
		||||
	modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
 | 
			
		||||
	modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
 | 
			
		||||
 | 
			
		||||
	procRegConnectRegistryW       = modadvapi32.NewProc("RegConnectRegistryW")
 | 
			
		||||
	procRegCreateKeyExW           = modadvapi32.NewProc("RegCreateKeyExW")
 | 
			
		||||
	procRegDeleteKeyW             = modadvapi32.NewProc("RegDeleteKeyW")
 | 
			
		||||
	procRegDeleteValueW           = modadvapi32.NewProc("RegDeleteValueW")
 | 
			
		||||
	procRegEnumValueW             = modadvapi32.NewProc("RegEnumValueW")
 | 
			
		||||
	procRegLoadMUIStringW         = modadvapi32.NewProc("RegLoadMUIStringW")
 | 
			
		||||
	procRegSetValueExW            = modadvapi32.NewProc("RegSetValueExW")
 | 
			
		||||
	procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result)))
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition)))
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0)
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0)
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {
 | 
			
		||||
	r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))
 | 
			
		||||
	if r0 != 0 {
 | 
			
		||||
		regerrno = syscall.Errno(r0)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {
 | 
			
		||||
	r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))
 | 
			
		||||
	n = uint32(r0)
 | 
			
		||||
	if n == 0 {
 | 
			
		||||
		err = errnoErr(e1)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1443
									
								
								vendor/golang.org/x/sys/windows/security_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1443
									
								
								vendor/golang.org/x/sys/windows/security_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										237
									
								
								vendor/golang.org/x/sys/windows/service.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										237
									
								
								vendor/golang.org/x/sys/windows/service.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,237 @@
 | 
			
		||||
// Copyright 2012 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	SC_MANAGER_CONNECT            = 1
 | 
			
		||||
	SC_MANAGER_CREATE_SERVICE     = 2
 | 
			
		||||
	SC_MANAGER_ENUMERATE_SERVICE  = 4
 | 
			
		||||
	SC_MANAGER_LOCK               = 8
 | 
			
		||||
	SC_MANAGER_QUERY_LOCK_STATUS  = 16
 | 
			
		||||
	SC_MANAGER_MODIFY_BOOT_CONFIG = 32
 | 
			
		||||
	SC_MANAGER_ALL_ACCESS         = 0xf003f
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//sys	OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	SERVICE_KERNEL_DRIVER       = 1
 | 
			
		||||
	SERVICE_FILE_SYSTEM_DRIVER  = 2
 | 
			
		||||
	SERVICE_ADAPTER             = 4
 | 
			
		||||
	SERVICE_RECOGNIZER_DRIVER   = 8
 | 
			
		||||
	SERVICE_WIN32_OWN_PROCESS   = 16
 | 
			
		||||
	SERVICE_WIN32_SHARE_PROCESS = 32
 | 
			
		||||
	SERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS
 | 
			
		||||
	SERVICE_INTERACTIVE_PROCESS = 256
 | 
			
		||||
	SERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER
 | 
			
		||||
	SERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS
 | 
			
		||||
 | 
			
		||||
	SERVICE_BOOT_START   = 0
 | 
			
		||||
	SERVICE_SYSTEM_START = 1
 | 
			
		||||
	SERVICE_AUTO_START   = 2
 | 
			
		||||
	SERVICE_DEMAND_START = 3
 | 
			
		||||
	SERVICE_DISABLED     = 4
 | 
			
		||||
 | 
			
		||||
	SERVICE_ERROR_IGNORE   = 0
 | 
			
		||||
	SERVICE_ERROR_NORMAL   = 1
 | 
			
		||||
	SERVICE_ERROR_SEVERE   = 2
 | 
			
		||||
	SERVICE_ERROR_CRITICAL = 3
 | 
			
		||||
 | 
			
		||||
	SC_STATUS_PROCESS_INFO = 0
 | 
			
		||||
 | 
			
		||||
	SC_ACTION_NONE        = 0
 | 
			
		||||
	SC_ACTION_RESTART     = 1
 | 
			
		||||
	SC_ACTION_REBOOT      = 2
 | 
			
		||||
	SC_ACTION_RUN_COMMAND = 3
 | 
			
		||||
 | 
			
		||||
	SERVICE_STOPPED          = 1
 | 
			
		||||
	SERVICE_START_PENDING    = 2
 | 
			
		||||
	SERVICE_STOP_PENDING     = 3
 | 
			
		||||
	SERVICE_RUNNING          = 4
 | 
			
		||||
	SERVICE_CONTINUE_PENDING = 5
 | 
			
		||||
	SERVICE_PAUSE_PENDING    = 6
 | 
			
		||||
	SERVICE_PAUSED           = 7
 | 
			
		||||
	SERVICE_NO_CHANGE        = 0xffffffff
 | 
			
		||||
 | 
			
		||||
	SERVICE_ACCEPT_STOP                  = 1
 | 
			
		||||
	SERVICE_ACCEPT_PAUSE_CONTINUE        = 2
 | 
			
		||||
	SERVICE_ACCEPT_SHUTDOWN              = 4
 | 
			
		||||
	SERVICE_ACCEPT_PARAMCHANGE           = 8
 | 
			
		||||
	SERVICE_ACCEPT_NETBINDCHANGE         = 16
 | 
			
		||||
	SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32
 | 
			
		||||
	SERVICE_ACCEPT_POWEREVENT            = 64
 | 
			
		||||
	SERVICE_ACCEPT_SESSIONCHANGE         = 128
 | 
			
		||||
	SERVICE_ACCEPT_PRESHUTDOWN           = 256
 | 
			
		||||
 | 
			
		||||
	SERVICE_CONTROL_STOP                  = 1
 | 
			
		||||
	SERVICE_CONTROL_PAUSE                 = 2
 | 
			
		||||
	SERVICE_CONTROL_CONTINUE              = 3
 | 
			
		||||
	SERVICE_CONTROL_INTERROGATE           = 4
 | 
			
		||||
	SERVICE_CONTROL_SHUTDOWN              = 5
 | 
			
		||||
	SERVICE_CONTROL_PARAMCHANGE           = 6
 | 
			
		||||
	SERVICE_CONTROL_NETBINDADD            = 7
 | 
			
		||||
	SERVICE_CONTROL_NETBINDREMOVE         = 8
 | 
			
		||||
	SERVICE_CONTROL_NETBINDENABLE         = 9
 | 
			
		||||
	SERVICE_CONTROL_NETBINDDISABLE        = 10
 | 
			
		||||
	SERVICE_CONTROL_DEVICEEVENT           = 11
 | 
			
		||||
	SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12
 | 
			
		||||
	SERVICE_CONTROL_POWEREVENT            = 13
 | 
			
		||||
	SERVICE_CONTROL_SESSIONCHANGE         = 14
 | 
			
		||||
	SERVICE_CONTROL_PRESHUTDOWN           = 15
 | 
			
		||||
 | 
			
		||||
	SERVICE_ACTIVE    = 1
 | 
			
		||||
	SERVICE_INACTIVE  = 2
 | 
			
		||||
	SERVICE_STATE_ALL = 3
 | 
			
		||||
 | 
			
		||||
	SERVICE_QUERY_CONFIG         = 1
 | 
			
		||||
	SERVICE_CHANGE_CONFIG        = 2
 | 
			
		||||
	SERVICE_QUERY_STATUS         = 4
 | 
			
		||||
	SERVICE_ENUMERATE_DEPENDENTS = 8
 | 
			
		||||
	SERVICE_START                = 16
 | 
			
		||||
	SERVICE_STOP                 = 32
 | 
			
		||||
	SERVICE_PAUSE_CONTINUE       = 64
 | 
			
		||||
	SERVICE_INTERROGATE          = 128
 | 
			
		||||
	SERVICE_USER_DEFINED_CONTROL = 256
 | 
			
		||||
	SERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL
 | 
			
		||||
 | 
			
		||||
	SERVICE_RUNS_IN_SYSTEM_PROCESS = 1
 | 
			
		||||
 | 
			
		||||
	SERVICE_CONFIG_DESCRIPTION              = 1
 | 
			
		||||
	SERVICE_CONFIG_FAILURE_ACTIONS          = 2
 | 
			
		||||
	SERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3
 | 
			
		||||
	SERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4
 | 
			
		||||
	SERVICE_CONFIG_SERVICE_SID_INFO         = 5
 | 
			
		||||
	SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6
 | 
			
		||||
	SERVICE_CONFIG_PRESHUTDOWN_INFO         = 7
 | 
			
		||||
	SERVICE_CONFIG_TRIGGER_INFO             = 8
 | 
			
		||||
	SERVICE_CONFIG_PREFERRED_NODE           = 9
 | 
			
		||||
	SERVICE_CONFIG_LAUNCH_PROTECTED         = 12
 | 
			
		||||
 | 
			
		||||
	SERVICE_SID_TYPE_NONE         = 0
 | 
			
		||||
	SERVICE_SID_TYPE_UNRESTRICTED = 1
 | 
			
		||||
	SERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED
 | 
			
		||||
 | 
			
		||||
	SC_ENUM_PROCESS_INFO = 0
 | 
			
		||||
 | 
			
		||||
	SERVICE_NOTIFY_STATUS_CHANGE    = 2
 | 
			
		||||
	SERVICE_NOTIFY_STOPPED          = 0x00000001
 | 
			
		||||
	SERVICE_NOTIFY_START_PENDING    = 0x00000002
 | 
			
		||||
	SERVICE_NOTIFY_STOP_PENDING     = 0x00000004
 | 
			
		||||
	SERVICE_NOTIFY_RUNNING          = 0x00000008
 | 
			
		||||
	SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010
 | 
			
		||||
	SERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020
 | 
			
		||||
	SERVICE_NOTIFY_PAUSED           = 0x00000040
 | 
			
		||||
	SERVICE_NOTIFY_CREATED          = 0x00000080
 | 
			
		||||
	SERVICE_NOTIFY_DELETED          = 0x00000100
 | 
			
		||||
	SERVICE_NOTIFY_DELETE_PENDING   = 0x00000200
 | 
			
		||||
 | 
			
		||||
	SC_EVENT_DATABASE_CHANGE = 0
 | 
			
		||||
	SC_EVENT_PROPERTY_CHANGE = 1
 | 
			
		||||
	SC_EVENT_STATUS_CHANGE   = 2
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type SERVICE_STATUS struct {
 | 
			
		||||
	ServiceType             uint32
 | 
			
		||||
	CurrentState            uint32
 | 
			
		||||
	ControlsAccepted        uint32
 | 
			
		||||
	Win32ExitCode           uint32
 | 
			
		||||
	ServiceSpecificExitCode uint32
 | 
			
		||||
	CheckPoint              uint32
 | 
			
		||||
	WaitHint                uint32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SERVICE_TABLE_ENTRY struct {
 | 
			
		||||
	ServiceName *uint16
 | 
			
		||||
	ServiceProc uintptr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type QUERY_SERVICE_CONFIG struct {
 | 
			
		||||
	ServiceType      uint32
 | 
			
		||||
	StartType        uint32
 | 
			
		||||
	ErrorControl     uint32
 | 
			
		||||
	BinaryPathName   *uint16
 | 
			
		||||
	LoadOrderGroup   *uint16
 | 
			
		||||
	TagId            uint32
 | 
			
		||||
	Dependencies     *uint16
 | 
			
		||||
	ServiceStartName *uint16
 | 
			
		||||
	DisplayName      *uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SERVICE_DESCRIPTION struct {
 | 
			
		||||
	Description *uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SERVICE_DELAYED_AUTO_START_INFO struct {
 | 
			
		||||
	IsDelayedAutoStartUp uint32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SERVICE_STATUS_PROCESS struct {
 | 
			
		||||
	ServiceType             uint32
 | 
			
		||||
	CurrentState            uint32
 | 
			
		||||
	ControlsAccepted        uint32
 | 
			
		||||
	Win32ExitCode           uint32
 | 
			
		||||
	ServiceSpecificExitCode uint32
 | 
			
		||||
	CheckPoint              uint32
 | 
			
		||||
	WaitHint                uint32
 | 
			
		||||
	ProcessId               uint32
 | 
			
		||||
	ServiceFlags            uint32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ENUM_SERVICE_STATUS_PROCESS struct {
 | 
			
		||||
	ServiceName          *uint16
 | 
			
		||||
	DisplayName          *uint16
 | 
			
		||||
	ServiceStatusProcess SERVICE_STATUS_PROCESS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SERVICE_NOTIFY struct {
 | 
			
		||||
	Version               uint32
 | 
			
		||||
	NotifyCallback        uintptr
 | 
			
		||||
	Context               uintptr
 | 
			
		||||
	NotificationStatus    uint32
 | 
			
		||||
	ServiceStatus         SERVICE_STATUS_PROCESS
 | 
			
		||||
	NotificationTriggered uint32
 | 
			
		||||
	ServiceNames          *uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SERVICE_FAILURE_ACTIONS struct {
 | 
			
		||||
	ResetPeriod  uint32
 | 
			
		||||
	RebootMsg    *uint16
 | 
			
		||||
	Command      *uint16
 | 
			
		||||
	ActionsCount uint32
 | 
			
		||||
	Actions      *SC_ACTION
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type SC_ACTION struct {
 | 
			
		||||
	Type  uint32
 | 
			
		||||
	Delay uint32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type QUERY_SERVICE_LOCK_STATUS struct {
 | 
			
		||||
	IsLocked     uint32
 | 
			
		||||
	LockOwner    *uint16
 | 
			
		||||
	LockDuration uint32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle
 | 
			
		||||
//sys	CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
 | 
			
		||||
//sys	OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
 | 
			
		||||
//sys	DeleteService(service Handle) (err error) = advapi32.DeleteService
 | 
			
		||||
//sys	StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW
 | 
			
		||||
//sys	QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus
 | 
			
		||||
//sys	QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW
 | 
			
		||||
//sys	ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService
 | 
			
		||||
//sys	StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW
 | 
			
		||||
//sys	SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus
 | 
			
		||||
//sys	ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW
 | 
			
		||||
//sys	QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW
 | 
			
		||||
//sys	ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W
 | 
			
		||||
//sys	QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W
 | 
			
		||||
//sys	EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW
 | 
			
		||||
//sys	QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx
 | 
			
		||||
//sys	NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW
 | 
			
		||||
//sys	SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?
 | 
			
		||||
//sys	UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?
 | 
			
		||||
							
								
								
									
										100
									
								
								vendor/golang.org/x/sys/windows/setupapierrors_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								vendor/golang.org/x/sys/windows/setupapierrors_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
// Copyright 2020 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
import "syscall"
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	ERROR_EXPECTED_SECTION_NAME                  syscall.Errno = 0x20000000 | 0xC0000000 | 0
 | 
			
		||||
	ERROR_BAD_SECTION_NAME_LINE                  syscall.Errno = 0x20000000 | 0xC0000000 | 1
 | 
			
		||||
	ERROR_SECTION_NAME_TOO_LONG                  syscall.Errno = 0x20000000 | 0xC0000000 | 2
 | 
			
		||||
	ERROR_GENERAL_SYNTAX                         syscall.Errno = 0x20000000 | 0xC0000000 | 3
 | 
			
		||||
	ERROR_WRONG_INF_STYLE                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x100
 | 
			
		||||
	ERROR_SECTION_NOT_FOUND                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x101
 | 
			
		||||
	ERROR_LINE_NOT_FOUND                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x102
 | 
			
		||||
	ERROR_NO_BACKUP                              syscall.Errno = 0x20000000 | 0xC0000000 | 0x103
 | 
			
		||||
	ERROR_NO_ASSOCIATED_CLASS                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x200
 | 
			
		||||
	ERROR_CLASS_MISMATCH                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x201
 | 
			
		||||
	ERROR_DUPLICATE_FOUND                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x202
 | 
			
		||||
	ERROR_NO_DRIVER_SELECTED                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x203
 | 
			
		||||
	ERROR_KEY_DOES_NOT_EXIST                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x204
 | 
			
		||||
	ERROR_INVALID_DEVINST_NAME                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x205
 | 
			
		||||
	ERROR_INVALID_CLASS                          syscall.Errno = 0x20000000 | 0xC0000000 | 0x206
 | 
			
		||||
	ERROR_DEVINST_ALREADY_EXISTS                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x207
 | 
			
		||||
	ERROR_DEVINFO_NOT_REGISTERED                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x208
 | 
			
		||||
	ERROR_INVALID_REG_PROPERTY                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x209
 | 
			
		||||
	ERROR_NO_INF                                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x20A
 | 
			
		||||
	ERROR_NO_SUCH_DEVINST                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x20B
 | 
			
		||||
	ERROR_CANT_LOAD_CLASS_ICON                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x20C
 | 
			
		||||
	ERROR_INVALID_CLASS_INSTALLER                syscall.Errno = 0x20000000 | 0xC0000000 | 0x20D
 | 
			
		||||
	ERROR_DI_DO_DEFAULT                          syscall.Errno = 0x20000000 | 0xC0000000 | 0x20E
 | 
			
		||||
	ERROR_DI_NOFILECOPY                          syscall.Errno = 0x20000000 | 0xC0000000 | 0x20F
 | 
			
		||||
	ERROR_INVALID_HWPROFILE                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x210
 | 
			
		||||
	ERROR_NO_DEVICE_SELECTED                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x211
 | 
			
		||||
	ERROR_DEVINFO_LIST_LOCKED                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x212
 | 
			
		||||
	ERROR_DEVINFO_DATA_LOCKED                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x213
 | 
			
		||||
	ERROR_DI_BAD_PATH                            syscall.Errno = 0x20000000 | 0xC0000000 | 0x214
 | 
			
		||||
	ERROR_NO_CLASSINSTALL_PARAMS                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x215
 | 
			
		||||
	ERROR_FILEQUEUE_LOCKED                       syscall.Errno = 0x20000000 | 0xC0000000 | 0x216
 | 
			
		||||
	ERROR_BAD_SERVICE_INSTALLSECT                syscall.Errno = 0x20000000 | 0xC0000000 | 0x217
 | 
			
		||||
	ERROR_NO_CLASS_DRIVER_LIST                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x218
 | 
			
		||||
	ERROR_NO_ASSOCIATED_SERVICE                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x219
 | 
			
		||||
	ERROR_NO_DEFAULT_DEVICE_INTERFACE            syscall.Errno = 0x20000000 | 0xC0000000 | 0x21A
 | 
			
		||||
	ERROR_DEVICE_INTERFACE_ACTIVE                syscall.Errno = 0x20000000 | 0xC0000000 | 0x21B
 | 
			
		||||
	ERROR_DEVICE_INTERFACE_REMOVED               syscall.Errno = 0x20000000 | 0xC0000000 | 0x21C
 | 
			
		||||
	ERROR_BAD_INTERFACE_INSTALLSECT              syscall.Errno = 0x20000000 | 0xC0000000 | 0x21D
 | 
			
		||||
	ERROR_NO_SUCH_INTERFACE_CLASS                syscall.Errno = 0x20000000 | 0xC0000000 | 0x21E
 | 
			
		||||
	ERROR_INVALID_REFERENCE_STRING               syscall.Errno = 0x20000000 | 0xC0000000 | 0x21F
 | 
			
		||||
	ERROR_INVALID_MACHINENAME                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x220
 | 
			
		||||
	ERROR_REMOTE_COMM_FAILURE                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x221
 | 
			
		||||
	ERROR_MACHINE_UNAVAILABLE                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x222
 | 
			
		||||
	ERROR_NO_CONFIGMGR_SERVICES                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x223
 | 
			
		||||
	ERROR_INVALID_PROPPAGE_PROVIDER              syscall.Errno = 0x20000000 | 0xC0000000 | 0x224
 | 
			
		||||
	ERROR_NO_SUCH_DEVICE_INTERFACE               syscall.Errno = 0x20000000 | 0xC0000000 | 0x225
 | 
			
		||||
	ERROR_DI_POSTPROCESSING_REQUIRED             syscall.Errno = 0x20000000 | 0xC0000000 | 0x226
 | 
			
		||||
	ERROR_INVALID_COINSTALLER                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x227
 | 
			
		||||
	ERROR_NO_COMPAT_DRIVERS                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x228
 | 
			
		||||
	ERROR_NO_DEVICE_ICON                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x229
 | 
			
		||||
	ERROR_INVALID_INF_LOGCONFIG                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x22A
 | 
			
		||||
	ERROR_DI_DONT_INSTALL                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x22B
 | 
			
		||||
	ERROR_INVALID_FILTER_DRIVER                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x22C
 | 
			
		||||
	ERROR_NON_WINDOWS_NT_DRIVER                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x22D
 | 
			
		||||
	ERROR_NON_WINDOWS_DRIVER                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x22E
 | 
			
		||||
	ERROR_NO_CATALOG_FOR_OEM_INF                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x22F
 | 
			
		||||
	ERROR_DEVINSTALL_QUEUE_NONNATIVE             syscall.Errno = 0x20000000 | 0xC0000000 | 0x230
 | 
			
		||||
	ERROR_NOT_DISABLEABLE                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x231
 | 
			
		||||
	ERROR_CANT_REMOVE_DEVINST                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x232
 | 
			
		||||
	ERROR_INVALID_TARGET                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x233
 | 
			
		||||
	ERROR_DRIVER_NONNATIVE                       syscall.Errno = 0x20000000 | 0xC0000000 | 0x234
 | 
			
		||||
	ERROR_IN_WOW64                               syscall.Errno = 0x20000000 | 0xC0000000 | 0x235
 | 
			
		||||
	ERROR_SET_SYSTEM_RESTORE_POINT               syscall.Errno = 0x20000000 | 0xC0000000 | 0x236
 | 
			
		||||
	ERROR_SCE_DISABLED                           syscall.Errno = 0x20000000 | 0xC0000000 | 0x238
 | 
			
		||||
	ERROR_UNKNOWN_EXCEPTION                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x239
 | 
			
		||||
	ERROR_PNP_REGISTRY_ERROR                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x23A
 | 
			
		||||
	ERROR_REMOTE_REQUEST_UNSUPPORTED             syscall.Errno = 0x20000000 | 0xC0000000 | 0x23B
 | 
			
		||||
	ERROR_NOT_AN_INSTALLED_OEM_INF               syscall.Errno = 0x20000000 | 0xC0000000 | 0x23C
 | 
			
		||||
	ERROR_INF_IN_USE_BY_DEVICES                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x23D
 | 
			
		||||
	ERROR_DI_FUNCTION_OBSOLETE                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x23E
 | 
			
		||||
	ERROR_NO_AUTHENTICODE_CATALOG                syscall.Errno = 0x20000000 | 0xC0000000 | 0x23F
 | 
			
		||||
	ERROR_AUTHENTICODE_DISALLOWED                syscall.Errno = 0x20000000 | 0xC0000000 | 0x240
 | 
			
		||||
	ERROR_AUTHENTICODE_TRUSTED_PUBLISHER         syscall.Errno = 0x20000000 | 0xC0000000 | 0x241
 | 
			
		||||
	ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     syscall.Errno = 0x20000000 | 0xC0000000 | 0x242
 | 
			
		||||
	ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     syscall.Errno = 0x20000000 | 0xC0000000 | 0x243
 | 
			
		||||
	ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         syscall.Errno = 0x20000000 | 0xC0000000 | 0x244
 | 
			
		||||
	ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         syscall.Errno = 0x20000000 | 0xC0000000 | 0x245
 | 
			
		||||
	ERROR_DEVICE_INSTALLER_NOT_READY             syscall.Errno = 0x20000000 | 0xC0000000 | 0x246
 | 
			
		||||
	ERROR_DRIVER_STORE_ADD_FAILED                syscall.Errno = 0x20000000 | 0xC0000000 | 0x247
 | 
			
		||||
	ERROR_DEVICE_INSTALL_BLOCKED                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x248
 | 
			
		||||
	ERROR_DRIVER_INSTALL_BLOCKED                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x249
 | 
			
		||||
	ERROR_WRONG_INF_TYPE                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x24A
 | 
			
		||||
	ERROR_FILE_HASH_NOT_IN_CATALOG               syscall.Errno = 0x20000000 | 0xC0000000 | 0x24B
 | 
			
		||||
	ERROR_DRIVER_STORE_DELETE_FAILED             syscall.Errno = 0x20000000 | 0xC0000000 | 0x24C
 | 
			
		||||
	ERROR_UNRECOVERABLE_STACK_OVERFLOW           syscall.Errno = 0x20000000 | 0xC0000000 | 0x300
 | 
			
		||||
	EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW
 | 
			
		||||
	ERROR_NO_DEFAULT_INTERFACE_DEVICE            syscall.Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE
 | 
			
		||||
	ERROR_INTERFACE_DEVICE_ACTIVE                syscall.Errno = ERROR_DEVICE_INTERFACE_ACTIVE
 | 
			
		||||
	ERROR_INTERFACE_DEVICE_REMOVED               syscall.Errno = ERROR_DEVICE_INTERFACE_REMOVED
 | 
			
		||||
	ERROR_NO_SUCH_INTERFACE_DEVICE               syscall.Errno = ERROR_NO_SUCH_DEVICE_INTERFACE
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/sys/windows/str.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/sys/windows/str.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
// Copyright 2009 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
func itoa(val int) string { // do it here rather than with fmt to avoid dependency
 | 
			
		||||
	if val < 0 {
 | 
			
		||||
		return "-" + itoa(-val)
 | 
			
		||||
	}
 | 
			
		||||
	var buf [32]byte // big enough for int64
 | 
			
		||||
	i := len(buf) - 1
 | 
			
		||||
	for val >= 10 {
 | 
			
		||||
		buf[i] = byte(val%10 + '0')
 | 
			
		||||
		i--
 | 
			
		||||
		val /= 10
 | 
			
		||||
	}
 | 
			
		||||
	buf[i] = byte(val + '0')
 | 
			
		||||
	return string(buf[i:])
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										112
									
								
								vendor/golang.org/x/sys/windows/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								vendor/golang.org/x/sys/windows/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
			
		||||
// Copyright 2009 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
// Package windows contains an interface to the low-level operating system
 | 
			
		||||
// primitives. OS details vary depending on the underlying system, and
 | 
			
		||||
// by default, godoc will display the OS-specific documentation for the current
 | 
			
		||||
// system. If you want godoc to display syscall documentation for another
 | 
			
		||||
// system, set $GOOS and $GOARCH to the desired system. For example, if
 | 
			
		||||
// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
 | 
			
		||||
// to freebsd and $GOARCH to arm.
 | 
			
		||||
//
 | 
			
		||||
// The primary use of this package is inside other packages that provide a more
 | 
			
		||||
// portable interface to the system, such as "os", "time" and "net".  Use
 | 
			
		||||
// those packages rather than this one if you can.
 | 
			
		||||
//
 | 
			
		||||
// For details of the functions and data types in this package consult
 | 
			
		||||
// the manuals for the appropriate operating system.
 | 
			
		||||
//
 | 
			
		||||
// These calls return err == nil to indicate success; otherwise
 | 
			
		||||
// err represents an operating system error describing the failure and
 | 
			
		||||
// holds a value of type syscall.Errno.
 | 
			
		||||
package windows // import "golang.org/x/sys/windows"
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/internal/unsafeheader"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ByteSliceFromString returns a NUL-terminated slice of bytes
 | 
			
		||||
// containing the text of s. If s contains a NUL byte at any
 | 
			
		||||
// location, it returns (nil, syscall.EINVAL).
 | 
			
		||||
func ByteSliceFromString(s string) ([]byte, error) {
 | 
			
		||||
	if strings.IndexByte(s, 0) != -1 {
 | 
			
		||||
		return nil, syscall.EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	a := make([]byte, len(s)+1)
 | 
			
		||||
	copy(a, s)
 | 
			
		||||
	return a, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BytePtrFromString returns a pointer to a NUL-terminated array of
 | 
			
		||||
// bytes containing the text of s. If s contains a NUL byte at any
 | 
			
		||||
// location, it returns (nil, syscall.EINVAL).
 | 
			
		||||
func BytePtrFromString(s string) (*byte, error) {
 | 
			
		||||
	a, err := ByteSliceFromString(s)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &a[0], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any
 | 
			
		||||
// bytes after the NUL removed.
 | 
			
		||||
func ByteSliceToString(s []byte) string {
 | 
			
		||||
	if i := bytes.IndexByte(s, 0); i != -1 {
 | 
			
		||||
		s = s[:i]
 | 
			
		||||
	}
 | 
			
		||||
	return string(s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.
 | 
			
		||||
// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated
 | 
			
		||||
// at a zero byte; if the zero byte is not present, the program may crash.
 | 
			
		||||
func BytePtrToString(p *byte) string {
 | 
			
		||||
	if p == nil {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
	if *p == 0 {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Find NUL terminator.
 | 
			
		||||
	n := 0
 | 
			
		||||
	for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {
 | 
			
		||||
		ptr = unsafe.Pointer(uintptr(ptr) + 1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var s []byte
 | 
			
		||||
	h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
 | 
			
		||||
	h.Data = unsafe.Pointer(p)
 | 
			
		||||
	h.Len = n
 | 
			
		||||
	h.Cap = n
 | 
			
		||||
 | 
			
		||||
	return string(s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Single-word zero for use when we need a valid pointer to 0 bytes.
 | 
			
		||||
// See mksyscall.pl.
 | 
			
		||||
var _zero uintptr
 | 
			
		||||
 | 
			
		||||
func (ts *Timespec) Unix() (sec int64, nsec int64) {
 | 
			
		||||
	return int64(ts.Sec), int64(ts.Nsec)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (tv *Timeval) Unix() (sec int64, nsec int64) {
 | 
			
		||||
	return int64(tv.Sec), int64(tv.Usec) * 1000
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ts *Timespec) Nano() int64 {
 | 
			
		||||
	return int64(ts.Sec)*1e9 + int64(ts.Nsec)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (tv *Timeval) Nano() int64 {
 | 
			
		||||
	return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1671
									
								
								vendor/golang.org/x/sys/windows/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1671
									
								
								vendor/golang.org/x/sys/windows/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2774
									
								
								vendor/golang.org/x/sys/windows/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2774
									
								
								vendor/golang.org/x/sys/windows/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										35
									
								
								vendor/golang.org/x/sys/windows/types_windows_386.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vendor/golang.org/x/sys/windows/types_windows_386.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
// Copyright 2011 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
type WSAData struct {
 | 
			
		||||
	Version      uint16
 | 
			
		||||
	HighVersion  uint16
 | 
			
		||||
	Description  [WSADESCRIPTION_LEN + 1]byte
 | 
			
		||||
	SystemStatus [WSASYS_STATUS_LEN + 1]byte
 | 
			
		||||
	MaxSockets   uint16
 | 
			
		||||
	MaxUdpDg     uint16
 | 
			
		||||
	VendorInfo   *byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Servent struct {
 | 
			
		||||
	Name    *byte
 | 
			
		||||
	Aliases **byte
 | 
			
		||||
	Port    uint16
 | 
			
		||||
	Proto   *byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
 | 
			
		||||
	PerProcessUserTimeLimit int64
 | 
			
		||||
	PerJobUserTimeLimit     int64
 | 
			
		||||
	LimitFlags              uint32
 | 
			
		||||
	MinimumWorkingSetSize   uintptr
 | 
			
		||||
	MaximumWorkingSetSize   uintptr
 | 
			
		||||
	ActiveProcessLimit      uint32
 | 
			
		||||
	Affinity                uintptr
 | 
			
		||||
	PriorityClass           uint32
 | 
			
		||||
	SchedulingClass         uint32
 | 
			
		||||
	_                       uint32 // pad to 8 byte boundary
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								vendor/golang.org/x/sys/windows/types_windows_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/golang.org/x/sys/windows/types_windows_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
// Copyright 2011 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
type WSAData struct {
 | 
			
		||||
	Version      uint16
 | 
			
		||||
	HighVersion  uint16
 | 
			
		||||
	MaxSockets   uint16
 | 
			
		||||
	MaxUdpDg     uint16
 | 
			
		||||
	VendorInfo   *byte
 | 
			
		||||
	Description  [WSADESCRIPTION_LEN + 1]byte
 | 
			
		||||
	SystemStatus [WSASYS_STATUS_LEN + 1]byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Servent struct {
 | 
			
		||||
	Name    *byte
 | 
			
		||||
	Aliases **byte
 | 
			
		||||
	Proto   *byte
 | 
			
		||||
	Port    uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
 | 
			
		||||
	PerProcessUserTimeLimit int64
 | 
			
		||||
	PerJobUserTimeLimit     int64
 | 
			
		||||
	LimitFlags              uint32
 | 
			
		||||
	MinimumWorkingSetSize   uintptr
 | 
			
		||||
	MaximumWorkingSetSize   uintptr
 | 
			
		||||
	ActiveProcessLimit      uint32
 | 
			
		||||
	Affinity                uintptr
 | 
			
		||||
	PriorityClass           uint32
 | 
			
		||||
	SchedulingClass         uint32
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								vendor/golang.org/x/sys/windows/types_windows_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								vendor/golang.org/x/sys/windows/types_windows_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
// Copyright 2018 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
type WSAData struct {
 | 
			
		||||
	Version      uint16
 | 
			
		||||
	HighVersion  uint16
 | 
			
		||||
	Description  [WSADESCRIPTION_LEN + 1]byte
 | 
			
		||||
	SystemStatus [WSASYS_STATUS_LEN + 1]byte
 | 
			
		||||
	MaxSockets   uint16
 | 
			
		||||
	MaxUdpDg     uint16
 | 
			
		||||
	VendorInfo   *byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Servent struct {
 | 
			
		||||
	Name    *byte
 | 
			
		||||
	Aliases **byte
 | 
			
		||||
	Port    uint16
 | 
			
		||||
	Proto   *byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
 | 
			
		||||
	PerProcessUserTimeLimit int64
 | 
			
		||||
	PerJobUserTimeLimit     int64
 | 
			
		||||
	LimitFlags              uint32
 | 
			
		||||
	MinimumWorkingSetSize   uintptr
 | 
			
		||||
	MaximumWorkingSetSize   uintptr
 | 
			
		||||
	ActiveProcessLimit      uint32
 | 
			
		||||
	Affinity                uintptr
 | 
			
		||||
	PriorityClass           uint32
 | 
			
		||||
	SchedulingClass         uint32
 | 
			
		||||
	_                       uint32 // pad to 8 byte boundary
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								vendor/golang.org/x/sys/windows/types_windows_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/golang.org/x/sys/windows/types_windows_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
// Copyright 2011 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
type WSAData struct {
 | 
			
		||||
	Version      uint16
 | 
			
		||||
	HighVersion  uint16
 | 
			
		||||
	MaxSockets   uint16
 | 
			
		||||
	MaxUdpDg     uint16
 | 
			
		||||
	VendorInfo   *byte
 | 
			
		||||
	Description  [WSADESCRIPTION_LEN + 1]byte
 | 
			
		||||
	SystemStatus [WSASYS_STATUS_LEN + 1]byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Servent struct {
 | 
			
		||||
	Name    *byte
 | 
			
		||||
	Aliases **byte
 | 
			
		||||
	Proto   *byte
 | 
			
		||||
	Port    uint16
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type JOBOBJECT_BASIC_LIMIT_INFORMATION struct {
 | 
			
		||||
	PerProcessUserTimeLimit int64
 | 
			
		||||
	PerJobUserTimeLimit     int64
 | 
			
		||||
	LimitFlags              uint32
 | 
			
		||||
	MinimumWorkingSetSize   uintptr
 | 
			
		||||
	MaximumWorkingSetSize   uintptr
 | 
			
		||||
	ActiveProcessLimit      uint32
 | 
			
		||||
	Affinity                uintptr
 | 
			
		||||
	PriorityClass           uint32
 | 
			
		||||
	SchedulingClass         uint32
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9468
									
								
								vendor/golang.org/x/sys/windows/zerrors_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9468
									
								
								vendor/golang.org/x/sys/windows/zerrors_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										149
									
								
								vendor/golang.org/x/sys/windows/zknownfolderids_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								vendor/golang.org/x/sys/windows/zknownfolderids_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,149 @@
 | 
			
		||||
// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
package windows
 | 
			
		||||
 | 
			
		||||
type KNOWNFOLDERID GUID
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	FOLDERID_NetworkFolder          = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}}
 | 
			
		||||
	FOLDERID_ComputerFolder         = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}}
 | 
			
		||||
	FOLDERID_InternetFolder         = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}}
 | 
			
		||||
	FOLDERID_ControlPanelFolder     = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}}
 | 
			
		||||
	FOLDERID_PrintersFolder         = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}}
 | 
			
		||||
	FOLDERID_SyncManagerFolder      = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}}
 | 
			
		||||
	FOLDERID_SyncSetupFolder        = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}}
 | 
			
		||||
	FOLDERID_ConflictFolder         = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}}
 | 
			
		||||
	FOLDERID_SyncResultsFolder      = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}}
 | 
			
		||||
	FOLDERID_RecycleBinFolder       = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}}
 | 
			
		||||
	FOLDERID_ConnectionsFolder      = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}}
 | 
			
		||||
	FOLDERID_Fonts                  = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}}
 | 
			
		||||
	FOLDERID_Desktop                = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}}
 | 
			
		||||
	FOLDERID_Startup                = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}}
 | 
			
		||||
	FOLDERID_Programs               = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}}
 | 
			
		||||
	FOLDERID_StartMenu              = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}}
 | 
			
		||||
	FOLDERID_Recent                 = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}}
 | 
			
		||||
	FOLDERID_SendTo                 = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}}
 | 
			
		||||
	FOLDERID_Documents              = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}}
 | 
			
		||||
	FOLDERID_Favorites              = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}}
 | 
			
		||||
	FOLDERID_NetHood                = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}}
 | 
			
		||||
	FOLDERID_PrintHood              = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}}
 | 
			
		||||
	FOLDERID_Templates              = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}}
 | 
			
		||||
	FOLDERID_CommonStartup          = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}}
 | 
			
		||||
	FOLDERID_CommonPrograms         = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}}
 | 
			
		||||
	FOLDERID_CommonStartMenu        = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}}
 | 
			
		||||
	FOLDERID_PublicDesktop          = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}}
 | 
			
		||||
	FOLDERID_ProgramData            = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}}
 | 
			
		||||
	FOLDERID_CommonTemplates        = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}}
 | 
			
		||||
	FOLDERID_PublicDocuments        = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}}
 | 
			
		||||
	FOLDERID_RoamingAppData         = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}}
 | 
			
		||||
	FOLDERID_LocalAppData           = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}}
 | 
			
		||||
	FOLDERID_LocalAppDataLow        = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}}
 | 
			
		||||
	FOLDERID_InternetCache          = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}}
 | 
			
		||||
	FOLDERID_Cookies                = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}}
 | 
			
		||||
	FOLDERID_History                = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}}
 | 
			
		||||
	FOLDERID_System                 = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}}
 | 
			
		||||
	FOLDERID_SystemX86              = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}}
 | 
			
		||||
	FOLDERID_Windows                = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}}
 | 
			
		||||
	FOLDERID_Profile                = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}}
 | 
			
		||||
	FOLDERID_Pictures               = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}}
 | 
			
		||||
	FOLDERID_ProgramFilesX86        = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}}
 | 
			
		||||
	FOLDERID_ProgramFilesCommonX86  = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}}
 | 
			
		||||
	FOLDERID_ProgramFilesX64        = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}}
 | 
			
		||||
	FOLDERID_ProgramFilesCommonX64  = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}}
 | 
			
		||||
	FOLDERID_ProgramFiles           = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}}
 | 
			
		||||
	FOLDERID_ProgramFilesCommon     = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}}
 | 
			
		||||
	FOLDERID_UserProgramFiles       = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}}
 | 
			
		||||
	FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}}
 | 
			
		||||
	FOLDERID_AdminTools             = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}}
 | 
			
		||||
	FOLDERID_CommonAdminTools       = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}}
 | 
			
		||||
	FOLDERID_Music                  = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}}
 | 
			
		||||
	FOLDERID_Videos                 = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}}
 | 
			
		||||
	FOLDERID_Ringtones              = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}}
 | 
			
		||||
	FOLDERID_PublicPictures         = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}}
 | 
			
		||||
	FOLDERID_PublicMusic            = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}}
 | 
			
		||||
	FOLDERID_PublicVideos           = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}}
 | 
			
		||||
	FOLDERID_PublicRingtones        = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}}
 | 
			
		||||
	FOLDERID_ResourceDir            = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}}
 | 
			
		||||
	FOLDERID_LocalizedResourcesDir  = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}}
 | 
			
		||||
	FOLDERID_CommonOEMLinks         = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}}
 | 
			
		||||
	FOLDERID_CDBurning              = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}}
 | 
			
		||||
	FOLDERID_UserProfiles           = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}}
 | 
			
		||||
	FOLDERID_Playlists              = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}}
 | 
			
		||||
	FOLDERID_SamplePlaylists        = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}}
 | 
			
		||||
	FOLDERID_SampleMusic            = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}}
 | 
			
		||||
	FOLDERID_SamplePictures         = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}}
 | 
			
		||||
	FOLDERID_SampleVideos           = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}}
 | 
			
		||||
	FOLDERID_PhotoAlbums            = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}}
 | 
			
		||||
	FOLDERID_Public                 = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}}
 | 
			
		||||
	FOLDERID_ChangeRemovePrograms   = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}}
 | 
			
		||||
	FOLDERID_AppUpdates             = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}}
 | 
			
		||||
	FOLDERID_AddNewPrograms         = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}}
 | 
			
		||||
	FOLDERID_Downloads              = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}}
 | 
			
		||||
	FOLDERID_PublicDownloads        = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}}
 | 
			
		||||
	FOLDERID_SavedSearches          = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}}
 | 
			
		||||
	FOLDERID_QuickLaunch            = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}}
 | 
			
		||||
	FOLDERID_Contacts               = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}}
 | 
			
		||||
	FOLDERID_SidebarParts           = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}}
 | 
			
		||||
	FOLDERID_SidebarDefaultParts    = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}}
 | 
			
		||||
	FOLDERID_PublicGameTasks        = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}}
 | 
			
		||||
	FOLDERID_GameTasks              = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}}
 | 
			
		||||
	FOLDERID_SavedGames             = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}}
 | 
			
		||||
	FOLDERID_Games                  = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}}
 | 
			
		||||
	FOLDERID_SEARCH_MAPI            = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}}
 | 
			
		||||
	FOLDERID_SEARCH_CSC             = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}}
 | 
			
		||||
	FOLDERID_Links                  = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}}
 | 
			
		||||
	FOLDERID_UsersFiles             = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}}
 | 
			
		||||
	FOLDERID_UsersLibraries         = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}}
 | 
			
		||||
	FOLDERID_SearchHome             = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}}
 | 
			
		||||
	FOLDERID_OriginalImages         = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}}
 | 
			
		||||
	FOLDERID_DocumentsLibrary       = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}}
 | 
			
		||||
	FOLDERID_MusicLibrary           = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}}
 | 
			
		||||
	FOLDERID_PicturesLibrary        = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}}
 | 
			
		||||
	FOLDERID_VideosLibrary          = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}}
 | 
			
		||||
	FOLDERID_RecordedTVLibrary      = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}}
 | 
			
		||||
	FOLDERID_HomeGroup              = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}}
 | 
			
		||||
	FOLDERID_HomeGroupCurrentUser   = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}}
 | 
			
		||||
	FOLDERID_DeviceMetadataStore    = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}}
 | 
			
		||||
	FOLDERID_Libraries              = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}}
 | 
			
		||||
	FOLDERID_PublicLibraries        = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}}
 | 
			
		||||
	FOLDERID_UserPinned             = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}}
 | 
			
		||||
	FOLDERID_ImplicitAppShortcuts   = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}}
 | 
			
		||||
	FOLDERID_AccountPictures        = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}}
 | 
			
		||||
	FOLDERID_PublicUserTiles        = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}}
 | 
			
		||||
	FOLDERID_AppsFolder             = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}}
 | 
			
		||||
	FOLDERID_StartMenuAllPrograms   = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}}
 | 
			
		||||
	FOLDERID_CommonStartMenuPlaces  = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}}
 | 
			
		||||
	FOLDERID_ApplicationShortcuts   = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}}
 | 
			
		||||
	FOLDERID_RoamingTiles           = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}}
 | 
			
		||||
	FOLDERID_RoamedTileImages       = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}}
 | 
			
		||||
	FOLDERID_Screenshots            = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}}
 | 
			
		||||
	FOLDERID_CameraRoll             = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}}
 | 
			
		||||
	FOLDERID_SkyDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}
 | 
			
		||||
	FOLDERID_OneDrive               = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}}
 | 
			
		||||
	FOLDERID_SkyDriveDocuments      = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}}
 | 
			
		||||
	FOLDERID_SkyDrivePictures       = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}}
 | 
			
		||||
	FOLDERID_SkyDriveMusic          = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}}
 | 
			
		||||
	FOLDERID_SkyDriveCameraRoll     = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}}
 | 
			
		||||
	FOLDERID_SearchHistory          = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}}
 | 
			
		||||
	FOLDERID_SearchTemplates        = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}}
 | 
			
		||||
	FOLDERID_CameraRollLibrary      = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}}
 | 
			
		||||
	FOLDERID_SavedPictures          = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}}
 | 
			
		||||
	FOLDERID_SavedPicturesLibrary   = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}}
 | 
			
		||||
	FOLDERID_RetailDemo             = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}}
 | 
			
		||||
	FOLDERID_Device                 = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}}
 | 
			
		||||
	FOLDERID_DevelopmentFiles       = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}}
 | 
			
		||||
	FOLDERID_Objects3D              = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}}
 | 
			
		||||
	FOLDERID_AppCaptures            = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}}
 | 
			
		||||
	FOLDERID_LocalDocuments         = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}}
 | 
			
		||||
	FOLDERID_LocalPictures          = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}}
 | 
			
		||||
	FOLDERID_LocalVideos            = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}}
 | 
			
		||||
	FOLDERID_LocalMusic             = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}}
 | 
			
		||||
	FOLDERID_LocalDownloads         = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}}
 | 
			
		||||
	FOLDERID_RecordedCalls          = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}}
 | 
			
		||||
	FOLDERID_AllAppMods             = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}}
 | 
			
		||||
	FOLDERID_CurrentAppMods         = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}}
 | 
			
		||||
	FOLDERID_AppDataDesktop         = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}}
 | 
			
		||||
	FOLDERID_AppDataDocuments       = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}}
 | 
			
		||||
	FOLDERID_AppDataFavorites       = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}}
 | 
			
		||||
	FOLDERID_AppDataProgramData     = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}}
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										3639
									
								
								vendor/golang.org/x/sys/windows/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3639
									
								
								vendor/golang.org/x/sys/windows/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user