Skip to content

Commit 2c2be75

Browse files
qmuntalgopherbot
authored andcommitted
windows: use syscall.SyscallN in Proc.Call
All the SyscallX functions are deprecated in favor of SyscallN. The latter is easier to use, supports more arguments, and uses less stack. Autogenerated wrappers already switch to SyscallN in https://go-review.googlesource.com/c/sys/+/691715. Fixes golang/go#78317 Change-Id: I7e56e713d1c20558e9932d757299796836c9c04f Reviewed-on: https://go-review.googlesource.com/c/sys/+/758700 Reviewed-by: Damien Neil <[email protected]> Auto-Submit: Quim Muntal <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]>
1 parent a76ec62 commit 2c2be75

1 file changed

Lines changed: 1 addition & 36 deletions

File tree

windows/dll_windows.go

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -163,42 +163,7 @@ func (p *Proc) Addr() uintptr {
163163
// (according to the semantics of the specific function being called) before consulting
164164
// the error. The error will be guaranteed to contain windows.Errno.
165165
func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
166-
switch len(a) {
167-
case 0:
168-
return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0)
169-
case 1:
170-
return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0)
171-
case 2:
172-
return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0)
173-
case 3:
174-
return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2])
175-
case 4:
176-
return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0)
177-
case 5:
178-
return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0)
179-
case 6:
180-
return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5])
181-
case 7:
182-
return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0)
183-
case 8:
184-
return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0)
185-
case 9:
186-
return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8])
187-
case 10:
188-
return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0)
189-
case 11:
190-
return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0)
191-
case 12:
192-
return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11])
193-
case 13:
194-
return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0)
195-
case 14:
196-
return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0)
197-
case 15:
198-
return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14])
199-
default:
200-
panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".")
201-
}
166+
return syscall.SyscallN(p.Addr(), a...)
202167
}
203168

204169
// A LazyDLL implements access to a single DLL.

0 commit comments

Comments
 (0)