win32
foundation
golang.org/x/sys/windows, no cgo
The shared Windows API surface the fleet's Windows code would otherwise re-declare per repository.
LICENSE=BSD-3-ClauseCGO_ENABLED=0The Windows API from Go β the deliberate peer of go-macos/objc, so a cross-platform program talks to two libraries built the same way.
$ go get github.com/go-mswin/win32@latest $ go get github.com/go-mswin/winrt@latest $ go get github.com/go-mswin/screencapture@latest $ go get github.com/go-mswin/webauthn@latest $ go get github.com/go-mswin/factors@latest
βwin32β is the name of the Windows API, not a bitness β there is no separate βWin64 APIβ. These target 64-bit Windows, amd64 and arm64.
Reference libraries, not re-implementations. winrt does not reimplement WinRT: RoInitialize and RoGetActivationFactory come from the reference projection, and this module adds only what is missing around it. Same rule as everywhere else in the fleet.
win32
foundationgolang.org/x/sys/windows, no cgo
The shared Windows API surface the fleet's Windows code would otherwise re-declare per repository.
winrt
extensionsaltosystems/winrt-go + the missing pieces
Activation and initialisation through the reference WinRT projection, plus only what that projection leaves out.
Deliberately thin: the value is in not having a second WinRT implementation to keep correct.
screencapture
captureDXGI Desktop Duplication + GDI BitBlt, through go-mswin/win32
Display and window capture as borrowed BGRA frames, allocation-free per frame. Two backends behind one API: DXGI Desktop Duplication where it is available, GDI BitBlt everywhere else and for occluded windows through PrintWindow(PW_RENDERFULLCONTENT).
Its proof record is checkable rather than asserted: a GDI capture and a duplication capture each matched QEMU's own independent screendump of the framebuffer in 0 of 480000 pixels, and CI re-runs the comparison so the record cannot drift from the files. What it has NOT proven β the GPU duplication path, a real 4K read-back, multi-monitor β is listed just as plainly.
webauthn
extensionwebauthn.dll β the API browsers use, no cgo and no SDK
Asks Windows to authenticate somebody with a security key: Assert takes the relying-party id, a fresh challenge and the credentials to allow, and answers with what actually responded (a.Transport β "usb"). It is deliberately not a CTAP transport: since Windows 1903 raw FIDO HID needs elevation, so going through webauthn.dll is what lets an ordinary user log in at all.
factors
extensiongo-authn/mfa β an mfa.Factor a policy can ask for
Windows's authentication factors as mfa.Factor values, so a policy asks for two of them without knowing which Windows API answers. The two come from two different packages, which is the shape of Windows: winrt asks Windows Hello through UserConsentVerifier, webauthn asks a security key through webauthn.dll. Neither binding knows what a policy is, and a program that only wants a Hello prompt does not end up importing the other.
The reason this org exists at all is symmetry: go-macos/objc gave the fleet's CGO-free macOS code one shared home instead of per-repo copies, and the Windows side deserved the same rather than a pile of hand-rolled syscalls.