- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 3)直接对端口寄存器读写 DriverStudio提供了KIoRange类来将外部总线的I/O地址空间范围映射到处理器总线的地址空间范围。 该类的成员函数主要有 KIoRange 构造函数 (4 种格式) Initialize 初始化和重新初始化一个实例 (3种格式) ~KIoRange 析构函数 Invalidate 从已初始化状态删除该对象 IsValid 测试该对象是否已经初始化 inb 读一个或多个字节 (2 种形式) Outb 写一个或多个字节 (2 种形式) Inw 读一个或多个字 (2 种形式) Outw 写一个或多个字 (2 种形式) ind 读一个或多个双字 (2 种形式) outd 写一个或多个双字 (2 种形式) * KIoRange::KIoRange(只介绍WDM形式) FORM 3 (WDM): KIoRange(?? ULONGLONG CpuPhysicalAddress, //转换成外围设备地址的CPU总线上的物理地址 ?? BOOLEAN InCpuIoSpace, //如果IO范围是在CPU总线的IO空间中为TRUE,否则为FALSE ?? ULONG Count, //以字节计的区域的大小 ?? BOOLEAN MapToSystemVirtual =TRUE//指定是否需要构造函数创建一个非页系统空间的地址空间映射,如果驱动程序读写设备中的数据,就需要这种映射 ); FORM 4 (WDM): (注意: 这种形式不被 DriverStudio 2.0支持。) KIoRange(?? PCM_RESOURCE_LIST pTranslatedResourceList, //指向转换资源表的指针 ?? ULONG Ordinal=0, //指定pTranslatedResourceList指向的资源列表中的一个特殊端口资源 ?? BOOLEAN MapToSystemVirtual =TRUE); FORM 5 (WDM): KIoRange(?? PCM_RESOURCE_LIST pTranslatedResourceList, //可通过KIrp::TranslatedResources获得 ?? PCM_RESOURCE_LIST pRawResourceList, //指向原始资源表的指针 ?? ULONG Ordinal=0,?? BOOLEAN MapToSystemVirtual =TRUE);构造 KIoRange类。 * KIoRange::Initialize (只介绍WDM形式) FORM 2 (WDM): NTSTATUS Initialize(?? ULONGLONG CpuPhysicalAddress,?? BOOLEAN InCpuIoSpace,?? ULONG Count,?? BOOLEAN MapToSystemVirtual=TRUE); FORM 3 (WDM): (注意: 这种形式不被 DriverStudio 2.0支持。) NTSTATUS Initialize(?? PCM_RESOURCE_LIST pTranslatedResourceList,?? ULONG Ordinal=0,?? BOOLEAN MapToSystemVirtual =TRUE); FORM 4 (WDM): Initialize(?? PCM_RESOURCE_LIST pTranslatedResourceList,?? PCM_RESOURCE_LIST pRawResourceList,?? ULONG Ordinal=0,?? BOOLEAN MapToSystemVirtual =TRUE ); 初始化或重新初始化KIoRange的实例。 * KIoRange::inb FORM 1: UCHAR inb( ULONG ByteOffset ); FORM 2: VOID inb(?? ULONG ByteOffset,?? PUCHAR Buffer,?? ULONG Count); 从映射空间读一个或多个字节。 * KIoRange::outb FORM 1: VOID outb(?? ULONG ByteOffset,//以字节为单位的目标位置到IO空间开始位置的偏移值 ? UCHAR Data //要写的一个字节数据 ); FORM 2: VOID outb(?? ULONG ByteOffset,?? PUCHAR Buffer,//指向包含要写数据的缓冲的指针 ? ULONG Count //缓冲中要写数据的字节数 ); 写一个或多
您可能关注的文档
最近下载
- 河南省2019年对口升学网络选择和判断题.docx VIP
- 兴陇中学七年级语文期中复习《骆驼祥子》单选题.docx VIP
- 2025至2030年中国电站铸锻件市场分析及竞争策略研究报告.docx
- 2025年湖南选调真题及答案.docx VIP
- 防范电信网络诈骗宣传课件 PPT.pptx VIP
- 第4课 直面挫折 积极应对中职思想政治《心理健康与职业生涯》(高教版基础模块).pdf VIP
- 广西书院文化研讨.pdf VIP
- 高考古代文化常识判断题(一).docx VIP
- 前十题单选,后十题多选,每题5分,满分100分。.docx VIP
- 12K101-1~4 通风机安装(2012年合订本).pdf VIP
文档评论(0)