mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	Use golang.org/x/sys/execabs
Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
		
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/windows/dll_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/windows/dll_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -32,6 +32,8 @@ type DLLError struct { | ||||
|  | ||||
| func (e *DLLError) Error() string { return e.Msg } | ||||
|  | ||||
| func (e *DLLError) Unwrap() error { return e.Err } | ||||
|  | ||||
| // A DLL implements access to a single DLL. | ||||
| type DLL struct { | ||||
| 	Name   string | ||||
| @@ -389,7 +391,6 @@ func loadLibraryEx(name string, system bool) (*DLL, error) { | ||||
| 	var flags uintptr | ||||
| 	if system { | ||||
| 		if canDoSearchSystem32() { | ||||
| 			const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 | ||||
| 			flags = LOAD_LIBRARY_SEARCH_SYSTEM32 | ||||
| 		} else if isBaseName(name) { | ||||
| 			// WindowsXP or unpatched Windows machine | ||||
|   | ||||
							
								
								
									
										20
									
								
								vendor/golang.org/x/sys/windows/memory_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/golang.org/x/sys/windows/memory_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,13 +16,19 @@ const ( | ||||
| 	MEM_RESET_UNDO  = 0x01000000 | ||||
| 	MEM_LARGE_PAGES = 0x20000000 | ||||
|  | ||||
| 	PAGE_NOACCESS          = 0x01 | ||||
| 	PAGE_READONLY          = 0x02 | ||||
| 	PAGE_READWRITE         = 0x04 | ||||
| 	PAGE_WRITECOPY         = 0x08 | ||||
| 	PAGE_EXECUTE_READ      = 0x20 | ||||
| 	PAGE_EXECUTE_READWRITE = 0x40 | ||||
| 	PAGE_EXECUTE_WRITECOPY = 0x80 | ||||
| 	PAGE_NOACCESS          = 0x00000001 | ||||
| 	PAGE_READONLY          = 0x00000002 | ||||
| 	PAGE_READWRITE         = 0x00000004 | ||||
| 	PAGE_WRITECOPY         = 0x00000008 | ||||
| 	PAGE_EXECUTE           = 0x00000010 | ||||
| 	PAGE_EXECUTE_READ      = 0x00000020 | ||||
| 	PAGE_EXECUTE_READWRITE = 0x00000040 | ||||
| 	PAGE_EXECUTE_WRITECOPY = 0x00000080 | ||||
| 	PAGE_GUARD             = 0x00000100 | ||||
| 	PAGE_NOCACHE           = 0x00000200 | ||||
| 	PAGE_WRITECOMBINE      = 0x00000400 | ||||
| 	PAGE_TARGETS_INVALID   = 0x40000000 | ||||
| 	PAGE_TARGETS_NO_UPDATE = 0x40000000 | ||||
|  | ||||
| 	QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002 | ||||
| 	QUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001 | ||||
|   | ||||
							
								
								
									
										14
									
								
								vendor/golang.org/x/sys/windows/security_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/sys/windows/security_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -624,6 +624,7 @@ func (tml *Tokenmandatorylabel) Size() uint32 { | ||||
|  | ||||
| // Authorization Functions | ||||
| //sys	checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership | ||||
| //sys	isTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted | ||||
| //sys	OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken | ||||
| //sys	OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken | ||||
| //sys	ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf | ||||
| @@ -837,6 +838,16 @@ func (t Token) IsMember(sid *SID) (bool, error) { | ||||
| 	return b != 0, nil | ||||
| } | ||||
|  | ||||
| // IsRestricted reports whether the access token t is a restricted token. | ||||
| func (t Token) IsRestricted() (isRestricted bool, err error) { | ||||
| 	isRestricted, err = isTokenRestricted(t) | ||||
| 	if !isRestricted && err == syscall.EINVAL { | ||||
| 		// If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token. | ||||
| 		err = nil | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	WTS_CONSOLE_CONNECT        = 0x1 | ||||
| 	WTS_CONSOLE_DISCONNECT     = 0x2 | ||||
| @@ -1103,9 +1114,10 @@ type OBJECTS_AND_NAME struct { | ||||
| } | ||||
|  | ||||
| //sys	getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo | ||||
| //sys	SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) = advapi32.SetSecurityInfo | ||||
| //sys	SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo | ||||
| //sys	getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW | ||||
| //sys	SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW | ||||
| //sys	SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity | ||||
|  | ||||
| //sys	buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW | ||||
| //sys	initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/golang.org/x/sys/windows/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/golang.org/x/sys/windows/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -128,6 +128,10 @@ const ( | ||||
| 	SERVICE_NOTIFY_CREATED          = 0x00000080 | ||||
| 	SERVICE_NOTIFY_DELETED          = 0x00000100 | ||||
| 	SERVICE_NOTIFY_DELETE_PENDING   = 0x00000200 | ||||
|  | ||||
| 	SC_EVENT_DATABASE_CHANGE = 0 | ||||
| 	SC_EVENT_PROPERTY_CHANGE = 1 | ||||
| 	SC_EVENT_STATUS_CHANGE   = 2 | ||||
| ) | ||||
|  | ||||
| type SERVICE_STATUS struct { | ||||
| @@ -229,3 +233,5 @@ type QUERY_SERVICE_LOCK_STATUS struct { | ||||
| //sys	EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW | ||||
| //sys	QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx | ||||
| //sys	NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW | ||||
| //sys	SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications? | ||||
| //sys	UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications? | ||||
|   | ||||
							
								
								
									
										100
									
								
								vendor/golang.org/x/sys/windows/setupapierrors_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								vendor/golang.org/x/sys/windows/setupapierrors_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package windows | ||||
|  | ||||
| import "syscall" | ||||
|  | ||||
| const ( | ||||
| 	ERROR_EXPECTED_SECTION_NAME                  syscall.Errno = 0x20000000 | 0xC0000000 | 0 | ||||
| 	ERROR_BAD_SECTION_NAME_LINE                  syscall.Errno = 0x20000000 | 0xC0000000 | 1 | ||||
| 	ERROR_SECTION_NAME_TOO_LONG                  syscall.Errno = 0x20000000 | 0xC0000000 | 2 | ||||
| 	ERROR_GENERAL_SYNTAX                         syscall.Errno = 0x20000000 | 0xC0000000 | 3 | ||||
| 	ERROR_WRONG_INF_STYLE                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x100 | ||||
| 	ERROR_SECTION_NOT_FOUND                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x101 | ||||
| 	ERROR_LINE_NOT_FOUND                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x102 | ||||
| 	ERROR_NO_BACKUP                              syscall.Errno = 0x20000000 | 0xC0000000 | 0x103 | ||||
| 	ERROR_NO_ASSOCIATED_CLASS                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x200 | ||||
| 	ERROR_CLASS_MISMATCH                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x201 | ||||
| 	ERROR_DUPLICATE_FOUND                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x202 | ||||
| 	ERROR_NO_DRIVER_SELECTED                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x203 | ||||
| 	ERROR_KEY_DOES_NOT_EXIST                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x204 | ||||
| 	ERROR_INVALID_DEVINST_NAME                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x205 | ||||
| 	ERROR_INVALID_CLASS                          syscall.Errno = 0x20000000 | 0xC0000000 | 0x206 | ||||
| 	ERROR_DEVINST_ALREADY_EXISTS                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x207 | ||||
| 	ERROR_DEVINFO_NOT_REGISTERED                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x208 | ||||
| 	ERROR_INVALID_REG_PROPERTY                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x209 | ||||
| 	ERROR_NO_INF                                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x20A | ||||
| 	ERROR_NO_SUCH_DEVINST                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x20B | ||||
| 	ERROR_CANT_LOAD_CLASS_ICON                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x20C | ||||
| 	ERROR_INVALID_CLASS_INSTALLER                syscall.Errno = 0x20000000 | 0xC0000000 | 0x20D | ||||
| 	ERROR_DI_DO_DEFAULT                          syscall.Errno = 0x20000000 | 0xC0000000 | 0x20E | ||||
| 	ERROR_DI_NOFILECOPY                          syscall.Errno = 0x20000000 | 0xC0000000 | 0x20F | ||||
| 	ERROR_INVALID_HWPROFILE                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x210 | ||||
| 	ERROR_NO_DEVICE_SELECTED                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x211 | ||||
| 	ERROR_DEVINFO_LIST_LOCKED                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x212 | ||||
| 	ERROR_DEVINFO_DATA_LOCKED                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x213 | ||||
| 	ERROR_DI_BAD_PATH                            syscall.Errno = 0x20000000 | 0xC0000000 | 0x214 | ||||
| 	ERROR_NO_CLASSINSTALL_PARAMS                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x215 | ||||
| 	ERROR_FILEQUEUE_LOCKED                       syscall.Errno = 0x20000000 | 0xC0000000 | 0x216 | ||||
| 	ERROR_BAD_SERVICE_INSTALLSECT                syscall.Errno = 0x20000000 | 0xC0000000 | 0x217 | ||||
| 	ERROR_NO_CLASS_DRIVER_LIST                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x218 | ||||
| 	ERROR_NO_ASSOCIATED_SERVICE                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x219 | ||||
| 	ERROR_NO_DEFAULT_DEVICE_INTERFACE            syscall.Errno = 0x20000000 | 0xC0000000 | 0x21A | ||||
| 	ERROR_DEVICE_INTERFACE_ACTIVE                syscall.Errno = 0x20000000 | 0xC0000000 | 0x21B | ||||
| 	ERROR_DEVICE_INTERFACE_REMOVED               syscall.Errno = 0x20000000 | 0xC0000000 | 0x21C | ||||
| 	ERROR_BAD_INTERFACE_INSTALLSECT              syscall.Errno = 0x20000000 | 0xC0000000 | 0x21D | ||||
| 	ERROR_NO_SUCH_INTERFACE_CLASS                syscall.Errno = 0x20000000 | 0xC0000000 | 0x21E | ||||
| 	ERROR_INVALID_REFERENCE_STRING               syscall.Errno = 0x20000000 | 0xC0000000 | 0x21F | ||||
| 	ERROR_INVALID_MACHINENAME                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x220 | ||||
| 	ERROR_REMOTE_COMM_FAILURE                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x221 | ||||
| 	ERROR_MACHINE_UNAVAILABLE                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x222 | ||||
| 	ERROR_NO_CONFIGMGR_SERVICES                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x223 | ||||
| 	ERROR_INVALID_PROPPAGE_PROVIDER              syscall.Errno = 0x20000000 | 0xC0000000 | 0x224 | ||||
| 	ERROR_NO_SUCH_DEVICE_INTERFACE               syscall.Errno = 0x20000000 | 0xC0000000 | 0x225 | ||||
| 	ERROR_DI_POSTPROCESSING_REQUIRED             syscall.Errno = 0x20000000 | 0xC0000000 | 0x226 | ||||
| 	ERROR_INVALID_COINSTALLER                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x227 | ||||
| 	ERROR_NO_COMPAT_DRIVERS                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x228 | ||||
| 	ERROR_NO_DEVICE_ICON                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x229 | ||||
| 	ERROR_INVALID_INF_LOGCONFIG                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x22A | ||||
| 	ERROR_DI_DONT_INSTALL                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x22B | ||||
| 	ERROR_INVALID_FILTER_DRIVER                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x22C | ||||
| 	ERROR_NON_WINDOWS_NT_DRIVER                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x22D | ||||
| 	ERROR_NON_WINDOWS_DRIVER                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x22E | ||||
| 	ERROR_NO_CATALOG_FOR_OEM_INF                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x22F | ||||
| 	ERROR_DEVINSTALL_QUEUE_NONNATIVE             syscall.Errno = 0x20000000 | 0xC0000000 | 0x230 | ||||
| 	ERROR_NOT_DISABLEABLE                        syscall.Errno = 0x20000000 | 0xC0000000 | 0x231 | ||||
| 	ERROR_CANT_REMOVE_DEVINST                    syscall.Errno = 0x20000000 | 0xC0000000 | 0x232 | ||||
| 	ERROR_INVALID_TARGET                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x233 | ||||
| 	ERROR_DRIVER_NONNATIVE                       syscall.Errno = 0x20000000 | 0xC0000000 | 0x234 | ||||
| 	ERROR_IN_WOW64                               syscall.Errno = 0x20000000 | 0xC0000000 | 0x235 | ||||
| 	ERROR_SET_SYSTEM_RESTORE_POINT               syscall.Errno = 0x20000000 | 0xC0000000 | 0x236 | ||||
| 	ERROR_SCE_DISABLED                           syscall.Errno = 0x20000000 | 0xC0000000 | 0x238 | ||||
| 	ERROR_UNKNOWN_EXCEPTION                      syscall.Errno = 0x20000000 | 0xC0000000 | 0x239 | ||||
| 	ERROR_PNP_REGISTRY_ERROR                     syscall.Errno = 0x20000000 | 0xC0000000 | 0x23A | ||||
| 	ERROR_REMOTE_REQUEST_UNSUPPORTED             syscall.Errno = 0x20000000 | 0xC0000000 | 0x23B | ||||
| 	ERROR_NOT_AN_INSTALLED_OEM_INF               syscall.Errno = 0x20000000 | 0xC0000000 | 0x23C | ||||
| 	ERROR_INF_IN_USE_BY_DEVICES                  syscall.Errno = 0x20000000 | 0xC0000000 | 0x23D | ||||
| 	ERROR_DI_FUNCTION_OBSOLETE                   syscall.Errno = 0x20000000 | 0xC0000000 | 0x23E | ||||
| 	ERROR_NO_AUTHENTICODE_CATALOG                syscall.Errno = 0x20000000 | 0xC0000000 | 0x23F | ||||
| 	ERROR_AUTHENTICODE_DISALLOWED                syscall.Errno = 0x20000000 | 0xC0000000 | 0x240 | ||||
| 	ERROR_AUTHENTICODE_TRUSTED_PUBLISHER         syscall.Errno = 0x20000000 | 0xC0000000 | 0x241 | ||||
| 	ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     syscall.Errno = 0x20000000 | 0xC0000000 | 0x242 | ||||
| 	ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     syscall.Errno = 0x20000000 | 0xC0000000 | 0x243 | ||||
| 	ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         syscall.Errno = 0x20000000 | 0xC0000000 | 0x244 | ||||
| 	ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         syscall.Errno = 0x20000000 | 0xC0000000 | 0x245 | ||||
| 	ERROR_DEVICE_INSTALLER_NOT_READY             syscall.Errno = 0x20000000 | 0xC0000000 | 0x246 | ||||
| 	ERROR_DRIVER_STORE_ADD_FAILED                syscall.Errno = 0x20000000 | 0xC0000000 | 0x247 | ||||
| 	ERROR_DEVICE_INSTALL_BLOCKED                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x248 | ||||
| 	ERROR_DRIVER_INSTALL_BLOCKED                 syscall.Errno = 0x20000000 | 0xC0000000 | 0x249 | ||||
| 	ERROR_WRONG_INF_TYPE                         syscall.Errno = 0x20000000 | 0xC0000000 | 0x24A | ||||
| 	ERROR_FILE_HASH_NOT_IN_CATALOG               syscall.Errno = 0x20000000 | 0xC0000000 | 0x24B | ||||
| 	ERROR_DRIVER_STORE_DELETE_FAILED             syscall.Errno = 0x20000000 | 0xC0000000 | 0x24C | ||||
| 	ERROR_UNRECOVERABLE_STACK_OVERFLOW           syscall.Errno = 0x20000000 | 0xC0000000 | 0x300 | ||||
| 	EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW syscall.Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW | ||||
| 	ERROR_NO_DEFAULT_INTERFACE_DEVICE            syscall.Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE | ||||
| 	ERROR_INTERFACE_DEVICE_ACTIVE                syscall.Errno = ERROR_DEVICE_INTERFACE_ACTIVE | ||||
| 	ERROR_INTERFACE_DEVICE_REMOVED               syscall.Errno = ERROR_DEVICE_INTERFACE_REMOVED | ||||
| 	ERROR_NO_SUCH_INTERFACE_DEVICE               syscall.Errno = ERROR_NO_SUCH_DEVICE_INTERFACE | ||||
| ) | ||||
							
								
								
									
										46
									
								
								vendor/golang.org/x/sys/windows/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								vendor/golang.org/x/sys/windows/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -25,17 +25,20 @@ | ||||
| package windows // import "golang.org/x/sys/windows" | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"strings" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/internal/unsafeheader" | ||||
| ) | ||||
|  | ||||
| // ByteSliceFromString returns a NUL-terminated slice of bytes | ||||
| // containing the text of s. If s contains a NUL byte at any | ||||
| // location, it returns (nil, syscall.EINVAL). | ||||
| func ByteSliceFromString(s string) ([]byte, error) { | ||||
| 	for i := 0; i < len(s); i++ { | ||||
| 		if s[i] == 0 { | ||||
| 			return nil, syscall.EINVAL | ||||
| 		} | ||||
| 	if strings.IndexByte(s, 0) != -1 { | ||||
| 		return nil, syscall.EINVAL | ||||
| 	} | ||||
| 	a := make([]byte, len(s)+1) | ||||
| 	copy(a, s) | ||||
| @@ -53,6 +56,41 @@ func BytePtrFromString(s string) (*byte, error) { | ||||
| 	return &a[0], nil | ||||
| } | ||||
|  | ||||
| // ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any | ||||
| // bytes after the NUL removed. | ||||
| func ByteSliceToString(s []byte) string { | ||||
| 	if i := bytes.IndexByte(s, 0); i != -1 { | ||||
| 		s = s[:i] | ||||
| 	} | ||||
| 	return string(s) | ||||
| } | ||||
|  | ||||
| // BytePtrToString takes a pointer to a sequence of text and returns the corresponding string. | ||||
| // If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated | ||||
| // at a zero byte; if the zero byte is not present, the program may crash. | ||||
| func BytePtrToString(p *byte) string { | ||||
| 	if p == nil { | ||||
| 		return "" | ||||
| 	} | ||||
| 	if *p == 0 { | ||||
| 		return "" | ||||
| 	} | ||||
|  | ||||
| 	// Find NUL terminator. | ||||
| 	n := 0 | ||||
| 	for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { | ||||
| 		ptr = unsafe.Pointer(uintptr(ptr) + 1) | ||||
| 	} | ||||
|  | ||||
| 	var s []byte | ||||
| 	h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) | ||||
| 	h.Data = unsafe.Pointer(p) | ||||
| 	h.Len = n | ||||
| 	h.Cap = n | ||||
|  | ||||
| 	return string(s) | ||||
| } | ||||
|  | ||||
| // Single-word zero for use when we need a valid pointer to 0 bytes. | ||||
| // See mksyscall.pl. | ||||
| var _zero uintptr | ||||
|   | ||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/windows/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/windows/syscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,6 +18,7 @@ import ( | ||||
| ) | ||||
|  | ||||
| type Handle uintptr | ||||
| type HWND uintptr | ||||
|  | ||||
| const ( | ||||
| 	InvalidHandle = ^Handle(0) | ||||
| @@ -92,11 +93,11 @@ func UTF16FromString(s string) ([]uint16, error) { | ||||
| } | ||||
|  | ||||
| // UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, | ||||
| // with a terminating NUL removed. | ||||
| // with a terminating NUL and any bytes after the NUL removed. | ||||
| func UTF16ToString(s []uint16) string { | ||||
| 	for i, v := range s { | ||||
| 		if v == 0 { | ||||
| 			s = s[0:i] | ||||
| 			s = s[:i] | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| @@ -120,7 +121,7 @@ func UTF16PtrFromString(s string) (*uint16, error) { | ||||
| } | ||||
|  | ||||
| // UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string. | ||||
| // If the pointer is nil, this returns the empty string. This assumes that the UTF-16 sequence is terminated | ||||
| // If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated | ||||
| // at a zero word; if the zero word is not present, the program may crash. | ||||
| func UTF16PtrToString(p *uint16) string { | ||||
| 	if p == nil { | ||||
| @@ -170,10 +171,13 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	GetProcAddress(module Handle, procname string) (proc uintptr, err error) | ||||
| //sys	GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW | ||||
| //sys	GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW | ||||
| //sys	SetDefaultDllDirectories(directoryFlags uint32) (err error) | ||||
| //sys	SetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW | ||||
| //sys	GetVersion() (ver uint32, err error) | ||||
| //sys	FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW | ||||
| //sys	ExitProcess(exitcode uint32) | ||||
| //sys	IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process | ||||
| //sys	IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2? | ||||
| //sys	CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW | ||||
| //sys	ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) | ||||
| //sys	WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) | ||||
| @@ -187,6 +191,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	FindClose(handle Handle) (err error) | ||||
| //sys	GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) | ||||
| //sys	GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) | ||||
| //sys	SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) | ||||
| //sys	GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW | ||||
| //sys	SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW | ||||
| //sys	CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW | ||||
| @@ -210,6 +215,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW | ||||
| //sys	OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) | ||||
| //sys	ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW | ||||
| //sys	GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32) = user32.GetWindowThreadProcessId | ||||
| //sys	GetShellWindow() (shellWindow HWND) = user32.GetShellWindow | ||||
| //sys	MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW | ||||
| //sys	ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx | ||||
| //sys	shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath | ||||
| //sys	TerminateProcess(handle Handle, exitcode uint32) (err error) | ||||
| //sys	GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) | ||||
| @@ -243,6 +252,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW | ||||
| //sys	GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW | ||||
| //sys	GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW | ||||
| //sys	GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW | ||||
| //sys	CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW | ||||
| //sys	MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) | ||||
| //sys	UnmapViewOfFile(addr uintptr) (err error) | ||||
| @@ -255,10 +265,13 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //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	CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW | ||||
| //sys   CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore | ||||
| //sys   CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore | ||||
| //sys	CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore | ||||
| //sys   CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore | ||||
| //sys	CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore | ||||
| //sys	CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore | ||||
| //sys	CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext | ||||
| //sys   PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore | ||||
| //sys   CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain | ||||
| //sys   CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain | ||||
| //sys   CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext | ||||
| @@ -269,12 +282,13 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW | ||||
| //sys	RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW | ||||
| //sys	RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW | ||||
| //sys	RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue | ||||
| //sys	GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId | ||||
| //sys	ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId | ||||
| //sys	GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode | ||||
| //sys	SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode | ||||
| //sys	GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo | ||||
| //sys	SetConsoleCursorPosition(console Handle, position Coord) (err error) = kernel32.SetConsoleCursorPosition | ||||
| //sys	setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition | ||||
| //sys	WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW | ||||
| //sys	ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW | ||||
| //sys	CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot | ||||
| @@ -335,8 +349,6 @@ func NewCallbackCDecl(fn interface{}) uintptr { | ||||
| //sys	QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW | ||||
| //sys	SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW | ||||
| //sys	SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW | ||||
| //sys	MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW | ||||
| //sys	ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx | ||||
| //sys	InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW | ||||
| //sys	SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters | ||||
| //sys	GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters | ||||
| @@ -1478,3 +1490,7 @@ func getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf | ||||
| 		return languages, nil | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func SetConsoleCursorPosition(console Handle, position Coord) error { | ||||
| 	return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position)))) | ||||
| } | ||||
|   | ||||
							
								
								
									
										125
									
								
								vendor/golang.org/x/sys/windows/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										125
									
								
								vendor/golang.org/x/sys/windows/types_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -249,24 +249,27 @@ const ( | ||||
|  | ||||
| const ( | ||||
| 	// wincrypt.h | ||||
| 	PROV_RSA_FULL                    = 1 | ||||
| 	PROV_RSA_SIG                     = 2 | ||||
| 	PROV_DSS                         = 3 | ||||
| 	PROV_FORTEZZA                    = 4 | ||||
| 	PROV_MS_EXCHANGE                 = 5 | ||||
| 	PROV_SSL                         = 6 | ||||
| 	PROV_RSA_SCHANNEL                = 12 | ||||
| 	PROV_DSS_DH                      = 13 | ||||
| 	PROV_EC_ECDSA_SIG                = 14 | ||||
| 	PROV_EC_ECNRA_SIG                = 15 | ||||
| 	PROV_EC_ECDSA_FULL               = 16 | ||||
| 	PROV_EC_ECNRA_FULL               = 17 | ||||
| 	PROV_DH_SCHANNEL                 = 18 | ||||
| 	PROV_SPYRUS_LYNKS                = 20 | ||||
| 	PROV_RNG                         = 21 | ||||
| 	PROV_INTEL_SEC                   = 22 | ||||
| 	PROV_REPLACE_OWF                 = 23 | ||||
| 	PROV_RSA_AES                     = 24 | ||||
| 	/* certenrolld_begin -- PROV_RSA_*/ | ||||
| 	PROV_RSA_FULL      = 1 | ||||
| 	PROV_RSA_SIG       = 2 | ||||
| 	PROV_DSS           = 3 | ||||
| 	PROV_FORTEZZA      = 4 | ||||
| 	PROV_MS_EXCHANGE   = 5 | ||||
| 	PROV_SSL           = 6 | ||||
| 	PROV_RSA_SCHANNEL  = 12 | ||||
| 	PROV_DSS_DH        = 13 | ||||
| 	PROV_EC_ECDSA_SIG  = 14 | ||||
| 	PROV_EC_ECNRA_SIG  = 15 | ||||
| 	PROV_EC_ECDSA_FULL = 16 | ||||
| 	PROV_EC_ECNRA_FULL = 17 | ||||
| 	PROV_DH_SCHANNEL   = 18 | ||||
| 	PROV_SPYRUS_LYNKS  = 20 | ||||
| 	PROV_RNG           = 21 | ||||
| 	PROV_INTEL_SEC     = 22 | ||||
| 	PROV_REPLACE_OWF   = 23 | ||||
| 	PROV_RSA_AES       = 24 | ||||
|  | ||||
| 	/* dwFlags definitions for CryptAcquireContext */ | ||||
| 	CRYPT_VERIFYCONTEXT              = 0xF0000000 | ||||
| 	CRYPT_NEWKEYSET                  = 0x00000008 | ||||
| 	CRYPT_DELETEKEYSET               = 0x00000010 | ||||
| @@ -274,6 +277,17 @@ const ( | ||||
| 	CRYPT_SILENT                     = 0x00000040 | ||||
| 	CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 | ||||
|  | ||||
| 	/* Flags for PFXImportCertStore */ | ||||
| 	CRYPT_EXPORTABLE                   = 0x00000001 | ||||
| 	CRYPT_USER_PROTECTED               = 0x00000002 | ||||
| 	CRYPT_USER_KEYSET                  = 0x00001000 | ||||
| 	PKCS12_PREFER_CNG_KSP              = 0x00000100 | ||||
| 	PKCS12_ALWAYS_CNG_KSP              = 0x00000200 | ||||
| 	PKCS12_ALLOW_OVERWRITE_KEY         = 0x00004000 | ||||
| 	PKCS12_NO_PERSIST_KEY              = 0x00008000 | ||||
| 	PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 | ||||
|  | ||||
| 	/* Default usage match type is AND with value zero */ | ||||
| 	USAGE_MATCH_TYPE_AND = 0 | ||||
| 	USAGE_MATCH_TYPE_OR  = 1 | ||||
|  | ||||
| @@ -409,6 +423,10 @@ const ( | ||||
| 	CERT_CHAIN_POLICY_EV                = 8 | ||||
| 	CERT_CHAIN_POLICY_SSL_F12           = 9 | ||||
|  | ||||
| 	/* Certificate Store close flags */ | ||||
| 	CERT_CLOSE_STORE_FORCE_FLAG = 0x00000001 | ||||
| 	CERT_CLOSE_STORE_CHECK_FLAG = 0x00000002 | ||||
|  | ||||
| 	/* AuthType values for SSLExtraCertChainPolicyPara struct */ | ||||
| 	AUTHTYPE_CLIENT = 1 | ||||
| 	AUTHTYPE_SERVER = 2 | ||||
| @@ -1139,6 +1157,11 @@ type CertChainPolicyStatus struct { | ||||
| 	ExtraPolicyStatus Pointer | ||||
| } | ||||
|  | ||||
| type CryptDataBlob struct { | ||||
| 	Size uint32 | ||||
| 	Data *byte | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	// do not reorder | ||||
| 	HKEY_CLASSES_ROOT = 0x80000000 + iota | ||||
| @@ -1772,3 +1795,69 @@ const ( | ||||
| 	MUI_LANGUAGE_INSTALLED = 0x20 | ||||
| 	MUI_LANGUAGE_LICENSED  = 0x40 | ||||
| ) | ||||
|  | ||||
| // FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx | ||||
| const ( | ||||
| 	FileBasicInfo                  = 0 | ||||
| 	FileStandardInfo               = 1 | ||||
| 	FileNameInfo                   = 2 | ||||
| 	FileRenameInfo                 = 3 | ||||
| 	FileDispositionInfo            = 4 | ||||
| 	FileAllocationInfo             = 5 | ||||
| 	FileEndOfFileInfo              = 6 | ||||
| 	FileStreamInfo                 = 7 | ||||
| 	FileCompressionInfo            = 8 | ||||
| 	FileAttributeTagInfo           = 9 | ||||
| 	FileIdBothDirectoryInfo        = 10 | ||||
| 	FileIdBothDirectoryRestartInfo = 11 | ||||
| 	FileIoPriorityHintInfo         = 12 | ||||
| 	FileRemoteProtocolInfo         = 13 | ||||
| 	FileFullDirectoryInfo          = 14 | ||||
| 	FileFullDirectoryRestartInfo   = 15 | ||||
| 	FileStorageInfo                = 16 | ||||
| 	FileAlignmentInfo              = 17 | ||||
| 	FileIdInfo                     = 18 | ||||
| 	FileIdExtdDirectoryInfo        = 19 | ||||
| 	FileIdExtdDirectoryRestartInfo = 20 | ||||
| 	FileDispositionInfoEx          = 21 | ||||
| 	FileRenameInfoEx               = 22 | ||||
| 	FileCaseSensitiveInfo          = 23 | ||||
| 	FileNormalizedNameInfo         = 24 | ||||
| ) | ||||
|  | ||||
| // LoadLibrary flags for determining from where to search for a DLL | ||||
| const ( | ||||
| 	DONT_RESOLVE_DLL_REFERENCES               = 0x1 | ||||
| 	LOAD_LIBRARY_AS_DATAFILE                  = 0x2 | ||||
| 	LOAD_WITH_ALTERED_SEARCH_PATH             = 0x8 | ||||
| 	LOAD_IGNORE_CODE_AUTHZ_LEVEL              = 0x10 | ||||
| 	LOAD_LIBRARY_AS_IMAGE_RESOURCE            = 0x20 | ||||
| 	LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE        = 0x40 | ||||
| 	LOAD_LIBRARY_REQUIRE_SIGNED_TARGET        = 0x80 | ||||
| 	LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR          = 0x100 | ||||
| 	LOAD_LIBRARY_SEARCH_APPLICATION_DIR       = 0x200 | ||||
| 	LOAD_LIBRARY_SEARCH_USER_DIRS             = 0x400 | ||||
| 	LOAD_LIBRARY_SEARCH_SYSTEM32              = 0x800 | ||||
| 	LOAD_LIBRARY_SEARCH_DEFAULT_DIRS          = 0x1000 | ||||
| 	LOAD_LIBRARY_SAFE_CURRENT_DIRS            = 0x00002000 | ||||
| 	LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000 | ||||
| 	LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY      = 0x00008000 | ||||
| ) | ||||
|  | ||||
| // RegNotifyChangeKeyValue notifyFilter flags. | ||||
| const ( | ||||
| 	// REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted. | ||||
| 	REG_NOTIFY_CHANGE_NAME = 0x00000001 | ||||
|  | ||||
| 	// REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information. | ||||
| 	REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 | ||||
|  | ||||
| 	// REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value. | ||||
| 	REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 | ||||
|  | ||||
| 	// REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key. | ||||
| 	REG_NOTIFY_CHANGE_SECURITY = 0x00000008 | ||||
|  | ||||
| 	// REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later. | ||||
| 	REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000 | ||||
| ) | ||||
|   | ||||
							
								
								
									
										177
									
								
								vendor/golang.org/x/sys/windows/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										177
									
								
								vendor/golang.org/x/sys/windows/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -17,6 +17,7 @@ const ( | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| 	errERROR_EINVAL     error = syscall.EINVAL | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| @@ -24,7 +25,7 @@ var ( | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return syscall.EINVAL | ||||
| 		return errERROR_EINVAL | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| @@ -45,6 +46,7 @@ var ( | ||||
| 	modntdll    = NewLazySystemDLL("ntdll.dll") | ||||
| 	modole32    = NewLazySystemDLL("ole32.dll") | ||||
| 	modpsapi    = NewLazySystemDLL("psapi.dll") | ||||
| 	modsechost  = NewLazySystemDLL("sechost.dll") | ||||
| 	modsecur32  = NewLazySystemDLL("secur32.dll") | ||||
| 	modshell32  = NewLazySystemDLL("shell32.dll") | ||||
| 	moduser32   = NewLazySystemDLL("user32.dll") | ||||
| @@ -94,6 +96,7 @@ var ( | ||||
| 	procImpersonateSelf                                      = modadvapi32.NewProc("ImpersonateSelf") | ||||
| 	procInitializeSecurityDescriptor                         = modadvapi32.NewProc("InitializeSecurityDescriptor") | ||||
| 	procInitiateSystemShutdownExW                            = modadvapi32.NewProc("InitiateSystemShutdownExW") | ||||
| 	procIsTokenRestricted                                    = modadvapi32.NewProc("IsTokenRestricted") | ||||
| 	procIsValidSecurityDescriptor                            = modadvapi32.NewProc("IsValidSecurityDescriptor") | ||||
| 	procIsValidSid                                           = modadvapi32.NewProc("IsValidSid") | ||||
| 	procIsWellKnownSid                                       = modadvapi32.NewProc("IsWellKnownSid") | ||||
| @@ -114,6 +117,7 @@ var ( | ||||
| 	procQueryServiceStatusEx                                 = modadvapi32.NewProc("QueryServiceStatusEx") | ||||
| 	procRegCloseKey                                          = modadvapi32.NewProc("RegCloseKey") | ||||
| 	procRegEnumKeyExW                                        = modadvapi32.NewProc("RegEnumKeyExW") | ||||
| 	procRegNotifyChangeKeyValue                              = modadvapi32.NewProc("RegNotifyChangeKeyValue") | ||||
| 	procRegOpenKeyExW                                        = modadvapi32.NewProc("RegOpenKeyExW") | ||||
| 	procRegQueryInfoKeyW                                     = modadvapi32.NewProc("RegQueryInfoKeyW") | ||||
| 	procRegQueryValueExW                                     = modadvapi32.NewProc("RegQueryValueExW") | ||||
| @@ -121,6 +125,7 @@ var ( | ||||
| 	procReportEventW                                         = modadvapi32.NewProc("ReportEventW") | ||||
| 	procRevertToSelf                                         = modadvapi32.NewProc("RevertToSelf") | ||||
| 	procSetEntriesInAclW                                     = modadvapi32.NewProc("SetEntriesInAclW") | ||||
| 	procSetKernelObjectSecurity                              = modadvapi32.NewProc("SetKernelObjectSecurity") | ||||
| 	procSetNamedSecurityInfoW                                = modadvapi32.NewProc("SetNamedSecurityInfoW") | ||||
| 	procSetSecurityDescriptorControl                         = modadvapi32.NewProc("SetSecurityDescriptorControl") | ||||
| 	procSetSecurityDescriptorDacl                            = modadvapi32.NewProc("SetSecurityDescriptorDacl") | ||||
| @@ -137,6 +142,8 @@ var ( | ||||
| 	procCertAddCertificateContextToStore                     = modcrypt32.NewProc("CertAddCertificateContextToStore") | ||||
| 	procCertCloseStore                                       = modcrypt32.NewProc("CertCloseStore") | ||||
| 	procCertCreateCertificateContext                         = modcrypt32.NewProc("CertCreateCertificateContext") | ||||
| 	procCertDeleteCertificateFromStore                       = modcrypt32.NewProc("CertDeleteCertificateFromStore") | ||||
| 	procCertDuplicateCertificateContext                      = modcrypt32.NewProc("CertDuplicateCertificateContext") | ||||
| 	procCertEnumCertificatesInStore                          = modcrypt32.NewProc("CertEnumCertificatesInStore") | ||||
| 	procCertFreeCertificateChain                             = modcrypt32.NewProc("CertFreeCertificateChain") | ||||
| 	procCertFreeCertificateContext                           = modcrypt32.NewProc("CertFreeCertificateContext") | ||||
| @@ -144,6 +151,7 @@ var ( | ||||
| 	procCertOpenStore                                        = modcrypt32.NewProc("CertOpenStore") | ||||
| 	procCertOpenSystemStoreW                                 = modcrypt32.NewProc("CertOpenSystemStoreW") | ||||
| 	procCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") | ||||
| 	procPFXImportCertStore                                   = modcrypt32.NewProc("PFXImportCertStore") | ||||
| 	procDnsNameCompare_W                                     = moddnsapi.NewProc("DnsNameCompare_W") | ||||
| 	procDnsQuery_W                                           = moddnsapi.NewProc("DnsQuery_W") | ||||
| 	procDnsRecordListFree                                    = moddnsapi.NewProc("DnsRecordListFree") | ||||
| @@ -208,6 +216,7 @@ var ( | ||||
| 	procGetFileInformationByHandle                           = modkernel32.NewProc("GetFileInformationByHandle") | ||||
| 	procGetFileInformationByHandleEx                         = modkernel32.NewProc("GetFileInformationByHandleEx") | ||||
| 	procGetFileType                                          = modkernel32.NewProc("GetFileType") | ||||
| 	procGetFinalPathNameByHandleW                            = modkernel32.NewProc("GetFinalPathNameByHandleW") | ||||
| 	procGetFullPathNameW                                     = modkernel32.NewProc("GetFullPathNameW") | ||||
| 	procGetLastError                                         = modkernel32.NewProc("GetLastError") | ||||
| 	procGetLogicalDriveStringsW                              = modkernel32.NewProc("GetLogicalDriveStringsW") | ||||
| @@ -245,6 +254,7 @@ var ( | ||||
| 	procGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") | ||||
| 	procGetWindowsDirectoryW                                 = modkernel32.NewProc("GetWindowsDirectoryW") | ||||
| 	procIsWow64Process                                       = modkernel32.NewProc("IsWow64Process") | ||||
| 	procIsWow64Process2                                      = modkernel32.NewProc("IsWow64Process2") | ||||
| 	procLoadLibraryExW                                       = modkernel32.NewProc("LoadLibraryExW") | ||||
| 	procLoadLibraryW                                         = modkernel32.NewProc("LoadLibraryW") | ||||
| 	procLocalFree                                            = modkernel32.NewProc("LocalFree") | ||||
| @@ -274,12 +284,15 @@ var ( | ||||
| 	procSetConsoleCursorPosition                             = modkernel32.NewProc("SetConsoleCursorPosition") | ||||
| 	procSetConsoleMode                                       = modkernel32.NewProc("SetConsoleMode") | ||||
| 	procSetCurrentDirectoryW                                 = modkernel32.NewProc("SetCurrentDirectoryW") | ||||
| 	procSetDefaultDllDirectories                             = modkernel32.NewProc("SetDefaultDllDirectories") | ||||
| 	procSetDllDirectoryW                                     = modkernel32.NewProc("SetDllDirectoryW") | ||||
| 	procSetEndOfFile                                         = modkernel32.NewProc("SetEndOfFile") | ||||
| 	procSetEnvironmentVariableW                              = modkernel32.NewProc("SetEnvironmentVariableW") | ||||
| 	procSetErrorMode                                         = modkernel32.NewProc("SetErrorMode") | ||||
| 	procSetEvent                                             = modkernel32.NewProc("SetEvent") | ||||
| 	procSetFileAttributesW                                   = modkernel32.NewProc("SetFileAttributesW") | ||||
| 	procSetFileCompletionNotificationModes                   = modkernel32.NewProc("SetFileCompletionNotificationModes") | ||||
| 	procSetFileInformationByHandle                           = modkernel32.NewProc("SetFileInformationByHandle") | ||||
| 	procSetFilePointer                                       = modkernel32.NewProc("SetFilePointer") | ||||
| 	procSetFileTime                                          = modkernel32.NewProc("SetFileTime") | ||||
| 	procSetHandleInformation                                 = modkernel32.NewProc("SetHandleInformation") | ||||
| @@ -320,12 +333,16 @@ var ( | ||||
| 	procCoTaskMemFree                                        = modole32.NewProc("CoTaskMemFree") | ||||
| 	procStringFromGUID2                                      = modole32.NewProc("StringFromGUID2") | ||||
| 	procEnumProcesses                                        = modpsapi.NewProc("EnumProcesses") | ||||
| 	procSubscribeServiceChangeNotifications                  = modsechost.NewProc("SubscribeServiceChangeNotifications") | ||||
| 	procUnsubscribeServiceChangeNotifications                = modsechost.NewProc("UnsubscribeServiceChangeNotifications") | ||||
| 	procGetUserNameExW                                       = modsecur32.NewProc("GetUserNameExW") | ||||
| 	procTranslateNameW                                       = modsecur32.NewProc("TranslateNameW") | ||||
| 	procCommandLineToArgvW                                   = modshell32.NewProc("CommandLineToArgvW") | ||||
| 	procSHGetKnownFolderPath                                 = modshell32.NewProc("SHGetKnownFolderPath") | ||||
| 	procShellExecuteW                                        = modshell32.NewProc("ShellExecuteW") | ||||
| 	procExitWindowsEx                                        = moduser32.NewProc("ExitWindowsEx") | ||||
| 	procGetShellWindow                                       = moduser32.NewProc("GetShellWindow") | ||||
| 	procGetWindowThreadProcessId                             = moduser32.NewProc("GetWindowThreadProcessId") | ||||
| 	procMessageBoxW                                          = moduser32.NewProc("MessageBoxW") | ||||
| 	procCreateEnvironmentBlock                               = moduserenv.NewProc("CreateEnvironmentBlock") | ||||
| 	procDestroyEnvironmentBlock                              = moduserenv.NewProc("DestroyEnvironmentBlock") | ||||
| @@ -750,6 +767,15 @@ func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func isTokenRestricted(tokenHandle Token) (ret bool, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0) | ||||
| 	ret = r0 != 0 | ||||
| 	if !ret { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { | ||||
| 	r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) | ||||
| 	isValid = r0 != 0 | ||||
| @@ -910,6 +936,22 @@ func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reser | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) { | ||||
| 	var _p0 uint32 | ||||
| 	if watchSubtree { | ||||
| 		_p0 = 1 | ||||
| 	} | ||||
| 	var _p1 uint32 | ||||
| 	if asynchronous { | ||||
| 		_p1 = 1 | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall6(procRegNotifyChangeKeyValue.Addr(), 5, uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1), 0) | ||||
| 	if r0 != 0 { | ||||
| 		regerrno = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { | ||||
| 	r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) | ||||
| 	if r0 != 0 { | ||||
| @@ -967,6 +1009,14 @@ func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCE | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, ret = syscall.UTF16PtrFromString(objectName) | ||||
| @@ -1053,8 +1103,11 @@ func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl * | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) { | ||||
| 	syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) | ||||
| func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { | ||||
| 	r0, _, _ := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) | ||||
| 	if r0 != 0 { | ||||
| 		ret = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| @@ -1123,6 +1176,20 @@ func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, en | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func CertDeleteCertificateFromStore(certContext *CertContext) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) { | ||||
| 	r0, _, _ := syscall.Syscall(procCertDuplicateCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) | ||||
| 	dupContext = (*CertContext)(unsafe.Pointer(r0)) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) | ||||
| 	context = (*CertContext)(unsafe.Pointer(r0)) | ||||
| @@ -1156,7 +1223,7 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a | ||||
| func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) | ||||
| 	handle = Handle(r0) | ||||
| 	if handle == InvalidHandle { | ||||
| 	if handle == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| @@ -1179,6 +1246,15 @@ func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags)) | ||||
| 	store = Handle(r0) | ||||
| 	if store == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { | ||||
| 	r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) | ||||
| 	same = r0 != 0 | ||||
| @@ -1716,6 +1792,15 @@ func GetFileType(filehandle Handle) (n uint32, err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0) | ||||
| 	n = uint32(r0) | ||||
| 	if n == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0) | ||||
| 	n = uint32(r0) | ||||
| @@ -2035,6 +2120,18 @@ func IsWow64Process(handle Handle, isWow64 *bool) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) { | ||||
| 	err = procIsWow64Process2.Find() | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine))) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(libname) | ||||
| @@ -2296,8 +2393,8 @@ func ResumeThread(thread Handle) (ret uint32, err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetConsoleCursorPosition(console Handle, position Coord) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(*((*uint32)(unsafe.Pointer(&position)))), 0) | ||||
| func setConsoleCursorPosition(console Handle, position uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| @@ -2320,6 +2417,31 @@ func SetCurrentDirectory(path *uint16) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetDefaultDllDirectories(directoryFlags uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetDllDirectory(path string) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _SetDllDirectory(_p0) | ||||
| } | ||||
|  | ||||
| func _SetDllDirectory(path *uint16) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetEndOfFile(handle Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| @@ -2366,6 +2488,14 @@ func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), 0, 0) | ||||
| 	if r1 == 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0) | ||||
| 	newlowoffset = uint32(r0) | ||||
| @@ -2698,6 +2828,27 @@ func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { | ||||
| 	ret = procSubscribeServiceChangeNotifications.Find() | ||||
| 	if ret != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall6(procSubscribeServiceChangeNotifications.Addr(), 5, uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)), 0) | ||||
| 	if r0 != 0 { | ||||
| 		ret = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) { | ||||
| 	err = procUnsubscribeServiceChangeNotifications.Find() | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	syscall.Syscall(procUnsubscribeServiceChangeNotifications.Addr(), 1, uintptr(subscription), 0, 0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) | ||||
| 	if r1&0xff == 0 { | ||||
| @@ -2747,7 +2898,19 @@ func ExitWindowsEx(flags uint32, reason uint32) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { | ||||
| func GetShellWindow() (shellWindow HWND) { | ||||
| 	r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) | ||||
| 	shellWindow = HWND(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32) { | ||||
| 	r0, _, _ := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0) | ||||
| 	tid = uint32(r0) | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) | ||||
| 	ret = int32(r0) | ||||
| 	if ret == 0 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tibor Vass
					Tibor Vass