1# native_node_napi.h 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @piggyguy; @xiang-shouxing; @yangfan229--> 5<!--Designer: @piggyguy; @xiang-shouxing; @yangfan229--> 6<!--Tester: @fredyuan912--> 7<!--Adviser: @HelloCrease--> 8 9## 概述 10 11提供ArkTS侧的FrameNode转换NodeHandle的方式。 12 13**引用文件:** <arkui/native_node_napi.h> 14 15**库:** libace_ndk.z.so 16 17**系统能力:** SystemCapability.ArkUI.ArkUI.Full 18 19**起始版本:** 12 20 21**相关模块:** [ArkUI_NativeModule](capi-arkui-nativemodule.md) 22 23## 汇总 24 25### 函数 26 27| 名称 | 描述 | 28| -- | -- | 29| [int32_t OH_ArkUI_GetNodeHandleFromNapiValue(napi_env env, napi_value frameNode, ArkUI_NodeHandle* handle)](#oh_arkui_getnodehandlefromnapivalue) | 获取ArkTS侧创建的FrameNode节点对象映射到Native侧的ArkUI_NodeHandle。 | 30| [int32_t OH_ArkUI_GetContextFromNapiValue(napi_env env, napi_value value, ArkUI_ContextHandle* context)](#oh_arkui_getcontextfromnapivalue) | 获取ArkTS侧创建的UIContext对象映射到Native侧的ArkUI_ContextHandle。 | 31| [int32_t OH_ArkUI_GetNodeContentFromNapiValue(napi_env env, napi_value value, ArkUI_NodeContentHandle* content)](#oh_arkui_getnodecontentfromnapivalue) | 获取ArkTS侧创建的NodeContent对象映射到Native侧的ArkUI_NodeContentHandle。 | 32| [int32_t OH_ArkUI_GetDrawableDescriptorFromNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor)](#oh_arkui_getdrawabledescriptorfromnapivalue) | 将ArkTS侧创建的DrawableDescriptor对象映射到Native侧的ArkUI_DrawableDescriptor。 | 33| [int32_t OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor)](#oh_arkui_getdrawabledescriptorfromresourcenapivalue) | 将ArkTS侧创建的$r资源对象映射到Native侧的ArkUI_DrawableDescriptor。 | 34| [ArkUI_ErrorCode OH_ArkUI_GetNavigationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavigationid) | 获取当前节点所在的Navigation组件的ID。 | 35| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavdestinationname) | 获取当前节点所在的NavDestination组件的名称。 | 36| [ArkUI_ErrorCode OH_ArkUI_GetNavStackLength(ArkUI_NodeHandle node, int32_t* length)](#oh_arkui_getnavstacklength) | 根据给定索引值,获取当前节点所在的Navigation栈的长度。 | 37| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationNameByIndex(ArkUI_NodeHandle node, int32_t index, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavdestinationnamebyindex) | 根据给定索引值,获取当前节点所在的Navigation栈中对应位置的页面名称。索引值从0开始计数,0为栈底。 | 38| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavdestinationid) | 获取当前节点所在的NavDestination组件的ID。 | 39| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationState(ArkUI_NodeHandle node, ArkUI_NavDestinationState* state)](#oh_arkui_getnavdestinationstate) | 获取当前节点所在的NavDestination组件的状态。 | 40| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationIndex(ArkUI_NodeHandle node, int32_t* index)](#oh_arkui_getnavdestinationindex) | 获取当前节点所在的NavDestination组件在页面栈的索引。 | 41| [napi_value OH_ArkUI_GetNavDestinationParam(ArkUI_NodeHandle node)](#oh_arkui_getnavdestinationparam) | 获取当前节点所在的NavDestination组件的参数。 | 42| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageIndex(ArkUI_NodeHandle node, int32_t* index)](#oh_arkui_getrouterpageindex) | 获取当前节点所在页面在Router页面栈中的索引。 | 43| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getrouterpagename) | 获取当前节点所在页面的名称。 | 44| [ArkUI_ErrorCode OH_ArkUI_GetRouterPagePath(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getrouterpagepath) | 获取当前节点所在页面的Page组件的路径。 | 45| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageState(ArkUI_NodeHandle node, ArkUI_RouterPageState* state)](#oh_arkui_getrouterpagestate) | 获取当前节点所在页面的Page组件的状态。 | 46| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getrouterpageid) | 获取当前节点所在页面的Page组件的ID。 | 47| [ArkUI_ErrorCode OH_ArkUI_InitModuleForArkTSEnv(napi_env env)](#oh_arkui_initmoduleforarktsenv) | 初始化指定上下文环境的ArkUI相关接口。该函数禁止在非UI线程中调用,否则程序将主动abort。 | 48| [void OH_ArkUI_NotifyArkTSEnvDestroy(napi_env env)](#oh_arkui_notifyarktsenvdestroy) | 通知指定的上下文环境已销毁。该函数禁止在非UI线程中调用,否则程序将主动abort。 | 49| [int32_t OH_ArkUI_PostFrameCallback(ArkUI_ContextHandle uiContext, void* userData,void (\*callback)(uint64_t nanoTimestamp, uint32_t frameCount, void* userData))](#oh_arkui_postframecallback) | 注册一个回调函数,以便在下一帧渲染时执行。不允许在非UI线程调用,检查到非UI线程调用程序会主动中止。 | 50| [int32_t OH_ArkUI_PostIdleCallback(ArkUI_ContextHandle uiContext, void* userData,void (\*callback)(uint64_t nanoTimeLeft, uint32_t frameCount, void* userData))](#oh_arkui_postidlecallback) | 注册一个回调函数,在下一帧渲染结束后如果距离下一个Vsync信号到来剩余时间大于1ms时,该回调函数将被执行;如果剩余时间小于1ms时,回调函数将被顺延至当某个下一帧的剩余时间大于1ms时再执行。如果当前没有下一帧,将自动请求下一帧。 | 51 52## 函数说明 53 54### OH_ArkUI_GetNodeHandleFromNapiValue() 55 56``` 57int32_t OH_ArkUI_GetNodeHandleFromNapiValue(napi_env env, napi_value frameNode, ArkUI_NodeHandle* handle) 58``` 59 60**描述:** 61 62 63获取ArkTS侧创建的FrameNode节点对象映射到Native侧的ArkUI_NodeHandle。 64 65**起始版本:** 12 66 67 68**参数:** 69 70| 参数项 | 描述 | 71| -- | -- | 72| napi_env env | napi的环境指针。 | 73| napi_value frameNode | ArkTS侧创建的FrameNode对象。 | 74| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md)* handle | ArkUI_NodeHandle指针。 | 75 76**返回:** 77 78| 类型 | 说明 | 79| -- | -- | 80| int32_t | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | 81 82### OH_ArkUI_GetContextFromNapiValue() 83 84``` 85int32_t OH_ArkUI_GetContextFromNapiValue(napi_env env, napi_value value, ArkUI_ContextHandle* context) 86``` 87 88**描述:** 89 90 91获取ArkTS侧创建的UIContext对象映射到Native侧的ArkUI_ContextHandle。 92 93**起始版本:** 12 94 95 96**参数:** 97 98| 参数项 | 描述 | 99| -- | -- | 100| napi_env env | napi的环境指针。 | 101| napi_value value | ArkTS侧创建的context对象。 | 102| [ArkUI_ContextHandle](capi-arkui-nativemodule-arkui-context8h.md)* context | ArkUI_ContextHandle指针。 | 103 104**返回:** 105 106| 类型 | 说明 | 107| -- | -- | 108| int32_t | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | 109 110### OH_ArkUI_GetNodeContentFromNapiValue() 111 112``` 113int32_t OH_ArkUI_GetNodeContentFromNapiValue(napi_env env, napi_value value, ArkUI_NodeContentHandle* content) 114``` 115 116**描述:** 117 118 119获取ArkTS侧创建的NodeContent对象映射到Native侧的ArkUI_NodeContentHandle。 120 121**起始版本:** 12 122 123 124**参数:** 125 126| 参数项 | 描述 | 127| -- | -- | 128| napi_env env | napi的环境指针。 | 129| napi_value value | ArkTS侧创建的NodeContent对象。 | 130| content | ArkUI_NodeContentHandle指针。 | 131 132**返回:** 133 134| 类型 | 说明 | 135| -- | -- | 136| int32_t | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | 137 138### OH_ArkUI_GetDrawableDescriptorFromNapiValue() 139 140``` 141int32_t OH_ArkUI_GetDrawableDescriptorFromNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor) 142``` 143 144**描述:** 145 146 147将ArkTS侧创建的DrawableDescriptor对象映射到Native侧的ArkUI_DrawableDescriptor。 148 149**起始版本:** 12 150 151 152**参数:** 153 154| 参数项 | 描述 | 155| -- | -- | 156| napi_env env | napi的环境指针。 | 157| napi_value value | ArkTS侧创建的DrawableDescriptor对象。 | 158| [ArkUI_DrawableDescriptor](capi-arkui-nativemodule-arkui-drawabledescriptor.md)** drawableDescriptor | 接受ArkUI_DrawableDescriptor指针的对象。 | 159 160**返回:** 161 162| 类型 | 说明 | 163| -- | -- | 164| int32_t | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | 165 166### OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue() 167 168``` 169int32_t OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor) 170``` 171 172**描述:** 173 174 175将ArkTS侧创建的$r资源对象映射到Native侧的ArkUI_DrawableDescriptor。 176 177**起始版本:** 12 178 179 180**参数:** 181 182| 参数项 | 描述 | 183| -- | -- | 184| napi_env env | napi的环境指针。 | 185| napi_value value | ArkTS侧创建的$r资源对象。 | 186| [ArkUI_DrawableDescriptor](capi-arkui-nativemodule-arkui-drawabledescriptor.md)** drawableDescriptor | 接受ArkUI_DrawableDescriptor指针的对象。 | 187 188**返回:** 189 190| 类型 | 说明 | 191| -- | -- | 192| int32_t | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | 193 194### OH_ArkUI_GetNavigationId() 195 196``` 197ArkUI_ErrorCode OH_ArkUI_GetNavigationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength) 198``` 199 200**描述:** 201 202 203获取当前节点所在的Navigation组件的ID。 204 205**起始版本:** 12 206 207 208**参数:** 209 210| 参数项 | 描述 | 211| -- | -- | 212| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 213| char* buffer | 缓冲区,NavigationID写入该内存区域。 | 214| int32_t bufferSize | 缓冲区大小。 | 215| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 216 217**返回:** 218 219| 类型 | 说明 | 220| -- | -- | 221| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 222 223### OH_ArkUI_GetNavDestinationName() 224 225``` 226ArkUI_ErrorCode OH_ArkUI_GetNavDestinationName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength) 227``` 228 229**描述:** 230 231 232获取当前节点所在的NavDestination组件的名称。 233 234**起始版本:** 12 235 236 237**参数:** 238 239| 参数项 | 描述 | 240| -- | -- | 241| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 242| char* buffer | 缓冲区,被查询的NavDestination名称写入该内存区域。 | 243| int32_t bufferSize | 缓冲区大小。 | 244| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 245 246**返回:** 247 248| 类型 | 说明 | 249| -- | -- | 250| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 251 252### OH_ArkUI_GetNavStackLength() 253 254``` 255ArkUI_ErrorCode OH_ArkUI_GetNavStackLength(ArkUI_NodeHandle node, int32_t* length) 256``` 257 258**描述:** 259 260 261根据给定索引值,获取当前节点所在的Navigation栈的长度。 262 263**起始版本:** 12 264 265 266**参数:** 267 268| 参数项 | 描述 | 269| -- | -- | 270| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 271| int32_t* length | 栈的长度。查询成功后将结果写回该参数。 | 272 273**返回:** 274 275| 类型 | 说明 | 276| -- | -- | 277| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 | 278 279### OH_ArkUI_GetNavDestinationNameByIndex() 280 281``` 282ArkUI_ErrorCode OH_ArkUI_GetNavDestinationNameByIndex(ArkUI_NodeHandle node, int32_t index, char* buffer, int32_t bufferSize, int32_t* writeLength) 283``` 284 285**描述:** 286 287 288根据给定索引值,获取当前节点所在的Navigation栈中对应位置的页面名称。索引值从0开始计数,0为栈底。 289 290**起始版本:** 12 291 292 293**参数:** 294 295| 参数项 | 描述 | 296| -- | -- | 297| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 298| int32_t index | 被查询NavDestination在栈中的索引。 | 299| char* buffer | 缓冲区,被查询页面的名称写入该内存区域。 | 300| int32_t bufferSize | 缓冲区大小。 | 301| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 302 303**返回:** 304 305| 类型 | 说明 | 306| -- | -- | 307| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_NODE_INDEX_INVALID](capi-native-type-h.md#arkui_errorcode) index为非法值。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 308 309### OH_ArkUI_GetNavDestinationId() 310 311``` 312ArkUI_ErrorCode OH_ArkUI_GetNavDestinationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength) 313``` 314 315**描述:** 316 317 318获取当前节点所在的NavDestination组件的ID。 319 320**起始版本:** 12 321 322 323**参数:** 324 325| 参数项 | 描述 | 326| -- | -- | 327| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 328| char* buffer | 缓冲区,NavDestinationID写入该内存区域。 | 329| int32_t bufferSize | 缓冲区大小。 | 330| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 331 332**返回:** 333 334| 类型 | 说明 | 335| -- | -- | 336| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 337 338### OH_ArkUI_GetNavDestinationState() 339 340``` 341ArkUI_ErrorCode OH_ArkUI_GetNavDestinationState(ArkUI_NodeHandle node, ArkUI_NavDestinationState* state) 342``` 343 344**描述:** 345 346 347获取当前节点所在的NavDestination组件的状态。 348 349**起始版本:** 12 350 351 352**参数:** 353 354| 参数项 | 描述 | 355| -- | -- | 356| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 357| [ArkUI_NavDestinationState](capi-native-type-h.md#arkui_navdestinationstate)* state | NavDestination的状态值写回该参数中。 | 358 359**返回:** 360 361| 类型 | 说明 | 362| -- | -- | 363| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 | 364 365### OH_ArkUI_GetNavDestinationIndex() 366 367``` 368ArkUI_ErrorCode OH_ArkUI_GetNavDestinationIndex(ArkUI_NodeHandle node, int32_t* index) 369``` 370 371**描述:** 372 373 374获取当前节点所在的NavDestination组件在页面栈的索引。 375 376**起始版本:** 12 377 378 379**参数:** 380 381| 参数项 | 描述 | 382| -- | -- | 383| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 384| int32_t* index | 索引值,从0开始计数。 | 385 386**返回:** 387 388| 类型 | 说明 | 389| -- | -- | 390| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 | 391 392### OH_ArkUI_GetNavDestinationParam() 393 394``` 395napi_value OH_ArkUI_GetNavDestinationParam(ArkUI_NodeHandle node) 396``` 397 398**描述:** 399 400 401获取当前节点所在的NavDestination组件的参数。 402 403**起始版本:** 12 404 405 406**参数:** 407 408| 参数项 | 描述 | 409| -- | -- | 410| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 411 412**返回:** 413 414| 类型 | 说明 | 415| -- | -- | 416| napi_value | 参数对象。如返回为空,则说明参数不存在或指定的节点为空。| 417 418### OH_ArkUI_GetRouterPageIndex() 419 420``` 421ArkUI_ErrorCode OH_ArkUI_GetRouterPageIndex(ArkUI_NodeHandle node, int32_t* index) 422``` 423 424**描述:** 425 426 427获取当前节点所在页面在Router页面栈中的索引。 428 429**起始版本:** 12 430 431 432**参数:** 433 434| 参数项 | 描述 | 435| -- | -- | 436| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 437| int32_t* index | 索引值,从1开始计数。 | 438 439**返回:** 440 441| 类型 | 说明 | 442| -- | -- | 443| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 指定的节点或传递的索引异常。<br>[ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 | 444 445### OH_ArkUI_GetRouterPageName() 446 447``` 448ArkUI_ErrorCode OH_ArkUI_GetRouterPageName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength) 449``` 450 451**描述:** 452 453 454获取当前节点所在页面的名称。 455 456**起始版本:** 12 457 458 459**参数:** 460 461| 参数项 | 描述 | 462| -- | -- | 463| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 464| char* buffer | 缓冲区,页面名称写入该内存区域。 | 465| int32_t bufferSize | 缓冲区大小。 | 466| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 467 468**返回:** 469 470| 类型 | 说明 | 471| -- | -- | 472| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 473 474### OH_ArkUI_GetRouterPagePath() 475 476``` 477ArkUI_ErrorCode OH_ArkUI_GetRouterPagePath(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength) 478``` 479 480**描述:** 481 482 483获取当前节点所在页面的Page组件的路径。 484 485**起始版本:** 12 486 487 488**参数:** 489 490| 参数项 | 描述 | 491| -- | -- | 492| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 493| char* buffer | 缓冲区,Page Path写入该内存区域。 | 494| int32_t bufferSize | 缓冲区大小。 | 495| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 496 497**返回:** 498 499| 类型 | 说明 | 500| -- | -- | 501| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 502 503### OH_ArkUI_GetRouterPageState() 504 505``` 506ArkUI_ErrorCode OH_ArkUI_GetRouterPageState(ArkUI_NodeHandle node, ArkUI_RouterPageState* state) 507``` 508 509**描述:** 510 511 512获取当前节点所在页面的Page组件的状态。 513 514**起始版本:** 12 515 516 517**参数:** 518 519| 参数项 | 描述 | 520| -- | -- | 521| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 522| [ArkUI_RouterPageState](capi-native-type-h.md#arkui_routerpagestate)* state | Router Page的状态值写回该参数中。 | 523 524**返回:** 525 526| 类型 | 说明 | 527| -- | -- | 528| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。 | 529 530### OH_ArkUI_GetRouterPageId() 531 532``` 533ArkUI_ErrorCode OH_ArkUI_GetRouterPageId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength) 534``` 535 536**描述:** 537 538 539获取当前节点所在页面的Page组件的ID。 540 541**起始版本:** 12 542 543 544**参数:** 545 546| 参数项 | 描述 | 547| -- | -- | 548| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 | 549| char* buffer | 缓冲区,Page Id写入该内存区域。 | 550| int32_t bufferSize | 缓冲区大小。 | 551| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。 在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 | 552 553**返回:** 554 555| 类型 | 说明 | 556| -- | -- | 557| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br> [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。<br> [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 | 558 559### OH_ArkUI_InitModuleForArkTSEnv() 560 561``` 562ArkUI_ErrorCode OH_ArkUI_InitModuleForArkTSEnv(napi_env env) 563``` 564 565**描述:** 566 567 568初始化指定上下文环境的ArkUI相关接口。该函数禁止在非UI线程中调用,否则程序将主动abort。 569 570**起始版本:** 20 571 572 573**参数:** 574 575| 参数项 | 描述 | 576| -- | -- | 577| napi_env env | Node-API的环境指针。 | 578 579**返回:** 580 581| 类型 | 说明 | 582| -- | -- | 583| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 参数无效(如env为null或设置白名单失败)。<br> [ARKUI_ERROR_CODE_CAPI_INIT_ERROR](capi-native-type-h.md#arkui_errorcode) CAPI初始化错误。 | 584 585### OH_ArkUI_NotifyArkTSEnvDestroy() 586 587``` 588void OH_ArkUI_NotifyArkTSEnvDestroy(napi_env env) 589``` 590 591**描述:** 592 593 594通知指定的上下文环境已销毁。该函数禁止在非UI线程中调用,否则程序将主动abort。 595 596**起始版本:** 20 597 598 599**参数:** 600 601| 参数项 | 描述 | 602| -- | -- | 603| napi_env env | Node-API的环境指针。 | 604 605### OH_ArkUI_PostFrameCallback() 606 607``` 608int32_t OH_ArkUI_PostFrameCallback(ArkUI_ContextHandle uiContext, void* userData,void (*callback)(uint64_t nanoTimestamp, uint32_t frameCount, void* userData)) 609``` 610 611**描述:** 612 613 614注册一个回调函数,以便在下一帧渲染时执行。不允许在非UI线程调用,检查到非UI线程调用程序会主动中止。 615 616**起始版本:** 18 617 618 619**参数:** 620 621| 参数项 | 描述 | 622| -- | -- | 623| ArkUI_ContextHandle uiContext | UIContext对象,用以绑定实例。 | 624| void* userData | 自定义事件参数,当事件触发时在回调参数中携带回来。 | 625| callback | 自定义回调函数。 | 626| uint64_t nanoTimestamp | 帧信号的时间戳。 | 627| uint32_t frameCount | 帧号。 | 628 629**返回:** 630 631| 类型 | 说明 | 632| -- | -- | 633| int32_t | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_CAPI_INIT_ERROR](capi-native-type-h.md#arkui_errorcode) CAPI初始化错误。<br> [ARKUI_ERROR_CODE_UI_CONTEXT_INVALID](capi-native-type-h.md#arkui_errorcode) uiContext对象无效。<br> [ARKUI_ERROR_CODE_CALLBACK_INVALID](capi-native-type-h.md#arkui_errorcode) 回调函数无效。 | 634 635### OH_ArkUI_PostIdleCallback() 636 637``` 638int32_t OH_ArkUI_PostIdleCallback(ArkUI_ContextHandle uiContext, void* userData,void (*callback)(uint64_t nanoTimeLeft, uint32_t frameCount, void* userData)) 639``` 640 641**描述:** 642 643 644注册一个回调函数,在下一帧渲染结束后如果距离下一个Vsync信号到来剩余时间大于1ms时,该回调函数将被执行;如果剩余时间小于1ms时,回调函数将被顺延至当某个下一帧的剩余时间大于1ms时再执行。如果当前没有下一帧,将自动请求下一帧。 645 646**起始版本:** 20 647 648 649**参数:** 650 651| 参数项 | 描述 | 652| -- | -- | 653| uiContext | UIContext对象,用以绑定实例。 | 654| void* userData | 自定义事件参数,当自定义回调函数触发时在回调参数中携带回来。 | 655| callback | 自定义回调函数,会在下一帧事件结束后剩余时间大于1ms时回调执行。 | 656| uint64_t nanoTimeLeft | 下一帧渲染后的剩余时间。 | 657| uint32_t frameCount | 帧号。 | 658 659**返回:** 660 661| 类型 | 说明 | 662| -- | -- | 663| int32_t (ArkUI_ContextHandle uiContext, void* userData,void (*callback) | 错误码。<br> [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_CAPI_INIT_ERROR](capi-native-type-h.md#arkui_errorcode) CAPI初始化错误。<br> [ARKUI_ERROR_CODE_UI_CONTEXT_INVALID](capi-native-type-h.md#arkui_errorcode) uiContext对象无效。<br> [ARKUI_ERROR_CODE_CALLBACK_INVALID](capi-native-type-h.md#arkui_errorcode) 回调函数无效。 | 664 665 666