windows-permissions 0.2.4

Safe Rust bindings to Windows permissions APIs
Documentation
use crate::Sid;

/// Wraps [`EqualSid`](https://docs.microsoft.com/en-us/windows/win32/api/securitybaseapi/nf-securitybaseapi-equalsid).
///
/// Because `&Sid` is a safe Rust construct, it must be valid. Therefore, it is
/// impossible for this function to error.
///
/// ```
/// use windows_permissions::{Sid, LocalBox, wrappers::EqualSid};
/// use winapi::um::winnt::WinCreatorGroupSid;
///
/// let sid1: LocalBox<Sid> = "S-1-3-1".parse().unwrap();
/// let sid2 = Sid::well_known_sid(WinCreatorGroupSid).unwrap();
///
/// let sid3 = Sid::new([0, 0, 0, 0, 0, 3], &[2]).unwrap();
///
/// assert!(EqualSid(&sid1, &sid2));
/// assert!(!EqualSid(&sid1, &sid3));
/// ```
#[allow(non_snake_case)]
pub fn EqualSid(sid1: &Sid, sid2: &Sid) -> bool {
    (unsafe {
        winapi::um::securitybaseapi::EqualSid(
            sid1 as *const _ as *mut _,
            sid2 as *const _ as *mut _,
        )
    } != 0)
}