Windows: Move kernel_windows to use golang registry functions
| ... | ... |
@@ -2,9 +2,9 @@ package kernel // import "github.com/docker/docker/pkg/parsers/kernel" |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 | 4 |
"fmt" |
| 5 |
- "unsafe" |
|
| 6 | 5 |
|
| 7 | 6 |
"golang.org/x/sys/windows" |
| 7 |
+ "golang.org/x/sys/windows/registry" |
|
| 8 | 8 |
) |
| 9 | 9 |
|
| 10 | 10 |
// VersionInfo holds information about the kernel. |
| ... | ... |
@@ -22,41 +22,24 @@ func (k *VersionInfo) String() string {
|
| 22 | 22 |
// GetKernelVersion gets the current kernel version. |
| 23 | 23 |
func GetKernelVersion() (*VersionInfo, error) {
|
| 24 | 24 |
|
| 25 |
- var ( |
|
| 26 |
- h windows.Handle |
|
| 27 |
- dwVersion uint32 |
|
| 28 |
- err error |
|
| 29 |
- ) |
|
| 30 |
- |
|
| 31 | 25 |
KVI := &VersionInfo{"Unknown", 0, 0, 0}
|
| 32 | 26 |
|
| 33 |
- if err = windows.RegOpenKeyEx(windows.HKEY_LOCAL_MACHINE, |
|
| 34 |
- windows.StringToUTF16Ptr(`SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\`), |
|
| 35 |
- 0, |
|
| 36 |
- windows.KEY_READ, |
|
| 37 |
- &h); err != nil {
|
|
| 27 |
+ k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) |
|
| 28 |
+ if err != nil {
|
|
| 38 | 29 |
return KVI, err |
| 39 | 30 |
} |
| 40 |
- defer windows.RegCloseKey(h) |
|
| 41 |
- |
|
| 42 |
- var buf [1 << 10]uint16 |
|
| 43 |
- var typ uint32 |
|
| 44 |
- n := uint32(len(buf) * 2) // api expects array of bytes, not uint16 |
|
| 31 |
+ defer k.Close() |
|
| 45 | 32 |
|
| 46 |
- if err = windows.RegQueryValueEx(h, |
|
| 47 |
- windows.StringToUTF16Ptr("BuildLabEx"),
|
|
| 48 |
- nil, |
|
| 49 |
- &typ, |
|
| 50 |
- (*byte)(unsafe.Pointer(&buf[0])), |
|
| 51 |
- &n); err != nil {
|
|
| 33 |
+ blex, _, err := k.GetStringValue("BuildLabEx")
|
|
| 34 |
+ if err != nil {
|
|
| 52 | 35 |
return KVI, err |
| 53 | 36 |
} |
| 54 |
- |
|
| 55 |
- KVI.kvi = windows.UTF16ToString(buf[:]) |
|
| 37 |
+ KVI.kvi = blex |
|
| 56 | 38 |
|
| 57 | 39 |
// Important - docker.exe MUST be manifested for this API to return |
| 58 | 40 |
// the correct information. |
| 59 |
- if dwVersion, err = windows.GetVersion(); err != nil {
|
|
| 41 |
+ dwVersion, err := windows.GetVersion() |
|
| 42 |
+ if err != nil {
|
|
| 60 | 43 |
return KVI, err |
| 61 | 44 |
} |
| 62 | 45 |
|
| ... | ... |
@@ -12,7 +12,7 @@ func GetOperatingSystem() (string, error) {
|
| 12 | 12 |
// Default return value |
| 13 | 13 |
ret := "Unknown Operating System" |
| 14 | 14 |
|
| 15 |
- k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\WIndows NT\CurrentVersion`, registry.QUERY_VALUE) |
|
| 15 |
+ k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) |
|
| 16 | 16 |
if err != nil {
|
| 17 | 17 |
return ret, err |
| 18 | 18 |
} |