#[unsafe(no_mangle)]pub extern "C" fn TEEC_InitializeContext(
_name: *const c_char,
ctx: *mut TEEC_Context,
) -> TEEC_ResultExamples found in repository?
examples/cc-teec.rs (line 77)
70 fn new(uuid: &raw::TEEC_UUID) -> Result<Self> {
71 // SAFETY: `TEEC_Context` 和 `TEEC_Session` 是 POD 类型,没有无效的位模式。
72 // `mem::zeroed()` 在这里是安全的,因为这些结构体只包含整数和指针。
73 let mut ctx: Box<raw::TEEC_Context> = Box::new(unsafe { mem::zeroed() });
74 let mut session: raw::TEEC_Session = unsafe { mem::zeroed() };
75 let mut origin = 0_u32;
76
77 let res = TEEC_InitializeContext(ptr::null(), ctx.as_mut());
78 if res != raw::TEEC_SUCCESS {
79 return Err(Error::from_raw_os_error(res as i32));
80 }
81
82 let res = TEEC_OpenSession(
83 ctx.as_mut(),
84 &mut session,
85 uuid,
86 raw::TEEC_LOGIN_PUBLIC,
87 ptr::null(),
88 ptr::null_mut(),
89 &mut origin,
90 );
91
92 if res != raw::TEEC_SUCCESS {
93 TEEC_FinalizeContext(ctx.as_mut());
94 return Err(Error::from_raw_os_error(res as i32));
95 }
96
97 Ok(Self { ctx, session })
98 }