1# Driver Development Kit简介 2<!--Kit: Driver Development Kit--> 3<!--Subsystem: Driver--> 4<!--Owner: @lixinsheng2--> 5<!--Designer: @w00373942--> 6<!--Tester: @dong-dongzhen--> 7<!--Adviser: @w_Machine_cc--> 8 9Driver Development Kit(驱动开发套件)为外设驱动开发者提供高效、安全、丰富的扩展外设驱动开发解决方案ArkTs-API和C-API,支持外设驱动开发者为消费者带来外设即插即用的极致体验。 10 11## 使用场景 12 13支持开发者高效、安全开发专业外设或扩展外设增强能力: 14 151. 面向专业专用办公外设驱动开发场景。 16 17 例如:银行柜台、企业办公、医疗检测等领域专业专用外设,如:高拍仪、身份证扫描仪、指纹识别仪、血氧血糖监测设备。 18 192. 面向非标外设扩展增强能力开放场景。 20 21 例如:厂商私有非标HID外设增强能力开放场景,如:手写板快捷键定制、压感/绘图区域设置、扩展增强能力设置、鼠标灯光效果设置、鼠标扩展按键定制、DPI及X/Y轴等高阶能力设置。 22 23## 亮点特征 24 25- 支持开发者开发外设配件的高阶功能,满足消费者高阶使用场景诉求。 26 27- 扩展驱动框架支持扩展外设驱动生命周期管理,面向扩展设备应用提供扩展外设查询绑定能力接口。 28 29## 基本概念 30 31- 扩展外设驱动客户端:查询驱动并绑定驱动,自定义驱动与设备之间的通信方式以及数据处理方式等,即[带UI界面基础驱动](externaldevice-guidelines.md)。 32- 扩展外设驱动:基于DDK能力开发的专业专用扩展外设驱动或扩展外设增强驱动,即[无UI界面基础驱动](driverextensionability.md)。 33- 扩展外设管理服务(External Device Manager):扩展设备管理,驱动包全生命周期管理等。 34- BMS(Bundle Manager Service):包管理服务,在OpenHarmony上主要负责应用的安装、卸载和数据管理。 35- AMS(Ability Manager Service):元能力管理服务,用于拉起和关闭扩展驱动能力DriverExtensionAbility。 36- SA(SystemAbility):系统元能力,是一种系统服务,对外提供能力。如:外设扩展服务SA就是对外提供非标外设驱动能力的系统服务。 37- 非标外设:指的是采用了非标准的协议通信(也称为厂商自定义协议)的一类外设。 38 39## 实现原理 40 41HDF扩展驱动框架为扩展外设驱动开发,提供稳定统一的外设驱动开发接口,支撑用户态扩展外设驱动开发者基于DDK能力开发用户态扩展外设驱动。 42 43扩展外设管理服务作为用户态扩展外设管理的核心服务,实现对扩展外部设备和扩展外设驱动的生命周期管理,同时面向扩展设备应用开发提供标准ArkTS API接口,支持扩展外设查询、绑定及解绑能力接口。 44 45### 扩展外设驱动架构 46 47 **图1** 扩展外设驱动原理图 48 49 50 51 52### 运作流程 53 54用户插入外设时,外设与驱动的匹配流程如图2所示。 55 56**图2** 非标外设与对应扩展外设驱动应用匹配的时序图 57 58 59 60用户使用扩展外设驱动客户端时,扩展外设驱动客户端与扩展外设驱动的绑定流程如图3所示。 61 62**图3** 扩展外设驱动客户端与扩展外设驱动绑定的时序图 63 64 65 66## 约束与限制 67 68调用Driver Development Kit提供的ArkTs-API或者C-API,开发者需要申请指定权限,才能使用相关接口。 69 70所需权限如下: 71 72| API 类型 | DDK类型 | 权限名称 | 73| --------- | --------- | --------- | 74| ArkTs-API | 不涉及 | ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER | 75| C-API | USB DDK | ohos.permission.ACCESS_DDK_USB | 76| C-API | HID DDK | ohos.permission.ACCESS_DDK_HID | 77| C-API | USB Serial DDK | ohos.permission.ACCESS_DDK_USB_SERIAL | 78| C-API | SCSI Peripheral DDK | ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL | 79 80## 关联模块 81 82在扩展外设驱动开发过程中,需要使用到其他关联模块的部分能力,来协助驱动开发。 83 84| 名称 | 作用 | 85| --------- | --------- | 86| PerformanceAnalysisKit | 引入{hilog}用于日志打印。| 87| BasicServicesKit | 引入{BusinessError}用于捕获错误信息。 | 88| IPCKit | 引入{rpc}用于驱动与客户端IPC(Inter-Process Communication)通信。| 89| AbilityKit | 引入{want}用于生命周期管理。| 90 91## 驱动应用规格说明 921.驱动应用定义 93- 驱动应用是基于Driver Development Kit开发的、面向非标外设的用户态驱动。 94- 驱动应用基于DriverExtensionAbility,开发者需要重写该Ability的生命周期回调接口。 95 962.驱动应用安装卸载规格 97- 安装策略 98 - 当用户安装某一驱动应用时,系统会将应用安装到当前已有的所有用户空间下。 99 - 当创建新用户时,系统会将已安装的驱动应用在该用户空间下进行安装。 100- 卸载策略:当用户在任意用户空间下发起卸载某一驱动应用,系统会将所有用户空间下的该驱动应用卸载。 101 1023.基于DriverExtensionAbility生命周期管理说明 103- ExtensionAbility是基于场景服务的扩展能力的统称,简称为扩展能力(例如用户态扩展驱动、卡片、输入法等)以便满足不同的使用场景。 104- 各类Extension的生命周期由各个SA管理,通过connectAbility启动Extension,并驱动定义的业务接口;业务结束,SA调用disconnnectAbility接口断开Extension连接,AMS会根据该Extension是否有SA连接来决定是否销毁该Extension及进程。在用户态扩展驱动开发场景下,管理DriverExtensionAbility生命周期的系统SA为外设扩展服务SA。 105 1064.在DriverExtensionAbility中API访问安全管控说明 107- 系统支持基于ExtensionAbility构建场景化扩展Ability,DriverExtensionAbility为支持开发用户态扩展驱动的一类Ability。 108- 在DriverExtensionAbility中仅支持访问DDK([Driver Development Kit](https://gitcode.com/openharmony/docs/tree/master/zh-cn/application-dev/reference/apis-driverdevelopment-kit))API,实现对非标外设进行访问控制和数据通信。 109- 基于驱动开发安全约束及驱动开发业务场景,在DriverExtensionAbility中不支持访问其它ArkTS API,以防止恶意行为和数据泄露。 110- DriverExtensionAbility受限访问ArkTS API方案说明: 111 - ArkTS API受限原理:在孵化和创建Extension进程时,会根据Extension配置的受限访问ArkTS API名单加载系统模块。在运行时,如果在DriverExtensionAbility中调用限制ArkTS API,由于孵化和创建阶段未加载相应系统模块,API会调用失败。 112- DriverExtensionAbility具体受限ArkTS API名单,请参考[受限ArkTS API](https://gitee.com/openharmony/ability_ability_runtime/blob/master/frameworks/native/ability/native/etc/extension_blocklist_config.json)中DriverExtension配置。