Skip to content

Commit f3918c3

Browse files
tamirdalexbrainman
authored andcommitted
windows: add SetStdHandle
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686244(v=vs.85).aspx Change-Id: If7d460a9fb43767c0a3ee55e86faf3356162c81d Reviewed-on: https://go-review.googlesource.com/39609 Reviewed-by: Brad Fitzpatrick <[email protected]> Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent ff24cb3 commit f3918c3

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

windows/syscall_windows.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ func NewCallbackCDecl(fn interface{}) uintptr
9494
//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]
9595
//sys CloseHandle(handle Handle) (err error)
9696
//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]
97+
//sys SetStdHandle(stdhandle uint32, handle Handle) (err error)
9798
//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW
9899
//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW
99100
//sys FindClose(handle Handle) (err error)

windows/zsyscall_windows.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ var (
7878
procSetFilePointer = modkernel32.NewProc("SetFilePointer")
7979
procCloseHandle = modkernel32.NewProc("CloseHandle")
8080
procGetStdHandle = modkernel32.NewProc("GetStdHandle")
81+
procSetStdHandle = modkernel32.NewProc("SetStdHandle")
8182
procFindFirstFileW = modkernel32.NewProc("FindFirstFileW")
8283
procFindNextFileW = modkernel32.NewProc("FindNextFileW")
8384
procFindClose = modkernel32.NewProc("FindClose")
@@ -633,6 +634,18 @@ func GetStdHandle(stdhandle uint32) (handle Handle, err error) {
633634
return
634635
}
635636

637+
func SetStdHandle(stdhandle uint32, handle Handle) (err error) {
638+
r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
639+
if r1 == 0 {
640+
if e1 != 0 {
641+
err = errnoErr(e1)
642+
} else {
643+
err = syscall.EINVAL
644+
}
645+
}
646+
return
647+
}
648+
636649
func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {
637650
r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)
638651
handle = Handle(r0)

0 commit comments

Comments
 (0)