根据MSDN docs,EndScene不接受任何参数。
但是我注意到当人们挂钩EndScene时,他们的钩子EndScene函数采用IDirect3DDevice9* device
参数。例如:IDirect3DDevice9::EndScene hook sometimes get NULL in the parameter IDirect3DDevice9提出此问题的人对EndScene有一个IDirect3DDevice9* device
参数。这是为什么?
答案 0 :(得分:1)
在C ++中,成员函数的实现与常规函数类似,但是需要另外的第一个参数,它是指向对象的指针:this
指针。当你挂钩一个函数时,它通常涉及使用实际函数的原始地址,因此最简单的方法(更像是唯一理智的方法)是将这个钩子函数作为标准的C风格函数来处理,并人为地添加{ {1}}指针第一个参数。
编辑:调用约定可能确实是指出的问题,但它适用于this
,因为它们的方法声明为IDirect3DDevice9
。