当前位置:网站首页>HDF驱动框架的API(2)
HDF驱动框架的API(2)
2022-08-02 17:35:00 【随遇而安的dandelion】
引言
为了方便查阅,本文汇集了我在学习鸿蒙驱动子系统过程中,曾经遇到过的HDF驱动框架提供的API。 同时,还加入了一些对这些API的个人理解和解读。
另外,大家也可以去阅读这些API的源码或官方文档:
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073
上一篇:《HDF驱动框架的API》(1)
二、接口函数
2.1 HdfSbufReadUint8
从缓冲区(第1个参数)读出一个8bit无符号整数,存入指针(第2个参数)指向的变量中。如果执行成功,返回值为true;否则,返回值为false。
bool HdfSbufReadUint8 (struct HdfSBuf * sbuf, uint8_t * value )
1、头文件
drivers/framework/ability/sbuf/include/hdf_sbuf.h
2、官方文档
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__ga07d93e6bcd8a6a8646067783d6f46e74
2.2 HdfSbufWriteUint8
向缓冲区(第1个参数)写一个8bit的无符号整数(第2个参数)。如果执行成功,返回值为true;否则,返回值为false。
bool HdfSbufWriteUint8(struct HdfSBuf *sbuf, uint8_t value)
1、头文件
drivers/framework/ability/sbuf/include/hdf_sbuf.h
2、官方文档
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__ga3913510d670da2f8ffa3103b5ff293f1
2.3 HdfSBufObtainDefaultSize
创建一个256字节的缓冲区,返回指向缓冲区的指针。
struct HdfSBuf* HdfSBufObtainDefaultSize (void)
1、头文件
drivers/framework/ability/sbuf/include/hdf_sbuf.h
2、官方文档
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__ga479315c09d0d927aa211de829388122d
2.4 HdfSbufWriteString
向缓冲区(第1个参数)写入一个字符串(第2个参数)。如果执行成功,返回值为true;否则,返回值为false。
bool HdfSbufWriteString (struct HdfSBuf * sbuf, const char * value )
1、头文件
drivers/framework/ability/sbuf/include/hdf_sbuf.h
2、官方文档
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gaf782f8a08dcd81f4038ab9d9bbc1cf9b
2.5 HdfDeviceSendEvent
驱动程序上报事件(消息),所有用户态应用程序都可以监听并接收到。第1个参数deviceObject
:指向HdfDeviceObject
结构体的指针;第2个参数id
:事件的编号;第3个参数data
:指针,指向存放上报消息的缓冲区。如果执行成功,返回值为0。
int32_t HdfDeviceSendEvent (const struct HdfDeviceObject * deviceObject, uint32_t id, const struct HdfSBuf * data )
1、头文件
drivers/framework/include/core/hdf_device_desc.h
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gac9670df1316b5ddd651a50ebee0b6557
2.6 HdfDeviceSendEventToClient
驱动程序上报事件(消息)给指定的客户端对象(第1个参数),只有指定的客户端对象才能监听并接收到。第1个参数client
:指向HdfDeviceIoClient
结构体的指针;第2个参数id
:事件的编号;第3个参数data
:指针,指向存放上报消息的缓冲区。如果执行成功,返回值为0。
int32_t HdfDeviceSendEventToClient (const struct HdfDeviceIoClient * client, uint32_t id, const struct HdfSBuf * data)
1、头文件
drivers/framework/include/core/hdf_device_desc.h
2、官方文档
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__ga9c47da8d82820bce2d32051324480f45
2.7 HdfSBufRecycle
回收缓冲区所占的内存空间。
void HdfSBufRecycle (struct HdfSBuf * sbuf)
1、头文件
drivers/framework/ability/sbuf/include/hdf_sbuf.h
2、官方文档
https://device.harmonyos.com/cn/docs/documentation/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gaa0041d238cfc7cf00779191aa58e7ee0
2.8 DeviceResourceGetIfaceInstance
根据设备配置文件的类型(参数type
,见3.2节),取得HDF创建的那个DeviceResourceIface
结构体(见1.9节)的地址。
struct DeviceResourceIface *DeviceResourceGetIfaceInstance(DeviceResourceType type)
1、头文件
drivers/framework/include/config/device_resource_if.h
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/driverconfig-0000001055678040#ZH-CN_TOPIC_0000001055678040__gabfbfb1ffec32f04e8f3660eadb7677a0
2.9 HdfIoServiceBind
根据驱动服务的名称(参数serviceName
),获得一个驱动服务对象,一个指向HdfIoService
结构体(见1.10节)的指针。正常情况下,函数返回值是指向这个结构体的指针;否则,返回一个空指针NULL
。
struct HdfIoService* HdfIoServiceBind (const char * serviceName)
1、头文件
drivers/framework/include/core/hdf_io_service_if.h:228
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__ga31198b68423805193274d3973c178ab5
2.10 HdfDeviceRegisterEventListener
注册驱动事件监听器。第1个参数target
:指向驱动服务对象的指针(见1.10节);第2个参数listener
:指向驱动事件监听器(结构体HdfDevEventlistener
,见1.12节)的指针。如果注册成功,返回值为0;否则,返回值是负值。
int HdfDeviceRegisterEventListener(struct HdfIoService *target, struct HdfDevEventlistener *listener)
1、头文件
drivers/framework/include/core/hdf_io_service_if.h
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gaa7855b3930b5378954927548e5623663
2.11 HdfIoServiceRecycle
释放HdfIoService
结构体占用的资源。
void HdfIoServiceRecycle (struct HdfIoService * service)
1、头文件
drivers/framework/include/core/hdf_io_service_if.h
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gada2867af690aac9e6c3b2c8812b3037c
2.12 HdfDeviceUnregisterEventListener
注销驱动事件监听器。第1个参数target
:指向驱动服务对象的指针(见1.10节);第2个参数listener
:指向驱动事件监听器(结构体HdfDevEventlistener
,见1.12节)的指针。如果注销成功,返回值为0;否则,返回值是负值。
int HdfDeviceUnregisterEventListener(struct HdfIoService *target, struct HdfDevEventlistener *listener)
1、头文件
drivers/framework/include/core/hdf_io_service_if.h
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gab95668359f0b6a47f48c47541caed7fd
2.13 DevSvcManagerClntGetService
根据驱动服务的名称(参数svcName
),获得驱动服务对象,一个指向HdfObject
结构体(见1.6节)的指针。这个指针实际上也指向IdeviceIoService
结构体(见1.3节),因为IdeviceIoService
结构体的第一个成员就是HdfObject
结构体。如果有自定义的驱动入口结构体,这个指针同时也指向自定义的驱动入口结构体,因为自定义的驱动入口结构体的第一个成员必须是IdeviceIoService
结构体。
这个函数与函数HdfIoServiceBind
(见2.9节)的区别:
const struct HdfObject* DevSvcManagerClntGetService (const char * svcName)
1、头文件
drivers/framework/include/core/hdf_device_desc.h:247
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__gab28c6481fc79bd055e2551abebb841bf
2.14 HdfDeviceSubscribeService
订阅驱动服务。第1个参数:指向HdfDeviceObject
结构体(见1.2节)的指针;第2个参数:驱动服务的名称;第三个参数:SubscriberCallback
结构体(见1.13节)。如果订阅成功,返回值是0。
int32_t HdfDeviceSubscribeService (struct HdfDeviceObject * deviceObject, const char * serviceName, struct SubscriberCallback callback )
1、头文件
drivers/framework/include/core/hdf_device_desc.h:275
2、官方文档
https://device.harmonyos.com/cn/docs/develop/apiref/core-0000001054718073#ZH-CN_TOPIC_0000001054718073__ga224908f55daa1b9553841735e5f1f65c
下一篇:《HDF驱动框架的API》(3)
边栏推荐
猜你喜欢
随机推荐
潮玩的“第二春”,在哪?
默认参数的代码实现及日期的注入与显示
npm install报错Fix the upstream dependency conflict, or retry
再获权威认证!马上消费安逸花APP通过中国信通院“金融APP人脸识别安全能力评测”
罗敏背后是抖音
AI+医疗:使用神经网络进行医学影像识别分析
MySQL常见函数
用函数递归的方法解决汉诺塔问题
ECCV 2022 | 清华&腾讯AI Lab提出REALY:重新思考3D人脸重建的评估方法
JS数组删除其中一个元素
织梦自定义表单添加全选和全不选功能按钮
golang源码分析(13)gorpc源码分析
golang源码分析(4):select
德国客户对文档管理系统、工作流自动化软件 DocuWare 的评价
Several common cross-domain solutions
DeepMind 首席科学家 Oriol Vinyals 最新访谈:通用 AI 的未来是强交互式元学习
全面认识二极管,一篇文章就够了
How Tencent architects explained: The principle of Redis high-performance communication (essential version)
FP6606CLP5 SOP-8 USB Type-C和PD充电控制器
C语言中的一系列操作符