This documentation is archived and is not being maintained.

Interface Attributes

The following attributes apply to the interface (or __interface) C++ keyword.

Attribute Description
async_uuid Specifies the UUID that directs the MIDL compiler to define both synchronous and asynchronous versions of a COM interface.
custom Lets you define your own attributes.
dispinterface Places an interface in the .idl file as a dispatch interface.
dual Places an interface in the .idl file as a dual interface.
export Causes a data structure to be placed in the .idl file.
helpcontext Specifies a context ID that lets the user view information about this element in the Help file.
helpfile Sets the name of the Help file for a type library.
helpstring Specifies a character string that is used to describe the element to which it applies.
helpstringcontext Specifies the ID of a help topic in an .hlp or .chm file.
helpstringdll Specifies the name of the DLL to use to perform document string lookup (localization).
hidden Indicates that the item exists but should not be displayed in a user-oriented browser.
library_block Places a construct inside the .idl file's library block.
local Allows you to use the MIDL compiler as a header generator when used in the interface header. When used in an individual function, designates a local procedure for which no stubs are generated.
nonextensible Specifies that the IDispatch implementation includes only the properties and methods listed in the interface description and cannot be extended with additional members at run time. This attribute is only valid on a dual interface.
odl Identifies an interface as an Object Description Language (ODL) interface.
object Identifies a custom interface.
oleautomation Indicates that an interface is compatible with Automation.
pointer_default Specifies the default pointer attribute for all pointers except top-level pointers that appear in parameter lists.
ptr Designates a pointer as a full pointer.
restricted Designates which members of the library cannot be called arbitrarily.
uuid Provides the unique ID for the library

You must observe these rules for defining an interface:

  • Default calling convention is __stdcall.
  • A GUID is supplied for you if you do not supply one.
  • No overloaded methods are allowed.

When not specifying the uuid attribute and using the same interface name in different attribute projects, the same GUID is generated.

See Also

Attributes by Usage