mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	vendor: update buildkit to 539be170
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
		
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/windows/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/windows/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,8 +2,8 @@ | ||||
| // 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 | ||||
| //go:build windows && go1.9 | ||||
| // +build windows,go1.9 | ||||
|  | ||||
| package windows | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/eventlog.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/eventlog.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build windows | ||||
| // +build windows | ||||
|  | ||||
| package windows | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/windows/memory_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/windows/memory_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -35,3 +35,14 @@ const ( | ||||
| 	QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008 | ||||
| 	QUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004 | ||||
| ) | ||||
|  | ||||
| type MemoryBasicInformation struct { | ||||
| 	BaseAddress       uintptr | ||||
| 	AllocationBase    uintptr | ||||
| 	AllocationProtect uint32 | ||||
| 	PartitionId       uint16 | ||||
| 	RegionSize        uintptr | ||||
| 	State             uint32 | ||||
| 	Protect           uint32 | ||||
| 	Type              uint32 | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build generate | ||||
| // +build generate | ||||
|  | ||||
| package windows | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/race.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/race.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build windows && race | ||||
| // +build windows,race | ||||
|  | ||||
| package windows | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/race0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/race0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build windows && !race | ||||
| // +build windows,!race | ||||
|  | ||||
| package windows | ||||
|   | ||||
							
								
								
									
										207
									
								
								vendor/golang.org/x/sys/windows/registry/key.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								vendor/golang.org/x/sys/windows/registry/key.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,207 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build windows | ||||
| // +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" | ||||
| 	"runtime" | ||||
| 	"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) { | ||||
| 	// RegEnumKeyEx must be called repeatedly and to completion. | ||||
| 	// During this time, this goroutine cannot migrate away from | ||||
| 	// its current thread. See https://golang.org/issue/49320 and | ||||
| 	// https://golang.org/issue/49466. | ||||
| 	runtime.LockOSThread() | ||||
| 	defer runtime.UnlockOSThread() | ||||
|  | ||||
| 	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 | ||||
| } | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/windows/registry/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/windows/registry/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build generate | ||||
| // +build generate | ||||
|  | ||||
| package registry | ||||
|  | ||||
| //go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall.go | ||||
							
								
								
									
										33
									
								
								vendor/golang.org/x/sys/windows/registry/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								vendor/golang.org/x/sys/windows/registry/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build windows | ||||
| // +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 | ||||
							
								
								
									
										387
									
								
								vendor/golang.org/x/sys/windows/registry/value.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										387
									
								
								vendor/golang.org/x/sys/windows/registry/value.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,387 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build windows | ||||
| // +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 | ||||
| } | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/security_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/security_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -889,6 +889,7 @@ type WTS_SESSION_INFO struct { | ||||
| //sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken | ||||
| //sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW | ||||
| //sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory | ||||
| //sys WTSGetActiveConsoleSessionId() (sessionID uint32) | ||||
|  | ||||
| type ACL struct { | ||||
| 	aclRevision byte | ||||
|   | ||||
							
								
								
									
										14
									
								
								vendor/golang.org/x/sys/windows/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/sys/windows/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build windows | ||||
| // +build windows | ||||
|  | ||||
| package windows | ||||
| @@ -16,8 +17,6 @@ const ( | ||||
| 	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 | ||||
| @@ -132,6 +131,14 @@ const ( | ||||
| 	SC_EVENT_DATABASE_CHANGE = 0 | ||||
| 	SC_EVENT_PROPERTY_CHANGE = 1 | ||||
| 	SC_EVENT_STATUS_CHANGE   = 2 | ||||
|  | ||||
| 	SERVICE_START_REASON_DEMAND             = 0x00000001 | ||||
| 	SERVICE_START_REASON_AUTO               = 0x00000002 | ||||
| 	SERVICE_START_REASON_TRIGGER            = 0x00000004 | ||||
| 	SERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008 | ||||
| 	SERVICE_START_REASON_DELAYEDAUTO        = 0x00000010 | ||||
|  | ||||
| 	SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1 | ||||
| ) | ||||
|  | ||||
| type SERVICE_STATUS struct { | ||||
| @@ -216,6 +223,7 @@ type QUERY_SERVICE_LOCK_STATUS struct { | ||||
| 	LockDuration uint32 | ||||
| } | ||||
|  | ||||
| //sys	OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW | ||||
| //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 | ||||
| @@ -235,3 +243,5 @@ type QUERY_SERVICE_LOCK_STATUS struct { | ||||
| //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? | ||||
| //sys	RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW | ||||
| //sys	QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation? | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build windows | ||||
| // +build windows | ||||
|  | ||||
| package windows | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/windows/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/windows/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build windows | ||||
| // +build windows | ||||
|  | ||||
| // Package windows contains an interface to the low-level operating system | ||||
|   | ||||
							
								
								
									
										36
									
								
								vendor/golang.org/x/sys/windows/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/golang.org/x/sys/windows/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -274,6 +274,11 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc | ||||
| //sys	VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree | ||||
| //sys	VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect | ||||
| //sys	VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx | ||||
| //sys	VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery | ||||
| //sys	VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx | ||||
| //sys	ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory | ||||
| //sys	WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory | ||||
| //sys	TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile | ||||
| //sys	ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW | ||||
| //sys	FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW | ||||
| @@ -396,8 +401,18 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource | ||||
| //sys	LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource | ||||
|  | ||||
| // Version APIs | ||||
| //sys	GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW | ||||
| //sys	GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW | ||||
| //sys	VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW | ||||
|  | ||||
| // Process Status API (PSAPI) | ||||
| //sys	EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses | ||||
| //sys	EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules | ||||
| //sys	EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx | ||||
| //sys	GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation | ||||
| //sys	GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW | ||||
| //sys	GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW | ||||
|  | ||||
| // NT Native APIs | ||||
| //sys	rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb | ||||
| @@ -408,11 +423,16 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString | ||||
| //sys	NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile | ||||
| //sys	NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile | ||||
| //sys	NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile | ||||
| //sys	RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus | ||||
| //sys	RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus | ||||
| //sys	RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl | ||||
| //sys	NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess | ||||
| //sys	NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess | ||||
| //sys	NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation | ||||
| //sys	NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation | ||||
| //sys	RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable | ||||
| //sys	RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable | ||||
|  | ||||
| // syscall interface implementation for other packages | ||||
|  | ||||
| @@ -873,9 +893,7 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { | ||||
| 	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil | ||||
| } | ||||
|  | ||||
| @@ -895,9 +913,7 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	sa.raw.Scope_id = sa.ZoneId | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil | ||||
| } | ||||
|  | ||||
| @@ -970,9 +986,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { | ||||
| 		sa := new(SockaddrInet4) | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
|  | ||||
| 	case AF_INET6: | ||||
| @@ -981,9 +995,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		sa.ZoneId = pp.Scope_id | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 	} | ||||
| 	return nil, syscall.EAFNOSUPPORT | ||||
|   | ||||
							
								
								
									
										351
									
								
								vendor/golang.org/x/sys/windows/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										351
									
								
								vendor/golang.org/x/sys/windows/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -66,9 +66,21 @@ var signals = [...]string{ | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	FILE_LIST_DIRECTORY   = 0x00000001 | ||||
| 	FILE_APPEND_DATA      = 0x00000004 | ||||
| 	FILE_READ_DATA        = 0x00000001 | ||||
| 	FILE_READ_ATTRIBUTES  = 0x00000080 | ||||
| 	FILE_READ_EA          = 0x00000008 | ||||
| 	FILE_WRITE_DATA       = 0x00000002 | ||||
| 	FILE_WRITE_ATTRIBUTES = 0x00000100 | ||||
| 	FILE_WRITE_EA         = 0x00000010 | ||||
| 	FILE_APPEND_DATA      = 0x00000004 | ||||
| 	FILE_EXECUTE          = 0x00000020 | ||||
|  | ||||
| 	FILE_GENERIC_READ    = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE | ||||
| 	FILE_GENERIC_WRITE   = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE | ||||
| 	FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE | ||||
|  | ||||
| 	FILE_LIST_DIRECTORY = 0x00000001 | ||||
| 	FILE_TRAVERSE       = 0x00000020 | ||||
|  | ||||
| 	FILE_SHARE_READ   = 0x00000001 | ||||
| 	FILE_SHARE_WRITE  = 0x00000002 | ||||
| @@ -242,6 +254,14 @@ const ( | ||||
| 	TH32CS_INHERIT      = 0x80000000 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// flags for EnumProcessModulesEx | ||||
| 	LIST_MODULES_32BIT   = 0x01 | ||||
| 	LIST_MODULES_64BIT   = 0x02 | ||||
| 	LIST_MODULES_ALL     = 0x03 | ||||
| 	LIST_MODULES_DEFAULT = 0x00 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW | ||||
| 	FILE_NOTIFY_CHANGE_FILE_NAME   = 0x001 | ||||
| @@ -1781,7 +1801,53 @@ type reparseDataBuffer struct { | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	FSCTL_GET_REPARSE_POINT          = 0x900A8 | ||||
| 	FSCTL_CREATE_OR_GET_OBJECT_ID             = 0x0900C0 | ||||
| 	FSCTL_DELETE_OBJECT_ID                    = 0x0900A0 | ||||
| 	FSCTL_DELETE_REPARSE_POINT                = 0x0900AC | ||||
| 	FSCTL_DUPLICATE_EXTENTS_TO_FILE           = 0x098344 | ||||
| 	FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX        = 0x0983E8 | ||||
| 	FSCTL_FILESYSTEM_GET_STATISTICS           = 0x090060 | ||||
| 	FSCTL_FILE_LEVEL_TRIM                     = 0x098208 | ||||
| 	FSCTL_FIND_FILES_BY_SID                   = 0x09008F | ||||
| 	FSCTL_GET_COMPRESSION                     = 0x09003C | ||||
| 	FSCTL_GET_INTEGRITY_INFORMATION           = 0x09027C | ||||
| 	FSCTL_GET_NTFS_VOLUME_DATA                = 0x090064 | ||||
| 	FSCTL_GET_REFS_VOLUME_DATA                = 0x0902D8 | ||||
| 	FSCTL_GET_OBJECT_ID                       = 0x09009C | ||||
| 	FSCTL_GET_REPARSE_POINT                   = 0x0900A8 | ||||
| 	FSCTL_GET_RETRIEVAL_POINTER_COUNT         = 0x09042B | ||||
| 	FSCTL_GET_RETRIEVAL_POINTERS              = 0x090073 | ||||
| 	FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3 | ||||
| 	FSCTL_IS_PATHNAME_VALID                   = 0x09002C | ||||
| 	FSCTL_LMR_SET_LINK_TRACKING_INFORMATION   = 0x1400EC | ||||
| 	FSCTL_MARK_HANDLE                         = 0x0900FC | ||||
| 	FSCTL_OFFLOAD_READ                        = 0x094264 | ||||
| 	FSCTL_OFFLOAD_WRITE                       = 0x098268 | ||||
| 	FSCTL_PIPE_PEEK                           = 0x11400C | ||||
| 	FSCTL_PIPE_TRANSCEIVE                     = 0x11C017 | ||||
| 	FSCTL_PIPE_WAIT                           = 0x110018 | ||||
| 	FSCTL_QUERY_ALLOCATED_RANGES              = 0x0940CF | ||||
| 	FSCTL_QUERY_FAT_BPB                       = 0x090058 | ||||
| 	FSCTL_QUERY_FILE_REGIONS                  = 0x090284 | ||||
| 	FSCTL_QUERY_ON_DISK_VOLUME_INFO           = 0x09013C | ||||
| 	FSCTL_QUERY_SPARING_INFO                  = 0x090138 | ||||
| 	FSCTL_READ_FILE_USN_DATA                  = 0x0900EB | ||||
| 	FSCTL_RECALL_FILE                         = 0x090117 | ||||
| 	FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT     = 0x090440 | ||||
| 	FSCTL_SET_COMPRESSION                     = 0x09C040 | ||||
| 	FSCTL_SET_DEFECT_MANAGEMENT               = 0x098134 | ||||
| 	FSCTL_SET_ENCRYPTION                      = 0x0900D7 | ||||
| 	FSCTL_SET_INTEGRITY_INFORMATION           = 0x09C280 | ||||
| 	FSCTL_SET_INTEGRITY_INFORMATION_EX        = 0x090380 | ||||
| 	FSCTL_SET_OBJECT_ID                       = 0x090098 | ||||
| 	FSCTL_SET_OBJECT_ID_EXTENDED              = 0x0900BC | ||||
| 	FSCTL_SET_REPARSE_POINT                   = 0x0900A4 | ||||
| 	FSCTL_SET_SPARSE                          = 0x0900C4 | ||||
| 	FSCTL_SET_ZERO_DATA                       = 0x0980C8 | ||||
| 	FSCTL_SET_ZERO_ON_DEALLOCATION            = 0x090194 | ||||
| 	FSCTL_SIS_COPYFILE                        = 0x090100 | ||||
| 	FSCTL_WRITE_USN_CLOSE_RECORD              = 0x0900EF | ||||
|  | ||||
| 	MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 | ||||
| 	IO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003 | ||||
| 	IO_REPARSE_TAG_SYMLINK           = 0xA000000C | ||||
| @@ -2300,6 +2366,12 @@ type LIST_ENTRY struct { | ||||
| 	Blink *LIST_ENTRY | ||||
| } | ||||
|  | ||||
| type RUNTIME_FUNCTION struct { | ||||
| 	BeginAddress uint32 | ||||
| 	EndAddress   uint32 | ||||
| 	UnwindData   uint32 | ||||
| } | ||||
|  | ||||
| type LDR_DATA_TABLE_ENTRY struct { | ||||
| 	reserved1          [2]uintptr | ||||
| 	InMemoryOrderLinks LIST_ENTRY | ||||
| @@ -2490,6 +2562,60 @@ const ( | ||||
| 	FILE_PIPE_SERVER_END = 0x00000001 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// FileInformationClass for NtSetInformationFile | ||||
| 	FileBasicInformation                         = 4 | ||||
| 	FileRenameInformation                        = 10 | ||||
| 	FileDispositionInformation                   = 13 | ||||
| 	FilePositionInformation                      = 14 | ||||
| 	FileEndOfFileInformation                     = 20 | ||||
| 	FileValidDataLengthInformation               = 39 | ||||
| 	FileShortNameInformation                     = 40 | ||||
| 	FileIoPriorityHintInformation                = 43 | ||||
| 	FileReplaceCompletionInformation             = 61 | ||||
| 	FileDispositionInformationEx                 = 64 | ||||
| 	FileCaseSensitiveInformation                 = 71 | ||||
| 	FileLinkInformation                          = 72 | ||||
| 	FileCaseSensitiveInformationForceAccessCheck = 75 | ||||
| 	FileKnownFolderInformation                   = 76 | ||||
|  | ||||
| 	// Flags for FILE_RENAME_INFORMATION | ||||
| 	FILE_RENAME_REPLACE_IF_EXISTS                    = 0x00000001 | ||||
| 	FILE_RENAME_POSIX_SEMANTICS                      = 0x00000002 | ||||
| 	FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE       = 0x00000004 | ||||
| 	FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 | ||||
| 	FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010 | ||||
| 	FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020 | ||||
| 	FILE_RENAME_PRESERVE_AVAILABLE_SPACE             = 0x00000030 | ||||
| 	FILE_RENAME_IGNORE_READONLY_ATTRIBUTE            = 0x00000040 | ||||
| 	FILE_RENAME_FORCE_RESIZE_TARGET_SR               = 0x00000080 | ||||
| 	FILE_RENAME_FORCE_RESIZE_SOURCE_SR               = 0x00000100 | ||||
| 	FILE_RENAME_FORCE_RESIZE_SR                      = 0x00000180 | ||||
|  | ||||
| 	// Flags for FILE_DISPOSITION_INFORMATION_EX | ||||
| 	FILE_DISPOSITION_DO_NOT_DELETE             = 0x00000000 | ||||
| 	FILE_DISPOSITION_DELETE                    = 0x00000001 | ||||
| 	FILE_DISPOSITION_POSIX_SEMANTICS           = 0x00000002 | ||||
| 	FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004 | ||||
| 	FILE_DISPOSITION_ON_CLOSE                  = 0x00000008 | ||||
| 	FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010 | ||||
|  | ||||
| 	// Flags for FILE_CASE_SENSITIVE_INFORMATION | ||||
| 	FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001 | ||||
|  | ||||
| 	// Flags for FILE_LINK_INFORMATION | ||||
| 	FILE_LINK_REPLACE_IF_EXISTS                    = 0x00000001 | ||||
| 	FILE_LINK_POSIX_SEMANTICS                      = 0x00000002 | ||||
| 	FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 | ||||
| 	FILE_LINK_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010 | ||||
| 	FILE_LINK_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020 | ||||
| 	FILE_LINK_PRESERVE_AVAILABLE_SPACE             = 0x00000030 | ||||
| 	FILE_LINK_IGNORE_READONLY_ATTRIBUTE            = 0x00000040 | ||||
| 	FILE_LINK_FORCE_RESIZE_TARGET_SR               = 0x00000080 | ||||
| 	FILE_LINK_FORCE_RESIZE_SOURCE_SR               = 0x00000100 | ||||
| 	FILE_LINK_FORCE_RESIZE_SR                      = 0x00000180 | ||||
| ) | ||||
|  | ||||
| // ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess. | ||||
| const ( | ||||
| 	ProcessBasicInformation = iota | ||||
| @@ -2606,6 +2732,203 @@ type PROCESS_BASIC_INFORMATION struct { | ||||
| 	InheritedFromUniqueProcessId uintptr | ||||
| } | ||||
|  | ||||
| // SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation | ||||
| const ( | ||||
| 	SystemBasicInformation = iota | ||||
| 	SystemProcessorInformation | ||||
| 	SystemPerformanceInformation | ||||
| 	SystemTimeOfDayInformation | ||||
| 	SystemPathInformation | ||||
| 	SystemProcessInformation | ||||
| 	SystemCallCountInformation | ||||
| 	SystemDeviceInformation | ||||
| 	SystemProcessorPerformanceInformation | ||||
| 	SystemFlagsInformation | ||||
| 	SystemCallTimeInformation | ||||
| 	SystemModuleInformation | ||||
| 	SystemLocksInformation | ||||
| 	SystemStackTraceInformation | ||||
| 	SystemPagedPoolInformation | ||||
| 	SystemNonPagedPoolInformation | ||||
| 	SystemHandleInformation | ||||
| 	SystemObjectInformation | ||||
| 	SystemPageFileInformation | ||||
| 	SystemVdmInstemulInformation | ||||
| 	SystemVdmBopInformation | ||||
| 	SystemFileCacheInformation | ||||
| 	SystemPoolTagInformation | ||||
| 	SystemInterruptInformation | ||||
| 	SystemDpcBehaviorInformation | ||||
| 	SystemFullMemoryInformation | ||||
| 	SystemLoadGdiDriverInformation | ||||
| 	SystemUnloadGdiDriverInformation | ||||
| 	SystemTimeAdjustmentInformation | ||||
| 	SystemSummaryMemoryInformation | ||||
| 	SystemMirrorMemoryInformation | ||||
| 	SystemPerformanceTraceInformation | ||||
| 	systemObsolete0 | ||||
| 	SystemExceptionInformation | ||||
| 	SystemCrashDumpStateInformation | ||||
| 	SystemKernelDebuggerInformation | ||||
| 	SystemContextSwitchInformation | ||||
| 	SystemRegistryQuotaInformation | ||||
| 	SystemExtendServiceTableInformation | ||||
| 	SystemPrioritySeperation | ||||
| 	SystemVerifierAddDriverInformation | ||||
| 	SystemVerifierRemoveDriverInformation | ||||
| 	SystemProcessorIdleInformation | ||||
| 	SystemLegacyDriverInformation | ||||
| 	SystemCurrentTimeZoneInformation | ||||
| 	SystemLookasideInformation | ||||
| 	SystemTimeSlipNotification | ||||
| 	SystemSessionCreate | ||||
| 	SystemSessionDetach | ||||
| 	SystemSessionInformation | ||||
| 	SystemRangeStartInformation | ||||
| 	SystemVerifierInformation | ||||
| 	SystemVerifierThunkExtend | ||||
| 	SystemSessionProcessInformation | ||||
| 	SystemLoadGdiDriverInSystemSpace | ||||
| 	SystemNumaProcessorMap | ||||
| 	SystemPrefetcherInformation | ||||
| 	SystemExtendedProcessInformation | ||||
| 	SystemRecommendedSharedDataAlignment | ||||
| 	SystemComPlusPackage | ||||
| 	SystemNumaAvailableMemory | ||||
| 	SystemProcessorPowerInformation | ||||
| 	SystemEmulationBasicInformation | ||||
| 	SystemEmulationProcessorInformation | ||||
| 	SystemExtendedHandleInformation | ||||
| 	SystemLostDelayedWriteInformation | ||||
| 	SystemBigPoolInformation | ||||
| 	SystemSessionPoolTagInformation | ||||
| 	SystemSessionMappedViewInformation | ||||
| 	SystemHotpatchInformation | ||||
| 	SystemObjectSecurityMode | ||||
| 	SystemWatchdogTimerHandler | ||||
| 	SystemWatchdogTimerInformation | ||||
| 	SystemLogicalProcessorInformation | ||||
| 	SystemWow64SharedInformationObsolete | ||||
| 	SystemRegisterFirmwareTableInformationHandler | ||||
| 	SystemFirmwareTableInformation | ||||
| 	SystemModuleInformationEx | ||||
| 	SystemVerifierTriageInformation | ||||
| 	SystemSuperfetchInformation | ||||
| 	SystemMemoryListInformation | ||||
| 	SystemFileCacheInformationEx | ||||
| 	SystemThreadPriorityClientIdInformation | ||||
| 	SystemProcessorIdleCycleTimeInformation | ||||
| 	SystemVerifierCancellationInformation | ||||
| 	SystemProcessorPowerInformationEx | ||||
| 	SystemRefTraceInformation | ||||
| 	SystemSpecialPoolInformation | ||||
| 	SystemProcessIdInformation | ||||
| 	SystemErrorPortInformation | ||||
| 	SystemBootEnvironmentInformation | ||||
| 	SystemHypervisorInformation | ||||
| 	SystemVerifierInformationEx | ||||
| 	SystemTimeZoneInformation | ||||
| 	SystemImageFileExecutionOptionsInformation | ||||
| 	SystemCoverageInformation | ||||
| 	SystemPrefetchPatchInformation | ||||
| 	SystemVerifierFaultsInformation | ||||
| 	SystemSystemPartitionInformation | ||||
| 	SystemSystemDiskInformation | ||||
| 	SystemProcessorPerformanceDistribution | ||||
| 	SystemNumaProximityNodeInformation | ||||
| 	SystemDynamicTimeZoneInformation | ||||
| 	SystemCodeIntegrityInformation | ||||
| 	SystemProcessorMicrocodeUpdateInformation | ||||
| 	SystemProcessorBrandString | ||||
| 	SystemVirtualAddressInformation | ||||
| 	SystemLogicalProcessorAndGroupInformation | ||||
| 	SystemProcessorCycleTimeInformation | ||||
| 	SystemStoreInformation | ||||
| 	SystemRegistryAppendString | ||||
| 	SystemAitSamplingValue | ||||
| 	SystemVhdBootInformation | ||||
| 	SystemCpuQuotaInformation | ||||
| 	SystemNativeBasicInformation | ||||
| 	systemSpare1 | ||||
| 	SystemLowPriorityIoInformation | ||||
| 	SystemTpmBootEntropyInformation | ||||
| 	SystemVerifierCountersInformation | ||||
| 	SystemPagedPoolInformationEx | ||||
| 	SystemSystemPtesInformationEx | ||||
| 	SystemNodeDistanceInformation | ||||
| 	SystemAcpiAuditInformation | ||||
| 	SystemBasicPerformanceInformation | ||||
| 	SystemQueryPerformanceCounterInformation | ||||
| 	SystemSessionBigPoolInformation | ||||
| 	SystemBootGraphicsInformation | ||||
| 	SystemScrubPhysicalMemoryInformation | ||||
| 	SystemBadPageInformation | ||||
| 	SystemProcessorProfileControlArea | ||||
| 	SystemCombinePhysicalMemoryInformation | ||||
| 	SystemEntropyInterruptTimingCallback | ||||
| 	SystemConsoleInformation | ||||
| 	SystemPlatformBinaryInformation | ||||
| 	SystemThrottleNotificationInformation | ||||
| 	SystemHypervisorProcessorCountInformation | ||||
| 	SystemDeviceDataInformation | ||||
| 	SystemDeviceDataEnumerationInformation | ||||
| 	SystemMemoryTopologyInformation | ||||
| 	SystemMemoryChannelInformation | ||||
| 	SystemBootLogoInformation | ||||
| 	SystemProcessorPerformanceInformationEx | ||||
| 	systemSpare0 | ||||
| 	SystemSecureBootPolicyInformation | ||||
| 	SystemPageFileInformationEx | ||||
| 	SystemSecureBootInformation | ||||
| 	SystemEntropyInterruptTimingRawInformation | ||||
| 	SystemPortableWorkspaceEfiLauncherInformation | ||||
| 	SystemFullProcessInformation | ||||
| 	SystemKernelDebuggerInformationEx | ||||
| 	SystemBootMetadataInformation | ||||
| 	SystemSoftRebootInformation | ||||
| 	SystemElamCertificateInformation | ||||
| 	SystemOfflineDumpConfigInformation | ||||
| 	SystemProcessorFeaturesInformation | ||||
| 	SystemRegistryReconciliationInformation | ||||
| 	SystemEdidInformation | ||||
| 	SystemManufacturingInformation | ||||
| 	SystemEnergyEstimationConfigInformation | ||||
| 	SystemHypervisorDetailInformation | ||||
| 	SystemProcessorCycleStatsInformation | ||||
| 	SystemVmGenerationCountInformation | ||||
| 	SystemTrustedPlatformModuleInformation | ||||
| 	SystemKernelDebuggerFlags | ||||
| 	SystemCodeIntegrityPolicyInformation | ||||
| 	SystemIsolatedUserModeInformation | ||||
| 	SystemHardwareSecurityTestInterfaceResultsInformation | ||||
| 	SystemSingleModuleInformation | ||||
| 	SystemAllowedCpuSetsInformation | ||||
| 	SystemDmaProtectionInformation | ||||
| 	SystemInterruptCpuSetsInformation | ||||
| 	SystemSecureBootPolicyFullInformation | ||||
| 	SystemCodeIntegrityPolicyFullInformation | ||||
| 	SystemAffinitizedInterruptProcessorInformation | ||||
| 	SystemRootSiloInformation | ||||
| ) | ||||
|  | ||||
| type RTL_PROCESS_MODULE_INFORMATION struct { | ||||
| 	Section          Handle | ||||
| 	MappedBase       uintptr | ||||
| 	ImageBase        uintptr | ||||
| 	ImageSize        uint32 | ||||
| 	Flags            uint32 | ||||
| 	LoadOrderIndex   uint16 | ||||
| 	InitOrderIndex   uint16 | ||||
| 	LoadCount        uint16 | ||||
| 	OffsetToFileName uint16 | ||||
| 	FullPathName     [256]byte | ||||
| } | ||||
|  | ||||
| type RTL_PROCESS_MODULES struct { | ||||
| 	NumberOfModules uint32 | ||||
| 	Modules         [1]RTL_PROCESS_MODULE_INFORMATION | ||||
| } | ||||
|  | ||||
| // Constants for LocalAlloc flags. | ||||
| const ( | ||||
| 	LMEM_FIXED          = 0x0 | ||||
| @@ -2700,6 +3023,22 @@ var ( | ||||
| 	RT_MANIFEST     ResourceID = 24 | ||||
| ) | ||||
|  | ||||
| type VS_FIXEDFILEINFO struct { | ||||
| 	Signature        uint32 | ||||
| 	StrucVersion     uint32 | ||||
| 	FileVersionMS    uint32 | ||||
| 	FileVersionLS    uint32 | ||||
| 	ProductVersionMS uint32 | ||||
| 	ProductVersionLS uint32 | ||||
| 	FileFlagsMask    uint32 | ||||
| 	FileFlags        uint32 | ||||
| 	FileOS           uint32 | ||||
| 	FileType         uint32 | ||||
| 	FileSubtype      uint32 | ||||
| 	FileDateMS       uint32 | ||||
| 	FileDateLS       uint32 | ||||
| } | ||||
|  | ||||
| type COAUTHIDENTITY struct { | ||||
| 	User           *uint16 | ||||
| 	UserLength     uint32 | ||||
| @@ -2773,3 +3112,9 @@ const ( | ||||
|  | ||||
| // Flag for QueryFullProcessImageName. | ||||
| const PROCESS_NAME_NATIVE = 1 | ||||
|  | ||||
| type ModuleInfo struct { | ||||
| 	BaseOfDll   uintptr | ||||
| 	SizeOfImage uint32 | ||||
| 	EntryPoint  uintptr | ||||
| } | ||||
|   | ||||
							
								
								
									
										217
									
								
								vendor/golang.org/x/sys/windows/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										217
									
								
								vendor/golang.org/x/sys/windows/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -51,6 +51,7 @@ var ( | ||||
| 	modshell32  = NewLazySystemDLL("shell32.dll") | ||||
| 	moduser32   = NewLazySystemDLL("user32.dll") | ||||
| 	moduserenv  = NewLazySystemDLL("userenv.dll") | ||||
| 	modversion  = NewLazySystemDLL("version.dll") | ||||
| 	modwintrust = NewLazySystemDLL("wintrust.dll") | ||||
| 	modws2_32   = NewLazySystemDLL("ws2_32.dll") | ||||
| 	modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") | ||||
| @@ -114,6 +115,7 @@ var ( | ||||
| 	procOpenThreadToken                                      = modadvapi32.NewProc("OpenThreadToken") | ||||
| 	procQueryServiceConfig2W                                 = modadvapi32.NewProc("QueryServiceConfig2W") | ||||
| 	procQueryServiceConfigW                                  = modadvapi32.NewProc("QueryServiceConfigW") | ||||
| 	procQueryServiceDynamicInformation                       = modadvapi32.NewProc("QueryServiceDynamicInformation") | ||||
| 	procQueryServiceLockStatusW                              = modadvapi32.NewProc("QueryServiceLockStatusW") | ||||
| 	procQueryServiceStatus                                   = modadvapi32.NewProc("QueryServiceStatus") | ||||
| 	procQueryServiceStatusEx                                 = modadvapi32.NewProc("QueryServiceStatusEx") | ||||
| @@ -124,6 +126,7 @@ var ( | ||||
| 	procRegQueryInfoKeyW                                     = modadvapi32.NewProc("RegQueryInfoKeyW") | ||||
| 	procRegQueryValueExW                                     = modadvapi32.NewProc("RegQueryValueExW") | ||||
| 	procRegisterEventSourceW                                 = modadvapi32.NewProc("RegisterEventSourceW") | ||||
| 	procRegisterServiceCtrlHandlerExW                        = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW") | ||||
| 	procReportEventW                                         = modadvapi32.NewProc("ReportEventW") | ||||
| 	procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf") | ||||
| 	procSetEntriesInAclW                                     = modadvapi32.NewProc("SetEntriesInAclW") | ||||
| @@ -303,6 +306,7 @@ var ( | ||||
| 	procReadConsoleW                                         = modkernel32.NewProc("ReadConsoleW") | ||||
| 	procReadDirectoryChangesW                                = modkernel32.NewProc("ReadDirectoryChangesW") | ||||
| 	procReadFile                                             = modkernel32.NewProc("ReadFile") | ||||
| 	procReadProcessMemory                                    = modkernel32.NewProc("ReadProcessMemory") | ||||
| 	procReleaseMutex                                         = modkernel32.NewProc("ReleaseMutex") | ||||
| 	procRemoveDirectoryW                                     = modkernel32.NewProc("RemoveDirectoryW") | ||||
| 	procResetEvent                                           = modkernel32.NewProc("ResetEvent") | ||||
| @@ -345,11 +349,16 @@ var ( | ||||
| 	procVirtualFree                                          = modkernel32.NewProc("VirtualFree") | ||||
| 	procVirtualLock                                          = modkernel32.NewProc("VirtualLock") | ||||
| 	procVirtualProtect                                       = modkernel32.NewProc("VirtualProtect") | ||||
| 	procVirtualProtectEx                                     = modkernel32.NewProc("VirtualProtectEx") | ||||
| 	procVirtualQuery                                         = modkernel32.NewProc("VirtualQuery") | ||||
| 	procVirtualQueryEx                                       = modkernel32.NewProc("VirtualQueryEx") | ||||
| 	procVirtualUnlock                                        = modkernel32.NewProc("VirtualUnlock") | ||||
| 	procWTSGetActiveConsoleSessionId                         = modkernel32.NewProc("WTSGetActiveConsoleSessionId") | ||||
| 	procWaitForMultipleObjects                               = modkernel32.NewProc("WaitForMultipleObjects") | ||||
| 	procWaitForSingleObject                                  = modkernel32.NewProc("WaitForSingleObject") | ||||
| 	procWriteConsoleW                                        = modkernel32.NewProc("WriteConsoleW") | ||||
| 	procWriteFile                                            = modkernel32.NewProc("WriteFile") | ||||
| 	procWriteProcessMemory                                   = modkernel32.NewProc("WriteProcessMemory") | ||||
| 	procAcceptEx                                             = modmswsock.NewProc("AcceptEx") | ||||
| 	procGetAcceptExSockaddrs                                 = modmswsock.NewProc("GetAcceptExSockaddrs") | ||||
| 	procTransmitFile                                         = modmswsock.NewProc("TransmitFile") | ||||
| @@ -359,8 +368,13 @@ var ( | ||||
| 	procNtCreateFile                                         = modntdll.NewProc("NtCreateFile") | ||||
| 	procNtCreateNamedPipeFile                                = modntdll.NewProc("NtCreateNamedPipeFile") | ||||
| 	procNtQueryInformationProcess                            = modntdll.NewProc("NtQueryInformationProcess") | ||||
| 	procNtQuerySystemInformation                             = modntdll.NewProc("NtQuerySystemInformation") | ||||
| 	procNtSetInformationFile                                 = modntdll.NewProc("NtSetInformationFile") | ||||
| 	procNtSetInformationProcess                              = modntdll.NewProc("NtSetInformationProcess") | ||||
| 	procNtSetSystemInformation                               = modntdll.NewProc("NtSetSystemInformation") | ||||
| 	procRtlAddFunctionTable                                  = modntdll.NewProc("RtlAddFunctionTable") | ||||
| 	procRtlDefaultNpAcl                                      = modntdll.NewProc("RtlDefaultNpAcl") | ||||
| 	procRtlDeleteFunctionTable                               = modntdll.NewProc("RtlDeleteFunctionTable") | ||||
| 	procRtlDosPathNameToNtPathName_U_WithStatus              = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus") | ||||
| 	procRtlDosPathNameToRelativeNtPathName_U_WithStatus      = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus") | ||||
| 	procRtlGetCurrentPeb                                     = modntdll.NewProc("RtlGetCurrentPeb") | ||||
| @@ -376,7 +390,12 @@ var ( | ||||
| 	procCoTaskMemFree                                        = modole32.NewProc("CoTaskMemFree") | ||||
| 	procCoUninitialize                                       = modole32.NewProc("CoUninitialize") | ||||
| 	procStringFromGUID2                                      = modole32.NewProc("StringFromGUID2") | ||||
| 	procEnumProcessModules                                   = modpsapi.NewProc("EnumProcessModules") | ||||
| 	procEnumProcessModulesEx                                 = modpsapi.NewProc("EnumProcessModulesEx") | ||||
| 	procEnumProcesses                                        = modpsapi.NewProc("EnumProcesses") | ||||
| 	procGetModuleBaseNameW                                   = modpsapi.NewProc("GetModuleBaseNameW") | ||||
| 	procGetModuleFileNameExW                                 = modpsapi.NewProc("GetModuleFileNameExW") | ||||
| 	procGetModuleInformation                                 = modpsapi.NewProc("GetModuleInformation") | ||||
| 	procSubscribeServiceChangeNotifications                  = modsechost.NewProc("SubscribeServiceChangeNotifications") | ||||
| 	procUnsubscribeServiceChangeNotifications                = modsechost.NewProc("UnsubscribeServiceChangeNotifications") | ||||
| 	procGetUserNameExW                                       = modsecur32.NewProc("GetUserNameExW") | ||||
| @@ -391,6 +410,9 @@ var ( | ||||
| 	procCreateEnvironmentBlock                               = moduserenv.NewProc("CreateEnvironmentBlock") | ||||
| 	procDestroyEnvironmentBlock                              = moduserenv.NewProc("DestroyEnvironmentBlock") | ||||
| 	procGetUserProfileDirectoryW                             = moduserenv.NewProc("GetUserProfileDirectoryW") | ||||
| 	procGetFileVersionInfoSizeW                              = modversion.NewProc("GetFileVersionInfoSizeW") | ||||
| 	procGetFileVersionInfoW                                  = modversion.NewProc("GetFileVersionInfoW") | ||||
| 	procVerQueryValueW                                       = modversion.NewProc("VerQueryValueW") | ||||
| 	procWinVerifyTrustEx                                     = modwintrust.NewProc("WinVerifyTrustEx") | ||||
| 	procFreeAddrInfoW                                        = modws2_32.NewProc("FreeAddrInfoW") | ||||
| 	procGetAddrInfoW                                         = modws2_32.NewProc("GetAddrInfoW") | ||||
| @@ -955,6 +977,18 @@ func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, buf | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) { | ||||
| 	err = procQueryServiceDynamicInformation.Find() | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall(procQueryServiceDynamicInformation.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo)) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| @@ -1044,6 +1078,15 @@ func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Hand | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context)) | ||||
| 	handle = Handle(r0) | ||||
| 	if handle == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) | ||||
| 	if r1 == 0 { | ||||
| @@ -2630,6 +2673,14 @@ func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) ( | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func ReleaseMutex(mutex Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| @@ -2984,6 +3035,30 @@ func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func VirtualUnlock(addr uintptr, length uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) | ||||
| 	if r1 == 0 { | ||||
| @@ -2992,6 +3067,12 @@ func VirtualUnlock(addr uintptr, length uintptr) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func WTSGetActiveConsoleSessionId() (sessionID uint32) { | ||||
| 	r0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0) | ||||
| 	sessionID = uint32(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { | ||||
| 	var _p0 uint32 | ||||
| 	if waitAll { | ||||
| @@ -3034,6 +3115,14 @@ func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) | ||||
| 	if r1 == 0 { | ||||
| @@ -3103,6 +3192,22 @@ func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) { | ||||
| 	r0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| 		ntstatus = NTStatus(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) { | ||||
| 	r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0) | ||||
| 	if r0 != 0 { | ||||
| 		ntstatus = NTStatus(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) { | ||||
| 	r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| @@ -3111,6 +3216,20 @@ func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.P | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) { | ||||
| 	r0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen)) | ||||
| 	if r0 != 0 { | ||||
| 		ntstatus = NTStatus(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress)) | ||||
| 	ret = r0 != 0 | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| @@ -3119,6 +3238,12 @@ func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) { | ||||
| 	r0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0) | ||||
| 	ret = r0 != 0 | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { | ||||
| 	r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| @@ -3218,6 +3343,22 @@ func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { | ||||
| 	var _p0 *uint32 | ||||
| 	if len(processIds) > 0 { | ||||
| @@ -3230,6 +3371,30 @@ func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { | ||||
| 	ret = procSubscribeServiceChangeNotifications.Find() | ||||
| 	if ret != nil { | ||||
| @@ -3352,6 +3517,58 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(filename) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _GetFileVersionInfoSize(_p0, zeroHandle) | ||||
| } | ||||
|  | ||||
| func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0) | ||||
| 	bufSize = uint32(r0) | ||||
| 	if bufSize == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(filename) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _GetFileVersionInfo(_p0, handle, bufSize, buffer) | ||||
| } | ||||
|  | ||||
| func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(subBlock) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize) | ||||
| } | ||||
|  | ||||
| func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { | ||||
| 	r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) | ||||
| 	if r0 != 0 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tonis Tiigi
					Tonis Tiigi