1//go:build windows && cgo
2// +build windows,cgo
3
4package main
5
6// #include <windows.h>
7// typedef void(*callmeBackFunc)();
8// static void bridgeCallback(callmeBackFunc callback) {
9//	callback();
10//}
11import "C"
12
13// CallMeBack call backs C code.
14//
15//export CallMeBack
16func CallMeBack(callback C.callmeBackFunc) {
17	C.bridgeCallback(callback)
18}
19
20// Dummy is called by the C code before registering the exception/continue handlers simulating a debugger.
21// This makes sure that the Go runtime's lastcontinuehandler is reached before the C continue handler and thus,
22// validate that it does not crash the program before another handler could take an action.
23// The idea here is to reproduce what happens when you attach a debugger to a running program.
24// It also simulate the behavior of the .Net debugger, which register its exception/continue handlers lazily.
25//
26//export Dummy
27func Dummy() int {
28	return 42
29}
30
31func main() {}
32