Commit 042a8f53 authored by Alex Brainman's avatar Alex Brainman

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/21592Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent b323466d
...@@ -235,6 +235,13 @@ func NewLazyDLL(name string) *LazyDLL { ...@@ -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 ( ...@@ -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")
......
...@@ -10,17 +10,17 @@ import ( ...@@ -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")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment