void foo(int fmt, ...)
{
}
//I hook foo
static void (*original_foo)(int fmt, ...);
void replaced_foo(int fmt, ...)
{
printf("Hooking");
va_list args;
va_start(args, fmt);
//do something
va_end(args);
//但我想调用original_foo函数, //我不知道如何调用它......
}
//Hook Function not include ...
Hook(foo, replaced_foo, (void **)&original_foo);
答案 0 :(得分:2)
如果你有一个相应的original_foo_v()
需要va_args
,那么你很幸运:你可以使用它。
如果不这样做(例如,如果使用DbgPrintf()
或LStrPrintf()
与LabVIEW连接),则必须自行制作。
基本上,你必须
va_list
,va_list
指向的位置和下一个堆栈帧之间的整个区域,va
感知功能。当然,您必须为您打算支持的每个平台执行此操作...
祝你好运,玩得开心。