mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-03 23:57:32 -04:00
windows: add NewLazySystemDLL and use it in zsyscall_windows.go
If we want new secure DLL approach to be adopted, we should make
conversion as simple as possible to explain and implement.
I think that replacing
syscall.NewLazyDLL(...) -> windows.NewLazySystemDLL(...)
is easier than
syscall.NewLazyDLL(...) -> &windows.LazyDLL{Name: ..., System: true}
So I propose we introduce convenience function NewLazySystemDLL.
$GOROOT/src/mksyscall_windows.go changes in the following CL.
Change-Id: If3432aff301c347cb355e4e837834696191b2219
Reviewed-on: https://go-review.googlesource.com/21592
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
@@ -235,6 +235,13 @@ func NewLazyDLL(name string) *LazyDLL {
|
|||||||
return &LazyDLL{Name: name}
|
return &LazyDLL{Name: name}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewLazySystemDLL is like NewLazyDLL, but will only
|
||||||
|
// search Windows System directory for the DLL if name is
|
||||||
|
// a base name (like "advapi32.dll").
|
||||||
|
func NewLazySystemDLL(name string) *LazyDLL {
|
||||||
|
return &LazyDLL{Name: name, System: true}
|
||||||
|
}
|
||||||
|
|
||||||
// A LazyProc implements access to a procedure inside a LazyDLL.
|
// A LazyProc implements access to a procedure inside a LazyDLL.
|
||||||
// It delays the lookup until the Addr method is called.
|
// It delays the lookup until the Addr method is called.
|
||||||
type LazyProc struct {
|
type LazyProc struct {
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import (
|
|||||||
var _ unsafe.Pointer
|
var _ unsafe.Pointer
|
||||||
|
|
||||||
var (
|
var (
|
||||||
modadvapi32 = &windows.LazyDLL{Name: "advapi32.dll", System: true}
|
modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
|
||||||
modkernel32 = &windows.LazyDLL{Name: "kernel32.dll", System: true}
|
modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
||||||
|
|
||||||
procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW")
|
procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW")
|
||||||
procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW")
|
procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW")
|
||||||
|
|||||||
+11
-11
@@ -10,17 +10,17 @@ import (
|
|||||||
var _ unsafe.Pointer
|
var _ unsafe.Pointer
|
||||||
|
|
||||||
var (
|
var (
|
||||||
modadvapi32 = &LazyDLL{Name: "advapi32.dll", System: true}
|
modadvapi32 = NewLazySystemDLL("advapi32.dll")
|
||||||
modkernel32 = &LazyDLL{Name: "kernel32.dll", System: true}
|
modkernel32 = NewLazySystemDLL("kernel32.dll")
|
||||||
modshell32 = &LazyDLL{Name: "shell32.dll", System: true}
|
modshell32 = NewLazySystemDLL("shell32.dll")
|
||||||
modmswsock = &LazyDLL{Name: "mswsock.dll", System: true}
|
modmswsock = NewLazySystemDLL("mswsock.dll")
|
||||||
modcrypt32 = &LazyDLL{Name: "crypt32.dll", System: true}
|
modcrypt32 = NewLazySystemDLL("crypt32.dll")
|
||||||
modws2_32 = &LazyDLL{Name: "ws2_32.dll", System: true}
|
modws2_32 = NewLazySystemDLL("ws2_32.dll")
|
||||||
moddnsapi = &LazyDLL{Name: "dnsapi.dll", System: true}
|
moddnsapi = NewLazySystemDLL("dnsapi.dll")
|
||||||
modiphlpapi = &LazyDLL{Name: "iphlpapi.dll", System: true}
|
modiphlpapi = NewLazySystemDLL("iphlpapi.dll")
|
||||||
modsecur32 = &LazyDLL{Name: "secur32.dll", System: true}
|
modsecur32 = NewLazySystemDLL("secur32.dll")
|
||||||
modnetapi32 = &LazyDLL{Name: "netapi32.dll", System: true}
|
modnetapi32 = NewLazySystemDLL("netapi32.dll")
|
||||||
moduserenv = &LazyDLL{Name: "userenv.dll", System: true}
|
moduserenv = NewLazySystemDLL("userenv.dll")
|
||||||
|
|
||||||
procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW")
|
||||||
procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource")
|
procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource")
|
||||||
|
|||||||
Reference in New Issue
Block a user