我需要重写一个由 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;
}
是否有捷径可寻?我知道有一种方法可以通过VTables来实现,因为所有内核扩展都在同一个地址空间中运行(我认为这是唯一的方法,但我不确定如何去做)。