SKYENGINE API 参考手册返回目录 |
(int32 code =
106,
int32 mr_platEx
uint8* input,
int32 input_len,
uint8** output,
int32*
output_len,
MR_PLAT_EX_CB*
cb
)
Description
获得手机菜单树x18x。
Parameters
Name
Description
input
输入参数的起始地址
input_len
输入参数大小(字节数)
output
输出参数的起始地址
output_len
输出参数大小(字节数)
cb
回调函数,由移植层返回给应用,如果应用层发现这个返回值为非空,那么需要在使用完返回数据后调用这个cb函数来释放移植层分配的资源。
MR_SUCCESS 成功
MR_FAILED 失败
MR_IGNORE 不支持该功能
Mythroad透明调用这个接口。APP层上的对应命令将会透明调用至移植层,移植层的返回值也将透明返回至APP层。该扩展接口可用于特殊的平台命令/操作。cb的输出参数是资源清理回调函数,函数的类型定义如下:
typedef void (*MR_PLAT_EX_CB)(uint8* output, int32 output_len);
若移植层需要在mr_platEx函数返回后进行清理工作(比如output的内存是移植层动态申请的,需要VM层使用完后释放),可以给cb赋值,VM层在使用过output后,会调用cb。
/*mrp code*/
int32 re;
U8* pTree = NULL;
int32 len = 0;
MR_PLAT_EX_CB cb = 0;
char* tree = NULL;
re = mrc_platEx( 106, NULL, 0, (uint8**)&pTree, &len, &cb );
if ( MR_SUCCESS == re)
{
tree = (char*)malloc( len );
str_convert_endian( (char*)pTree ); //大小端转换
wstr2str((PCWSTR)pTree, (PSTR)tree, len ); //unicode to string.
mrc_printf( logbuf, "menu tree: %s", tree );
cb( (uint8*)pTree, len );//free resource
free( tree );
tree = NULL;
}