Browse code

Merge pull request #36617 from Microsoft/jjh/kernel-registry

Windows: Move kernel_windows to use golang registry functions

Vincent Demeester authored on 2018/03/19 19:47:17
Showing 2 changed files
... ...
@@ -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
 	}