Skip to main content

TEEC_InitializeContext

Function TEEC_InitializeContext 

Source
#[unsafe(no_mangle)]
pub extern "C" fn TEEC_InitializeContext( _name: *const c_char, ctx: *mut TEEC_Context, ) -> 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    }