windows_permissions/wrappers/equal_sid.rs
1use crate::Sid;
2
3/// Wraps [`EqualSid`](https://docs.microsoft.com/en-us/windows/win32/api/securitybaseapi/nf-securitybaseapi-equalsid).
4///
5/// Because `&Sid` is a safe Rust construct, it must be valid. Therefore, it is
6/// impossible for this function to error.
7///
8/// ```
9/// use windows_permissions::{Sid, LocalBox, wrappers::EqualSid};
10/// use winapi::um::winnt::WinCreatorGroupSid;
11///
12/// let sid1: LocalBox<Sid> = "S-1-3-1".parse().unwrap();
13/// let sid2 = Sid::well_known_sid(WinCreatorGroupSid).unwrap();
14///
15/// let sid3 = Sid::new([0, 0, 0, 0, 0, 3], &[2]).unwrap();
16///
17/// assert!(EqualSid(&sid1, &sid2));
18/// assert!(!EqualSid(&sid1, &sid3));
19/// ```
20#[allow(non_snake_case)]
21pub fn EqualSid(sid1: &Sid, sid2: &Sid) -> bool {
22 (unsafe {
23 winapi::um::securitybaseapi::EqualSid(
24 sid1 as *const _ as *mut _,
25 sid2 as *const _ as *mut _,
26 )
27 } != 0)
28}