Crate windows[][src]

Expand description

The Rust language projection follows in the tradition established by C++/WinRT of building language projections for Windows using standard languages and compilers, providing a natural and idiomatic way for Rust developers to call Windows APIs. The windows crate lets you call any Windows API past, present, and future using code generated on the fly directly from the metadata describing the API and right into your Rust package where you can call them as if they were just another Rust module.

Learn more here:


A macro for generating WinRT modules to a .rs file at build time.

Includes the generated bindings into the current context.


A WinRT array stores elements contiguously in a heap-allocated buffer.

A WinRT error object consists of both an error code as well as detailed error information for debugging.

Attempts to load and cache the factory interface for the given WinRT class. This is automatically

A globally unique identifier (GUID) used to identify COM and WinRT interfaces.

A primitive error code value returned by most COM functions.

A WinRT string, sometimes called an HSTRING, is reference-counted and logically immutable. It should only be used for communicating with WinRT APIs.

A WinRT object that may be used as a polymorphic stand-in for any WinRT class, interface, or boxed value. IInspectable represents the IInspectable interface.

All COM interfaces (and thus WinRT classes and interfaces) implement IUnknown under the hood to provide reference-counted lifetime management as well as the ability to query for additional interfaces that the object may implement.

A thread-safe reference count for use with COM/HSTRING implementations.

A simple blocking waiter used by the generated bindings and should not be used directly.

Weak holds a non-owning reference to an object.

A thread-safe reference count for use with COM weak reference implementations.


Provides a generic way of referring to and converting between a Rust object and its ABI equivalent.

Provides low-level access to a COM interface.

A WinRT type that can be identified by a name in order to support activation and marshaling.

RuntimeType is used to constrain WinRT generic types to WinRT types.


Creates a COM object with the given CLSID.

Attempts to load the factory interface for the given WinRT class.

Initializes COM for use by the calling thread for the multi-threaded apartment (MTA).

Initializes COM for use by the calling thread for a single-threaded apartment (STA).

Type Definitions

A Result type that provides Windows error information.

Attribute Macros

Rust structs can use the implement attribute macro to implement entire WinRT classes or any combination of existing COM and WinRT interfaces.