pub unsafe trait Interface: Sized {
const IID: GUID;
fn cast<T: Interface>(&self) -> Result<T> { ... }
fn as_raw(&self) -> *mut c_void { ... }
fn into_raw(self) -> *mut c_void { ... }
unsafe fn from_raw(raw: *mut c_void) -> Self { ... }
unsafe fn from_raw_borrowed<'a>(raw: &'a *mut c_void) -> &'a Self { ... }
fn downgrade(&self) -> Result<Weak<Self>> { ... }
}Expand description
Provides low-level access to a COM interface.
This trait is automatically implemented by the generated bindings and should not be implemented manually.
Safety
It is only safe to implement this trait if the implementing type is a valid COM interface pointer meaning the following criteria are met:
- its in-memory representation is equal to
NonNull<NonNull<Self::VTable>> - the vtable is correctly structured beginning with the
IUnknownfunction pointers - the vtable must be the correct vtable for the supplied IID
Required Associated Constants
Provided Methods
Attempts to cast the current interface to another interface using QueryInterface.
The name cast is preferred to query because there is a WinRT method named query but not one
named cast.
Returns the raw COM interface pointer. The resulting pointer continues to be owned by the Interface implementation.
Returns the raw COM interface pointer and releases ownership. It the caller’s responsibility to release the COM interface pointer.
Creates an Interface by taking ownership of the raw COM interface pointer.
Safety
The raw pointer must be owned by the caller and represent a valid COM interface pointer. In other words,
it must point to a vtable beginning with the IUnknown function pointers and match the vtable of Interface.
unsafe fn from_raw_borrowed<'a>(raw: &'a *mut c_void) -> &'a Self
unsafe fn from_raw_borrowed<'a>(raw: &'a *mut c_void) -> &'a Self
Creates an Interface that is valid so long as the raw COM interface pointer is valid.
Safety
The raw pointer must be a valid COM interface pointer. In other words, it must point to a vtable
beginning with the IUnknown function pointers and match the vtable of Interface.