The IAttributeGrammar interface is implemented by C++ attribute providers to show what attributes they support and with what rules.

The IID is {64626787-83F5-11D2-B8DA-00C04F799BBB}. The methods, in vtable order after the three IUnknown methods, are:

Offset Method
0x0C GetAllAttributes
0x10 GetListenToAttributes
0x14 GetAttributeList
0x18 GetArgumentList
0x1C GetArgumentValueList
0x20 GetAttributeUsage
0x24 GetArgumentDefault
0x28 GetAttributeCategory
0x2C GetRepeatable
0x30 GetArgumentType
0x34 GetRequiredArguments
0x38 GetRequiredAttributes
0x3C GetRequiredClassAttributes
0x40 GetArgumentRequiredAttributes
0x44 GetInvalidAttributes
0x48 GetInvalidClassAttributes
0x4C GetArgumentInvalidAttributes
0x50 GetHelpString
0x54 GetAttributeHelpString
0x58 GetArgumentHelpString
0x5C GetMeta
0x60 GetVariableArguments
0x64 AttributeToInt
0x68 GetShipping
0x6C GetVersion
0x70 GetNames
0x74 GetMultiValue
0x78 GetArgumentRepeatable
0x7C GetExplicitArguments
0x80 GetEvent2ForAttribute
0x84 GetAttributeValidExpression
0x88 GetClassAttributeValidExpression
0x8C GetOverLoadList
0x90 GetOverLoad
0x94 GetOverloadedAttributes