1 / 21

项目 11 :基于 Windows CE 5.0 的嵌入式 Web 服务器 ( 2 )

项目 11 :基于 Windows CE 5.0 的嵌入式 Web 服务器 ( 2 ). 本节课程主要知识点 Windows CE 服务程序. 重点和难点. 重点 Windows CE 服务 难点 服务中的网络服务. Windows CE 服务程序. Windows CE 服务程序. 在设备中,经常需要有一些程序从开机就运行,一直运行到设备关闭为止,在整个设备开机期间不会关闭。 这类程序一般是在系统的后台为用户提供一些服务。 这类程序被称为服务( Service )程序。. Service.exe.

ryan-bell
Download Presentation

项目 11 :基于 Windows CE 5.0 的嵌入式 Web 服务器 ( 2 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 项目11:基于Windows CE 5.0的嵌入式Web服务器(2) 本节课程主要知识点 • Windows CE服务程序

  2. 重点和难点 重点 • Windows CE服务 难点 • 服务中的网络服务

  3. Windows CE服务程序

  4. Windows CE服务程序 • 在设备中,经常需要有一些程序从开机就运行,一直运行到设备关闭为止,在整个设备开机期间不会关闭。 • 这类程序一般是在系统的后台为用户提供一些服务。 • 这类程序被称为服务(Service)程序。

  5. Service.exe • 在Windows CE中,有许多网络服务器都 是通过服务实现的。如文件服务器、FTP服务器、Telnet服务器、打印服务器及HTTP服务器。 • 服务管理器是由进程Service.exe来实现的,其工作机制与功能与设备管理器Device.exe非常相似。 • Device.exe负责加载所有的驱动程序,Service.exe负责加载所有的服务。

  6. Service的加载 • Service.exe是操作系统的一个可行组件,在系统启动时被内核加载。 • Service.exe加载前要求Device.exe先行加载。

  7. 服务程序的实现 • 在Windows CE中,实现一个服务程序与实现流式接口驱动程序非常相似,所有有服务程序均以动态链接库提供,并导出其中的相关接口函数。 • 与流式接口驱动程序类似,服务程序有也一个3字符的Prefix和一个Index,这些信息也在注册表中被设置。

  8. 服务的启动 • Windows CE的服务有两种启动方式 • 通过注册表中设置相应的注册表项,系统启动时,让Service.exe自动加载服务。 • 应用程序使用函数加载服务

  9. 服务的自启动 • 当Windows CE启动时,Service.exe搜索系统注册表中的 • HKEY_LOCAL_MACHINE\Service • 然后枚举Service下的所有子键,并依次加载所有的服务。

  10. 服务的手工加载 • 应用程序通过服务的API函数动态加载服务程序。 • Windows CE提供ActivateService()函数来实现服务的动态加载。

  11. 独立服务(Standlone Service) • 一般情况下,Service.exe进程负责加载所有的服务。 • 在一些特殊情况下,可能需要将一个服务由Service.exe进程单独加载,从而实现与其他服务的隔离。 • 如果服务在Service.exe进程中单独加载,这个服务称为独立服务。

  12. 独立服务的特点 • 独立服务不能被应用程序使用CreatFile()和GetServiceHandle()函数打开。 • 并不是所有的服务都支持被配置成独立服务,如Web Server。 • 独立服务独立占用内存的一个Slot,需要统筹考虑Slot资源的调配。

  13. 独立服务的实现 • 要把某一个服务配置成独立服务,只需配置注册表键 • HKEY_LOCAL_MACHINE\Service\服务\ 下的Context项。 • 如果Context项设为2,则表明该服务为独立服务。

  14. 超级服务(Super Service) • 在Windows CE下,许多服务程序都是作为网络服务服务器存在的。这些服务都会侦听某个网络端口,当有客户连接这些端口时,服务程序会给客户提供相应的服务。 • 这样的服务,Windows CE称之为超级服务。

  15. 超级服务与网络服务 • 超级服务实现了Service.exe对某些端口的监听,当有客户连接时,Service.exe会通知相应的服务程序去处理该请求。 • 网络服务大都是超级服务,有了超级服务,一些使用网络提供的服务将会大大简化。

  16. 超级服务的配置 • 要把某个服务配置为超级服务,只需在注册表中把 • HKEY_LOCAL_MACHINE\Service\服务\  下的Context项设置为1。 • 当服务管理器在加载该服务时,会使用ServiceIoControl()函数向服务发送相关控制字。 • 如果服务也支持超级服务,只需在其IOControl()接收该控制字,并返回True,就可以启动超级服务了。

  17. 配置端口号 • 服务管理器自动侦听的端口也可在注册表中配置。 • 端口号只需在注册表 • HKEY_LOCAL_MACHINE\Service\服务\Accept 下面增加相应项即可 • 服务管理器会读取注册表,然后调用Socket函数侦听相应的端口。

  18. 超级服务的过程 • 当客户端在相关端口有请求时,服务管理器会向服务发出IOCTL_SERVICE_CONNECTION消息,同时把socket的句柄作为参数传递给服务程序。 • 服务程序对连接进行进一步的控制和操作。

  19. 典型的超级服务:Web Server • Windows CE的Web Server是Windows IIS的一个子集,提供了将嵌入式设备配置为一个Web Server的功能。 • 嵌入式Web Server在实际的应用中具有非常实用的意义,尤其在无线自动检测有更重要的作用。

  20. Web Server的声明文件(def) • LIBRARY HTTPD • EXPORTS • HttpInitialize PRIVATE • HttpdStart PRIVATE • HttpdStop PRIVATE • HttpdStopAndRestart • HTP_Init PRIVATE • HTP_Deinit PRIVATE • HTP_Open PRIVATE • HTP_Close PRIVATE • HTP_Read PRIVATE • HTP_Write PRIVATE • HTP_Seek PRIVATE • HTP_IOControl PRIVATE • HTP_PowerUp PRIVATE • HTP_PowerDown PRIVATE • HttpInitializeFromExe PRIVATE

  21. Web Server的源程序 • Windows CE提供了Web Server的源代码,用户可以在 • C:\WINCE500\PRIVATE\SERVERS\HTTP 目录下看到相关代码。 • 用户可以在微软授权的情况下使用并修改其代码。

More Related