Windows Golang 中的回调函数
Windows callback function in Golang
我想 push subscription 到 Windows Golang 中的事件日志
我应该如何传递回调函数?
EVT_SUBSCRIBE_CALLBACK是函数的指针,如
typedef DWORD ( WINAPI *EVT_SUBSCRIBE_CALLBACK)(
EVT_SUBSCRIBE_NOTIFY_ACTION Action,
PVOID UserContext,
EVT_HANDLE Event
);
因此,我的变体如下所示:
func logCallback() syscall.Handle {
cb := func(_ uintptr, _ uintptr, _ uintptr) uint64 {
fmt.Printf("callback called %v", data)
return 0
}
ptr := syscall.NewCallback(cb)
return syscall.Handle(ptr) // type syscall.Handle uintptr
}
我成功订阅了处理程序,没有任何错误,但它仍然无法正常工作。
任何想法为什么?我应该先看哪里?
使用系统调用时,确保在文件顶部包含 import "C"
。很高兴它帮助了你。
我想 push subscription 到 Windows Golang 中的事件日志
我应该如何传递回调函数?
EVT_SUBSCRIBE_CALLBACK是函数的指针,如
typedef DWORD ( WINAPI *EVT_SUBSCRIBE_CALLBACK)(
EVT_SUBSCRIBE_NOTIFY_ACTION Action,
PVOID UserContext,
EVT_HANDLE Event
);
因此,我的变体如下所示:
func logCallback() syscall.Handle {
cb := func(_ uintptr, _ uintptr, _ uintptr) uint64 {
fmt.Printf("callback called %v", data)
return 0
}
ptr := syscall.NewCallback(cb)
return syscall.Handle(ptr) // type syscall.Handle uintptr
}
我成功订阅了处理程序,没有任何错误,但它仍然无法正常工作。 任何想法为什么?我应该先看哪里?
使用系统调用时,确保在文件顶部包含 import "C"
。很高兴它帮助了你。