跳到主要内容

会话 API

读会话元信息、关闭会话。打开见 打开,每帧推理见 推理

功能概览

类别属性类型访问说明
元信息darra_session_meta_jsonint32_t查询会话元信息 JSON;用完 darra_string_free
关闭darra_session_closevoid释放关闭会话;nullptr 安全;禁止与在飞调用并发

元信息

darra_session_meta_json()

int32_t darra_session_meta_json(darra_session* session, char** out_json);

读会话元信息。内容:task / labels / 输入宽高与通道 / Layout / Mean / Std / PayloadKind / 实际选中的 Provider / 是否加密 / 授权摘要(去敏,含试用剩余次数)。全部来自容器头或明文探测,用户零配置。 头里缺的字段派生 JSON 里为 null / 缺席,不编默认 640/80/17。

payloadKind 取值含 onnx / trt-engine / openvino / rknn / paddle(运行时载荷)。Windows 上 rknn 打不开会话,不会进到本函数。

调用代价:读会话缓存的头信息,微秒级。schema 见 类型

参数:

  • session (darra_session*) — 已打开的会话
  • out_json (char**) — SDK 分配的 UTF-8 JSON,用完 darra_string_free

返回值:

  • int32_tDARRA_OK 成功;DARRA_INTERNALnullptr 句柄等契约违反)

示例:

char* meta = nullptr;
int32_t rc = darra_session_meta_json(session, &meta);
if (rc == DARRA_OK) {
std::printf("%s\n", meta);
darra_string_free(meta);
}

关闭

darra_session_close()

void darra_session_close(darra_session* session);

关闭会话并释放全部资源(含解密明文窗口清零)。nullptr 安全。close 后句柄失效,再用 = 未定义行为;禁止与任何在飞调用并发。

参数:

  • session (darra_session*) — 会话句柄;nullptr 为 no-op

示例:

darra_session_close(session);
session = nullptr;

完整示例

#include "darra_ai.h"
#include <cstdio>

static int fail(const char* where, int32_t rc) {
darra_error_t err{};
err.size = sizeof(err);
darra_last_error(&err);
std::fprintf(stderr, "%s 失败 [%d] %s\n建议: %s\n",
where, err.code, err.message, err.hint);
return static_cast<int>(rc);
}

int main() {
darra_session* session = nullptr;
int32_t rc = darra_session_open("model.darmodel", "model.darmkey",
nullptr, nullptr, &session);
if (rc != DARRA_OK) return fail("darra_session_open", rc);

char* meta = nullptr;
rc = darra_session_meta_json(session, &meta);
if (rc != DARRA_OK) {
darra_session_close(session);
return fail("darra_session_meta_json", rc);
}
std::printf("[meta] %s\n", meta);
darra_string_free(meta);
darra_session_close(session);
return 0;
}