Source file src/runtime/testdata/testwinlib/main.go

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

View as plain text