- 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 //缓冲中要写数据的字节数 ); 写一个或多
您可能关注的文档
最近下载
- 2024-2025学年浙江省宁波市奉化区七年级下学期期末数学检测试卷.pdf VIP
- 让改革创新成为青春远航的动力.ppt VIP
- 通桥(2016)8388A 高速铁路常用跨度梁桥面附属设施.docx VIP
- 新版道德与法治三年级上册《5.走近科学家》教学设计.docx VIP
- 幼儿园课件:《牵牛花和它的朋友们》.pptx VIP
- CBT 3495.10-1995 船舶工业档案管理规则 档案收集及其业务指导要求-行业标准.pdf VIP
- 小学教育学 第二章 学校.ppt VIP
- 人美版七年级上册2.3《诗意的色彩》教案.pdf VIP
- 2024年秋新改版教科版五年级上册科学全册教案教学设计(新课标版).docx VIP
- 安全导则发布稿.pdf VIP
文档评论(0)