[uuid, nonextensible [, optional-attribute-list] interface | dispinterface interface-name {interface-definitions}
library Hello
{
[uuid( . . .), helpstring("A helpful description."),
oleautomation, dual, nonextensible] interface IHello : IDispatch
{. . .};
By default, OLE Automation assumes that interfaces may add members at run time; that is, it assumes they are extensible. The nonextensible attribute 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.
You can apply the nonextensible attribute to either an interface or a dispinterface. However, an interface must also have the dual and oleautomation attributes.
TYPEFLAG_FNONEXTENSIBLE
TYPEFLAGS, interface, dispinterface, Generating a Type Library With MIDL, Contents of a Type Library, ODL File Syntax, TYPEFLAGS