Golang中的Windows回调函数

ubo*_*mbi 6 windows dll go event-log

我想在Golang中推送订阅 Windows事件日志
我应该如何传递回调函数?

EVT_SUBSCRIBE_CALLBACK是函数的指针,如

typedef DWORD ( WINAPI *EVT_SUBSCRIBE_CALLBACK)(
   EVT_SUBSCRIBE_NOTIFY_ACTION Action,
   PVOID                       UserContext,
   EVT_HANDLE                  Event
);
Run Code Online (Sandbox Code Playgroud)

所以,我的变体看起来像这样:

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
}
Run Code Online (Sandbox Code Playgroud)

我成功订阅处理程序没有错误,但它仍然无法正常工作.有什么想法吗?我应该先在哪里看?

ret*_*oot 3

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