| // Copyright 2016 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build windows |
| // +build windows |
| |
| // Package sysdll is an internal leaf package that records and reports |
| // which Windows DLL names are used by Go itself. These DLLs are then |
| // only loaded from the System32 directory. See Issue 14959. |
| package sysdll |
| |
| // IsSystemDLL reports whether the named dll key (a base name, like |
| // "foo.dll") is a system DLL which should only be loaded from the |
| // Windows SYSTEM32 directory. |
| // |
| // Filenames are case sensitive, but that doesn't matter because |
| // the case registered with Add is also the same case used with |
| // LoadDLL later. |
| // |
| // It has no associated mutex and should only be mutated serially |
| // (currently: during init), and not concurrent with DLL loading. |
| var IsSystemDLL = map[string]bool{} |
| |
| // Add notes that dll is a system32 DLL which should only be loaded |
| // from the Windows SYSTEM32 directory. It returns its argument back, |
| // for ease of use in generated code. |
| func Add(dll string) string { |
| IsSystemDLL[dll] = true |
| return dll |
| } |