From ff24cb3cd86e67842e0d078a5e0cb92d9ffcf8b4 Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Wed, 5 Apr 2017 12:54:02 -0400 Subject: [PATCH] windows: correct GetStdHandle definition GetStdHandle: https://msdn.microsoft.com/en-us/library/windows/desktop/ms683231(v=vs.85).aspx DWORD: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx Change-Id: I2fb794f85418e7846687911c4513886eb1803770 Reviewed-on: https://go-review.googlesource.com/39608 Reviewed-by: Alex Brainman Run-TryBot: Alex Brainman TryBot-Result: Gobot Gobot --- windows/syscall_windows.go | 6 +++--- windows/zsyscall_windows.go | 2 +- windows/ztypes_windows.go | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/windows/syscall_windows.go b/windows/syscall_windows.go index 62c5ef3e..7cc7220f 100644 --- a/windows/syscall_windows.go +++ b/windows/syscall_windows.go @@ -93,7 +93,7 @@ func NewCallbackCDecl(fn interface{}) uintptr //sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] //sys CloseHandle(handle Handle) (err error) -//sys GetStdHandle(stdhandle int) (handle Handle, err error) [failretval==InvalidHandle] +//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] //sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW //sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW //sys FindClose(handle Handle) (err error) @@ -312,8 +312,8 @@ var ( Stderr = getStdHandle(STD_ERROR_HANDLE) ) -func getStdHandle(h int) (fd Handle) { - r, _ := GetStdHandle(h) +func getStdHandle(stdhandle uint32) (fd Handle) { + r, _ := GetStdHandle(stdhandle) CloseOnExec(r) return r } diff --git a/windows/zsyscall_windows.go b/windows/zsyscall_windows.go index 1e27d813..0797ad09 100644 --- a/windows/zsyscall_windows.go +++ b/windows/zsyscall_windows.go @@ -620,7 +620,7 @@ func CloseHandle(handle Handle) (err error) { return } -func GetStdHandle(stdhandle int) (handle Handle, err error) { +func GetStdHandle(stdhandle uint32) (handle Handle, err error) { r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) handle = Handle(r0) if handle == InvalidHandle { diff --git a/windows/ztypes_windows.go b/windows/ztypes_windows.go index 1fe19d1d..a907ff2c 100644 --- a/windows/ztypes_windows.go +++ b/windows/ztypes_windows.go @@ -122,9 +122,9 @@ const ( DUPLICATE_CLOSE_SOURCE = 0x00000001 DUPLICATE_SAME_ACCESS = 0x00000002 - STD_INPUT_HANDLE = -10 - STD_OUTPUT_HANDLE = -11 - STD_ERROR_HANDLE = -12 + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) FILE_BEGIN = 0 FILE_CURRENT = 1