使用 OCALL,我想将在不受信任的内存中动态创建的 C 字符串的副本放入我的飞地。因此,我必须使用[out, string]
属性。
但是,我不能这样做,因为我还必须添加[in]
属性。问题是我真的不知道字符串的大小,并且我不希望[in]
每次进行 OCALL 时将字符串从 enclave 不必要地复制到不受信任的内存中产生的开销(随之而来)。
我的edl文件:
enclave {
trusted {
public void ecall_open(void);
};
untrusted {
void ocall_get_string([out, string] char* str);
};
};
error: string/wstring/sizefunc should be used with an 'in' attribute
为什么我必须添加[in]
属性?
出于性能原因,有没有办法避免这种开销?