APP下载

Windows下扫描仪WIA驱动的实现

2015-01-16翁省辉喻武龙邓世强

电子设计工程 2015年3期
关键词:用户设备

翁省辉,喻武龙,邓世强

(北京理工大学 珠海学院,广东 珠海 519085)

WIA是Windows image acquisition的简称,当前可用版本是 WIA 2.0。 它是 Windows Millennium Edition(Windows Me)或者更高版本的 Windows系统中提供的数字图像获取服务[1]。它是Windows系统中扫描仪获取图像的常用方式之一[2]。

1 WIA的体系结构

WIA是使用进程外(out of process)服务实现的 com组件,和大多数进程外服务程序不同的是,WIA通过提供自己的数据传送机制(iwiadatatransfer接口),避免了图像数据传送过程中的性能损失[3]。

WIA的体系结构如图1所示[4]。

WIA整体分为三层,由上而下分别是UI层,服务层以及驱动层。UI层与服务层之间主要通过COM Interface联系,而服务与驱动层则主要通过Win32 API联系。驱动层可理解为系统的USBSCAN.SYS;中间的服务层为User Mode的动态库文 件, 它 通 过 CreateFile,ReadFile,WriteFile和 Device IOControl来实现与设备进行通讯。

图1 WIA的体系结构Fig.1 Architecture of WIA

WIA Driver实际实现中分为两种:MiniDriver,MiniDriver。本文将分别介绍它们的实现。

2 MiniDriver

2.1 MiniDriver的体系结构

MiniDriver分为两个层次:WIA Service InterfaceLayer和Device Communication Layer, 其 中 Device Communication Layer就是 Low-Level driver,而 WIA Service InterfaceLayer则是实现的重点。

2.2 MiniDriver的实现

MicroDriver仅以动态库形式实现3个接口函数,而MiniDriver则不同,它必须以COM Interface的形式实现。

MiniDriver有一个很重要的概念:Root Item和Child Item。Root Item代表设备本身,Child Item可视为设备支持的属性,例如扫描仪支持TPA,Endorse,则它们可以被视为一个Child Item。MiniDriver初始化时需要首先创建Root Item的属性,然后依次创建Child Item的属性[5]。

MiniDriver在一开始初始化首先调用drvInitializeWia,须依次创建设备的Properties。

首先需要组织当前设备的特性资料,比如支持的数据格式(True Color之类)、数据传输方式、压缩模式以及解析范围等。然后调用drvInitItemProperties来初始化Child Item的Capabilities及 Properties。

初始化完成之后,便可以接受用户的设定了,诸如扫描区域、色彩类型以及分辨率等。它主要是通过drv Write Properties来实现的,如图2所示。……

登录APP查看全文

猜你喜欢

用户设备
谐响应分析在设备减振中的应用
基于VB6.0+Access2010开发的设备管理信息系统
基于MPU6050简单控制设备
关注用户
关注用户
关注用户
500kV输变电设备运行维护探讨
如何在设备采购中节省成本
Camera360:拍出5亿用户
100万用户