当明确驱动已经加载完成时,用户态应用可通过接口:
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兼容的函数体如下:
</