昇腾社区首页
中文
注册

halHdcRecv

函数功能

普通通道接收数据接口。

函数原型

hdcError_t halHdcRecv(HDC_SESSION session, struct drvHdcMsg *pMsg, int bufLen,UINT64 flag, int *recvBufCount, UINT32 timeout)

参数说明

参数名

输入/输出

说明

session

输入

指定接收数据的session。

类型:HDC_SESSION

pMsg

输出

用于接收消息的描述符指针。

类型:drvHdcMsg

flag

输入

HDC阻塞标志(若处于阻塞状态时,可通过session close完成强制退出),有以下取值:

  • 0:阻塞死等,如果发送通道阻塞则会等待通道空闲,死等。
  • 1:不阻塞,如果发送通道阻塞则不发送数据,立马返回。
  • 2:阻塞直到超时,如果发送通道阻塞则会等待通道空闲,直到超时。

timeout

输入

当“flag”取值为“2”时,设置超时时间,单位毫秒。

类型:UINT32。

bufLen

输入

接收数据buffer的长度,单位为字节,预留未使用

类型:int。

recvBufCount

输出

接收到的数据buffer数量。

类型:int。

返回值说明

  • 0:DRV_ERROR_NONE,成功
  • 3:DRV_ERROR_INVALID_VALUE,参数错误
  • 6:DRV_ERROR_OUT_OF_MEMORY,内存超限
  • 16:DRV_ERROR_WAIT_TIMEOUT,等待超时
  • 25:DRV_ERROR_SOCKET_CLOSE,会话关闭
  • 26:DRV_ERROR_RECV_MESG,接收消息失败
  • 36:DRV_ERROR_NON_BLOCK,非阻塞没有数据
  • 40:DRV_ERROR_MALLOC_FAIL,内存分配失败
  • 46:DRV_ERROR_OPER_NOT_PERMITTED,无权限访问

约束说明

该接口会自动根据接收数据长度申请内存并保存接收到的数据,用户取出数据后,可以调用drvHdcFreeMsg接口释放所有消息块资源,也可以调用drvHdcReuseMsg接口只释放数据buffer内存,保留消息块。