当前位置: 首页 > news >正文

34、在C中与VxD进行汇编编程

在C中与VxD进行汇编编程

1. 添加“Thunk”以支持来自VMM/VxD的回调

许多VMM和VxD服务要求调用的VxD注册一个回调函数,之后VMM/VxD会调用这个回调函数,以通知调用的VxD发生了某些有趣的事情。例如:
- 一个VxD可能会调用VPICD_Virtualize_IRQ来注册一个硬件中断处理程序,当硬件中断发生时,VPICD会调用已注册的处理程序。
- 一个VxD可能会调用VMM服务Install_IO_Handler来注册一个端口陷阱处理程序,当Ring 3应用程序访问特定的I/O端口时,VMM会调用这个处理程序。

在大多数情况下,提供给回调函数的参数是通过寄存器传递的,而不是通过栈。不过,配置管理器VxD是个明显的例外,它使用栈来向回调函数传递参数。因此,注册的回调函数通常位于汇编语言模块中,这样回调函数就可以访问寄存器参数。

示例VxD遵循这样的约定:所有注册的回调函数都位于VxD的汇编模块(包含DDB和设备控制过程的那个模块)中,但回调函数在调用VxD的C模块中的函数进行实际处理之前,只进行最少的处理。在示例VxD中,汇编回调函数的名称总是以“Thunk”结尾,而它调用的C函数的名称基名相同,但以“Handler”结尾。例如,PORTTRAP示例中,VxD的汇编语言模块中有函数PortTrapThunk,它会调用位于VxD的C模块中的PortTrapHandler

每个需要回调的VMM/VxD服务使用不同的寄存器集合来向回调函数传递参数。因此,在使用回调时,必须参考服务文档,了

http://www.cnnetsun.cn/news/161992.html

相关文章:

  • ArcGIS大师之路500技---037普通克里金VS泛克里金
  • QQ音乐API终极指南:快速搭建专属音乐数据服务
  • Auto-install 终极指南:智能依赖管理全解析
  • iOS上架被卡在 4.3条款 怎么办?分析应用被判定为相似应用的常见原因
  • Langchain-Chatchat协同编辑设想:多人同时维护知识库的可能性
  • 终极指南:用Docassemble快速搭建智能文档生成系统
  • 评测:Anthropic 最新发布的 Claude Opus 4.5 - 技术亮点与未来展望
  • Langchain-Chatchat多实例负载测试:JMeter压测结果分析
  • Langchain-Chatchat术语库管理:确保专业词汇一致性
  • 7步掌握Bucket4j:Java应用中的高性能速率限制方案
  • Langchain-Chatchat Grafana看板设计:全方位掌握系统状态
  • Kratos自适应降级:构建弹性微服务的智能防护体系
  • Yazi终极指南:如何在5分钟内搭建极速终端文件管理器
  • Langchain-Chatchat异地多活架构设计:跨区域容灾能力构建
  • 揭秘Whisper语音识别:从声音波形到精准文本的AI魔法
  • Langchain-Chatchat内存泄漏检测:长期运行稳定性保障
  • Langchain-Chatchat思维链(CoT)应用:复杂问题分步推理实现
  • Nextest:重新定义Rust测试效率的终极指南
  • 应用材料 0190-14927
  • Langchain-Chatchat SQL注入防护:MyBatis防攻击最佳实践
  • ssl_ciphers 配置详解
  • SpringBoot+Vue Spring boot社区医院管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 基于SpringBoot + Vue的青少年心理健康平台的设计与实现
  • 基于数据挖掘的小米手机营销数据分析与可视化
  • kanass全面介绍(23) - 如何将评审与企业微信通知相结合
  • Langchain-Chatchat是否支持语音输入?扩展功能开发思路分享
  • Langchain-Chatchat等保三级要求满足情况分析:国内合规指南
  • AI 提示词优化工具 v1.0:聚合提示词软件
  • 互联网大厂Java小白求职面试:从Spring Boot到微服务
  • Langchain-Chatchat与外部API联动:动态获取实时数据的方案