#[unsafe(no_mangle)]pub extern "C" fn TEEC_InitializeContext(
_name: *const c_char,
ctx: *mut TEEC_Context,
) -> TEEC_ResultExpand description
TEEC_InitializeContext() - 初始化一个上下文,保存与指定 TEE 的连接信息。
@param name 指向以 NULL 结尾的字符串,标识要连接的 TEE。如果 name 为
NULL,则连接到默认的 TEE。对于本 API 实现,唯一支持的值
是 NULL。
@param ctx 要初始化的上下文结构体指针。 @return TEEC_SUCCESS 初始化成功。 @return TEEC_Result 出现错误。
Examples found in repository?
examples/cc-teec.rs (line 73)
66 fn new(uuid: &raw::TEEC_UUID) -> Result<Self> {
67 // SAFETY: `TEEC_Context` 和 `TEEC_Session` 是 POD 类型,没有无效的位模式。
68 // `mem::zeroed()` 在这里是安全的,因为这些结构体只包含整数和指针。
69 let mut ctx: Box<raw::TEEC_Context> = Box::new(unsafe { mem::zeroed() });
70 let mut session: raw::TEEC_Session = unsafe { mem::zeroed() };
71 let mut origin = 0_u32;
72
73 let res = TEEC_InitializeContext(ptr::null(), ctx.as_mut());
74 if res != raw::TEEC_SUCCESS {
75 return Err(Error::from_raw_os_error(res as i32));
76 }
77
78 let res = TEEC_OpenSession(
79 ctx.as_mut(),
80 &mut session,
81 uuid,
82 raw::TEEC_LOGIN_PUBLIC,
83 ptr::null(),
84 ptr::null_mut(),
85 &mut origin,
86 );
87
88 if res != raw::TEEC_SUCCESS {
89 TEEC_FinalizeContext(ctx.as_mut());
90 return Err(Error::from_raw_os_error(res as i32));
91 }
92
93 Ok(Self { ctx, session })
94 }