// Copyright 2025 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package windows provides the syscall primitives required for the runtime. package windows import ( "internal/abi" ) // MaxArgs should be divisible by 2, as Windows stack // must be kept 16-byte aligned on syscall entry. // // Although it only permits maximum 42 parameters, it // is arguably large enough. const MaxArgs = 42 // StdCallInfo is a structure used to pass parameters to the system call. type StdCallInfo struct { Fn uintptr N uintptr // number of parameters Args uintptr // parameters R1 uintptr // return values R2 uintptr Err uintptr // error number } // StdCall calls a function using Windows' stdcall convention. // //go:noescape func StdCall(fn *StdCallInfo) // asmstdcall is the function pointer for [AsmStdCallAddr]. func asmstdcall(fn *StdCallInfo) // AsmStdCallAddr is the address of a function that accepts a pointer // to [StdCallInfo] stored on the stack following the C calling convention, // and calls the function using Windows' stdcall calling convention. // Shouldn't be called directly from Go. func AsmStdCallAddr() uintptr { return abi.FuncPCABI0(asmstdcall) }