搜档网
当前位置:搜档网 › UEFI驱动程序的研究与开发

UEFI驱动程序的研究与开发

UEFI驱动程序的研究与开发
UEFI驱动程序的研究与开发

UEFI驱动程序的研究与开发

摘要: UEFI是Intel推出的新一代BIOS技术。在分析UEFI基本结构和驱动程序模型的基础上,详细论述了基于USB协议栈的CC2531 ZigBee模块的设备驱动程序设计与开发过程,实现了在操作系统启动之前主机与USB设备间的信息交互,扩展了UEFI的功能。关键词: UEFI BIOS;CC2531;设备驱动程序

统一可扩展固件接口UEFI(Unified Extensible Firmware Interface)是Intel推出的新一代BIOS技术,旨在定义一套操作系统与平台固件之间完整的接口规范,为操作系统的引导提供标准环境[1]。相比于使用汇编语言编写的传统BIOS,UEFI采用模块化的设计、C语言风格的参数堆栈传递方式,借由动态链接的形式所构建出来的系统,更易于实现[2]。同时,UEFI是以32 bit或64 bit CPU保护模式运行,突破了传统16 bit实模式代码的寻址能力,可达到CPU的最大寻址空间。得益于这些优点,UEFI经过近10年的推广,已经成为主流,将使用传统BIOS的微型计算机系统逐渐淘汰出市场[3]。 UEFI中引入了UEFI驱动程序模型的概念,采用驱动/协议的结构开发驱动程序,驱动程序和硬件完全独立,具有很强的扩展性,从而使得UEFI平台下添加新的特性变得简单[4]。1 UEFI基本结构分析 UEFI主要由引导管理器、固件内核、协议、驱动模型等组件构成[4]。其中固件内核为UEFI的基础,它将底层硬件功能抽象化,为上层的引导管理器提供两种服务:引导服务和运行时服务。引导管理器是一个策略引擎,它使用固件内核提供的服务加载UEFI驱动程序和应用程序,并最终加载操作系统。图1所示为UEFI的系统框架图。固件内核运行在PEI和DXE阶段,UEFI 在PEI阶段直接与硬件层打交道,启动必需的硬件资源,譬如完成CPU和芯片组的初始化,进而满足DXE的执行启动条件;其后,系统在DXE阶段完成其他所有硬件的初始化,并为上层接口实现引导服务和运行时服务。引导管理器运行在DXE和BDS阶段,它通过加载框架驱动和平台驱动向上层提供UEFI服务和接口,通过加载应用程序扩展系统功能,并在BDS阶段提供一个引导菜单,供用户选择引导设备。最终引导加载器在ROM上加载操作系统加载器,将控制权移交给操作系统,完成操作系统的引导。

2 CC2531 ZigBee模块的设备驱动程序开发 CC2531是TI公司推出的一款用于IEEE 802.15.4或ZigBee应用的片上系统解决方案,它能够以非常低的成本建立网络节点,支持低功耗的无线通信,主要用于远程控制、家庭控制等领域[5]。CC2531集成了USB2.0功能模块,可以更加方便地与主机进行通信。本文将CC2531 ZigBee模块(以下简称CC2531模块)通过USB接口与无线POS机的主机相连,CC2531模块通过ZigBee无线网络与POS机的外设(如打印机、客显、键盘等)进行信息交互。此方案实现了在启动操作系统之前对POS机及其外设进行相应远程检测和诊断的功能。图2为无线POS机系统的结构框图。2.1 UEFI驱动程序模型分析2.1.1 句柄和协议 UEFI驱动程序模型使用句柄代表设备,每个设备对应有自己的句柄,句柄由一个或多个协议组成。协议是一个以128 bit的全局唯一标识符GUID(Globally Unique Identifier)命名的结构体,是一些指针和数据结构体或者规范定义的接口函数指针的集合,协议代表设备提供的一类服务,服务的具体功能在设备驱动程序(以下简称驱动)中实现。开发者首先找到指定设备句柄上挂载的指定协议,再通过协议提供的接口访问设备驱动中实现服务的功能函数,对设备进行操作。图3所示为设备句柄和协议的结构图。

2.1.2 驱动程序模型执行流程 UEFI驱动程序模型是一种用于简化设备驱动设计和执行的机制,遵循驱动程序模型规范的UEFI驱动的可执行镜像大小会得到有效的减小[6]。UEFI 驱动程序模型的执行流程图。

驱动程序模型采用UEFI 驱动载入、连接的形式来进行硬件的辨识、控制及系统资源掌

控。在DXE阶段,系统调用引导服务的LoadImage()函数将驱动镜像文件加载到内存中,调

用StartImage()函数执行驱动的入口函数来启动驱动。遵循模型规范的设备驱动在入口函数

的初始化中不涉及任何硬件操作,仅仅实现驱动绑定协议(Driver Binding Protocol),协

议包含3个接口函数:Support()、Start()和Stop()。Support()函数用来验证驱动程序与

给定的设备句柄是否匹配;Start()函数负责驱动与句柄的连接,即将抽象 I/O 功能的协议

安装到设备句柄上;相对应的,Stop()函数则会强制停止驱动对一个设备句柄的管理和控制,

并卸载设备句柄在Start()中安装的所有协议。 DXE阶段执行完成后,虽然加载和启动了

驱动,但还在等待着连接设备句柄。因此,在BDS阶段引导管理器将会调用引导服务的ConnectController()函数执行驱动的连接过程。该函数执行所有驱动绑定协议的Support()

进行设备句柄的验证,若验证正确,则会继续调用Start()连接驱动和设备句柄,并在设备

句柄上安装抽象I/O功能的协议。2.2 CC2531模块USB驱动协议栈图5所示是由一系列

驱动组成的多层次的、完整的 USB 驱动协议栈。处于上层的驱动会使用下层驱动提供的服务,

并为更高层的驱动提供服务。首先,PCI总线驱动枚举设备时发现USB主机控制器,并在控

制器句柄上安装EFI_PCI_IO_PROTOCOL协议,USB主机控制器驱动则使用

EFI_PCI_IO_PROTOCOL协议提供的接口实现EFI_USB_HC_PROTOCOL协议。然后,USB总线驱动

使用EFI_USB_HC_PROTOCOL协议服务实现对USB设备的枚举,生成CC2531设备句柄,并在设

备句柄上安装EFI_USB_IO_PROTOCOL协议。最后,CC2531模块设备驱动使用

EFI_USB_IO_PROTOCOL协议服务,在CC2531模块设备句柄上安装

EFI_USB_CCCONTROL_PROTOCOL协议,完成CC2531模块驱动协议栈的加载。

2.3 CC2531模块驱动程序设计 CC2531模块驱动作为设备驱动,遵循UEFI驱动程序模型

规范,使用驱动绑定协议的方式实现设备驱动的加载和连接。同时,驱动还提供通信协议

EFI_USB_CCCONTROL_PROTOCOL用于系统与CC2531模块间的通信,并通过ZigBee网络与无线

POS机外设进行通信。2.3.1 绑定协议接口函数的实现

(1)Support():图6所示为Support函数实现流程图,函数首先检查给定的目标设备句

柄是否安装有 EFI_USB_IO_PROTOCOL协议,若有,则说明USB总线驱动已经辨认出该USB设

备。其次,使用EFI_USB_IO_PROTOCOL协议提供的功能接口函数获取目标USB设备的设备描

述符,描述符中的接口号、接口类型、子类型和协议等字段指定了的USB设备的类型,检查

这些字段就可得知驱动是否为CC2531模块设备驱动,如果匹配则说明加载的驱动正确,就会

执行Start()函数。以下是部分实现代码:

EFI_STATUS USBCC2531DriverBindingSupported(…) {… //检查

目标设备句柄是否安装有USB_IO协议 Status = gBS->OpenProtocol (Controller,

&gEfiUsbIoProtocolGuid, (VOID **) &UsbIo, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER ); … //读出目标USB设备的设

备描述符 Status = UsbIo->UsbGetInterfaceDescriptor ( UsbIo,

&InterfaceDescriptor); //检查是否为USB-CC2531的驱动

if(InterfaceDescriptor.InterfaceNumber==1

&&InterfaceDescriptor.InterfaceClass ==0x0a && InterfaceDescriptor.InterfaceSubClass==0 && InterfaceDescriptor.InterfaceProtocol == 0 ) { … } //关闭USB_IO协议

gBS->CloseProtocol (…); return Status; } (2)Start():Start()

函数的目标是使用USB总线驱动提供的协议服务在CC2531模块设备驱动中安装通信协议

EFI_USB_CCCONTROL_PROTOCOL。函数首先打开设备句柄上挂载的EFI_USB_IO_PROTOCOL协议,

使用该协议提供的接口函数UsbGetInterfaceDescriptor()和UsbGetEndpointDescriptor()

得到USB设备的接口描述符和端点描述符,分析设备描述符中的字段以确定USB设备信息和

接口类型等参数。其次,为驱动私有数据结构体分配内存,并使用设备描述符中的字段信息

进行初始化。最后,安装EFI_USB_CCCONTROL_PROTOCOL协议,完成驱动与设备的连接。图7

所示为Start()函数实现流程图。 (3)Stop():Stop()是Start执行流程的逆过程,该函

数用于卸载EFI_USB_CCCONTROL_PROTOCOL协议,释放驱动私有数据结构体占用的内存资源,

关闭EFI_USB_IO_PROTOCOL协议,断开CC2531模块驱动与设备句柄的连接。

2.3.2 设备通信协议结构体为了实现UEFI系统与CC2531模块之间的数据通信,本文设

计了EFI_USB_CCCONTROL_PROTOCOL作为驱动的通信协议。该协议中包括了UEFI系统与

CC2531模块间数据发送和接收的接口函数,还有部分与POS机系统外设交互的命令函数,如

系统外设启动和复位命令的接口函数。协议的部分成员函数定义如下:struct

_EFI_USB_CCCONTROL_PROTOCOL {… EFI_USB_CONTROLL_RESET Reset;//复位设备

EFI_USB_TEXTOUTPUT_STRING OutputString;//数据发送EFI_USBINPUT_STRING ReadInput; //数据读取 EFI_USB_DETECTDEVICE DetectDevice;//设备启动命令

EFI_EVENT WaitForInputString;//等待读入事件 };2.3.3 设备通信协议接口函数的实

现 CC2531 模块的USB接口固件代码是基于USB通信设备类CDC(Communication Device

Class)协议实现的。CDC由通信接口类和数据接口类组成,通信接口类主要负责设备的管理

和控制,数据接口类则负责数据的传输。CC2531模块的USB接口采用端点0作为通信接口类

中的控制端点来管理设备的枚举和命令控制,数据接口类使用块传输输入(IN)端点和块传

输输出(OUT)端点实现数据的双向传输。因此,UEFI系统对CC2531模块的枚举和识别采用

控制传输方式,数据通信则采用批量传输方式。协议的发送接口函数为UsbCCDataTransmit(),该函数调用EFI_USB_IO_PROTOCOL协议提供的服务函数UsbBulkTransfer(),通过将数据写入输出端口完成数据从主机到CC2531模块的批量传输。

设备驱动发送数据接口函数的部分代码实现如下所示: EFI_STATUS UsbCCDataTransmit

(…) { … //选择发送数据的输出端口

Endpoint=UsbCC2531Device->BulkOutEndpointDescriptor; //等待发送或接收的超

时时间Timeout = Timeout / USB_MASS_1_MILLISECOND; //发送数据

Status=UsbCC2531Device->UsbIo->UsbBulkTransfer

( UsbCC2531Device->UsbIo, Endpoint.EndpointAddress,Data, TransLen, Timeout, &Result); if (EFI_ERROR (Status)) { …} return Status; } CC2531模块设备驱动的数据接收操作亦通过调用函数UsbBulkTransfer()

检测输入端口的缓冲队列完成。由于数据接收操作的被动性,驱动需要建立一套读操作的响

应触发机制。本方案使用UEFI的事件(EVENT)机制实现对数据接收操作的响应:首先在驱动

的Start()创建一个定时器事件,并在定时器的响应函数USBCC2531Timer-Handler()中周期

性调用UsbCCDataRecevice()执行对输入端口缓冲队列的读操作,如果成功读到数据,则将

读回的数据存入私有数据结构体的循环队列UsbDataQueue中。其次,创建一个等待事件WaitForInputString,并在等待事件的触发函数中检查循环队列,如有数据则读取,否则循

环等待。部分数据读取操作的代码如下: EFI_STATUS UsbCCDataRecevice ( …)

{ … Status=UsbCC2531Device->UsbIo->UsbBulkTransfer (…); if (EFI_ERROR (Status)) { … } else { //将读取的数据存

入链表Enqueue

(UsbCC2531Device->UsbDataQueue,Data,MaxItemSize); } return Status; } UEFI采用的模块化设计和驱动程序模型都为整体系统提供了良好

的兼容性和扩展性,简化了UEFI驱动和应用程序的开发难度,提高了可维护性,有助于计算

机固件的进一步发展。相对于传统BIOS,UEFI具有明显的优越性,越来越得到业界和市场的

认可。本文从UEFI功能扩展的角度考虑,分析了UEFI的架构和驱动程序模型,设计并实现

了CC2531模块的设备驱动程序,最终实现了在启动操作系统之前通过CC2531模块与无线POS

机外设进行通信的目标。本方案的下一目标是扩展UEFI下的网络应用,实现对POS机系统的

远程管理和诊断。

windows驱动开发和调试环境搭建

Windows驱动开发和环境搭建 【文章标题】: Windows驱动开发和调试的环境设置 【文章作者】: haikerenwu 【使用工具】: VC6.0,VMware6.0.3,Windbg 【电脑配置】: 惠普笔记本xp sp3 (一)VMWare安装篇 VMWare的安装一路Next即可,关于其序列号,百度一下就能找到,虚拟机安装完成之后,需要安装操作系统,我在虚拟机中安装的是windows xp sp2系统。 点击“文件”----“新建”----“虚拟机” 进入新建虚拟机的向导,配置虚拟系统参数

选择虚拟系统文件的兼容格式(新手推荐选择默认选项) 按照默认设置继续点击下一步,选择好您需要的操作系统,此处我选择的是Windows XP Prefessional。 设置虚拟机名称和虚拟操作系统安装路径,我单独空出来一个F 盘,将虚拟机和虚拟操作系统全部装在该盘。

配置网络模式(推荐选择NA T,一般主机不用做任何的设置虚拟机就可以利用主机上网)。 配置虚拟磁盘的容量。在这里可以直接单击完成,来完成基本操作设置,磁盘默认空间是8GB,用户可以根据自己的实际使用情况来调整大小,也可以自定义分区。

操作完成之后,在“VM”菜单下有个“setting。。。”菜单,点击此菜单,在CD-ROM中选择合适的选项,我使用的是Use ISO image 选项,将我的xp sp2操作系统的ISO映像路径设置好,安装操作系统。点击ok之后,启动虚拟机,即开始安装操作系统,安装过程跟普通装机过程相同。安装完成之后,启动操作系统,然后在VM菜单下点击“Install VMWare Tools”,把虚拟操作系统的驱动装好。 (二)VMWare设置篇

Windows驱动程序手册

Windows驱动程序手册ELP-108/168/188ES(Rev.1.4)

目录 1.手册信息 (1) 2.操作系统 (1) 3.程序准备 (1) 4.驱动的安装 (2) 5.驱动的设置 (4) 5.1打印首选项 (4) 5.2其他设置 (9) 6.规格 (10) 6.1分辨率 (10) 6.2纸张规格 (10)

1.手册信息 本手册提供了Windows驱动程序安装说明和主要功能方面的信息。 我们致力于提高和升级产品的功能和质量,规格书的内容可能会更改,恕不另行通知。 2.操作系统 本打印机的Windows驱动适用于以下操作系统: ●Microsoft Windows8(32bit/64bit) ●Microsoft Windows7SPI(32bit/64bit) ●Microsoft Windows7SPI(32bit/64bit) ●Microsoft Windows7SPI(32bit/64bit) ●Microsoft Windows Vista SP2(32bit/64bit) ●Microsoft Windows XP Professional SP3(32bit) ●Microsoft Windows Server2012(64bit) ●Microsoft Windows Server2008R2 ●Microsoft Windows Server2008SP2(32bit/64bit) ●Microsoft Windows Server2003R2SP2(32bit/64bit) 3.程序准备 驱动程序包含在随机所附CD。 驱动文件命名为:Tengen ELP Label Driver-v-X.X.X.X.exe 如:Tengen ELP Label Driver-v-1.2.0.0.exe

设备驱动程序

驱动程序 驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被比作“硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。 中文名 驱动程序 外文名 Device Driver 全称 设备驱动程序 性质 可使计算机和设备通信的特殊程序 目录 1定义 2作用 3界定 ?正式版 ?认证版 ?第三方 ?修改版 ?测试版 4驱动程序的开发 ?微软平台 ?Unix平台 5安装顺序 6inf文件 1定义 驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 惠普显卡驱动安装 正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设

备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。 设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。 所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。 戴尔电脑驱动盘 驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。 当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。 在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。 在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows 自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS 模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附

Windows驱动开发培训

Windows驱动开发培训 培训流程: 一、基础知识 在开始驱动开发之前,您应该知道操作系统原理以及驱动程序是如何在操作系统中进行工作的,了解这些基本原理将有助于您做出正确的设计决策并简化您的开发过程。 1、了解Windows操作系统构造\\ 可以链接进去 2、安装WDK,参考相关文档,熟悉WDK的内容\\ 可以链接进去 二、Windows驱动开发\\ 可以链接进去 一、基础知识 在开始驱动开发之前,您应该知道操作系统原理以及驱动程序是如何在操作系统中进行工作的,了解这些基本原理将有助于您做出正确的设计决策并简化您的开发过程。 1、了解Windows操作系统构造 (1)培训目标 深入了解Windows操作系统的系统结构以及工作原理 (2)培训内容 阅读书籍《深入解析Windows操作系统》的第3、4、6、7、9章,重点关注第九章“I/O系统” (3)培训任务 ①掌握Windows操作系统的系统结构 ②理解ISR、IRP、IRQL、DCP等概念的含义 ③了解注册表的用法,掌握注册表数据的查看和修改方法 ④了解进程和线程的内部机理以及线程的调度策略 ⑤了解I/O系统的内容,理解I/O请求以及I/O处理过程 注:以上相关内容,请在一周内完成。

2、安装WDK,参考相关文档,熟悉WDK的内容 (1)培训目标 了解WDK的安装过程,熟悉WDK的编译环境,掌握如何使用WDK的相关帮助文档;了解WDM驱动程序的基本结构 (2)培训内容 ①.阅读文档\\10.151.131.12\book\windows\MSWDM.chm,掌握WDM驱动程序的基本结构以及基本的编程技术。 ②.参考WDK的帮助文档:WDK documentation ,了解WDK的基本内容 (3)培训任务 ①理解分层驱动结构的含义,掌握设备和驱动程序的层次结构 ②理解“驱动对象”和“设备对象”的概念 ③理解2个基本例程:DriverEntry 和addDevice ④了解IRP的结构以及IRP处理的流程 ⑤初步了解I/O的控制操作 注:以上相关内容,请在一周内完成。 二、Windows驱动开发 学习如何基于WDK进行驱动程序的开发 1、培训目标 (1)学会根据WDK开发一个基本的Windows驱动程序和测试程序 (2)学会利用不同的IOCTL方式在内核模式和用户模式之间进行通讯 (3)学会如何在内核模式下和用户模式下访问注册表 (4)利用WinDbg跟踪程序,学会使用WinDbg进行调试 2、培训内容 (1)阅读\src\general\ioctl中的示例代码 (2)build并运行应用程序和驱动程序

如何配置VC编译Windows驱动程序

用VC IDE环境编译驱动程序目前Windows驱动程序分为两类,一类是不支持即插即用功能的NT式驱动程序,另一类是支持即插即用功能的WDM驱动程序。它们在用VC IDE编译驱动程序时有些不一样,下面分开说明: 一、NT驱动( 红色字体标注的地方是容易忽略的): (1)用VC建立一个新工程。在VC IDE环境下选择“File”“New”,弹出“New”对话框。在该对话框中,选择“Project”选项卡。在“Project”选项卡中,选择Win32 Application,在这个基础上进行修改。工程名为“XXXXXX”,。单击“OK”,进入下一个对框框,在该对话框中,选择一个空的工程。 (2)将驱动程序的两个源文件XXX.h和XXX.cpp拷贝到工程目录中,并添加到工程中(Project->Add To Project->File)。 (3)增加新的编译版本,去掉Debug和Release版本(Build->Configuration中添加一个Check)。 (4)修改工程属性。选择“Project”|“Setting”,在对话框中,选择“General”选项卡。 将Intermediate files和Output files改为XXX_Check。 (5)选择C/C++选项卡,将原有的Project Options内容中全部删除,替换成如下内容,/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo”MyDriver_Check/” /Fd”MyDriver_Check/” /FD /c (6)选择Link选项卡,将原有的Project Options内容全部删除,替换成如下内容,ntoskrnl.lib /nologo /base:”0x10000”/stack:0x400000,0x1000 /entry:”DriverEntry” /subsystem:console /incremental:no /pdb:”MyDriver_Check/XXX.pdb”/debug /machine:I386 /nodefaultlib /out:”MyDriver_Check/XXX.sys”/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078 (7)修改VC的lib目录和include目录。在VC中选择“Tools”|“Options”,在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单选择“Include files”菜单。添加“D:\WINDDK\2600\INC\W2K”和“D:\WINDDK\2600\INC\DDK\W2K”,并将这两个目录置于最上。大家可以将这个目录“D:\WINDDK\2600”改成你们自己安装的目录。这里应该选择W2K子目录,DDK中还会有相应的XP子目录。但因为XP驱动编译时候需要高版本的VC编译

在 Windows XP 下无法安装驱动程序,怎么办

故障现象 ?安装驱动程序时连接、识别打印机出现问题,提示连接、识别失败。 ?安装驱动程序时搜索不到 USB 设备,安装失败。 注意事项 在安装驱动程序过程中建议您关闭防火墙软件和杀毒软件,这些软件会限制打印机程序调用系统文件,导致打印机在安装/使用过程中出现问题。 必须确认已经删除了原先安装的驱动程序,电脑上曾经安装过 HP LaserJet 激光打印机的驱动程序,重新安装驱动程序之前,需要先删除以前安装的驱动程序,否则可能会出现无法找到设备或者安装不上驱动程序的现象。 解决方法 1.依次点击“开始”→“打印机和传真”。 2.在“打印机和传真”窗口中,依次点击“文件”→“添加打印机”,进 入“添加打印机向导”窗口。如图 1 打印机和传真所示: 图 1: 打印机和传真 3.在“欢迎使用添加打印机向导”窗口中,点击“下一步”按钮。

4.在“本地或网络打印机”窗口中,选择“连接到此计算机的本地打印 机”选项,勾除“自动检测并安装即插即用打印机”选项,然后点击“下一步”按钮。如图 2 本地或网络打印机所示: 图 2: 本地或网络打印机 5.在“选择打印机端口”窗口中,从“使用以下端口”下拉列表中选择 USB 端口,然后点击“下一步”按钮。 o下拉列表中有多个 USB 端口时,选择数字最大的 USB 端口。例如:有“USB001”、“USB002”两个端口,应该选择“USB002”端口。 o下拉列表中没有 USB 端口时,需要先开启打印机电源,然后将打印机 USB 连接线连接到电脑,操作系统会自动创建 USB 端口。 关闭“添加打印机向导”窗口,重新开始添加打印机即可。 如图 3 选择打印机端口所示: 图 3: 选择打印机端口

Windows驱动开发入门

接触windows驱动开发有一个月了,感觉Windows驱动编程并不像传说中的那么神秘。为了更好地为以后的学习打下基础,记录下来这些学习心得,也为像跟我一样致力于驱动开发却苦于没有门路的菜鸟朋友们抛个砖,引个玉。 我的开发环境:Windows xp 主机+ VMW ARE虚拟机(windows 2003 server系统)。编译环境:WinDDK6001.18002。代码编辑工具:SourceInsight。IDE:VS2005/VC6.0。调试工具:WinDBG,DbgView.exe, SRVINSTW.EXE 上面所有工具均来自互联网。 对于初学者,DbgView.exe和SRVINSTW.EXE是非常简单有用的两个工具,一定要装上。前者用于查看日志信息,后者用于加载驱动。 下面从最简单的helloworld说起吧。Follow me。 驱动程序的入口函数叫做DriverEntry(PDRIVER_OBJECT pDriverObj,PUNICODE_STRING pRegisgryString)。两个参数,一个是驱动对象,代表该驱动程序;另一个跟注册表相关,是驱动程序在注册表中的服务名,暂时不用管它。DriverEntry 类似于C语言中的main函数。它跟main的差别就是,main完全按照顺序调用的方法执行,所有东西都按照程序员预先设定的顺序依次发生;而DriverEntry则有它自己的规则,程序员只需要填写各个子例程,至于何时调用,谁先调,由操作系统决定。我想这主要是因为驱动偏底层,而底层与硬件打交道,硬件很多都是通过中断来与操作系统通信,中断的话就比较随机了。但到了上层应用程序,我们是看不到中断的影子的。说到中断,驱动程序中可以人为添加软中断,__asm int 3或者Int_3();前者是32位操作系统用的,后者是64位用的。64位驱动不允许内嵌汇编。下面是我的一个helloworld的源码:

【项目管理知识】管理信息系统开发的项目管理

管理信息系统开发的项目管理 实行项目管理,规范其组织模式和管理过程对于保证管理信息系统的开发成功很重要,但更重要的是管理过程中的质量控制及协调工作,这是控制开发成本、提高开发效率和保证开发成果质量的有效手段。 管理信息系统开发的项目管理是为了使开发项目能够按照预定的成本、进度和质量顺利完成,根据管理科学的理论,对需求、成本、人员、进度、质量、风险等进行科学分析和有效管理及控制,并利用工程化开发方法所进行的系统活动。 1项目管理的组织模式 管理信息系统开发可以是企业管理信息系统的开发,也可以是为实现企业某一管理职能而进行的一个单独的开发项目。对于前者,需成立企业的项目委员会,委员会下设项目管理组、项目评审组和项目开发组;如果是后者,则可以根据职能所涉及的范围,召集相关部门人员成立开发项目组,项目组中分设系统开发小组和项目评审小组,由项目负责人进行统一管理和协调。 项目管理负责人可以为多人,由职能部门和信息部门管理人员组成。主要职责为:拟定项目管理的进度安排;组织项目阶段评审;协调整体开发工作;加入收藏对项目管理采取优化措施。 项目评审小组一般由企业技术专家组成。主要职责为:对项目的需求分析进行评审;对系统选型和开发计划进行评审;对系统开发进行阶段性评审;对项目总结报告进行评审。 开发项目组有开发技术人员构成。主要职责是:根据项目负责人的安排具体负责项目的软件开发工作;项目结束后提交开发成果并形成技术文档。

2管理信息系统项目管理过程 一个完整的管理信息系统开发项目通常包括三大阶段:需求分析、系统选型和系统实施。从具体的项目执行过程上来讲,项目管理可分为项目的项目授权、需求分析、项目选型、开发计划制定与实施、项目评估及更新和项目完成验收六个步骤。 2.1项目授权 在管理信息系统的开发要求提出后,需要确定开发项目管理的责任者,由其负责项目的可行性分析、需求评估,并进行项目开发的总体规划和管理与质量控制等,即将项目开发与管理的权限授予某一部门。一般而言,如果是针对企业的某项管理职能而进行的系统开发,应由具备此项管理职能执行能力的部门来负责;若是企业的总体管理信息系统开发,设为首页这应由成立的项目管理委员会负责。 2.2需求分析 需求分析可分为三个过程: 1)可行性评估:根据项目所期望达到的目标,明确项目开发所需要投入的企业资源,并从企业现行的管理方式和理念、人力资源、技术支持等方面考虑,考|试/大确定项目开发成果能否被使用者接受,能否促使工作流程的合理化,提高工作效率,降低企业管理运行成本。 2)需求评估:对管理信息系统开发的整体需求和期望做出分析和评估,详细考虑需求的实现方式,确定系统的各个功能模块及模块间的关系,对系统的信息标准进行统一确定,并据此明确管理信息系统项目成果的期望和目标。

Windows驱动程序开发环境配置

Windows驱动程序开发笔记 一、WDK与DDK环境 最新版的WDK 微软已经不提供下载了这里:https://https://www.sodocs.net/doc/3916983835.html,/ 可以下并且这里有好多好东东! 不要走进一个误区:下最新版的就好,虽然最新版是Windows Driver Kit (WDK) 7_0_0,支持windows7,vista 2003 xp等但是它的意思是指在windows7操作系统下安装能编写针对windows xp vista的驱动程序, 但是不能在xp 2003环境下安装Windows Driver Kit (WDK) 7_0_0这个高版本,否则你在build的时候会有好多好多的问题. 上文build指:首先安装好WDK/DDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库 如果你是要给xp下的开发环境还是老老实实的找针对xp的老版DDK吧,并且xp无WDK 版只有DDK版build自己的demo 有个常见问题: 'jvc' 不是内部或外部命令,也不是可运行的程序。 解决办法:去掉build路径中的空格。 二、下载 WDK 开发包的步骤 1、访问Microsoft Connect Web site站点 2、使用微软 Passport 账户登录站点 3、登录进入之后,点击站点目录链接 4、在左侧的类别列表中选择开发人员工具,在右侧打开的类别:开发人员工具目录中找到Windows Driver Kit (WDK) and Windows Driver Framework (WDF)并添加到您的控制面板中 5、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。 6、点击Windows Driver Kit (WDK) and Windows Driver Framework (WDF),看到下面有下载链接,OK,下载开始。下载后的文件名为: 6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso将近600M大小。

信息系统开发的格言

信息系统开发的格言 Document number:WTWYT-WYWY-BTGTT-YTTYU-2018GT

信息系统开发的格言 如果信息服务人员和用户人员将下述格言牢记在心,那么,将得到更好的信息系统,而且整个公司的生意将更加兴隆。 □不要无限期地推迟自动化 对于一个面向事务的人工系统的自动化来说,存在着一个转化点,从那一点开始自动化的系统从经济上是可取的。在人工系统中,为了解决增大工作量的问题,必须雇用更多的人,于是使得处理第500个事务的成本如同处理第一个事务一样。尽管对一个自动化的系统的初期费用,用时间和金钱的术语来衡量是相当大的,但是随着工作量增加时,处理每件事务的成本反而降低。 □各个击破 要将系统化分成足够小的、易于管理的模块来进行系统开发。一个高质量信息系统最严重的障碍之一是缺乏有效的通信手段。一旦将系统模块化,则可以将相互交流有效地集中在系统的某一段上。其结果是在用户和信息服务人员之间信息的传递更为有效。 □不要过早的开始写详细功能说明书 在对所有各层还没有吃透之前,项目组不应根据一层的情况而类推下一层并进行全面概括。根据系统的复杂性,需要概括的层次可能有8层之多。项目组应该抵制那种在系统开发初始阶段就忙着进行详细到“位和字节”方面的工作。不幸的是,项目组成员远在第Ⅱ阶段完成之前就开始程序设计是很普遍的。跳过概括的层次将必然要导致不必要的返工。 □在系统设计阶段建立性能检查标准 应该测量系统的质量和性能。在开发之前,应该列出成功的标准,并且应该将针对这些标准评价系统的能力加入到系统设计中。这就使得用户管理人员能够评价系统是否满足目标并且能正确地找出运行的问题。 □在整个系统开发过程中始终强调质量要求的一致性 贯穿整个系统开发的过程中,质量的要求应该是连续的和一致的。能够做到这一点的唯一途径是建立良好的项目管理。从支持其他活动的角度看,一个也不能忽略。最终系统输出的质量并不比质量最低的活动的输出质量要好。例如,如果忽略了(用以在并行工作期间支持严格工作的)系统验收测试活动将打乱工作规则的一致性,从而会降低系统的质量。作为另一个例子,如果决定省略掉技术转移的调查研究而仅仅把注意力集中在内部开发上必将导致在长期的运行中更多的工作和更低的质量。 □采用一种系统开发方法学 提供系统开发指南的系统开发方法学是系统开发必要的工具。之前,我们已经讨论过系统开发方法学的好处。 □边开发边编写资料 资料可以用于建立开发过程,有些项目直到项目实现之前一直忽略了编写资料的工作。采取这种策略的项目组将会发现他们自己不止一次的遇到同样的麻烦。例如,一个用户经理与项目组谈话而没有记录可查。研究表明,如果没有书面资料,在一次会议上的结果在间隔几周之后,能再现的内容之百分比很小。 □尽快停止明显无效益的项目 俗话说:不要因小失大。一旦某个特定项目的输出不能达到用户预期的目的或是不再符合公司的目标,那么就应该把这种项目撤消。很多表现拙劣的系统一直被进行到完成,而这些系统是本应紧急刹车的。

WINDOWS驱动编程

WDM驱动程序开发之读写设备寄存器:KIoRange类 2009-11-09 14:05 WDM驱动程序开发之读写设备寄存器:KIoRange类收藏 KIoRange类: 一、Overview KIoRange类将一系列特殊的外围总线的地址映射到CPU总线的地址空间。CPU总线上的地址即可能在CPU的I/O空间,也可能在CPU的内存空间,这取决于平台和外围总线的控制方式。考虑到可移植性,所有对I/O周期(I/O cycle)进行译码的设备驱动程序必须用这个类对I/O的位置(location)进行正确的访问(access)。KIoRange是KPeripheralAddress类的派生类。 一旦映射关系建立起来,驱动程序就用KIoRange类的成员函数去控制设备的I/O寄存器。这个类提供了8位、16位和32位I/O访问控制的函数。这些函数是以内联(in-line)函数方式来使用的,它们调用系统内相应的宏来产生依赖于平台的代码。 对I/O位置(location)进行访问的另一种备选方案是创建一个KIoRegister 的实例。这要通过取得一个KIoRange对象的数组元素来实现。 为了访问一系列外围总线内存空间的地址,需要用KMemoryRange类。 二、Member Functions 1、KIoRange - Constructor (4 forms) 构造函数 【函数原型】 FORM 1: KIoRange( void ); FORM 2: (NTDDK Only) KIoRange( INTERFACE_TYPE IntfType, ULONG BusNumber , ULONGLONG BaseBusAddress, ULONG Count, BOOLEAN MapToSystemVirtual =TRUE ); FORM 3 (WDM): KIoRange( ULONGLONG CpuPhysicalAddress, BOOLEAN InCpuIoSpace, ULONG Count, BOOLEAN MapToSystemVirtual =TRUE

信息系统开发管理办法(暂行)

华鑫置业(集团)股份XX 信息系统开发管理办法(暂行) 一、目的和作用 本流程详细规定软件开发程的各个阶段及每一阶段的任务、要求、交付文件,使整个软件开发过程阶段清晰、要求明确、任务具体,实现软件开发过程的标准化。 二、适用X围 公司的信息系统开发产品均适用。 三、适用对象 开发管理人员,系统开发人员,系统维护人员 四、软件开发流程 4.1可行性研究与计划 4.1.1实施 a. 软件开发部分析人员进行市场调查与分析,确认软件的市场需求 b. 在调查研究的基础上进行可行性研究,写出可行性报告 c. 评审和审批,决定项目取消或继续 d. 若项目可行,制订初步的软件开发计划,建立项目日志 e. 根据市场环境、公司软硬件情况预测十大风险因素 4.1.2 文档 a. 应交付的文档 1)可行性研究报告 2)初步的软件开发计划 3)十大风险列表 4)软件项目日志

b. 提交步骤 1)适用于以后各阶段的文档提交。 2)项目相关文档用管理工具进行版本管理,相关书写人员可根据各文档模板形式撰写文档,正式提交的文档以存入软件管理服务器相关目录时间为准。以后每次修改都应注明修改内容。 4.2需求分析 4.2.1实施 a. 调查被开发软件的环境 b. 软件开发提出的需求进行分析并给出详细的功能定义 c. 做出简单的用户原型,与用户共同研究,直到用户满意 d. 对可利用的资源(计算机硬件、软件、人力等)进行估计,制定项目进度计划(可有相应的缓冲时间) e. 制定详细的软件开发计划 f. QA部门制订质量控制计划和测试计划 g. 编写初步的用户手册 h. 评审 4.2.2要求 a. 必须以运行环境为基础 b. 应有用户指定人员参加 c. 需求说明书必须明确,并经过用户确认 4.2.3交付文档 a. 软件需求说明书 b. 用户手册(概要) c. 更新后的软件开发计划 d. 项目进度计划 e. QA计划 f. 测试计划* g. 更新后的十大风险列表 h. 软件日志

Windows 内核技术与驱动开发笔记(完整版)

Windows 内核技术与驱动开发笔记 1.简述Driver Entry例程 动程序的某些全局初始化操作只能在第一次被装入时执行一次,而Driver Entry例程就是这个目的。 * Driver Entry是内核模式驱动程序主入口点常用的名字。 * Driver Entry的第一个参数是一个指针,指向一个刚被初始化的驱动程序对象,该对象就代表你的驱动程序。WDM驱动程序的Driver Entry例程应完成对这个对象的初始化并返回。非WDM驱动程序需要做大量额外的工作,它们必须探测自己的硬件,为硬件创建设备对象(用于代表硬件),配置并初始化硬件使其正常工作。 * Driver Entry的第二个参数是设备服务键的键名。这个串不是长期存在的(函数返回后可能消失)。如果以后想使用该串就必须先把它复制到安全的地方。 * 对于WDM驱动程序的Driver Entry例程,其主要工作是把各种函数指针填入驱动程序对象,这些指针为操作系统指明了驱动程序容器中各种例程的位置。 2.简述使用VC进行内核程序编译的步骤 编译方式是使用VC++进行编译 1.用VC新建工程。 2.将两个源文件Driver.h和Driver.cpp拷贝到工程目录中,并添加到工程中。 3.增加新的编译版本。 4.修改工程属性,选择“project | setting”将IterMediate file和Output file 都改为MyDriver_Check。 5.选择C/C++选项卡,将原有的Project Options内容全部删除替换成相关参数。 6.选择Link选项卡,将原有的Project Options内容删除替换成相关Link。 7.修改VC的lib目录和include的目录。 8.在VC中选择tools | options,在弹出的对话框中选择“Directories”选项卡,在“Show directories for”下拉菜单中选择“Include file”菜单。添加DDK的相关路径。 3.简述单机内核调试技术 答:1.下载和安装WinDbg能够调试windows内核模块的调试工具不多,其中一个选择是微软提供的WinDbg 下载WinDbg后直接双击安装包执行安装。 2.安装好虚拟机以后必须把这个虚拟机上的windows设置为调试执行。在被调试系统2000、2003或是xp的情况下打开虚拟机中的windows系统盘。 3.将boot.ini文件最后一行复制一下,并加上新的参数使之以调试的方法启动。重启系统,在启动时就可以看到菜单,可以进入正常windows xp,也可以进入Debug模式的windows xp。 4.设置VMware管道虚拟串口。调试机与被调试机用串口相连,但是有被调试机是虚拟机的情况下,就不可能用真正的串口连接了,但是可以在虚拟机上生成一个用管道虚拟机的串口,从而可以继续内核调试。 4.请画出Windows架构简图

常用信息系统的开发方法

⑴结构化生命周期方法 信息系统从规划开始,经过分析、设计、实施直到投入使用,并在使用过程中随其运行环境的变化而不断修改,当它不再适应需要的时候就要被淘汰,而由新的消息系统代替老的信息系统,这种周期循环称为信息系统的生命周期。结构化方法将信息系统软件生命分为系统规划、系统分析、系统设计、系统实施和系统维护五个阶段。各阶段工作按顺序开展,行如自上而下的瀑布,所以又称瀑布模型方法,在生命周期的每一个阶段都有明确的工程任务并要求产生一定规格的文档资料。只有前一阶段工作完成并通过评审才能开始下一阶段的工作。如果评审过程中发现错误,则要返回前面某个阶段,重复有关工作,直到该阶段通过审评。这样做可以及时发现错误,防止将错误蔓延到后续阶段,避免重大损失。 在结构化生命周期法开发信息系统的过程中,特别强调结构化的分析和设计原则,事实上,结构化系统分析与系统设计是一种简单、实用、应用广泛的方法,其基本思想是: ①采用自顶向下、逐层分解、逐步求精的方法分析整个系统,可以有效的减少和控制系统开发的复杂性。 ②采用图示工具描述分析和设计内容,便于系统开发过程中各种人员之间相互交流。 ③明确系统开发的各个阶段的任务。例如,在系统分析的阶段明确系统所需要的结构和功能,而在系统设计阶段明确系统的

结构和功能如何实现 ④强调用户进行系统分析及系统设计过程中的作用。 ⑵原型法 原型法是随着计算机软件的发展,特别是在关系数据库系统、第四代程序设计语言和各种工具产生的基础上,提出的一种新的系统开发的方法。所谓原型,是指由系统分析人员和用户合作,在短期内定义用户基本需求的基础上,首先开发出一个具有基本功能、实用性的,简易的应用软件。然后运行这个原型,并在相应的辅助开发工具的支持下,按照不断求优的设计思想,通过反复的完善性实验而最终开发出符合用户需求的整个信息系统。目前,在信息系统开发中还使用面向对象方法和case方法。

第五章 管理信息系统的开发方法

第五章管理信息系统的开发方法 通过本章学习,了解管理信息系统开发的任务和特点;懂得系统开发的原则、系统开发的方式、开发的策略、开发的组织工作与项目管理的内容;掌握结构化系统开发生命周期法和原型法的基本思想、开发过程和各自的优缺点;理解面向对象法和计算机辅助开发方法。 基本内容 一、管理信息系统开发 1.系统开发的任务:系统开发的任务是根据企业管理的战略目标、规模、性质等具体情况,从系统论的观点出发,运用系统工程的方法,按照系统发展的规律,为企业建立起计算机化的信息系统。其中核心是设计出一套适合于现代企业管理要求的应用软件系统。 2.系统开发的特点:复杂性、基于原系统、高于原系统、一把手工程、产品是无形的。 3.系统开发的基本原则:面向用户原则、系统性原则、符合软件工程规范的原则、逐步规范发展的原则。 4.系统开发的主要风险:投入超计划、系统性能比预期差、没获得预期收益,有的甚至导致完全失败。 二、系统开发方法 1.结构化系统开发方法 结构化系统开发方法:用系统工程的思想和工程化的方法,遵照用户至上的原则,从系统的角度分析问题和解决问题,将提出建立一个管理信息系统到系统完全建成的生命周期划分为5个阶段,这5个阶段是:系统规划、系统分析、系统设计、系统实施和系统维护与评价。按照规定的步骤和任务要求,使用图表工具完成规定的文档,采用自顶向下整体分析和设计,自底向上逐步实施的系统开发过程。 优点:建立面向用户的观点、严格区分工作区间、设计方法结构化、文件标准化和文献化。 缺点:开发周期长、繁琐,使用工具落后、不能充分预料可能发生的情况及变化、不直观,用户最后才能看到真实模型。 2.原型法 原型法:是指系统开发人员在初步了解用户的基础上,借助功能强大的辅助系统开发工具,快速开发一个原型,并将其演示给用户,开发人员根据用户的意见和评价对这个原型进行修改,如此反复,逐步完善,直到用户完全满意为止。 原型法的类型:丢弃式原型法、演化式原型法、递增式原型法。 优点:减少开发时间,提高系统开发效率、改进用户与系统开发人员的信息交流方式、用户满意程度高、应变能力强。 缺点:开发工具要求高、对大型系统或复杂性高的系统不适用、管理水平要求高。 3.面向对象法 面向对象法:面向对象方法的技术把对象的属性(数据)和处理(方法)封装在一起,通过子类对父类的继承,使得软件便于维护和扩充,提高了软件的可复用性。 面向对象法的术语:对象、类、消息、继承、封装。 优点:以对象为基础,利用特定的软件工具直接完成对象客体的描述与软件结构之间的转换,解决了传统结构化开发方法中客观世界描述工具与软件结构不一致的问题,缩短了开发周期,解决了从分析和设计到软件模块多次转换的繁杂过程。 缺点:需要有一定的软件基础支持才可以应用,对大型的系统可能会造成系统结构不合

windows驱动开发 driverstudio 教程

前言 鉴于国内开发人员迫切需要学习驱动开发技术,而国内有关驱动开发工具DriverStudio的资料很少,大家在开发过程中遇到很多问题却没处问,没法问.而这些问题却是常见的,甚至是很基础的问题。 有感于此,本站联合北京朗维计算机应用公司编写了本教程。本教程的目的是让一个有一些核心态程序编写经验或对系统有所了解的人学习编写驱动程序。当然,本教程不是DDK中有关驱动方面内容的替换,而只是一个开发环境的介绍和指导。 学习本教程,你应该能熟练地使用本套工具编写基本的驱动程序。当然如果你想能顺利地编写各种各样的驱动的话,你应该有相关的硬件知道和系统核心知识并且要经过必要的训练才能胜任。 如果真心说一句话,DriverStudio并没有对驱动程序开发有什么实质的改变,它和DDk的关系不过是sdk和mfc的关系,但很多人选择了MFC,原因不言自明,方便二字何以说得完呀?你再也不用去关注繁琐的框架实现代码,也不用去考虑让人可怕的实现细节。封装完整的C++函数库让你专注于你要实现的程序逻辑。它包含一套完整调试和性能测试、增强工具,使你的代码更稳定。 说些题外话,作驱动开发很苦,不是一般的人能忍受的,那怕开发一个小小的驱动也要忍受无数次的宕机,有时甚至有些灾难性的事故等着你,所以要有充分的思想准备。当然,在开发的过程中你会有一种彻底控制计算机的满足感,调试开发完毕后的成就感是其它开发工作所不能体会到的。当然,就个人前途来说,作驱动开发能拿到别的开发所不能得到的薪水。而且开发的生命期也会长一些,你不用不断的学习新的开发工具,只需要不断的加深对系统的理解就行了。当然,还有一点是必需的,那就是英文要好,否则永远比国外同行慢半拍。 本人水平不高,所做的工作只要能提起大家学习驱动开发的兴趣,能带领大家入门便心满意足了。在此感谢北京朗维公司(DriverStduio 国内总代理)的大力赞助,特别是感谢技术部的王江涛,市场部的李强两位先生的大力支持。同时要感谢我的女友,可爱的小猫(我对她的呢称)的贴心照顾和支持(一些很好看的图片就出自她手:))。在此我也要感谢论坛各大版主的鼎力支持和广大网友的关怀。 DriverStudio工具包介绍: DriverStudio 是一套用来简化微软Windows 平台下设备驱动程序的开发,调试和测试的工具包。DriverStudio 当前的版本包括下列工具模块: DriverAgent DriverAgent 为Win32 应用程序提供直接访问硬件的功能。即使你没有任何设备驱动程序开发的经验或经历,你也能编写出DriverAgent应用程序来直接访问硬件设备。DriverAgent 应用程序可以运行在 Windows 98, Windows 95, Windows NT 和 Windows 2000平台上。(当前版本不支持Windows XP平台。) VToolsD VToolsD 是一个用来开发针对Win9X (Windows 95 和 Windows 98)操作系统下设备驱动程序(VxD)

管理制度-信息系统开发管理办法(暂行)

华鑫置业(集团)股份有限公司 信息系统开发管理办法(暂行) 一、目的和作用 本流程详细规定软件开发程的各个阶段及每一阶段的任务、要求、交付文件,使整个软件开发过程阶段清晰、要求明确、任务具体,实现软件开发过程的标准化。 二、适用范围 公司的信息系统开发产品均适用。 三、适用对象 开发管理人员,系统开发人员,系统维护人员 四、软件开发流程 4.1可行性研究与计划 4.1.1实施 a. 软件开发部分析人员进行市场调查与分析,确认软件的市场需求 b. 在调查研究的基础上进行可行性研究,写出可行性报告 c. 评审和审批,决定项目取消或继续 d. 若项目可行,制订初步的软件开发计划,建立项目日志 e. 根据市场环境、公司软硬件情况预测十大风险因素 4.1.2 文档 a. 应交付的文档 1)可行性研究报告 2)初步的软件开发计划 3)十大风险列表 4)软件项目日志

b. 提交步骤 1)适用于以后各阶段的文档提交。 2)项目相关文档用管理工具进行版本管理,相关书写人员可根据各文档模板形式撰写文档,正式提交的文档以存入软件管理服务器相关目录时间为准。以后每次修改都应注明修改内容。 4.2需求分析 4.2.1实施 a. 调查被开发软件的环境 b. 软件开发提出的需求进行分析并给出详细的功能定义 c. 做出简单的用户原型,与用户共同研究,直到用户满意 d. 对可利用的资源(计算机硬件、软件、人力等)进行估计,制定项目进度计划(可有相应的缓冲时间) e. 制定详细的软件开发计划 f. QA部门制订质量控制计划和测试计划 g. 编写初步的用户手册 h. 评审 4.2.2要求 a. 必须以运行环境为基础 b. 应有用户指定人员参加 c. 需求说明书必须明确,并经过用户确认 4.2.3交付文档 a. 软件需求说明书 b. 用户手册(概要) c. 更新后的软件开发计划 d. 项目进度计划 e. QA计划 f. 测试计划* g. 更新后的十大风险列表 h. 软件日志

相关主题