实验 8-3 内核模式驱动与测试.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 8-3 内核模式驱动与测试.doc

0755/021/010/028PAGE PAGE 11 实验8-3 内核模式驱动与测试 【实验目的】 掌握驱动程序编写架构。 掌握各类配置文件:REG、bib。 掌握Visual studio.NET 2005 驱动程序开发流程。 【实验步骤】 打开实验3-2编译好的Training工程。选择Project | Training Properties ...菜单或按Alt + F7,打开工程编译配置对话框。 【图1】Training Properties选项 在右边列表框中选中Build Option,配置工程编译选项,在Build Options列表框中选中Enable boot space in memory编译选项,按“确定”按钮完成工程编译配置 【图2】Training Property pages 选项 在Visual Studio 2005中选择File | Subproject…,在Available templates列表框中选择WCE Dynamic-Link Library, 创建一个“WCE Dynamic link library”子工程,子工程的名称为LedDriver,保存位置采用默认设置。 【图3】Windows Embedded CE Subproject Wizard(1)选项 单击Next按钮,在类型界面选中A Simple Windows Embedded CE DLL subprojects,按Finish 按钮,VS2005 将生成DLL框架代码。 【图4】Windows Embedded CE Subproject Wizard (2)选项 在Visual Studio 2005界面的Solution Explorer 选项卡中展开Subprojects-MyDriver-Source files,打开LedDriver.cpp文件,添加必须的头文件、变量定义、自定义函数:(注:以下红色为手动增加内容) // LedDriver.cpp : Defines the entry point for the DLL application. // #include stdafx.h #include nkintr.h #include CEDDK.h #include pkfuncs.h #define Light_IOCTL_Set 0#define Light_IOCTL_LShift 0#define Light_IOCTL_RShift 0#define Light_IOCTL_LRShift 0#define Light_IOCTL_ShiftStop 0#define Light_IOCTL_SetTime 0#define LED_BASEADDR1 0#define LED_BASEADDR2 0#define pLightIoBaseAddress 0//Led #define BIT7 (0x17) #define BIT15 (0x115) HANDLE m_hShiftEvent=NULL; BOOL m_bStop; BOOL m_bThreadRun; UINT m_ShiftDir; UINT ShiftTime; unsigned char ShiftData; // 十进制-七段数码显示表 BYTE NumData[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; USHORT *v_pLEDBaseAddr[2]; char* pLightReg = NULL; extern void WRITE_PORT_USHORT(UINT16 *pAddr, UINT16 Data); BOOL LEDInit(void) { char black=256; //虚拟地址分配 PHYSICAL_ADDRESS ioPhysicalBase = {LED_BASEADDR1, 0 }; v_pLEDBaseAddr[0]=(USHORT *)MmMapIoSpace(ioPhysicalBase,0x400,FALSE); ioPhysicalBase.QuadPart = LED_BASEADDR2; v_pLEDBaseAddr[1]=(USHORT *)MmMapIoSpace(i

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档