2.2.14 INVOKEKIND Function Invocation Constants

The INVOKEKIND enumeration values are used in the invkind field of a FUNCDESC (section 2.2.42) to specify the way that a method is invoked using IDispatch::Invoke (section 3.1.4.4). They are also used in the ITypeInfo2::GetFuncIndexOfMemId, ITypeInfo::GetDllEntry and ITypeComp::Bind methods to distinguish between properties and property accessor methods that have the same MEMBERID (section 2.2.35) but are invoked differently.

Fields and parameters that contain function invocation constants MUST contain a single INVOKEKIND value, and MUST NOT contain bitwise combinations of multiple INVOKEKIND values.

The function invocation constants are defined in the INVOKEKIND enumeration.

 typedef [v1_enum] enum tagINVOKEKIND
 {
   INVOKE_FUNC = 0x1,
   INVOKE_PROPERTYGET = 0x2,
   INVOKE_PROPERTYPUT = 0x4,
   INVOKE_PROPERTYPUTREF = 0x8
 } INVOKEKIND;

INVOKE_FUNC:  MUST be set if the type member is a method declared without the [propget], [propput], or [propputref] attributes, or to specify that a client method request MUST NOT return a property.

INVOKE_PROPERTYGET:  MUST be set if the type member is a property declared with the [propget] attribute (as specified in section 2.2.49.5.1), or to specify that a client method request MUST NOT return anything but an ODL dispinterface property (as specified in section 2.2.49.5.3) or a property declared with the [propget] attribute.

INVOKE_PROPERTYPUT:  MUST be set if the type member is a property declared with the [propput] attribute (as specified in section 2.2.49.5.1), or to specify that a client method request MUST NOT return anything but a property declared with the [propput] attribute.

INVOKE_PROPERTYPUTREF:  MUST be set if the type member is a property declared with the [propputref] attribute (as specified in section 2.2.49.5.1), or to specify that a client method request MUST NOT return anything but a property declared with the [propputref] attribute.