
疯壳出品鸿蒙os-驱动程序接收应用程序的消息
当明确驱动已经加载完成时,用户态应用可通过接口:
struct HdfIoService *HdfIoServiceBind(const char *serviceName, mode_t permission)
获取驱动的服务,获取到服务后通过服务中的Dispatch方法向驱动发送消息。该接口在hdf_io_service_if.h文件中有如下声明:
*参数serviceName 表示指向要获取的服务名称的指针
*参数 permission 表示创建设备节点的权限,从用户空间调用此函数时,可以使用默认值0
*如果操作成功,函数返回指向驱动程序服务对象的指针,否则返回NULL
我们在之前添加的myapp应用的基础上新添获取 “sample_service” 服务的接口并调用Dispatch方法向驱动发送消息,如下:
App完整程序在文末附上!
此外我们在驱动中还要实现服务基类成员IDeviceIoService中的Dispatch方法,如下:
我们先看一下IDeviceIoService结构体(在源码hdf_device_desc.h中):
其中Dispatch是一个函数指针,HdfDeviceIoClient结构体定义如下(同文件中):
1.驱动文件sample_driver.c中新增dispatch方法:
根据上面的图片,我们定义一个跟Disapatch兼容的函数体如下:2.驱动文件中修改bind函数,绑定我们上面定义的Disaptch函数:
接下来我们将源码重新编译,将生成的文件烧录到板子中执行,app正常运行后结果如下:打印的信息很明显是符合我们的程序逻辑的!
源码
————————————————
版权声明:本文为CSDN博主「fengkesz」的原创文章
