news 2026/6/3 12:23:44

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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服务使用不同的寄存器集合来向回调函数传递参数。因此,在使用回调时,必须参考服务文档,了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 2:15:46

企业级云原生应用平台Erda:5分钟快速上手终极指南

企业级云原生应用平台Erda:5分钟快速上手终极指南 【免费下载链接】erda An enterprise-grade Cloud-Native application platform for Kubernetes. 项目地址: https://gitcode.com/gh_mirrors/er/erda Erda是一个专为Kubernetes设计的企业级云原生应用平台&…

作者头像 李华
网站建设 2026/6/3 11:35:24

KCP协议实战指南:如何用极简代码打造高可靠低延迟传输系统

KCP协议实战指南:如何用极简代码打造高可靠低延迟传输系统 【免费下载链接】kcp KCP —— 这是一种快速且高效的自动重传请求(Automatic Repeat-reQuest,简称ARQ)协议,旨在提高网络数据传输的速度和可靠性。 项目地址…

作者头像 李华
网站建设 2026/5/31 0:37:31

Langchain-Chatchat实体识别应用:自动标注人名/地名/组织机构

Langchain-Chatchat 实体识别应用:自动标注人名/地名/组织机构 在金融合规审查、法律合同归档或科研文献管理中,一个常见的挑战是:如何从成百上千页的非结构化文档里快速找出所有涉及的人名、公司和地理位置?传统做法依赖人工逐字…

作者头像 李华
网站建设 2026/6/2 9:56:08

35、媒体播放器音乐管理与复制全攻略

媒体播放器音乐管理与复制全攻略 1. 媒体播放器隐私设置 在媒体播放器的选项对话框中,点击“隐私”标签,会显示一些可决定媒体播放器通过互联网传输多少信息的选项。若希望媒体播放器能够在线获取媒体信息,必须选择前三个选项。该标签上的其他设置并非那么关键。若需了解隐…

作者头像 李华
网站建设 2026/6/2 2:53:45

人工智能赋能聚合物及复合材料模型应用与实践

近年来,生成式人工智能(包括大语言模型、分子生成模型等)在聚合物及复合材料领域掀起革命性浪潮,其依托数据驱动与机理协同,从海量数据中挖掘构效关系、通过分子结构表示(如 SMILES、BigSMILES)…

作者头像 李华