IAgileObject interface (objidl.h)

Marks an interface as agile across apartments.


The IAgileObject interface inherits from the IUnknown interface.


The IAgileObject interface is a marker interface that indicates that an object is free threaded and can be called from any apartment.

Unlike what happens when aggregating the Free Threaded Marshaler (FTM), implementing the IAgileObject interface doesn't affect what happens when marshaling a call. Instead, the IAgileObject interface is recognized by the Global Interface Table (GIT). When an object that implements the IAgileObject interface is placed in the GIT and localized to another apartment, the object is called directly in the new apartment, rather than marshaling.


Requirement Value
Minimum supported client Windows 8 [desktop apps | UWP apps]
Minimum supported server Windows Server 2012 [desktop apps | UWP apps]
Target Platform Windows
Header objidl.h (include Objidlbase.h)

See also