Forráskód Böngészése

Merge pull request #43189 from thaJeztah/remove_unused_win32k

pkg/system: remove unused HasWin32KSupport() and rewrite IsWindowsClient()
Tianon Gravi 3 éve
szülő
commit
21981800a2
2 módosított fájl, 5 hozzáadás és 56 törlés
  1. 5 47
      pkg/system/syscall_windows.go
  2. 0 9
      pkg/system/syscall_windows_test.go

+ 5 - 47
pkg/system/syscall_windows.go

@@ -1,65 +1,23 @@
 package system // import "github.com/docker/docker/pkg/system"
 
-import (
-	"unsafe"
-
-	"github.com/sirupsen/logrus"
-	"golang.org/x/sys/windows"
-)
+import "golang.org/x/sys/windows"
 
 const (
 	// Deprecated: use github.com/docker/pkg/idtools.SeTakeOwnershipPrivilege
 	SeTakeOwnershipPrivilege = "SeTakeOwnershipPrivilege"
-)
-
-const (
 	// Deprecated: use github.com/docker/pkg/idtools.ContainerAdministratorSidString
 	ContainerAdministratorSidString = "S-1-5-93-2-1"
 	// Deprecated: use github.com/docker/pkg/idtools.ContainerUserSidString
 	ContainerUserSidString = "S-1-5-93-2-2"
 )
 
-var (
-	ntuserApiset      = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0")
-	procGetVersionExW = modkernel32.NewProc("GetVersionExW")
-)
-
-// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-osversioninfoexa
-// TODO: use golang.org/x/sys/windows.OsVersionInfoEx (needs OSVersionInfoSize to be exported)
-type osVersionInfoEx struct {
-	OSVersionInfoSize uint32
-	MajorVersion      uint32
-	MinorVersion      uint32
-	BuildNumber       uint32
-	PlatformID        uint32
-	CSDVersion        [128]uint16
-	ServicePackMajor  uint16
-	ServicePackMinor  uint16
-	SuiteMask         uint16
-	ProductType       byte
-	Reserve           byte
-}
+// VER_NT_WORKSTATION, see https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-osversioninfoexa
+const verNTWorkstation = 0x00000001 // VER_NT_WORKSTATION
 
 // IsWindowsClient returns true if the SKU is client. It returns false on
 // Windows server, or if an error occurred when making the GetVersionExW
 // syscall.
 func IsWindowsClient() bool {
-	osviex := &osVersionInfoEx{OSVersionInfoSize: 284}
-	r1, _, err := procGetVersionExW.Call(uintptr(unsafe.Pointer(osviex)))
-	if r1 == 0 {
-		logrus.WithError(err).Warn("GetVersionExW failed - assuming server SKU")
-		return false
-	}
-	// VER_NT_WORKSTATION, see https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-osversioninfoexa
-	const verNTWorkstation = 0x00000001 // VER_NT_WORKSTATION
-	return osviex.ProductType == verNTWorkstation
-}
-
-// HasWin32KSupport determines whether containers that depend on win32k can
-// run on this machine. Win32k is the driver used to implement windowing.
-func HasWin32KSupport() bool {
-	// For now, check for ntuser API support on the host. In the future, a host
-	// may support win32k in containers even if the host does not support ntuser
-	// APIs.
-	return ntuserApiset.Load() == nil
+	ver := windows.RtlGetVersion()
+	return ver != nil && ver.ProductType == verNTWorkstation
 }

+ 0 - 9
pkg/system/syscall_windows_test.go

@@ -1,9 +0,0 @@
-package system // import "github.com/docker/docker/pkg/system"
-
-import "testing"
-
-func TestHasWin32KSupport(t *testing.T) {
-	s := HasWin32KSupport() // make sure this doesn't panic
-
-	t.Logf("win32k: %v", s) // will be different on different platforms -- informative only
-}