放置和移除跳转钩子¶
由于你只是用钩子找设备,只需要调用它一次。获得设备后,你会移除跳转钩子,把执行恢复到 EndScene() 的开头,让绘制循环继续工作。信不信由你,这让你的生活容易得多。由于代码会立即恢复,你的蹦床不需要执行被跳转替换的命令,也不需要给跳转填充 NOP。你只需存储原始字节并放置钩子。为此,你使用清单 8-11 中跳转钩子代码的略微调整版本:
由于你只是用钩子找设备,只需要调用它一次。获得设备后,你会移除跳转钩子,把执行恢复到 EndScene() 的开头,让绘制循环继续工作。信不信由你,这让你的生活容易得多。由于代码会立即恢复,你的蹦床不需要执行被跳转替换的命令,也不需要给跳转填充 NOP。你只需存储原始字节并放置钩子。为此,你使用清单 8-11 中跳转钩子代码的略微调整版本: