[go: up one dir, main page]

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 IUnknown function pointers
  • the vtable must be the correct vtable for the supplied IID

Required Associated Constants

A unique identifier representing this interface.

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.

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.

Attempts to create a Weak reference to this object.

Implementors