sub recorder { print "@_"; } #### printf "Address passed from Perl to C: %x\n", \&recorder; setHooks( \&recorder, \&player ) and die "$^E"; #### SV *g_rec = 0, *g_play = 0; int setHooks( SV* rec, SV* play ) { HANDLE hHook = GetModuleHandle( "hook" ); printf( "SH rec:%x\n", rec ); g_rec = rec; SvREFCNT_inc( g_rec ); printf( "SH g_rec:%x\n", g_rec ); // SvREFCNT_inc( g_play = play ); ... } #### Address passed from Perl to C: 1950428 SH rec:1d2ef20 SH g_rec:1d2ef20