kextによって定義されたメソッドをオーバーライドして、独自の処理を実行し、独自の値を返す必要があるため、kextがメソッドを呼び出すたびに、メソッドは自分のメソッドにルーティングされます。ですから、私がやりたいのは、このメソッドを自分のカーネル拡張で定義してからロードすることです。問題は、メソッドを交換する方法がわからないため、代わりに私のものが呼び出されることです。
/* basically, I need to override the isPinDigital method of AppleHDAPathSet */
AppleHDAPathSet::isPinDigital(void)
{
/* I also need to be able to call the superclass' method */
/* return my own value */
return 0;
}
これを行う簡単な方法はありますか?すべてのカーネル拡張が同じアドレス空間で実行されるため、 VTableを介してそれを行う方法があることを私は知っています(それが唯一の方法だと思いますが、それを行う方法がわかりません)。