【发布时间】:2017-07-07 10:21:52
【问题描述】:
我想在 Golang 中将 push subscription 设为 Windows 事件日志
我应该如何传递一个回调函数?
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
}
我成功订阅了没有错误的处理程序,但它仍然不起作用。 任何想法为什么?我应该先看哪里?
【问题讨论】:
-
寻找任何答案。
-
如果您没有收到任何错误..那么您如何衡量它不起作用?预期的功能是什么?发生了什么?测试和调试如何?这是所有代码吗...如果不是,您能否提供可以由社区在本地运行的代码。你是进口c??
import "C"作为顶行 github.com/golang/go/issues/10973 -
是的,就是这样!你能把它写成答案吗? (赏金)