| //go:build windows && cgo |
| // +build windows,cgo |
| |
| package main |
| |
| // #include <windows.h> |
| // typedef void(*callmeBackFunc)(); |
| // static void bridgeCallback(callmeBackFunc callback) { |
| // callback(); |
| //} |
| import "C" |
| |
| // CallMeBack call backs C code. |
| // |
| //export CallMeBack |
| func CallMeBack(callback C.callmeBackFunc) { |
| C.bridgeCallback(callback) |
| } |
| |
| // Dummy is called by the C code before registering the exception/continue handlers simulating a debugger. |
| // This makes sure that the Go runtime's lastcontinuehandler is reached before the C continue handler and thus, |
| // validate that it does not crash the program before another handler could take an action. |
| // The idea here is to reproduce what happens when you attach a debugger to a running program. |
| // It also simulate the behavior of the .Net debugger, which register its exception/continue handlers lazily. |
| // |
| //export Dummy |
| func Dummy() int { |
| return 42 |
| } |
| |
| func main() {} |