目录

Driver Development Kit简介

Driver Development Kit(驱动开发套件)为外设驱动开发者提供高效、安全、丰富的扩展外设驱动开发解决方案ArkTS-API和C-API,支持外设驱动开发者为消费者带来外设即插即用的极致体验。

使用场景

支持开发者高效、安全开发专业外设或扩展外设增强能力:

  1. 面向专业专用办公外设驱动开发场景。

    例如:银行柜台、企业办公、医疗检测等领域专业专用外设,如:高拍仪、身份证扫描仪、指纹识别仪、血氧血糖监测设备。

  2. 面向非标外设扩展增强能力开放场景。

    例如:厂商私有非标HID外设增强能力开放场景,如:手写板快捷键定制、压感/绘图区域设置、扩展增强能力设置、鼠标灯光效果设置、鼠标扩展按键定制、DPI及X/Y轴等高阶能力设置。

亮点特征

基本概念

实现原理

HDF扩展驱动框架为扩展外设驱动开发,提供稳定统一的外设驱动开发接口,支撑用户态扩展外设驱动开发者基于DDK能力开发用户态扩展外设驱动。

扩展外设管理服务作为用户态扩展外设管理的核心服务,实现对扩展外部设备和扩展外设驱动的生命周期管理,同时面向扩展设备应用开发提供标准ArkTS API接口,支持扩展外设查询、绑定及解绑能力接口。

[h2]扩展外设驱动架构

图1 扩展外设驱动原理图

[h2]运作流程

用户插入外设时,外设与驱动的匹配流程如图2所示。

图2 非标外设与对应扩展外设驱动应用匹配的时序图

用户使用扩展外设驱动客户端时,扩展外设驱动客户端与扩展外设驱动的绑定流程如图3所示。

图3 扩展外设驱动客户端与扩展外设驱动绑定的时序图

约束与限制

  1. 调用Driver Development Kit提供的ArkTS-API或者C-API,开发者需要申请特定权限,才能使用相关接口。

    所需权限如下:

    API 类型 DDK类型 权限名称
    ArkTS-API 不涉及 ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER
    C-API UsbDdk ohos.permission.ACCESS_DDK_USB
    C-API HidDdk ohos.permission.ACCESS_DDK_HID
    C-API USBSerialDDK ohos.permission.ACCESS_DDK_USB_SERIAL
    C-API ScsiPeripheralDDK ohos.permission.ACCESS_DDK_SCSI_PERIPHERAL
  2. Driver Development Kit提供的C-API仅支持在DriverExtension进程中使用。在其他进程(包括子进程)中使用可能会出现功能异常,具体可参考在子进程或非驱动Ability中调用DDK的C-API失败。

  3. 针对 DriverExtensionAbility接口调用限制,详细请参考 API 中的约束限制。

模拟器支持情况

本Kit不支持模拟器。

关联模块

在扩展外设驱动开发过程中,需要使用到其他关联模块的部分能力,来协助驱动开发。

名称 作用
PerformanceAnalysisKit 引入hilog用于日志打印。
BasicServicesKit 引入BusinessError用于捕获错误信息。
IPCKit 引入rpc用于驱动与客户端IPC(Inter-Process Communication)通信。
AbilityKit 引入@ohos.application.Want (Want)用于生命周期管理。

驱动应用规格说明

  1. 驱动应用定义

    • 驱动应用是基于Driver Development Kit开发的、面向非标外设的用户态驱动。
    • 驱动应用基于DriverExtensionAbility,开发者需要重写该Ability的生命周期回调接口。
  2. 驱动应用安装卸载规格

    • 安装策略
      • 当用户安装某一驱动应用时,系统会将应用安装到当前已有的所有用户环境下。
      • 当创建新用户时,系统会将已安装的驱动应用在该用户环境下进行安装。
    • 卸载策略:当用户在任意用户环境下发起卸载某一驱动应用,系统会将所有用户环境下的该驱动应用卸载。
  3. 基于DriverExtensionAbility生命周期管理说明

    • ExtensionAbility是基于场景服务的扩展能力的统称,简称为扩展能力(例如用户态扩展驱动、卡片、输入法等)以便满足不同的使用场景。
    • 各类Extension的生命周期由各个SA管理,通过connectAbility启动Extension,并驱动定义的业务接口;业务结束,SA调用disconnectAbility接口断开Extension连接,AMS会根据该Extension是否有SA连接来决定是否销毁该Extension及进程。在用户态扩展驱动开发场景下,管理DriverExtensionAbility生命周期的系统SA为外设扩展服务SA。
    • DriverExtensionAbility的生命周期取决于外设的接入时间,具体来说表现为:
      • 当DriverExtensionAbility配置的“VID + PID”设备列表中的某个外设接入时,其生命周期区间跟该外设接入的时间段一致。
      • 当DriverExtensionAbility配置的“VID + PID”设备列表中的多个外设依次接入时,其生命周期区间从第一个外设的接入持续到最后一个外设的拔出。
      • 接入的外设同时出现在多个DriverExtensionAbility配置的“VID + PID”列表中时,该外设只会影响最先安装的驱动Ability的生命周期,详见多个驱动Ability配置了同一型号外设的情况下,插入该外设只支持拉起一个驱动Ability。
  4. 在DriverExtensionAbility中API访问安全管控说明

    • 系统支持基于ExtensionAbility构建场景化扩展Ability,DriverExtensionAbility为支持开发用户态扩展驱动的一类Ability。
    • 在DriverExtensionAbility中仅支持访问DDK(Driver Development Kit)API,实现对非标外设进行访问控制和数据通信。
    • 基于驱动开发安全约束及驱动开发业务场景,在DriverExtensionAbility中不支持访问其它ArkTS API,以防止恶意行为和数据泄露。
    • DriverExtensionAbility受限访问ArkTS API方案说明:
      • ArkTS API受限原理:在初始化和创建Extension进程时,会根据Extension配置的受限访问ArkTS API名单加载系统模块。在运行时,如果在DriverExtensionAbility中调用受限ArkTS API,由于初始化和创建阶段未加载相应系统模块,API会调用失败。
    • DriverExtensionAbility具体受限ArkTS API名单,请参考frameworks/native/ability/native/etc/extension_blocklist_config.json · HarmonyOS/ability_ability_runtime - AtomGit | GitCode中DriverExtension配置。