use std::ops::Deref; use std::slice; use windows_sys::Win32::Security::Authentication::Identity; pub struct ContextBuffer(pub Identity::SecBuffer); impl Drop for ContextBuffer { fn drop(&mut self) { unsafe { Identity::FreeContextBuffer(self.0.pvBuffer); } } } impl Deref for ContextBuffer { type Target = [u8]; fn deref(&self) -> &[u8] { if self.0.cbBuffer == 0 { return &[]; } unsafe { slice::from_raw_parts(self.0.pvBuffer as *const _, self.0.cbBuffer as usize) } } }