#![allow(non_camel_case_types, non_snake_case)]
use crate::decl::*;
use crate::dxgi::vts::*;
use crate::kernel::privs::*;
use crate::ole::privs::*;
use crate::prelude::*;
com_interface! { IDXGIObject: "aec22fb8-76f3-4639-9be0-28eb43a67a2e";
}
impl dxgi_IDXGIObject for IDXGIObject {}
pub trait dxgi_IDXGIObject: ole_IUnknown {
#[must_use]
fn GetParent<T>(&self) -> HrResult<T>
where
T: ole_IUnknown,
{
let mut queried = unsafe { T::null() };
HrRet(unsafe {
(vt::<IDXGIObjectVT>(self).GetParent)(self.ptr(), pcvoid(&T::IID), queried.as_mut())
})
.to_hrresult()
.map(|_| queried)
}
fn SetPrivateData<T>(&self, name: &GUID, data: &T) -> HrResult<()>
where
T: Sized,
{
HrRet(unsafe {
(vt::<IDXGIObjectVT>(self).SetPrivateData)(
self.ptr(),
pcvoid(name),
std::mem::size_of::<T>() as _,
pcvoid(data),
)
})
.to_hrresult()
}
fn SetPrivateDataInterface<T>(&self, obj: &T) -> HrResult<()>
where
T: ole_IUnknown,
{
HrRet(unsafe {
(vt::<IDXGIObjectVT>(self).SetPrivateDataInterface)(
self.ptr(),
pcvoid(&T::IID),
obj.ptr(),
)
})
.to_hrresult()
}
}