【问题标题】:Windows callback function in GolangGolang 中的 Windows 回调函数
【发布时间】: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
  • 是的,就是这样!你能把它写成答案吗? (赏金)

标签: windows go dll event-log


【解决方案1】:

使用系统调用时,请确保在文件顶部包含 import "C"。很高兴它帮助了你。

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2021-07-21
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多