EVT_WDF_DEVICE_PREPARE_HARDWARE API

NTSTATUS
EVT_WDF_DEVICE_PREPARE_HARDWARE(__inWDFDEVICE Device,__inWDFCMRESLIST ResourcesRaw,__inWDFCMRESLIST ResourcesTranslated);

上面API中ResourcesRaw和ResourcesTranslated类型相同,那他们的区别是啥?

答:

EVT_WDF_DEVICE_PREPARE_HARDWARE 是 WDF (Windows Driver Framework) 中的一个回调函数,用于为设备准备硬件。在这个回调函数中,ResourcesRawResourcesTranslated 是两个参数,它们的区别在于处理的资源列表的不同阶段。

  1. ResourcesRaw 这个参数包含设备的原始硬件资源列表。原始资源列表表示设备被分配的物理资源,这可能包括 I/O 端口、内存区域、中断等。这个列表中的资源是在系统分配硬件资源之前的资源分配情况。因此,它反映了操作系统在分配设备资源之前为设备分配的初始资源。

  2. ResourcesTranslated 这个参数包含设备的翻译后硬件资源列表。翻译后的资源列表表示设备在系统中实际使用的资源,经过了操作系统的翻译和重映射。这可能包括操作系统根据设备描述符进行的中断翻译、地址重映射等。翻译后的资源列表是设备在运行时实际使用的资源。

EVT_WDF_DEVICE_PREPARE_HARDWARE 回调函数中,驱动程序通常需要检查并使用这两个资源列表中的信息来配置设备,准备设备在系统中的运行环境。由于 ResourcesTranslated 反映了实际运行时使用的资源,通常驱动程序会更关心这个列表,因为它反映了系统在运行时为设备提供的实际硬件资源。

 

UINT32 dev_parse_hw_irq(WDFCMRESLIST resources)
{// Parse the resource list and save the resource information.PCM_PARTIAL_RESOURCE_DESCRIPTOR desc;for(UINT32 i = 0; i < WdfCmResourceListGetCount(resources); ++i) {desc = WdfCmResourceListGetDescriptor(resources, i);if(!desc) {trace(("WdfResourceCmGetDescriptor failed"));break;}if(desc->Type == CmResourceTypeInterrupt) {// MSI Interruptif (desc->Flags & CM_RESOURCE_INTERRUPT_MESSAGE) {can_trace(("MSI interrupt number: 0x%x", desc->u.MessageInterrupt.Translated.Vector));return desc->u.MessageInterrupt.Translated.Vector;} else { // Legacy Interrupttrace(("Legacy interrupt number: 0x%x", desc->u.Interrupt.Level));return desc->u.Interrupt.Level;}}}return -1;
}

下面说明 设备管理器--资源  页签中IRQ的值

此处显示的值为ResourceRaw中的值,是真实的硬件IRQ,没有经过OS翻译映射的
ResourceXlated中也有同样的IRQ,这是经过oS翻译后映射的,也是OS实际使用的IRQ,是Vector,中断向量

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端设计模式】之访问者模式

引言 在前端开发中&#xff0c;我们经常需要处理复杂的对象结构和数据集合。这时候&#xff0c;访问者模式就能派上用场了。访问者模式允许我们将操作和数据结构分离开来&#xff0c;从而实现对复杂对象结构的优雅处理。 访问者模式的特性 访问者模式具有以下特性&#xff1…

iview Table实现跨页勾选记忆功能以及利用ES6的Map数据结构实现根据id进行对象数组的去重

因为iview Table组件的勾选是选中当前页的所有数据,当我们切到别的页面时,会发送请求给后端,这个时候就会刷新我们之前页码已经选中的数据。现在有个需求就是,在我们选择不同页码的数据勾选中之后,实现跨页勾选记忆功能,就是说已经打钩了的数据,不管切到哪一页它都是打钩…

AI聊天专题报告:ChatGPT全景图聊聊技术产品和未来

今天分享的AI系列深度研究报告&#xff1a;《AI聊天专题报告&#xff1a;ChatGPT全景图聊聊技术产品和未来》。 &#xff08;报告出品方&#xff1a;LanguageX&#xff09; 报告共计&#xff1a;22页 争论&#xff1a;ChatGPT算不算技术革命 回应吴军老师“ChatGPT不算新技术…

Navicat 技术指引 | 适用于 GaussDB 分布式的模型功能

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

Dubbo学习

一、整体架构设计分层 接口服务层&#xff08;Service&#xff09;:该层与业务逻辑相关&#xff0c;根据provider和consumer的业务设计对应的接口和实现 配置层&#xff08;Config&#xff09;&#xff1a;对外配置接口&#xff0c;以ServiceConfig和ReferenceConfig为中心 服…

cache 2.单机并发缓存

0.对原教程的一些见解 个人认为原教程中两点知识的引入不够友好。 首先是只读数据结构 ByteView 的引入使用是有点迷茫的&#xff0c;可能不能很好理解为什么需要ByteView。 第二是主体结构 Group的引入也疑惑。其实要是熟悉groupcache&#xff0c;那对结构Group的使用是清晰…

线性回归与逻辑回归:深入解析机器学习的基石模型

目录 一、线性回归 二、逻辑回归 逻辑回归算法和 KNN 算法的区别 分类算法评价维度

QT作业2

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据查看器

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

微服务学习:Nacos微服务架构中的服务注册、服务发现和动态配置Nacos下载

Nacos的主要用途包括&#xff1a; 服务注册与发现&#xff1a;Nacos提供了服务注册和发现的功能&#xff0c;服务提供者可以将自己的服务注册到Nacos服务器上&#xff0c;服务消费者则可以通过Nacos来发现可用的服务实例&#xff0c;从而实现服务调用。 动态配置管理&#xff…

聚观早报 |华为畅享 70正式开售;梦饷科技双12玩法

【聚观365】12月8日消息 华为畅享 70正式开售 梦饷科技双12玩法 华为Mate X5应对火海挑战 谷歌发布AI模型Gemini 字节跳动开启新一轮回购 华为畅享 70正式开售 精致外观与创新科技兼具的华为畅享 70正式开售&#xff0c;1199元起搭载6000mAh超大电池&#xff0c;带来超强…

机器视觉相机镜头光源选型

镜头选型工具 - HiTools - 海康威视 Hikvisionhttps://www.hikvision.com/cn/support/tools/hitools/cl8a9de13648c56d7f/ 海康机器人-机器视觉产品页杭州海康机器人股份有限公司海康机器人HIKROBOT是面向全球的机器视觉和移动机器人产品及解决方案提供商&#xff0c;业务聚焦于…

oracle与sqlsever的区别

oracle与sqlsever的区别 区别一 oracle字符之间连接用|| sqlserver字符之间连接用区别二 oracle字段重命名用as sqlserver字段重命名用区别三 oracle判空用nvl sqlserver判空用isnull区别四 oracle多列合并成一列 select assid, LISTAGG(name, ) within group (order by…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据生成功能

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

GPTs的创建与使用,自定义GPTs中的Actions示例用法 定义和执行特定任务的功能模块 通过API与外部系统或服务的交互

Name 等 Logo:自动生成 Name 介绍 Description 介绍 Instructions 要求或命令等 比如用中文回复&#xff0c;角色。 Knowledge 上传你的知识库&#xff0c;如果你有某一垂直行业的数据&#xff0c;基于数据来回答。比如我有某个芯片的指令集。 Capabilities 都要 Actions&…

Flink 使用场景

Apache Flink 功能强大&#xff0c;支持开发和运行多种不同种类的应用程序。它的主要特性包括&#xff1a;批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、K8s 在内的多种资源管理框架上&#xff0c;还支持…

工业IC是什么

工业IC 电子元器件百科 文章目录 工业IC前言一、工业IC是什么二、工业IC的类别三、工业IC应用实例四、工业IC作用原理总结前言 工业IC包括微控制器(MCU)、采样芯片、模拟-数字转换器(ADC)、电源管理芯片、驱动芯片等。它们被广泛应用于各个行业的工业控制和自动化系统中,…

2023年泰国加密市场概览

一、泰国区块链及加密生态概览 1.加密货币数据分析平台访问人数火爆 2023年CoinMarketCap网站的平均月访问量为64.8万人次&#xff0c;占全国总人口的0.94%&#xff0c;泰国的人均访问量比美国高出0.21%。 1.2泰国加密资产交易量可观 根据CoinGecko上泰国领先的数字资产交易所…

vue3递归组件---树形组件

第一种方式&#xff0c;直接自己调用自己 Tree.vue <template><div class"tree"><div v-for"(item, index) in data" :key"item.name">每一层 {{ item.name }}<Tree v-if"item?.children?.length" :dataitem…

linux如何清空文件内容

在做系统运维工作时&#xff0c;有时会发现一个问题&#xff1a;某些存储空间的使用率过高。换句话说就是空间快被堆满了&#xff0c;需要释放空间。大多数情况下&#xff0c;导致空间不足的罪魁祸首通常是一些log日志文件。对于某些特殊系统来说&#xff0c;日志文件还不能直接…