1
0
mirror of https://github.com/golang/go synced 2024-11-16 19:34:48 -07:00

internal/syscall/windows: unexport Version

windows.Version is just a thin wrapper around RtlGetNtVersionNumbers,
which is an undocumented Windows API.

This CL unexports windows.Version so it is harder to use by accident.

Change-Id: Ib782da04e4e8be66970111a75f5c2df27ef51643
Reviewed-on: https://go-review.googlesource.com/c/go/+/570055
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
This commit is contained in:
qmuntal 2024-03-08 09:37:29 +01:00 committed by Quim Muntal
parent 336617186a
commit c220fbabd5

View File

@ -9,10 +9,10 @@ import (
_ "unsafe" // for linkname _ "unsafe" // for linkname
) )
// Version retrieves the major, minor, and build version numbers // version retrieves the major, minor, and build version numbers
// of the current Windows OS from the RtlGetNtVersionNumbers API // of the current Windows OS from the RtlGetNtVersionNumbers API
// and parse the results properly. // and parse the results properly.
func Version() (major, minor, build uint32) { func version() (major, minor, build uint32) {
rtlGetNtVersionNumbers(&major, &minor, &build) rtlGetNtVersionNumbers(&major, &minor, &build)
build &= 0x7fff build &= 0x7fff
return return
@ -23,24 +23,25 @@ func Version() (major, minor, build uint32) {
func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32)
// SupportFullTCPKeepAlive indicates whether the current Windows version // SupportFullTCPKeepAlive indicates whether the current Windows version
// supports the full TCP keep-alive configurations, the minimal requirement // supports the full TCP keep-alive configurations.
// is Windows 10, version 1709. // The minimal requirement is Windows 10.0.16299.
var SupportFullTCPKeepAlive = sync.OnceValue(func() bool { var SupportFullTCPKeepAlive = sync.OnceValue(func() bool {
major, _, build := Version() major, _, build := version()
return major >= 10 && build >= 16299 return major >= 10 && build >= 16299
}) })
// SupportTCPInitialRTONoSYNRetransmissions indicates whether the current // SupportTCPInitialRTONoSYNRetransmissions indicates whether the current
// Windows version supports the TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS, the // Windows version supports the TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS.
// minimal requirement is Windows 10.0.16299. // The minimal requirement is Windows 10.0.16299.
var SupportTCPInitialRTONoSYNRetransmissions = sync.OnceValue(func() bool { var SupportTCPInitialRTONoSYNRetransmissions = sync.OnceValue(func() bool {
major, _, build := Version() major, _, build := version()
return major >= 10 && build >= 16299 return major >= 10 && build >= 16299
}) })
// SupportUnixSocket indicates whether the current Windows version supports // SupportUnixSocket indicates whether the current Windows version supports
// Unix Domain Sockets, the minimal requirement is Windows 10, build 17063. // Unix Domain Sockets.
// The minimal requirement is Windows 10.0.17063.
var SupportUnixSocket = sync.OnceValue(func() bool { var SupportUnixSocket = sync.OnceValue(func() bool {
major, _, build := Version() major, _, build := version()
return major >= 10 && build >= 17063 return major >= 10 && build >= 17063
}) })