好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

CE驱动程序所有驱动皆为动态链接库.ppt

61页
  • 卖家[上传人]:工****
  • 文档编号:592817101
  • 上传时间:2024-09-22
  • 文档格式:PPT
  • 文档大小:401.50KB
  • / 61 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • CE驱动程序驱动程序l所有驱动皆为动态链接库所有驱动皆为动态链接库l驱动实现中可以调用所有标准的驱动实现中可以调用所有标准的APIlCE驱动程序模型驱动程序模型Ø本机驱动程序本机驱动程序Ø流接口驱动程序流接口驱动程序 本机驱动程序本机驱动程序l用于低级、内置设备用于低级、内置设备l提供一组定制的接口提供一组定制的接口l可通过移植、定制微软提供的驱动样例可通过移植、定制微软提供的驱动样例来实现来实现 流接口驱动程序流接口驱动程序l基本的设备驱动类型基本的设备驱动类型l实现一组固定的流接口函数实现一组固定的流接口函数l所有的所有的CE设备皆可使用此模型实现设备皆可使用此模型实现 GWES加载驱动加载驱动vKeyboard MousevTouch Screen vDisplay vBattery vNotification LED 设备管理器加载的驱动设备管理器加载的驱动l本地驱动:本地驱动:PCMCIA Host Controller USB Host Controller driverNDIS.DLLl流接口驱动流接口驱动:Audio driver Serial port driver   Parallel port driverPort Monitor 需要时加载驱动需要时加载驱动lPC Card Client drivers lUSB Client driverslNDIS Miniport drivers 中断处理中断处理l内核模式的中断服务例程(内核模式的中断服务例程(ISR)Ø短小的汇编语言代码短小的汇编语言代码Ø返回中断号给内核返回中断号给内核l用户模式的中断服务线程用户模式的中断服务线程(ISP)Ø接收中断通知,并进行中断的处理接收中断通知,并进行中断的处理 Registering an Interrupt HandlerlAfter a device driver is loaded, the driver creates an IST and registers it with the interrupt handlerlIST is registered for one or more logical interrupts.(InterruptInitialize)lMicrosoft’s the MDD layer registers the driver for interrupts Deregistering an Interrupt Handlerl调用调用 InterruptDisable 来删除来删除IST和逻辑和逻辑中断的连接中断的连接l调用调用 OEMInterruptDisable 关闭中断关闭中断 Processing an Interrupt1.1.   中断发生时.内核跳至异常处理程序中断发生时.内核跳至异常处理程序中断发生时.内核跳至异常处理程序中断发生时.内核跳至异常处理程序2.2.异常处理程序使所有中断无效.然后调用合适异常处理程序使所有中断无效.然后调用合适异常处理程序使所有中断无效.然后调用合适异常处理程序使所有中断无效.然后调用合适的中断服务例行程序准备物理中断经的中断服务例行程序准备物理中断经的中断服务例行程序准备物理中断经的中断服务例行程序准备物理中断经3.3.中断服务例行程序以中断标识符的形式返回逻中断服务例行程序以中断标识符的形式返回逻中断服务例行程序以中断标识符的形式返回逻中断服务例行程序以中断标识符的形式返回逻辑中断。

      辑中断4.4.中断处理程序重新启动除当前中断以外的所有中断处理程序重新启动除当前中断以外的所有中断处理程序重新启动除当前中断以外的所有中断处理程序重新启动除当前中断以外的所有中断,并把信号传递给适当的中断服务线程中断,并把信号传递给适当的中断服务线程中断,并把信号传递给适当的中断服务线程中断,并把信号传递给适当的中断服务线程5.5.中断服务线程调用依赖平台的驱动程序来访问中断服务线程调用依赖平台的驱动程序来访问中断服务线程调用依赖平台的驱动程序来访问中断服务线程调用依赖平台的驱动程序来访问硬件和完成逻辑中断的处理硬件和完成逻辑中断的处理硬件和完成逻辑中断的处理硬件和完成逻辑中断的处理6.6.中断服务线程调用中断服务线程调用中断服务线程调用中断服务线程调用InterruntDoneInterruntDone函数7.7.中断处理程序重新启动当前中断.并在中断处理程序重新启动当前中断.并在中断处理程序重新启动当前中断.并在中断处理程序重新启动当前中断.并在OALOAL中调用中调用中调用中调用OEMIntemptDoneOEMIntemptDone函数 中断处理中断处理 本机驱动程序本机驱动程序l单片驱动程序单片驱动程序直接将硬件设备的功能传递给操作系统直接将硬件设备的功能传递给操作系统l分层驱动程序分层驱动程序模型设备驱动程序(模型设备驱动程序(MDD)依赖平台的设备驱动程序(依赖平台的设备驱动程序(PDD) 嵌套的中断嵌套的中断l256个优先级个优先级,0最高,以前的最高,以前的8个优先级个优先级映射为映射为248--255l高优先级的高优先级的ISR和和IST可以中断低优先级可以中断低优先级的的ISR和和ISTl四个范围四个范围l0--96:高优先级实时任务:高优先级实时任务l97--152:缺省的:缺省的CE驱动驱动l153--247:比普通的用户级任务高的任:比普通的用户级任务高的任务务l248--255:非实时的用户应用:非实时的用户应用 驱动程序的安装驱动程序的安装l连接连接CE设备设备l把驱动把驱动DLL拷贝到拷贝到\Windows目录】目录】l设置注册表键值设置注册表键值 本地驱动程序模型本地驱动程序模型 MDD执行任务执行任务l链接链接PDD层并定义它希望调用的函数层并定义它希望调用的函数l把不同的函数集提供给操作系统把不同的函数集提供给操作系统l处理像中断处理这样的复杂任务处理像中断处理这样的复杂任务l与与GWES模块和内核通信模块和内核通信 MDD特点特点l提供标准的设备驱动程序接口提供标准的设备驱动程序接口l一般不需改变一般不需改变 PDD不象不象不象不象MDDMDD层.依赖平台的驱动程序(层.依赖平台的驱动程序(层.依赖平台的驱动程序(层.依赖平台的驱动程序(PDDPDD)层与)层与)层与)层与MDDMDD和硬件都有接口,这就意味着和硬件都有接口,这就意味着和硬件都有接口,这就意味着和硬件都有接口,这就意味着必须适合目标平台的需要。

      一个必须适合目标平台的需要一个必须适合目标平台的需要一个必须适合目标平台的需要一个PDDPDD由针对具体由针对具体由针对具体由针对具体硬件的函数组成.而这些函数与一个硬件的函数组成.而这些函数与一个硬件的函数组成.而这些函数与一个硬件的函数组成.而这些函数与一个MDDMDD相对应、但这种对应不是直接的相对应、但这种对应不是直接的相对应、但这种对应不是直接的相对应、但这种对应不是直接的——一对应MDDMDD函数实现独立的任务,而函数实现独立的任务,而函数实现独立的任务,而函数实现独立的任务,而MDDMDD则通过则通过则通过则通过使用这些任务来实现其目标因为使用这些任务来实现其目标因为使用这些任务来实现其目标因为使用这些任务来实现其目标因为PDDPDD是硬件相是硬件相是硬件相是硬件相关的,因此必须生成一个设置好的关的,因此必须生成一个设置好的关的,因此必须生成一个设置好的关的,因此必须生成一个设置好的PDDPDD并输出到平台硬件、微软为各种各样的内部设备并输出到平台硬件、微软为各种各样的内部设备并输出到平台硬件、微软为各种各样的内部设备并输出到平台硬件、微软为各种各样的内部设备提供了几个样本提供了几个样本提供了几个样本提供了几个样本PDDPDD层层层层 本机驱动程序实例本机驱动程序实例l l保存位置保存位置保存位置保存位置Platform\ODOPlatform\ODO\\\\DriversDrivers和和和和 Platform\ODO Platform\ODO\\\\GWEGWEl l例子例子例子例子        .样本电池驱动程序.样本电池驱动程序.样本电池驱动程序.样本电池驱动程序        .样本显示器驱动程序.样本显示器驱动程序.样本显示器驱动程序.样本显示器驱动程序        .样本键盘驱动程序.样本键盘驱动程序.样本键盘驱动程序.样本键盘驱动程序        .样本示警发光二极管驱动程序.样本示警发光二极管驱动程序.样本示警发光二极管驱动程序.样本示警发光二极管驱动程序        .样本.样本.样本.样本PCPC卡插槽驱动程序卡插槽驱动程序卡插槽驱动程序卡插槽驱动程序        .样本串行口驱动程序.样本串行口驱动程序.样本串行口驱动程序.样本串行口驱动程序        .样本触摸屏驱动程序.样本触摸屏驱动程序.样本触摸屏驱动程序.样本触摸屏驱动程序        .样本.样本.样本.样本USB Host COntrollerUSB Host COntroller驱动程序驱动程序驱动程序驱动程序 电池驱动程序例子电池驱动程序例子l功能:提供一些关于平台电池的电力水功能:提供一些关于平台电池的电力水平的信息。

      电池驱动程序报告主电池的平的信息电池驱动程序报告主电池的状态并备份电池的状态状态并备份电池的状态l是单片驱动程序是单片驱动程序lDDI函数函数BatteryDrvGetLevelsBatteryDrvGetStatusBatteryDrvSupportChangeNotification  键盘驱动程例子键盘驱动程例子l l功能:把键盘输入转换为输入系统的键盘事件功能:把键盘输入转换为输入系统的键盘事件功能:把键盘输入转换为输入系统的键盘事件功能:把键盘输入转换为输入系统的键盘事件.然后驱动程序生成这些键盘事件的统一代码.然后驱动程序生成这些键盘事件的统一代码.然后驱动程序生成这些键盘事件的统一代码.然后驱动程序生成这些键盘事件的统一代码符l lMDDMDD层的源码在路径层的源码在路径层的源码在路径层的源码在路径publlcpubllc\\\\ommontoaktonversommontoaktonversl lDDIDDI函数:函数:函数:函数:KeybdDriverGetInfoKeybdDriverGetInfo   KeybdDriverSetModeKeybdDriverSetMode   KeybdDriverInitializeKeybdDriverInitialize   KeybdDriverVKeyToUnicodeKeybdDriverVKeyToUnicode   KeybdDriverInitStatesKeybdDriverInitStates   KeybdEventCallbackKeybdEventCallback   KeybdDriverPowerHandlerKeybdDriverPowerHandler   l lDDSI DDSI 函数:函数:函数:函数:KeybdPdd_DllEntryKeybdPdd_DllEntry   KeybdPdd_GetEventKeybdPdd_GetEvent   KeybdPdd_InitializeDriverKeybdPdd_InitializeDriver   KeybdPdd_PowerHandlerKeybdPdd_PowerHandler    l 在样本模型设备驱动程序(在样本模型设备驱动程序(MDD)中,)中, 键盘键盘驱动程序的中断服务线程驱动程序的中断服务线程IST的名字是的名字是KeybdDriverThread。

      这个线程调用函数这个线程调用函数Intenfljntlnltlallze注册注册SYSINTR_KEYBOARD中断,然后等待系统中断,然后等待系统发出发出SYSINTR_KEYBOARD信号,在收到信信号,在收到信号后中断处理程序调用函数号后中断处理程序调用函数KeybdPdd_GetEvent.把从设备依赖驱动程.把从设备依赖驱动程序(序(PDD)返回的键盘事件发送到输入系统返回的键盘事件发送到输入系统输入系统对它们进行排队以分发给相应的应用输入系统对它们进行排队以分发给相应的应用程序程序  样本串行口驱动程样本串行口驱动程l功能:串行功能:串行D驱动程序处理和串行口工驱动程序处理和串行口工作类似的任何作类似的任何I//O设备,包括那些基于设备,包括那些基于16450和和16550   通用异步接收传送器(通用异步接收传送器(UART)芯片的设)芯片的设备和那些使用直接内存访问(备和那些使用直接内存访问(DMA)的)的设各、许设各、许   多基于多基于WndoWW CE的平台都有这种类的平台都有这种类型的设备,包括普通型的设备,包括普通9针串行口、红外线针串行口、红外线I//O D和和PC卡串行设备如调制解调器卡串行设备如调制解调器l位置:位置:Public\\Common\\Oak\\Driver\\Serial l lDDIDDI函数:函数:函数:函数: COM _Close       COM _ PowerDown COM _Close       COM _ PowerDown COM _Deinit      COM _ PowerUp COM _Deinit      COM _ PowerUp COM_INIT  COM_INIT   COM _ Read  COM _ Read COM _IOControl COM _Write  COM _IOControl COM _Write  COM _ Open COM _ Openl lDDSIDDSI函数函数函数函数GetSerialObjectGetSerialObject HWGetModemStatusHWGetModemStatus HWPutBytesHWPutBytes HWClearBreakHWClearBreak HWGetRxBufferSizeHWGetRxBufferSize HWResetHWResetHWClearDTRHWClearDTRHWGetRxStartHWGetRxStartHWSetBreakHWSetBreakHWClearRTSHWClearRTSHWGetStatusHWGetStatusHWSetCommTimeoutsHWSetCommTimeoutsHWCloseHWCloseHWInitHWSetDCBHWInitHWSetDCBHWDeinitHWIoctlHWDeinitHWIoctlHWSetDTRHWDisableIRHWSetDTRHWDisableIRHWLineIntrHandlerHWLineIntrHandlerHWSetRTSHWEnableIRHWSetRTSHWEnableIRHWOpenHWTxIntrHandlerHWOpenHWTxIntrHandlerHWGetBytesHWGetBytesHWPowerOffHWXmitComCharHWPowerOffHWXmitComCharHWGetCommPropertiesHWPowerOnHWGetCommPropertiesHWPowerOn   HWGetIntrTypeHWPurgeCommHWGetIntrTypeHWPurgeComm 电源管理电源管理l为提供对可删除国行口硬件的连接事件为提供对可删除国行口硬件的连接事件的自动侦测的自动侦测 串行口驱动程序需对受检数串行口驱动程序需对受检数据载体线(据载体线(the Data Carrer Detected line)进行监视、对于可以自动侦测的)进行监视、对于可以自动侦测的串行口如基于串行口如基于pC卡的串行口硬件,驱动卡的串行口硬件,驱动程序使用函数程序使用函数 CeEventHasoccured查查看看 NOTIFCATION EVENT RS232 DETECTED消息消息 流接口驱动程序流接口驱动程序l流接口驱动程序是动态连接库.由一个流接口驱动程序是动态连接库.由一个叫做设备管理程序的特殊应用程序加载、叫做设备管理程序的特殊应用程序加载、管理和卸载、与具有单独目的接口的内管理和卸载、与具有单独目的接口的内部设备驱动程序相比.所有流接口驱动部设备驱动程序相比.所有流接口驱动程序使用同一个接口并调用同一个函数程序使用同一个接口并调用同一个函数集集——流接口函数流接口函数l 流接流接D驱动程序的主要任务是把外设的驱动程序的主要任务是把外设的使用传递给应用程序,这是通过把设备使用传递给应用程序,这是通过把设备表示为文件系统的一个特殊文件实现表示为文件系统的一个特殊文件实现 流接口驱动程序模型流接口驱动程序模型 PC Card 客户端设备流程图客户端设备流程图 流接口驱动程序接收来自设备管理程序和应用程流接口驱动程序接收来自设备管理程序和应用程序的命令,并把这些命令转换成他控制的设备序的命令,并把这些命令转换成他控制的设备的适当控制信息。

      的适当控制信息l用户应用程序:包括任何访问外部设备的应用用户应用程序:包括任何访问外部设备的应用程序,对外部设备的访问是通过文件系统和连程序,对外部设备的访问是通过文件系统和连接外围设备的特殊文件完成的接外围设备的特殊文件完成的l 设备管理程序:设备管理程序:   设备管理程序是一个用于设备管理程序是一个用于加载和卸载流接口驱动程序的特殊应用程序加载和卸载流接口驱动程序的特殊应用程序l外围设备:由设备驱动程序管理的设备外围设备:由设备驱动程序管理的设备 设备管理程序设备管理程序用户层程序,非内核,与内核、注册表、流接口用户层程序,非内核,与内核、注册表、流接口用户层程序,非内核,与内核、注册表、流接口用户层程序,非内核,与内核、注册表、流接口驱动程序驱动程序驱动程序驱动程序DLLDLL关系密切关系密切关系密切关系密切l l   在系统启动时或收到用户在基于在系统启动时或收到用户在基于在系统启动时或收到用户在基于在系统启动时或收到用户在基于WindowS WindowS CECE的中自上增加了外围设备的信息时的中自上增加了外围设备的信息时的中自上增加了外围设备的信息时的中自上增加了外围设备的信息时,     ,     初始初始初始初始化驱动程序的加载、例如化驱动程序的加载、例如化驱动程序的加载、例如化驱动程序的加载、例如   在用户插入一个在用户插入一个在用户插入一个在用户插入一个PCPC卡时.设备管理程序就试图寻卡时.设备管理程序就试图寻卡时.设备管理程序就试图寻卡时.设备管理程序就试图寻            找这找这找这找这PCiPCi并为之加载设备驱动程序。

      并为之加载设备驱动程序并为之加载设备驱动程序并为之加载设备驱动程序l l向内核注册特定文件名,该文件名把应用程序向内核注册特定文件名,该文件名把应用程序向内核注册特定文件名,该文件名把应用程序向内核注册特定文件名,该文件名把应用程序使用的流接口函数映射到流接口驱使用的流接口函数映射到流接口驱使用的流接口函数映射到流接口驱使用的流接口函数映射到流接口驱     动程序的动程序的动程序的动程序的那些函数的实现那些函数的实现那些函数的实现那些函数的实现l l   通过从外围设备获得即插即用标识符或激活通过从外围设备获得即插即用标识符或激活通过从外围设备获得即插即用标识符或激活通过从外围设备获得即插即用标识符或激活一个检查子程序来发现可以处理该设一个检查子程序来发现可以处理该设一个检查子程序来发现可以处理该设一个检查子程序来发现可以处理该设   备的驱备的驱备的驱备的驱动程序为外围设备找到合适的设备驱动程序动程序为外围设备找到合适的设备驱动程序动程序为外围设备找到合适的设备驱动程序动程序为外围设备找到合适的设备驱动程序l l通过读写注册值加载和跟踪驱动程序通过读写注册值加载和跟踪驱动程序通过读写注册值加载和跟踪驱动程序。

      通过读写注册值加载和跟踪驱动程序l l当不再敲要设备时当不再敲要设备时当不再敲要设备时当不再敲要设备时   卸我其驱动程序、例如.卸我其驱动程序、例如.卸我其驱动程序、例如.卸我其驱动程序、例如.在用户去掉在用户去掉在用户去掉在用户去掉PCPC卡后卡后卡后卡后   设备管理程序设备管理程序设备管理程序设备管理程序   就卸载就卸载就卸载就卸载PCPC卡设备的驱动程序卡设备的驱动程序卡设备的驱动程序卡设备的驱动程序 设备管理程序使用的注册键设备管理程序使用的注册键l l位置位置位置位置:HKEY_LOCAL_MACHINE\Drivers:HKEY_LOCAL_MACHINE\Driversl l子键子键子键子键: :Active\ :Active\ :包含由设备管理程序加载的跟踪当前包含由设备管理程序加载的跟踪当前包含由设备管理程序加载的跟踪当前包含由设备管理程序加载的跟踪当前活动驱动程序的子键、设备驱动程序设置子活动驱动程序的子键、设备驱动程序设置子活动驱动程序的子键、设备驱动程序设置子活动驱动程序的子键、设备驱动程序设置子   程序不应修改程序不应修改程序不应修改程序不应修改Active\Active\键的内容.也不应依赖键的内容.也不应依赖键的内容.也不应依赖键的内容.也不应依赖于于于于Active\Active\键中任何特殊值的存在。

      键中任何特殊值的存在键中任何特殊值的存在键中任何特殊值的存在 PCMCIA PCMCIA\\\\: :含有与含有与含有与含有与PCPC卡及其流接口驱动程序卡及其流接口驱动程序卡及其流接口驱动程序卡及其流接口驱动程序有关的子键这个子链中最重要的信息是有关的子键这个子链中最重要的信息是有关的子键这个子链中最重要的信息是有关的子键这个子链中最重要的信息是PCPC卡的即插即用标识符.它是和特殊的驱动程序卡的即插即用标识符.它是和特殊的驱动程序卡的即插即用标识符.它是和特殊的驱动程序卡的即插即用标识符.它是和特殊的驱动程序相对应的相对应的相对应的相对应的. . Detect Detect\子键包含已编号的条目项\子键包含已编号的条目项\子键包含已编号的条目项\子键包含已编号的条目项   这些项是这些项是这些项是这些项是DLLDLL名和侦测函数的列表、这些函数为即插即名和侦测函数的列表、这些函数为即插即名和侦测函数的列表、这些函数为即插即名和侦测函数的列表、这些函数为即插即用标识符的用标识符的用标识符的用标识符的PCPC卡或为未知即插即用标识符的卡或为未知即插即用标识符的卡或为未知即插即用标识符的卡或为未知即插即用标识符的PCPC卡识别一个通用流接回驱动程序。

      卡识别一个通用流接回驱动程序卡识别一个通用流接回驱动程序卡识别一个通用流接回驱动程序 Driver:     Driver:    在通用在通用在通用在通用PCPC卡驱动程序之后命名的卡驱动程序之后命名的卡驱动程序之后命名的卡驱动程序之后命名的DriverDriver子键含有用于加载驱动程序的值子键含有用于加载驱动程序的值子键含有用于加载驱动程序的值子键含有用于加载驱动程序的值. .当通用当通用当通用当通用流接口驱动程序侦测函数指示它可以驱动一个流接口驱动程序侦测函数指示它可以驱动一个流接口驱动程序侦测函数指示它可以驱动一个流接口驱动程序侦测函数指示它可以驱动一个特殊设备时.设备管理程序就生成单独的特殊设备时.设备管理程序就生成单独的特殊设备时.设备管理程序就生成单独的特殊设备时.设备管理程序就生成单独的DriverDriver子键DriverDriver子键的存在说明由驱动程子键的存在说明由驱动程子键的存在说明由驱动程子键的存在说明由驱动程序完成的侦测的存在,该侦测在序完成的侦测的存在,该侦测在序完成的侦测的存在,该侦测在序完成的侦测的存在,该侦测在PCMCIAPCMCIA\\\\detedete。

      的键中有一个条目项的键中有一个条目项的键中有一个条目项的键中有一个条目项    Plug_and_Play ID:    Plug_and_Play ID:子键含有用于加载子键含有用于加载子键含有用于加载子键含有用于加载PCPC卡流卡流卡流卡流接口驱动程序的值.典型地.接口驱动程序的值.典型地.接口驱动程序的值.典型地.接口驱动程序的值.典型地.PCPC卡驱动程序卡驱动程序卡驱动程序卡驱动程序的设置子程序在基于的设置子程序在基于的设置子程序在基于的设置子程序在基于Wndows CEWndows CE平台上安装平台上安装平台上安装平台上安装驱动程序时就生成了这些子键驱动程序时就生成了这些子键驱动程序时就生成了这些子键驱动程序时就生成了这些子键. . 加载流接口驱动程加载流接口驱动程l l在启动时进行在基于在启动时进行在基于在启动时进行在基于在启动时进行在基于WINDOWS CEWINDOWS CE的平台的平台的平台的平台启动时,就启动设备管理程序设备管理程序启动时,就启动设备管理程序设备管理程序启动时,就启动设备管理程序设备管理程序启动时,就启动设备管理程序设备管理程序读取读取读取读取   HKEY_LOCAL_MACHINE\Drivers\BUILTINHKEY_LOCAL_MACHINE\Drivers\BUILTIN键的内容并加载已列出的流接口驱动程序、例键的内容并加载已列出的流接口驱动程序、例键的内容并加载已列出的流接口驱动程序、例键的内容并加载已列出的流接口驱动程序、例如.在许多基于如.在许多基于如.在许多基于如.在许多基于WINDOWS CEWINDOWS CE的平台上,设的平台上,设的平台上,设的平台上,设备管理程序通过这个机制加载内部串行口备管理程序通过这个机制加载内部串行口备管理程序通过这个机制加载内部串行口备管理程序通过这个机制加载内部串行口(Serialdll(Serialdll)的驱动程序)的驱动程序)的驱动程序)的驱动程序l l在设备管理程序自动检测外围设备与基于在设备管理程序自动检测外围设备与基于在设备管理程序自动检测外围设备与基于在设备管理程序自动检测外围设备与基于   Wndows CEWndows CE平台的连接时进行的平台的连接时进行的平台的连接时进行的平台的连接时进行的. .l l设备管理程序不能识别设备时设备管理程序不能识别设备时设备管理程序不能识别设备时设备管理程序不能识别设备时, ,应用程序自己应用程序自己应用程序自己应用程序自己加载加载加载加载: :启动应用程序启动应用程序启动应用程序启动应用程序, ,检测驱动是否加载检测驱动是否加载检测驱动是否加载检测驱动是否加载, ,调用调用调用调用RegisterDeviceRegisterDevice函数来加载驱动并锁入内存函数来加载驱动并锁入内存函数来加载驱动并锁入内存函数来加载驱动并锁入内存应用程序进行正常操作应用程序进行正常操作应用程序进行正常操作应用程序进行正常操作. . 卸载流接口驱动卸载流接口驱动l设备管理程序卸载设备管理程序卸载l用户程序自行卸载用户程序自行卸载: DeRegisterDevice函数从文件系统卸载设备文件函数从文件系统卸载设备文件,通知通知FreeLibrary函数卸载函数卸载DLL 流接口驱动程序入口点流接口驱动程序入口点XXX_Close XXX_Deinit XXX_Init XXX_IOControl XXX_OpenXXX_PowerDownXXX_PowerUpXXX_ReadXXX_SeekXX_Write 单访问和多访问单访问和多访问多个应用可以同时访问驱动多个应用可以同时访问驱动多访问对XXX_Open的调用返回不同的 串行设备驱动设计l创建一个流接口驱动程序创建一个流接口驱动程序l在应用程序中直接对串口读写,并处理在应用程序中直接对串口读写,并处理数据数据 串行设备驱动的考虑因素串行设备驱动的考虑因素l单点或多点访问:若要支持多个应用的单点或多点访问:若要支持多个应用的同时访问,使用流接口实现,简化用户同时访问,使用流接口实现,简化用户级程序设计;级程序设计;l数据流的复杂性:复杂的处理需要相当数据流的复杂性:复杂的处理需要相当的处理。

      最好使用流接口方式最好使用流接口方式l数据速率:高速的数据处理,可能流接数据速率:高速的数据处理,可能流接口驱动没有足够的处理时间,可能使用口驱动没有足够的处理时间,可能使用用户程序处理比较好用户程序处理比较好 安装流接口驱动程序安装流接口驱动程序l安装程序必须执行下列步骤:安装程序必须执行下列步骤:    1. 与基于与基于Windows CE的平合连接.或的平合连接.或检测连接已存在检测连接已存在  2.把流接口驱动程序把流接口驱动程序DLL拷贝到平台的拷贝到平台的\\WINDOWS目录下   3.如果需要的话如果需要的话 为驱动程序建立注册键和为驱动程序建立注册键和注册值注册值 流接口驱动程序例子流接口驱动程序例子Pager CardPager CardIllustrates a device driver for the Motorola Illustrates a device driver for the Motorola NewsCard pagerNewsCard pagerModem CardModem CardIllustrates a device driver for a PC Card Illustrates a device driver for a PC Card modemmodemRAM CardRAM CardIllustrates a device driver for a Static RAM PC Illustrates a device driver for a Static RAM PC CardCardPC Card TestPC Card TestIllustrates a device driver for testing PC Illustrates a device driver for testing PC CardsCardsSerialSerialIllustrates a device driver for devices that Illustrates a device driver for devices that connect to a serial portconnect to a serial portTouch ScreenTouch ScreenIllustrates a device driver that interacts with Illustrates a device driver that interacts with the screenthe screen NDIS网络驱动程序网络驱动程序l提供一组抽象层提供一组抽象层,用于把网络驱动和协议用于把网络驱动和协议栈或网络适配器相连栈或网络适配器相连. 网络驱动程序模型网络驱动程序模型 CE支持的支持的NDIS功能功能lNDIS4.0的一个子集的一个子集l以太网和以太网和IrDA介质类型介质类型l标准的小端口卡驱动程序标准的小端口卡驱动程序l中性小端口卡驱动程序的一个子集中性小端口卡驱动程序的一个子集.]lPlug and Play loading of miniport drivers for PC Card–based NICs  CE不支持的不支持的NDIS功能功能l单片或全功能的单片或全功能的NDISl直接内存存取直接内存存取(DMA)l连续的物理内存分配连续的物理内存分配l既提供小端口给已有的协议栈既提供小端口给已有的协议栈,又提供协又提供协议接口给其它应用的中性小端口卡驱动议接口给其它应用的中性小端口卡驱动程序程序l通过通过NDIS的广域网互联的广域网互联lPC卡属性空间卡属性空间l多包传送多包传送 Windows CE Miniport Driverl llargely compatible with Windows NT largely compatible with Windows NT l lminiport driver for Windows CE is miniport driver for Windows CE is compiled as a dynamic-link library (DLL) compiled as a dynamic-link library (DLL) that exports the that exports the DriverEntryDriverEntry function functionl lDriverEntryDriverEntry typically performs any general  typically performs any general or platform-specific initializations. It also or platform-specific initializations. It also registers the miniport driver with the NDIS registers the miniport driver with the NDIS system by calling the system by calling the NdisMRegisterMiniportNdisMRegisterMiniport function.  function. l lCE does not support the Common CE does not support the Common Network .inf  Network .inf   NDIS驱动的注册和初始化驱动的注册和初始化 lsetup application or through the driver’s Install_Driver function   must ensure that the proper registry keys are created lminiport driver should be installed in the \Windows directory lMiniport drivers for PC Card–based NICs can be loaded and unloaded dynamicallylHKEY_LOCAL_MACHINE\Comm\Miniport\Group listed NDIS component loaded Implementing DMA for NDIS Miniport DriverslDMA is important for efficient networking because it enables the layers in the networking architecture to share data without first copying that dataltwo categories of DMA: slave DMA and busmaster DMA Slave DMAlSlave DMA is appropriate for OEMs because it requires a block of memory that is pre-allocated in the device memory map of the Windows CE–based platform. Miniport drivers can map that block of physical memory to the driver’s virtual memory space, and then use the VirtualAlloc and VirtualCopy functions to move data in and out of that space busmaster DMAlTo receive data, the driver allocates a shared memory block, transfers the data to buffers within that block, and uses NDIS functions to indicate that a packet has arrived. To send data, the driver uses the LockPages and UnlockPages functions to map the virtual memory to device memory, informs the NIC of the addresses of the data, and instructs the NIC to send the data. This method can be faster for larger data block sizes. NDIS Protocol Bindinglminiport driver  must bind to an appropriate protocol stacklProtocol binding takes place through the NdisOpenAdapter and NdisCloseAdapter functions. lTCP/IP protocol stack supports miniports for both built-in and PC Card–based Ethernet hardware. The TCP/IP protocol stack in Windows CE can bind to multiple miniport driver instances, lIrDA stack supports only a single built-in infrared port, which means that the IrDA stack binds to only a single miniport driver instancelThe particular miniport instances that protocol stacks bind to are stored in the HKEY_LOCAL_MACHINE\Comm\Protocol\Linkage\ registry key.  NDIS Power Managementlminiport driver performs the same power-cycle processing that is required of all PC Card device drivers; lminiport driver for a built-in NIC, the miniport driver’s reset function is called when power returnslMiniport drivers for IrDA must support the OID_IRDA_REACQUIRE_HW_RESOURCES and OID_IRDA_RELEASE_HW_RESOURCES messages.  Registry Keys for Miniport DriverslWindows CE loads NDIS drivers listed within the HKEY_LOCAL_MACHINE\Comm\ key lsubkeys that are contained in each Miniport\ key:DisplayName A user-friendly name for the driverGroupThe literal string “NDIS”ImagePath The name of the DLL containing the miniport driverLinkage\Route A set of Miniport Instance keys, separated by commas lLinkage\Route key lists additional subkeys of the Comm\ key for each miniport instancelsubkeys that are contained in each Miniport Instance key:DisplayName A user-friendly description of the miniport instanceGroup The literal value “NDIS”ImagePathThe name of the miniport driver’s DLLParmssubkey Subkeys for the miniport driver’s parameters lsubkeys that are contained in each Miniport Instance\PARMS key:BusNumber The bus number for the miniport instanceBusType The bus type of the miniport instance A set of registry keys for a miniport driver[HKEY_LOCAL_MACHINE\Comm]￿[HKEY_LOCAL_MACHINE\Comm]￿[HKEY_LOCAL_MACHINE\Comm]￿[HKEY_LOCAL_MACHINE\Comm]￿[NE2000]￿[NE2000]￿[NE2000]￿[NE2000]￿DisplayName="NE2000￿Compatible￿Ethernet￿DisplayName="NE2000￿Compatible￿Ethernet￿DisplayName="NE2000￿Compatible￿Ethernet￿DisplayName="NE2000￿Compatible￿Ethernet￿Driver"￿Driver"￿Driver"￿Driver"￿Group￿="NDIS"￿Group￿="NDIS"￿Group￿="NDIS"￿Group￿="NDIS"￿ImagePath="NE2000.DLL"￿ImagePath="NE2000.DLL"￿ImagePath="NE2000.DLL"￿ImagePath="NE2000.DLL"￿[Linkage]￿Route="NE20001,￿NE20002“[Linkage]￿Route="NE20001,￿NE20002“[Linkage]￿Route="NE20001,￿NE20002“[Linkage]￿Route="NE20001,￿NE20002“[NE20001]￿[NE20001]￿[NE20001]￿[NE20001]￿DisplayName="NE2000￿Compatible￿Ethernet￿DisplayName="NE2000￿Compatible￿Ethernet￿DisplayName="NE2000￿Compatible￿Ethernet￿DisplayName="NE2000￿Compatible￿Ethernet￿Driver"￿Group="NDIS"￿Driver"￿Group="NDIS"￿Driver"￿Group="NDIS"￿Driver"￿Group="NDIS"￿ImagePath="NE2000.dll"￿ImagePath="NE2000.dll"￿ImagePath="NE2000.dll"￿ImagePath="NE2000.dll"￿[Parms]￿[Parms]￿[Parms]￿[Parms]￿BusNumber=0￿BusNumber=0￿BusNumber=0￿BusNumber=0￿BusType=8￿BusType=8￿BusType=8￿BusType=8￿CardType=1￿CardType=1￿CardType=1￿CardType=1￿InterruptNumber=03￿InterruptNumber=03￿InterruptNumber=03￿InterruptNumber=03￿IOBaseAddress=0300￿IOBaseAddress=0300￿IOBaseAddress=0300￿IOBaseAddress=0300￿Transceiver=3￿Transceiver=3￿Transceiver=3￿Transceiver=3￿ subkeys that are contained in the HKEY_LOCAL_MACHINE\Drivers\PCMCIA\Plug-and-Play ID\ key:lDLLThe literal string “Ndis.dll”lPrefix The literal string “NDS”lMiniportThe name of the miniport driver for the PC Card, which corresponds to the name of the registry key within HKEY_LOCAL_MACHINE\Comm\ for the miniport driver Protocol binding lHKEY_LOCAL_MACHINE\Comm\IrDA\Linkage\ lHKEY_LOCAL_MACHINE\Comm\Tcpip\Linkage\.  。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.