hook DirectShow时出现函数递归调用
问题:
挂钩DirectCreateEx,获得IDirectDraw7对象的虚表,然后先保存虚表中的CreateSurface函数指针值,再使虚表中的CreateSurface函数指针指向自定义的CreateSurface函数,在自定义函数中调用原始的CreateSurface函数。
自己写了个测试程序,先调用DirectCreateEx,然后用获得的IDirectDraw7对象执行CreateSurface,输出数据显示进入到自定义的CreateSurface函数,且一切执行正常。
但执行DXSDK的中的DirectShow的一个播放示例程序时,创建的IGraphBuilder对象在执行RenderFile函数时,输出数据显示已经进入到自定义的CreateSurface函数,但在自定义的CreateSurface函数调用原始的CreateSurface函数时,又重新执行自定义函数,而自定义函数还未退出,结果就是不停的在自定义的CreateSurface函数开头到调用原始的CreateSurface函数之间不停的循环执行,看起来像原始的CreateSurface函数又调用了自定义的CreateSurface函数,执行了递归。
不知可有人能指点一二。