mirror of
https://github.com/docker/docker-credential-helpers.git
synced 2026-06-13 16:01:28 +05:30
vendor: golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64
update to latest version Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
@@ -4,5 +4,5 @@ go 1.18
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/danieljoos/wincred v1.1.2
|
github.com/danieljoos/wincred v1.1.2
|
||||||
golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c
|
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
|
|||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c h1:Lyn7+CqXIiC+LOR9aHD6jDK+hPcmAuCfuXztd1v4w1Q=
|
|
||||||
golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 h1:UiNENfZ8gDvpiWw7IpOMQ27spWmThO1RwwdQVbJahJM=
|
||||||
|
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
# This source code refers to The Go Authors for copyright purposes.
|
|
||||||
# The master list of authors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/AUTHORS.
|
|
||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
# This source code was written by the Go contributors.
|
|
||||||
# The master list of contributors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/CONTRIBUTORS.
|
|
||||||
+1
-1
@@ -53,7 +53,7 @@ func relError(file, path string) error {
|
|||||||
// LookPath instead returns an error.
|
// LookPath instead returns an error.
|
||||||
func LookPath(file string) (string, error) {
|
func LookPath(file string) (string, error) {
|
||||||
path, err := exec.LookPath(file)
|
path, err := exec.LookPath(file)
|
||||||
if err != nil {
|
if err != nil && !isGo119ErrDot(err) {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if filepath.Base(file) == file && !filepath.IsAbs(path) {
|
if filepath.Base(file) == file && !filepath.IsAbs(path) {
|
||||||
|
|||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build !go1.19
|
||||||
|
// +build !go1.19
|
||||||
|
|
||||||
|
package execabs
|
||||||
|
|
||||||
|
func isGo119ErrDot(err error) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build go1.19
|
||||||
|
// +build go1.19
|
||||||
|
|
||||||
|
package execabs
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
func isGo119ErrDot(err error) bool {
|
||||||
|
// TODO: return errors.Is(err, exec.ErrDot)
|
||||||
|
return strings.Contains(err.Error(), "current directory")
|
||||||
|
}
|
||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build windows
|
//go:build windows && go1.9
|
||||||
// +build go1.9
|
// +build windows,go1.9
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|
||||||
|
|||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|||||||
+10
-27
@@ -9,8 +9,6 @@ package windows
|
|||||||
import (
|
import (
|
||||||
errorspkg "errors"
|
errorspkg "errors"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/internal/unsafeheader"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// EscapeArg rewrites command line argument s as prescribed
|
// EscapeArg rewrites command line argument s as prescribed
|
||||||
@@ -147,8 +145,12 @@ func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListCo
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
alloc, err := LocalAlloc(LMEM_FIXED, uint32(size))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.
|
// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.
|
||||||
al := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(&make([]byte, size)[0]))}
|
al := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}
|
||||||
err = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)
|
err = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -157,36 +159,17 @@ func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.
|
// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.
|
||||||
// Note that the value passed to this function will be copied into memory
|
|
||||||
// allocated by LocalAlloc, the contents of which should not contain any
|
|
||||||
// Go-managed pointers, even if the passed value itself is a Go-managed
|
|
||||||
// pointer.
|
|
||||||
func (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {
|
func (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {
|
||||||
alloc, err := LocalAlloc(LMEM_FIXED, uint32(size))
|
al.pointers = append(al.pointers, value)
|
||||||
if err != nil {
|
return updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)
|
||||||
return err
|
|
||||||
}
|
|
||||||
var src, dst []byte
|
|
||||||
hdr := (*unsafeheader.Slice)(unsafe.Pointer(&src))
|
|
||||||
hdr.Data = value
|
|
||||||
hdr.Cap = int(size)
|
|
||||||
hdr.Len = int(size)
|
|
||||||
hdr = (*unsafeheader.Slice)(unsafe.Pointer(&dst))
|
|
||||||
hdr.Data = unsafe.Pointer(alloc)
|
|
||||||
hdr.Cap = int(size)
|
|
||||||
hdr.Len = int(size)
|
|
||||||
copy(dst, src)
|
|
||||||
al.heapAllocations = append(al.heapAllocations, alloc)
|
|
||||||
return updateProcThreadAttribute(al.data, 0, attribute, unsafe.Pointer(alloc), size, nil, nil)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete frees ProcThreadAttributeList's resources.
|
// Delete frees ProcThreadAttributeList's resources.
|
||||||
func (al *ProcThreadAttributeListContainer) Delete() {
|
func (al *ProcThreadAttributeListContainer) Delete() {
|
||||||
deleteProcThreadAttributeList(al.data)
|
deleteProcThreadAttributeList(al.data)
|
||||||
for i := range al.heapAllocations {
|
LocalFree(Handle(unsafe.Pointer(al.data)))
|
||||||
LocalFree(Handle(al.heapAllocations[i]))
|
al.data = nil
|
||||||
}
|
al.pointers = nil
|
||||||
al.heapAllocations = nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.
|
// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.
|
||||||
|
|||||||
+11
@@ -35,3 +35,14 @@ const (
|
|||||||
QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
|
QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
|
||||||
QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004
|
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
|
||||||
|
}
|
||||||
|
|||||||
+2
-1
@@ -2,8 +2,9 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build generate
|
||||||
// +build generate
|
// +build generate
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|
||||||
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go
|
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go
|
||||||
|
|||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows && race
|
||||||
// +build windows,race
|
// +build windows,race
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows && !race
|
||||||
// +build windows,!race
|
// +build windows,!race
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|||||||
+12
-2
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
@@ -16,8 +17,6 @@ const (
|
|||||||
SC_MANAGER_ALL_ACCESS = 0xf003f
|
SC_MANAGER_ALL_ACCESS = 0xf003f
|
||||||
)
|
)
|
||||||
|
|
||||||
//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SERVICE_KERNEL_DRIVER = 1
|
SERVICE_KERNEL_DRIVER = 1
|
||||||
SERVICE_FILE_SYSTEM_DRIVER = 2
|
SERVICE_FILE_SYSTEM_DRIVER = 2
|
||||||
@@ -132,6 +131,14 @@ const (
|
|||||||
SC_EVENT_DATABASE_CHANGE = 0
|
SC_EVENT_DATABASE_CHANGE = 0
|
||||||
SC_EVENT_PROPERTY_CHANGE = 1
|
SC_EVENT_PROPERTY_CHANGE = 1
|
||||||
SC_EVENT_STATUS_CHANGE = 2
|
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 {
|
type SERVICE_STATUS struct {
|
||||||
@@ -216,6 +223,7 @@ type QUERY_SERVICE_LOCK_STATUS struct {
|
|||||||
LockDuration uint32
|
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 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 CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW
|
||||||
//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW
|
//sys 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 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 SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?
|
||||||
//sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?
|
//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?
|
||||||
|
|||||||
+1425
File diff suppressed because it is too large
Load Diff
-100
@@ -1,100 +0,0 @@
|
|||||||
// 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
|
|
||||||
)
|
|
||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
package windows
|
package windows
|
||||||
|
|||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
// +build windows
|
// +build windows
|
||||||
|
|
||||||
// Package windows contains an interface to the low-level operating system
|
// Package windows contains an interface to the low-level operating system
|
||||||
|
|||||||
+159
-27
@@ -10,6 +10,7 @@ import (
|
|||||||
errorspkg "errors"
|
errorspkg "errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
@@ -86,11 +87,9 @@ func StringToUTF16(s string) []uint16 {
|
|||||||
// s, with a terminating NUL added. If s contains a NUL byte at any
|
// s, with a terminating NUL added. If s contains a NUL byte at any
|
||||||
// location, it returns (nil, syscall.EINVAL).
|
// location, it returns (nil, syscall.EINVAL).
|
||||||
func UTF16FromString(s string) ([]uint16, error) {
|
func UTF16FromString(s string) ([]uint16, error) {
|
||||||
for i := 0; i < len(s); i++ {
|
if strings.IndexByte(s, 0) != -1 {
|
||||||
if s[i] == 0 {
|
|
||||||
return nil, syscall.EINVAL
|
return nil, syscall.EINVAL
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return utf16.Encode([]rune(s + "\x00")), nil
|
return utf16.Encode([]rune(s + "\x00")), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,8 +185,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)
|
||||||
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW
|
||||||
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState
|
||||||
//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
|
//sys readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile
|
||||||
//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error)
|
//sys writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile
|
||||||
//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
|
//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)
|
||||||
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
|
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
|
||||||
//sys CloseHandle(handle Handle) (err error)
|
//sys CloseHandle(handle Handle) (err error)
|
||||||
@@ -248,6 +247,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
|
//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW
|
||||||
//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
|
//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW
|
||||||
//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
|
//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW
|
||||||
|
//sys ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW
|
||||||
//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock
|
//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock
|
||||||
//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock
|
//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock
|
||||||
//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64
|
//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64
|
||||||
@@ -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 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 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 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 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 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
|
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW
|
||||||
@@ -317,6 +322,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW
|
//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 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
|
//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot
|
||||||
|
//sys Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW
|
||||||
|
//sys Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW
|
||||||
//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
|
//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW
|
||||||
//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
|
//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW
|
||||||
//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)
|
//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)
|
||||||
@@ -355,6 +362,8 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)
|
//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)
|
||||||
//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
||||||
//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)
|
||||||
|
//sys GetActiveProcessorCount(groupNumber uint16) (ret uint32)
|
||||||
|
//sys GetMaximumProcessorCount(groupNumber uint16) (ret uint32)
|
||||||
|
|
||||||
// Volume Management Functions
|
// Volume Management Functions
|
||||||
//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW
|
//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW
|
||||||
@@ -396,8 +405,19 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource
|
//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource
|
||||||
//sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource
|
//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)
|
// Process Status API (PSAPI)
|
||||||
//sys EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses
|
//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
|
||||||
|
//sys QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx
|
||||||
|
|
||||||
// NT Native APIs
|
// NT Native APIs
|
||||||
//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb
|
//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb
|
||||||
@@ -408,11 +428,16 @@ func NewCallbackCDecl(fn interface{}) uintptr {
|
|||||||
//sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString
|
//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 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 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 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 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 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 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 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
|
// syscall interface implementation for other packages
|
||||||
|
|
||||||
@@ -524,12 +549,6 @@ func Read(fd Handle, p []byte) (n int, err error) {
|
|||||||
}
|
}
|
||||||
return 0, e
|
return 0, e
|
||||||
}
|
}
|
||||||
if raceenabled {
|
|
||||||
if done > 0 {
|
|
||||||
raceWriteRange(unsafe.Pointer(&p[0]), int(done))
|
|
||||||
}
|
|
||||||
raceAcquire(unsafe.Pointer(&ioSync))
|
|
||||||
}
|
|
||||||
return int(done), nil
|
return int(done), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -542,12 +561,31 @@ func Write(fd Handle, p []byte) (n int, err error) {
|
|||||||
if e != nil {
|
if e != nil {
|
||||||
return 0, e
|
return 0, e
|
||||||
}
|
}
|
||||||
if raceenabled && done > 0 {
|
|
||||||
raceReadRange(unsafe.Pointer(&p[0]), int(done))
|
|
||||||
}
|
|
||||||
return int(done), nil
|
return int(done), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||||
|
err := readFile(fd, p, done, overlapped)
|
||||||
|
if raceenabled {
|
||||||
|
if *done > 0 {
|
||||||
|
raceWriteRange(unsafe.Pointer(&p[0]), int(*done))
|
||||||
|
}
|
||||||
|
raceAcquire(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||||
|
if raceenabled {
|
||||||
|
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
err := writeFile(fd, p, done, overlapped)
|
||||||
|
if raceenabled && *done > 0 {
|
||||||
|
raceReadRange(unsafe.Pointer(&p[0]), int(*done))
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
var ioSync int64
|
var ioSync int64
|
||||||
|
|
||||||
func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
|
func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {
|
||||||
@@ -586,7 +624,6 @@ var (
|
|||||||
|
|
||||||
func getStdHandle(stdhandle uint32) (fd Handle) {
|
func getStdHandle(stdhandle uint32) (fd Handle) {
|
||||||
r, _ := GetStdHandle(stdhandle)
|
r, _ := GetStdHandle(stdhandle)
|
||||||
CloseOnExec(r)
|
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -825,6 +862,7 @@ const socket_error = uintptr(^uint32(0))
|
|||||||
//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
|
//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses
|
||||||
//sys GetACP() (acp uint32) = kernel32.GetACP
|
//sys GetACP() (acp uint32) = kernel32.GetACP
|
||||||
//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
|
//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar
|
||||||
|
//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx
|
||||||
|
|
||||||
// For testing: clients can set this flag to force
|
// For testing: clients can set this flag to force
|
||||||
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
// creation of IPv6 sockets to return EAFNOSUPPORT.
|
||||||
@@ -873,9 +911,7 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) {
|
|||||||
p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
|
p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
|
||||||
p[0] = byte(sa.Port >> 8)
|
p[0] = byte(sa.Port >> 8)
|
||||||
p[1] = byte(sa.Port)
|
p[1] = byte(sa.Port)
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.raw.Addr = sa.Addr
|
||||||
sa.raw.Addr[i] = sa.Addr[i]
|
|
||||||
}
|
|
||||||
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -895,9 +931,7 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {
|
|||||||
p[0] = byte(sa.Port >> 8)
|
p[0] = byte(sa.Port >> 8)
|
||||||
p[1] = byte(sa.Port)
|
p[1] = byte(sa.Port)
|
||||||
sa.raw.Scope_id = sa.ZoneId
|
sa.raw.Scope_id = sa.ZoneId
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.raw.Addr = sa.Addr
|
||||||
sa.raw.Addr[i] = sa.Addr[i]
|
|
||||||
}
|
|
||||||
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -938,6 +972,32 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {
|
|||||||
return unsafe.Pointer(&sa.raw), sl, nil
|
return unsafe.Pointer(&sa.raw), sl, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RawSockaddrBth struct {
|
||||||
|
AddressFamily [2]byte
|
||||||
|
BtAddr [8]byte
|
||||||
|
ServiceClassId [16]byte
|
||||||
|
Port [4]byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type SockaddrBth struct {
|
||||||
|
BtAddr uint64
|
||||||
|
ServiceClassId GUID
|
||||||
|
Port uint32
|
||||||
|
|
||||||
|
raw RawSockaddrBth
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) {
|
||||||
|
family := AF_BTH
|
||||||
|
sa.raw = RawSockaddrBth{
|
||||||
|
AddressFamily: *(*[2]byte)(unsafe.Pointer(&family)),
|
||||||
|
BtAddr: *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)),
|
||||||
|
Port: *(*[4]byte)(unsafe.Pointer(&sa.Port)),
|
||||||
|
ServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)),
|
||||||
|
}
|
||||||
|
return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil
|
||||||
|
}
|
||||||
|
|
||||||
func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
||||||
switch rsa.Addr.Family {
|
switch rsa.Addr.Family {
|
||||||
case AF_UNIX:
|
case AF_UNIX:
|
||||||
@@ -970,9 +1030,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
|||||||
sa := new(SockaddrInet4)
|
sa := new(SockaddrInet4)
|
||||||
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
||||||
sa.Port = int(p[0])<<8 + int(p[1])
|
sa.Port = int(p[0])<<8 + int(p[1])
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.Addr = pp.Addr
|
||||||
sa.Addr[i] = pp.Addr[i]
|
|
||||||
}
|
|
||||||
return sa, nil
|
return sa, nil
|
||||||
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
@@ -981,9 +1039,7 @@ func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {
|
|||||||
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
||||||
sa.Port = int(p[0])<<8 + int(p[1])
|
sa.Port = int(p[0])<<8 + int(p[1])
|
||||||
sa.ZoneId = pp.Scope_id
|
sa.ZoneId = pp.Scope_id
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
sa.Addr = pp.Addr
|
||||||
sa.Addr[i] = pp.Addr[i]
|
|
||||||
}
|
|
||||||
return sa, nil
|
return sa, nil
|
||||||
}
|
}
|
||||||
return nil, syscall.EAFNOSUPPORT
|
return nil, syscall.EAFNOSUPPORT
|
||||||
@@ -1017,6 +1073,14 @@ func Connect(fd Handle, sa Sockaddr) (err error) {
|
|||||||
return connect(fd, ptr, n)
|
return connect(fd, ptr, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) {
|
||||||
|
ptr, _, err := sa.sockaddr()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return getBestInterfaceEx(ptr, pdwBestIfIndex)
|
||||||
|
}
|
||||||
|
|
||||||
func Getsockname(fd Handle) (sa Sockaddr, err error) {
|
func Getsockname(fd Handle) (sa Sockaddr, err error) {
|
||||||
var rsa RawSockaddrAny
|
var rsa RawSockaddrAny
|
||||||
l := int32(unsafe.Sizeof(rsa))
|
l := int32(unsafe.Sizeof(rsa))
|
||||||
@@ -1670,3 +1734,71 @@ func LoadResourceData(module, resInfo Handle) (data []byte, err error) {
|
|||||||
h.Cap = int(size)
|
h.Cap = int(size)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.
|
||||||
|
type PSAPI_WORKING_SET_EX_BLOCK uint64
|
||||||
|
|
||||||
|
// Valid returns the validity of this page.
|
||||||
|
// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {
|
||||||
|
return (b & 1) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShareCount is the number of processes that share this page. The maximum value of this member is 7.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {
|
||||||
|
return b.intField(1, 3)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Win32Protection is the memory protection attributes of the page. For a list of values, see
|
||||||
|
// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {
|
||||||
|
return b.intField(4, 11)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shared returns the shared status of this page.
|
||||||
|
// If this bit is 1, the page can be shared.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {
|
||||||
|
return (b & (1 << 15)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Node is the NUMA node. The maximum value of this member is 63.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {
|
||||||
|
return b.intField(16, 6)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Locked returns the locked status of this page.
|
||||||
|
// If this bit is 1, the virtual page is locked in physical memory.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {
|
||||||
|
return (b & (1 << 22)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// LargePage returns the large page status of this page.
|
||||||
|
// If this bit is 1, the page is a large page.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {
|
||||||
|
return (b & (1 << 23)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bad returns the bad status of this page.
|
||||||
|
// If this bit is 1, the page is has been reported as bad.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {
|
||||||
|
return (b & (1 << 31)) == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.
|
||||||
|
func (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {
|
||||||
|
var mask PSAPI_WORKING_SET_EX_BLOCK
|
||||||
|
for pos := start; pos < start+length; pos++ {
|
||||||
|
mask |= (1 << pos)
|
||||||
|
}
|
||||||
|
|
||||||
|
masked := b & mask
|
||||||
|
return uint64(masked >> start)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.
|
||||||
|
type PSAPI_WORKING_SET_EX_INFORMATION struct {
|
||||||
|
// The virtual address.
|
||||||
|
VirtualAddress Pointer
|
||||||
|
// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.
|
||||||
|
VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK
|
||||||
|
}
|
||||||
|
|||||||
+445
-5
@@ -66,9 +66,21 @@ var signals = [...]string{
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
FILE_LIST_DIRECTORY = 0x00000001
|
FILE_READ_DATA = 0x00000001
|
||||||
FILE_APPEND_DATA = 0x00000004
|
FILE_READ_ATTRIBUTES = 0x00000080
|
||||||
|
FILE_READ_EA = 0x00000008
|
||||||
|
FILE_WRITE_DATA = 0x00000002
|
||||||
FILE_WRITE_ATTRIBUTES = 0x00000100
|
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_READ = 0x00000001
|
||||||
FILE_SHARE_WRITE = 0x00000002
|
FILE_SHARE_WRITE = 0x00000002
|
||||||
@@ -144,8 +156,14 @@ const (
|
|||||||
MAX_PATH = 260
|
MAX_PATH = 260
|
||||||
MAX_LONG_PATH = 32768
|
MAX_LONG_PATH = 32768
|
||||||
|
|
||||||
|
MAX_MODULE_NAME32 = 255
|
||||||
|
|
||||||
MAX_COMPUTERNAME_LENGTH = 15
|
MAX_COMPUTERNAME_LENGTH = 15
|
||||||
|
|
||||||
|
MAX_DHCPV6_DUID_LENGTH = 130
|
||||||
|
|
||||||
|
MAX_DNS_SUFFIX_STRING_LENGTH = 256
|
||||||
|
|
||||||
TIME_ZONE_ID_UNKNOWN = 0
|
TIME_ZONE_ID_UNKNOWN = 0
|
||||||
TIME_ZONE_ID_STANDARD = 1
|
TIME_ZONE_ID_STANDARD = 1
|
||||||
|
|
||||||
@@ -242,6 +260,14 @@ const (
|
|||||||
TH32CS_INHERIT = 0x80000000
|
TH32CS_INHERIT = 0x80000000
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// flags for EnumProcessModulesEx
|
||||||
|
LIST_MODULES_32BIT = 0x01
|
||||||
|
LIST_MODULES_64BIT = 0x02
|
||||||
|
LIST_MODULES_ALL = 0x03
|
||||||
|
LIST_MODULES_DEFAULT = 0x00
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW
|
||||||
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
FILE_NOTIFY_CHANGE_FILE_NAME = 0x001
|
||||||
@@ -917,7 +943,7 @@ type ProcThreadAttributeList struct{}
|
|||||||
|
|
||||||
type ProcThreadAttributeListContainer struct {
|
type ProcThreadAttributeListContainer struct {
|
||||||
data *ProcThreadAttributeList
|
data *ProcThreadAttributeList
|
||||||
heapAllocations []uintptr
|
pointers []unsafe.Pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProcessInformation struct {
|
type ProcessInformation struct {
|
||||||
@@ -950,6 +976,21 @@ type ThreadEntry32 struct {
|
|||||||
Flags uint32
|
Flags uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ModuleEntry32 struct {
|
||||||
|
Size uint32
|
||||||
|
ModuleID uint32
|
||||||
|
ProcessID uint32
|
||||||
|
GlblcntUsage uint32
|
||||||
|
ProccntUsage uint32
|
||||||
|
ModBaseAddr uintptr
|
||||||
|
ModBaseSize uint32
|
||||||
|
ModuleHandle Handle
|
||||||
|
Module [MAX_MODULE_NAME32 + 1]uint16
|
||||||
|
ExePath [MAX_PATH]uint16
|
||||||
|
}
|
||||||
|
|
||||||
|
const SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})
|
||||||
|
|
||||||
type Systemtime struct {
|
type Systemtime struct {
|
||||||
Year uint16
|
Year uint16
|
||||||
Month uint16
|
Month uint16
|
||||||
@@ -1781,7 +1822,53 @@ type reparseDataBuffer struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
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
|
MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024
|
||||||
IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
|
IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003
|
||||||
IO_REPARSE_TAG_SYMLINK = 0xA000000C
|
IO_REPARSE_TAG_SYMLINK = 0xA000000C
|
||||||
@@ -1937,7 +2024,42 @@ type IpAdapterAddresses struct {
|
|||||||
Ipv6IfIndex uint32
|
Ipv6IfIndex uint32
|
||||||
ZoneIndices [16]uint32
|
ZoneIndices [16]uint32
|
||||||
FirstPrefix *IpAdapterPrefix
|
FirstPrefix *IpAdapterPrefix
|
||||||
/* more fields might be present here. */
|
TransmitLinkSpeed uint64
|
||||||
|
ReceiveLinkSpeed uint64
|
||||||
|
FirstWinsServerAddress *IpAdapterWinsServerAddress
|
||||||
|
FirstGatewayAddress *IpAdapterGatewayAddress
|
||||||
|
Ipv4Metric uint32
|
||||||
|
Ipv6Metric uint32
|
||||||
|
Luid uint64
|
||||||
|
Dhcpv4Server SocketAddress
|
||||||
|
CompartmentId uint32
|
||||||
|
NetworkGuid GUID
|
||||||
|
ConnectionType uint32
|
||||||
|
TunnelType uint32
|
||||||
|
Dhcpv6Server SocketAddress
|
||||||
|
Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte
|
||||||
|
Dhcpv6ClientDuidLength uint32
|
||||||
|
Dhcpv6Iaid uint32
|
||||||
|
FirstDnsSuffix *IpAdapterDNSSuffix
|
||||||
|
}
|
||||||
|
|
||||||
|
type IpAdapterWinsServerAddress struct {
|
||||||
|
Length uint32
|
||||||
|
Reserved uint32
|
||||||
|
Next *IpAdapterWinsServerAddress
|
||||||
|
Address SocketAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
type IpAdapterGatewayAddress struct {
|
||||||
|
Length uint32
|
||||||
|
Reserved uint32
|
||||||
|
Next *IpAdapterGatewayAddress
|
||||||
|
Address SocketAddress
|
||||||
|
}
|
||||||
|
|
||||||
|
type IpAdapterDNSSuffix struct {
|
||||||
|
Next *IpAdapterDNSSuffix
|
||||||
|
String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -2300,6 +2422,12 @@ type LIST_ENTRY struct {
|
|||||||
Blink *LIST_ENTRY
|
Blink *LIST_ENTRY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RUNTIME_FUNCTION struct {
|
||||||
|
BeginAddress uint32
|
||||||
|
EndAddress uint32
|
||||||
|
UnwindData uint32
|
||||||
|
}
|
||||||
|
|
||||||
type LDR_DATA_TABLE_ENTRY struct {
|
type LDR_DATA_TABLE_ENTRY struct {
|
||||||
reserved1 [2]uintptr
|
reserved1 [2]uintptr
|
||||||
InMemoryOrderLinks LIST_ENTRY
|
InMemoryOrderLinks LIST_ENTRY
|
||||||
@@ -2490,6 +2618,60 @@ const (
|
|||||||
FILE_PIPE_SERVER_END = 0x00000001
|
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.
|
// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.
|
||||||
const (
|
const (
|
||||||
ProcessBasicInformation = iota
|
ProcessBasicInformation = iota
|
||||||
@@ -2606,6 +2788,240 @@ type PROCESS_BASIC_INFORMATION struct {
|
|||||||
InheritedFromUniqueProcessId uintptr
|
InheritedFromUniqueProcessId uintptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SYSTEM_PROCESS_INFORMATION struct {
|
||||||
|
NextEntryOffset uint32
|
||||||
|
NumberOfThreads uint32
|
||||||
|
WorkingSetPrivateSize int64
|
||||||
|
HardFaultCount uint32
|
||||||
|
NumberOfThreadsHighWatermark uint32
|
||||||
|
CycleTime uint64
|
||||||
|
CreateTime int64
|
||||||
|
UserTime int64
|
||||||
|
KernelTime int64
|
||||||
|
ImageName NTUnicodeString
|
||||||
|
BasePriority int32
|
||||||
|
UniqueProcessID uintptr
|
||||||
|
InheritedFromUniqueProcessID uintptr
|
||||||
|
HandleCount uint32
|
||||||
|
SessionID uint32
|
||||||
|
UniqueProcessKey *uint32
|
||||||
|
PeakVirtualSize uintptr
|
||||||
|
VirtualSize uintptr
|
||||||
|
PageFaultCount uint32
|
||||||
|
PeakWorkingSetSize uintptr
|
||||||
|
WorkingSetSize uintptr
|
||||||
|
QuotaPeakPagedPoolUsage uintptr
|
||||||
|
QuotaPagedPoolUsage uintptr
|
||||||
|
QuotaPeakNonPagedPoolUsage uintptr
|
||||||
|
QuotaNonPagedPoolUsage uintptr
|
||||||
|
PagefileUsage uintptr
|
||||||
|
PeakPagefileUsage uintptr
|
||||||
|
PrivatePageCount uintptr
|
||||||
|
ReadOperationCount int64
|
||||||
|
WriteOperationCount int64
|
||||||
|
OtherOperationCount int64
|
||||||
|
ReadTransferCount int64
|
||||||
|
WriteTransferCount int64
|
||||||
|
OtherTransferCount int64
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
// Constants for LocalAlloc flags.
|
||||||
const (
|
const (
|
||||||
LMEM_FIXED = 0x0
|
LMEM_FIXED = 0x0
|
||||||
@@ -2700,6 +3116,22 @@ var (
|
|||||||
RT_MANIFEST ResourceID = 24
|
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 {
|
type COAUTHIDENTITY struct {
|
||||||
User *uint16
|
User *uint16
|
||||||
UserLength uint32
|
UserLength uint32
|
||||||
@@ -2773,3 +3205,11 @@ const (
|
|||||||
|
|
||||||
// Flag for QueryFullProcessImageName.
|
// Flag for QueryFullProcessImageName.
|
||||||
const PROCESS_NAME_NATIVE = 1
|
const PROCESS_NAME_NATIVE = 1
|
||||||
|
|
||||||
|
type ModuleInfo struct {
|
||||||
|
BaseOfDll uintptr
|
||||||
|
SizeOfImage uint32
|
||||||
|
EntryPoint uintptr
|
||||||
|
}
|
||||||
|
|
||||||
|
const ALL_PROCESSOR_GROUPS = 0xFFFF
|
||||||
|
|||||||
+557
-2
@@ -36,6 +36,7 @@ func errnoErr(e syscall.Errno) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
modCfgMgr32 = NewLazySystemDLL("CfgMgr32.dll")
|
||||||
modadvapi32 = NewLazySystemDLL("advapi32.dll")
|
modadvapi32 = NewLazySystemDLL("advapi32.dll")
|
||||||
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
||||||
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
||||||
@@ -48,13 +49,19 @@ var (
|
|||||||
modpsapi = NewLazySystemDLL("psapi.dll")
|
modpsapi = NewLazySystemDLL("psapi.dll")
|
||||||
modsechost = NewLazySystemDLL("sechost.dll")
|
modsechost = NewLazySystemDLL("sechost.dll")
|
||||||
modsecur32 = NewLazySystemDLL("secur32.dll")
|
modsecur32 = NewLazySystemDLL("secur32.dll")
|
||||||
|
modsetupapi = NewLazySystemDLL("setupapi.dll")
|
||||||
modshell32 = NewLazySystemDLL("shell32.dll")
|
modshell32 = NewLazySystemDLL("shell32.dll")
|
||||||
moduser32 = NewLazySystemDLL("user32.dll")
|
moduser32 = NewLazySystemDLL("user32.dll")
|
||||||
moduserenv = NewLazySystemDLL("userenv.dll")
|
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||||
|
modversion = NewLazySystemDLL("version.dll")
|
||||||
modwintrust = NewLazySystemDLL("wintrust.dll")
|
modwintrust = NewLazySystemDLL("wintrust.dll")
|
||||||
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||||
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
modwtsapi32 = NewLazySystemDLL("wtsapi32.dll")
|
||||||
|
|
||||||
|
procCM_Get_DevNode_Status = modCfgMgr32.NewProc("CM_Get_DevNode_Status")
|
||||||
|
procCM_Get_Device_Interface_ListW = modCfgMgr32.NewProc("CM_Get_Device_Interface_ListW")
|
||||||
|
procCM_Get_Device_Interface_List_SizeW = modCfgMgr32.NewProc("CM_Get_Device_Interface_List_SizeW")
|
||||||
|
procCM_MapCrToWin32Err = modCfgMgr32.NewProc("CM_MapCrToWin32Err")
|
||||||
procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
|
procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups")
|
||||||
procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
|
procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges")
|
||||||
procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
|
procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid")
|
||||||
@@ -114,6 +121,7 @@ var (
|
|||||||
procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
|
procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken")
|
||||||
procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
|
procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W")
|
||||||
procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
|
procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW")
|
||||||
|
procQueryServiceDynamicInformation = modadvapi32.NewProc("QueryServiceDynamicInformation")
|
||||||
procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
|
procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW")
|
||||||
procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
|
procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus")
|
||||||
procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
|
procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx")
|
||||||
@@ -124,6 +132,7 @@ var (
|
|||||||
procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
|
procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW")
|
||||||
procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
|
procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW")
|
||||||
procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
||||||
|
procRegisterServiceCtrlHandlerExW = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW")
|
||||||
procReportEventW = modadvapi32.NewProc("ReportEventW")
|
procReportEventW = modadvapi32.NewProc("ReportEventW")
|
||||||
procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
|
procRevertToSelf = modadvapi32.NewProc("RevertToSelf")
|
||||||
procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW")
|
procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW")
|
||||||
@@ -168,6 +177,7 @@ var (
|
|||||||
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree")
|
||||||
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses")
|
||||||
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo")
|
||||||
|
procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx")
|
||||||
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
procGetIfEntry = modiphlpapi.NewProc("GetIfEntry")
|
||||||
procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject")
|
||||||
procCancelIo = modkernel32.NewProc("CancelIo")
|
procCancelIo = modkernel32.NewProc("CancelIo")
|
||||||
@@ -196,6 +206,7 @@ var (
|
|||||||
procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
|
procDeviceIoControl = modkernel32.NewProc("DeviceIoControl")
|
||||||
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
procDuplicateHandle = modkernel32.NewProc("DuplicateHandle")
|
||||||
procExitProcess = modkernel32.NewProc("ExitProcess")
|
procExitProcess = modkernel32.NewProc("ExitProcess")
|
||||||
|
procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW")
|
||||||
procFindClose = modkernel32.NewProc("FindClose")
|
procFindClose = modkernel32.NewProc("FindClose")
|
||||||
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification")
|
||||||
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW")
|
||||||
@@ -216,6 +227,7 @@ var (
|
|||||||
procFreeLibrary = modkernel32.NewProc("FreeLibrary")
|
procFreeLibrary = modkernel32.NewProc("FreeLibrary")
|
||||||
procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent")
|
||||||
procGetACP = modkernel32.NewProc("GetACP")
|
procGetACP = modkernel32.NewProc("GetACP")
|
||||||
|
procGetActiveProcessorCount = modkernel32.NewProc("GetActiveProcessorCount")
|
||||||
procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts")
|
procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts")
|
||||||
procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
|
procGetCommandLineW = modkernel32.NewProc("GetCommandLineW")
|
||||||
procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
|
procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW")
|
||||||
@@ -241,6 +253,7 @@ var (
|
|||||||
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
|
||||||
procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
|
procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
|
||||||
procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
|
procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW")
|
||||||
|
procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount")
|
||||||
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
|
procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW")
|
||||||
procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
|
procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW")
|
||||||
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW")
|
||||||
@@ -285,6 +298,8 @@ var (
|
|||||||
procLockFileEx = modkernel32.NewProc("LockFileEx")
|
procLockFileEx = modkernel32.NewProc("LockFileEx")
|
||||||
procLockResource = modkernel32.NewProc("LockResource")
|
procLockResource = modkernel32.NewProc("LockResource")
|
||||||
procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
|
procMapViewOfFile = modkernel32.NewProc("MapViewOfFile")
|
||||||
|
procModule32FirstW = modkernel32.NewProc("Module32FirstW")
|
||||||
|
procModule32NextW = modkernel32.NewProc("Module32NextW")
|
||||||
procMoveFileExW = modkernel32.NewProc("MoveFileExW")
|
procMoveFileExW = modkernel32.NewProc("MoveFileExW")
|
||||||
procMoveFileW = modkernel32.NewProc("MoveFileW")
|
procMoveFileW = modkernel32.NewProc("MoveFileW")
|
||||||
procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
|
procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar")
|
||||||
@@ -303,6 +318,7 @@ var (
|
|||||||
procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
|
procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
|
||||||
procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
|
procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
|
||||||
procReadFile = modkernel32.NewProc("ReadFile")
|
procReadFile = modkernel32.NewProc("ReadFile")
|
||||||
|
procReadProcessMemory = modkernel32.NewProc("ReadProcessMemory")
|
||||||
procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
|
procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
|
||||||
procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
|
procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
|
||||||
procResetEvent = modkernel32.NewProc("ResetEvent")
|
procResetEvent = modkernel32.NewProc("ResetEvent")
|
||||||
@@ -345,12 +361,16 @@ var (
|
|||||||
procVirtualFree = modkernel32.NewProc("VirtualFree")
|
procVirtualFree = modkernel32.NewProc("VirtualFree")
|
||||||
procVirtualLock = modkernel32.NewProc("VirtualLock")
|
procVirtualLock = modkernel32.NewProc("VirtualLock")
|
||||||
procVirtualProtect = modkernel32.NewProc("VirtualProtect")
|
procVirtualProtect = modkernel32.NewProc("VirtualProtect")
|
||||||
|
procVirtualProtectEx = modkernel32.NewProc("VirtualProtectEx")
|
||||||
|
procVirtualQuery = modkernel32.NewProc("VirtualQuery")
|
||||||
|
procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx")
|
||||||
procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
|
procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
|
||||||
procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId")
|
procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId")
|
||||||
procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
|
procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
|
||||||
procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
|
procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
|
||||||
procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
|
procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
|
||||||
procWriteFile = modkernel32.NewProc("WriteFile")
|
procWriteFile = modkernel32.NewProc("WriteFile")
|
||||||
|
procWriteProcessMemory = modkernel32.NewProc("WriteProcessMemory")
|
||||||
procAcceptEx = modmswsock.NewProc("AcceptEx")
|
procAcceptEx = modmswsock.NewProc("AcceptEx")
|
||||||
procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
|
procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
|
||||||
procTransmitFile = modmswsock.NewProc("TransmitFile")
|
procTransmitFile = modmswsock.NewProc("TransmitFile")
|
||||||
@@ -360,8 +380,13 @@ var (
|
|||||||
procNtCreateFile = modntdll.NewProc("NtCreateFile")
|
procNtCreateFile = modntdll.NewProc("NtCreateFile")
|
||||||
procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile")
|
procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile")
|
||||||
procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess")
|
procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess")
|
||||||
|
procNtQuerySystemInformation = modntdll.NewProc("NtQuerySystemInformation")
|
||||||
|
procNtSetInformationFile = modntdll.NewProc("NtSetInformationFile")
|
||||||
procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess")
|
procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess")
|
||||||
|
procNtSetSystemInformation = modntdll.NewProc("NtSetSystemInformation")
|
||||||
|
procRtlAddFunctionTable = modntdll.NewProc("RtlAddFunctionTable")
|
||||||
procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl")
|
procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl")
|
||||||
|
procRtlDeleteFunctionTable = modntdll.NewProc("RtlDeleteFunctionTable")
|
||||||
procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus")
|
procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus")
|
||||||
procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus")
|
procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus")
|
||||||
procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb")
|
procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb")
|
||||||
@@ -377,11 +402,45 @@ var (
|
|||||||
procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
procCoTaskMemFree = modole32.NewProc("CoTaskMemFree")
|
||||||
procCoUninitialize = modole32.NewProc("CoUninitialize")
|
procCoUninitialize = modole32.NewProc("CoUninitialize")
|
||||||
procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
procStringFromGUID2 = modole32.NewProc("StringFromGUID2")
|
||||||
|
procEnumProcessModules = modpsapi.NewProc("EnumProcessModules")
|
||||||
|
procEnumProcessModulesEx = modpsapi.NewProc("EnumProcessModulesEx")
|
||||||
procEnumProcesses = modpsapi.NewProc("EnumProcesses")
|
procEnumProcesses = modpsapi.NewProc("EnumProcesses")
|
||||||
|
procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW")
|
||||||
|
procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW")
|
||||||
|
procGetModuleInformation = modpsapi.NewProc("GetModuleInformation")
|
||||||
|
procQueryWorkingSetEx = modpsapi.NewProc("QueryWorkingSetEx")
|
||||||
procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications")
|
procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications")
|
||||||
procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications")
|
procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications")
|
||||||
procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
|
procGetUserNameExW = modsecur32.NewProc("GetUserNameExW")
|
||||||
procTranslateNameW = modsecur32.NewProc("TranslateNameW")
|
procTranslateNameW = modsecur32.NewProc("TranslateNameW")
|
||||||
|
procSetupDiBuildDriverInfoList = modsetupapi.NewProc("SetupDiBuildDriverInfoList")
|
||||||
|
procSetupDiCallClassInstaller = modsetupapi.NewProc("SetupDiCallClassInstaller")
|
||||||
|
procSetupDiCancelDriverInfoSearch = modsetupapi.NewProc("SetupDiCancelDriverInfoSearch")
|
||||||
|
procSetupDiClassGuidsFromNameExW = modsetupapi.NewProc("SetupDiClassGuidsFromNameExW")
|
||||||
|
procSetupDiClassNameFromGuidExW = modsetupapi.NewProc("SetupDiClassNameFromGuidExW")
|
||||||
|
procSetupDiCreateDeviceInfoListExW = modsetupapi.NewProc("SetupDiCreateDeviceInfoListExW")
|
||||||
|
procSetupDiCreateDeviceInfoW = modsetupapi.NewProc("SetupDiCreateDeviceInfoW")
|
||||||
|
procSetupDiDestroyDeviceInfoList = modsetupapi.NewProc("SetupDiDestroyDeviceInfoList")
|
||||||
|
procSetupDiDestroyDriverInfoList = modsetupapi.NewProc("SetupDiDestroyDriverInfoList")
|
||||||
|
procSetupDiEnumDeviceInfo = modsetupapi.NewProc("SetupDiEnumDeviceInfo")
|
||||||
|
procSetupDiEnumDriverInfoW = modsetupapi.NewProc("SetupDiEnumDriverInfoW")
|
||||||
|
procSetupDiGetClassDevsExW = modsetupapi.NewProc("SetupDiGetClassDevsExW")
|
||||||
|
procSetupDiGetClassInstallParamsW = modsetupapi.NewProc("SetupDiGetClassInstallParamsW")
|
||||||
|
procSetupDiGetDeviceInfoListDetailW = modsetupapi.NewProc("SetupDiGetDeviceInfoListDetailW")
|
||||||
|
procSetupDiGetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiGetDeviceInstallParamsW")
|
||||||
|
procSetupDiGetDeviceInstanceIdW = modsetupapi.NewProc("SetupDiGetDeviceInstanceIdW")
|
||||||
|
procSetupDiGetDevicePropertyW = modsetupapi.NewProc("SetupDiGetDevicePropertyW")
|
||||||
|
procSetupDiGetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiGetDeviceRegistryPropertyW")
|
||||||
|
procSetupDiGetDriverInfoDetailW = modsetupapi.NewProc("SetupDiGetDriverInfoDetailW")
|
||||||
|
procSetupDiGetSelectedDevice = modsetupapi.NewProc("SetupDiGetSelectedDevice")
|
||||||
|
procSetupDiGetSelectedDriverW = modsetupapi.NewProc("SetupDiGetSelectedDriverW")
|
||||||
|
procSetupDiOpenDevRegKey = modsetupapi.NewProc("SetupDiOpenDevRegKey")
|
||||||
|
procSetupDiSetClassInstallParamsW = modsetupapi.NewProc("SetupDiSetClassInstallParamsW")
|
||||||
|
procSetupDiSetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiSetDeviceInstallParamsW")
|
||||||
|
procSetupDiSetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiSetDeviceRegistryPropertyW")
|
||||||
|
procSetupDiSetSelectedDevice = modsetupapi.NewProc("SetupDiSetSelectedDevice")
|
||||||
|
procSetupDiSetSelectedDriverW = modsetupapi.NewProc("SetupDiSetSelectedDriverW")
|
||||||
|
procSetupUninstallOEMInfW = modsetupapi.NewProc("SetupUninstallOEMInfW")
|
||||||
procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
|
procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW")
|
||||||
procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath")
|
||||||
procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
procShellExecuteW = modshell32.NewProc("ShellExecuteW")
|
||||||
@@ -392,6 +451,9 @@ var (
|
|||||||
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock")
|
||||||
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock")
|
||||||
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW")
|
||||||
|
procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW")
|
||||||
|
procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW")
|
||||||
|
procVerQueryValueW = modversion.NewProc("VerQueryValueW")
|
||||||
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx")
|
||||||
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW")
|
||||||
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW")
|
||||||
@@ -426,6 +488,30 @@ var (
|
|||||||
procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
|
procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCM_Get_DevNode_Status.Addr(), 4, uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags), 0, 0)
|
||||||
|
ret = CONFIGRET(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_ListW.Addr(), 5, uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags), 0)
|
||||||
|
ret = CONFIGRET(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {
|
||||||
|
r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_List_SizeW.Addr(), 4, uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags), 0, 0)
|
||||||
|
ret = CONFIGRET(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {
|
||||||
|
r0, _, _ := syscall.Syscall(procCM_MapCrToWin32Err.Addr(), 2, uintptr(configRet), uintptr(defaultWin32Error), 0)
|
||||||
|
ret = Errno(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
|
func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {
|
||||||
var _p0 uint32
|
var _p0 uint32
|
||||||
if resetToDefault {
|
if resetToDefault {
|
||||||
@@ -956,6 +1042,18 @@ func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, buf
|
|||||||
return
|
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) {
|
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)
|
r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@@ -1045,6 +1143,15 @@ func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Hand
|
|||||||
return
|
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) {
|
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)))
|
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 {
|
if r1 == 0 {
|
||||||
@@ -1434,6 +1541,14 @@ func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0)
|
||||||
|
if r0 != 0 {
|
||||||
|
errcode = syscall.Errno(r0)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
|
func GetIfEntry(pIfRow *MibIfRow) (errcode error) {
|
||||||
r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
|
r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@@ -1674,6 +1789,15 @@ func ExitProcess(exitcode uint32) {
|
|||||||
return
|
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
|
||||||
|
}
|
||||||
|
|
||||||
func FindClose(handle Handle) (err error) {
|
func FindClose(handle Handle) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
|
r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@@ -1855,6 +1979,12 @@ func GetACP() (acp uint32) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetActiveProcessorCount(groupNumber uint16) (ret uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetActiveProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)
|
||||||
|
ret = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
|
func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)
|
r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@@ -2057,6 +2187,12 @@ func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err er
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {
|
||||||
|
r0, _, _ := syscall.Syscall(procGetMaximumProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)
|
||||||
|
ret = uint32(r0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
|
func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
|
r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size))
|
||||||
n = uint32(r0)
|
n = uint32(r0)
|
||||||
@@ -2457,6 +2593,22 @@ func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow ui
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procModule32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procModule32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
|
func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
|
r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@@ -2619,7 +2771,7 @@ func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = &buf[0]
|
_p0 = &buf[0]
|
||||||
@@ -2631,6 +2783,14 @@ func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (
|
|||||||
return
|
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) {
|
func ReleaseMutex(mutex Handle) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
|
r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@@ -2985,6 +3145,30 @@ func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect
|
|||||||
return
|
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) {
|
func VirtualUnlock(addr uintptr, length uintptr) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
|
r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@@ -3029,7 +3213,7 @@ func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32,
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = &buf[0]
|
_p0 = &buf[0]
|
||||||
@@ -3041,6 +3225,14 @@ func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped)
|
|||||||
return
|
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) {
|
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)
|
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 {
|
if r1 == 0 {
|
||||||
@@ -3110,6 +3302,22 @@ func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe
|
|||||||
return
|
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) {
|
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)
|
r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@@ -3118,6 +3326,20 @@ func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.P
|
|||||||
return
|
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) {
|
func RtlDefaultNpAcl(acl **ACL) (ntstatus error) {
|
||||||
r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0)
|
r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0)
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
@@ -3126,6 +3348,12 @@ func RtlDefaultNpAcl(acl **ACL) (ntstatus error) {
|
|||||||
return
|
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) {
|
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)
|
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 {
|
if r0 != 0 {
|
||||||
@@ -3225,6 +3453,22 @@ func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) {
|
|||||||
return
|
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) {
|
func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
|
||||||
var _p0 *uint32
|
var _p0 *uint32
|
||||||
if len(processIds) > 0 {
|
if len(processIds) > 0 {
|
||||||
@@ -3237,6 +3481,38 @@ func EnumProcesses(processIds []uint32, bytesReturned *uint32) (err error) {
|
|||||||
return
|
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 QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {
|
func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {
|
||||||
ret = procSubscribeServiceChangeNotifications.Find()
|
ret = procSubscribeServiceChangeNotifications.Find()
|
||||||
if ret != nil {
|
if ret != nil {
|
||||||
@@ -3274,6 +3550,233 @@ func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiBuildDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiCallClassInstaller.Addr(), 3, uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiCancelDriverInfoSearch.Addr(), 1, uintptr(deviceInfoSet), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiClassGuidsFromNameExW.Addr(), 6, uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiClassNameFromGuidExW.Addr(), 6, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall6(procSetupDiCreateDeviceInfoListExW.Addr(), 4, uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)
|
||||||
|
handle = DevInfo(r0)
|
||||||
|
if handle == DevInfo(InvalidHandle) {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procSetupDiCreateDeviceInfoW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiDestroyDeviceInfoList.Addr(), 1, uintptr(deviceInfoSet), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiDestroyDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiEnumDeviceInfo.Addr(), 3, uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiEnumDriverInfoW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall9(procSetupDiGetClassDevsExW.Addr(), 7, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)
|
||||||
|
handle = DevInfo(r0)
|
||||||
|
if handle == DevInfo(InvalidHandle) {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiGetClassInstallParamsW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInfoListDetailW.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiGetDeviceInstanceIdW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procSetupDiGetDevicePropertyW.Addr(), 8, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall9(procSetupDiGetDeviceRegistryPropertyW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiGetDriverInfoDetailW.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {
|
||||||
|
r0, _, e1 := syscall.Syscall6(procSetupDiOpenDevRegKey.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))
|
||||||
|
key = Handle(r0)
|
||||||
|
if key == InvalidHandle {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiSetClassInstallParamsW.Addr(), 4, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), 0, 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall6(procSetupDiSetDeviceRegistryPropertyW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {
|
||||||
|
r1, _, e1 := syscall.Syscall(procSetupUninstallOEMInfW.Addr(), 3, uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))
|
||||||
|
if r1 == 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
|
func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {
|
||||||
r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
|
r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)
|
||||||
argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
|
argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0))
|
||||||
@@ -3359,6 +3862,58 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {
|
|||||||
return
|
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) {
|
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)))
|
r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))
|
||||||
if r0 != 0 {
|
if r0 != 0 {
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# github.com/danieljoos/wincred v1.1.2
|
# github.com/danieljoos/wincred v1.1.2
|
||||||
## explicit; go 1.13
|
## explicit; go 1.13
|
||||||
github.com/danieljoos/wincred
|
github.com/danieljoos/wincred
|
||||||
# golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c
|
# golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
golang.org/x/sys/execabs
|
golang.org/x/sys/execabs
|
||||||
golang.org/x/sys/internal/unsafeheader
|
golang.org/x/sys/internal/unsafeheader
|
||||||
|
|||||||
Reference in New Issue
Block a user