hook function的參數要求是
void SetHookFunction(...,HookFunctionPtr hookFunctionPtr ,...)
HookFunctionPtr的定義是
public delegate void HookFunctionPtr(Type1 par1, Type2 par2....);
如果有一個Function
void MyHookFunction(Type1 par1, Type2 par2....)
在形別檢查上是可以直接呼叫
SetHookFunction(...MyHookFunction....);
但這樣在runtime的時候會不斷隨機(程式一開始可以正常執行)的莫名終止
一度以為是因為記憶體回收機制導致MyHook無法正常被呼叫,但嘗試著把MyHook設為Static依然是無解
後來才發現需要再以一個delegate變數去儲存
首先,先建立HookFunctionPtr型別的變數
HookFunctionPtr myHookFunctionPtr;
在建立一個delegate的物件
myHookFunctionPtr = new HookFunctionPtr (MyHookFunction);
最後再Hook上去就沒有問題了
SetHookFunction(...myHookFunctionPtr ....);
沒有留言:
張貼留言