// 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" ) // 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 } // StdCall calls a function using Windows' stdcall convention. // The calling thread's last-error code value is cleared before calling the function, // and stored in the return value. // //go:noescape func StdCall(fn *StdCallInfo) uint32 // asmstdcall is the function pointer for [AsmStdCallAddr]. // The calling thread's last-error code value is cleared before calling the function, // and returned in the C ABI return register (not via Go stack convention). // This function is not called directly from Go; it is either jumped to from // [StdCall] or called from C via [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) }