|
|
@@ -173,7 +173,11 @@ var (
|
|
|
procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW")
|
|
|
procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId")
|
|
|
procCreateEventW = modkernel32.NewProc("CreateEventW")
|
|
|
+ procCreateEventExW = modkernel32.NewProc("CreateEventExW")
|
|
|
+ procOpenEventW = modkernel32.NewProc("OpenEventW")
|
|
|
procSetEvent = modkernel32.NewProc("SetEvent")
|
|
|
+ procResetEvent = modkernel32.NewProc("ResetEvent")
|
|
|
+ procPulseEvent = modkernel32.NewProc("PulseEvent")
|
|
|
procWSAStartup = modws2_32.NewProc("WSAStartup")
|
|
|
procWSACleanup = modws2_32.NewProc("WSACleanup")
|
|
|
procWSAIoctl = modws2_32.NewProc("WSAIoctl")
|
|
|
@@ -1644,7 +1648,7 @@ func SetConsoleMode(console Handle, mode uint32) (err error) {
|
|
|
}
|
|
|
|
|
|
func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) {
|
|
|
- r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(&info)), 0)
|
|
|
+ r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0)
|
|
|
if r1 == 0 {
|
|
|
if e1 != 0 {
|
|
|
err = errnoErr(e1)
|
|
|
@@ -1758,7 +1762,7 @@ func GetCurrentThreadId() (id uint32) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
|
|
|
+func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {
|
|
|
r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0)
|
|
|
handle = Handle(r0)
|
|
|
if handle == 0 {
|
|
|
@@ -1771,6 +1775,38 @@ func CreateEvent(eventAttrs *syscall.SecurityAttributes, manualReset uint32, ini
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {
|
|
|
+ r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0)
|
|
|
+ handle = Handle(r0)
|
|
|
+ if handle == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {
|
|
|
+ var _p0 uint32
|
|
|
+ if inheritHandle {
|
|
|
+ _p0 = 1
|
|
|
+ } else {
|
|
|
+ _p0 = 0
|
|
|
+ }
|
|
|
+ r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))
|
|
|
+ handle = Handle(r0)
|
|
|
+ if handle == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
func SetEvent(event Handle) (err error) {
|
|
|
r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)
|
|
|
if r1 == 0 {
|
|
|
@@ -1783,6 +1819,30 @@ func SetEvent(event Handle) (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func ResetEvent(event Handle) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func PulseEvent(event Handle) (err error) {
|
|
|
+ r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)
|
|
|
+ if r1 == 0 {
|
|
|
+ if e1 != 0 {
|
|
|
+ err = errnoErr(e1)
|
|
|
+ } else {
|
|
|
+ err = syscall.EINVAL
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
func WSAStartup(verreq uint32, data *WSAData) (sockerr error) {
|
|
|
r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0)
|
|
|
if r0 != 0 {
|