37 lines
1.3 KiB
Rust
37 lines
1.3 KiB
Rust
// Licensed under the Apache License, Version 2.0
|
|
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
|
|
// All files in the project carrying such notice may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
//! GUID definition
|
|
use ctypes::{c_uchar, c_ulong, c_ushort};
|
|
STRUCT!{#[debug] struct GUID {
|
|
Data1: c_ulong,
|
|
Data2: c_ushort,
|
|
Data3: c_ushort,
|
|
Data4: [c_uchar; 8],
|
|
}}
|
|
pub type LPGUID = *mut GUID;
|
|
pub type LPCGUID = *const GUID;
|
|
pub type IID = GUID;
|
|
pub type LPIID = *mut IID;
|
|
pub use self::IsEqualGUID as IsEqualIID;
|
|
pub type CLSID = GUID;
|
|
pub type LPCLSID = *mut CLSID;
|
|
pub use self::IsEqualGUID as IsEqualCLSID;
|
|
pub type FMTID = GUID;
|
|
pub type LPFMTID = *mut FMTID;
|
|
pub use self::IsEqualGUID as IsEqualFMTID;
|
|
pub type REFGUID = *const GUID;
|
|
pub type REFIID = *const IID;
|
|
pub type REFCLSID = *const IID;
|
|
pub type REFFMTID = *const IID;
|
|
DEFINE_GUID!{IID_NULL,
|
|
0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
|
#[inline]
|
|
pub fn IsEqualGUID(g1: &GUID, g2: &GUID) -> bool {
|
|
let a = unsafe { &*(g1 as *const _ as *const [u32; 4]) };
|
|
let b = unsafe { &*(g2 as *const _ as *const [u32; 4]) };
|
|
a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3]
|
|
}
|