pub unsafe trait Vtable: Sized {
type Vtable;
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 { ... }
}
Expand description
Provides low-level access to an interface vtable.
This trait is automatically implemented by the generated bindings and should not be implemented manually.
Required Associated Types§
type Vtable
Provided Methods§
fn as_raw(&self) -> *mut c_void
fn as_raw(&self) -> *mut c_void
Returns the raw COM interface pointer. The resulting pointer continues to be owned by the Interface
implementation.
fn into_raw(self) -> *mut c_void
fn into_raw(self) -> *mut c_void
Returns the raw COM interface pointer and releases ownership. It the caller’s responsibility to release the COM interface pointer.
unsafe fn from_raw(raw: *mut c_void) -> Self
unsafe fn from_raw(raw: *mut c_void) -> Self
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
.