<div class="content" name="INVOKEKIND" uuid="a0d3598d-a3ee-4401-87fd-17a7031b0b9a"><p>The INVOKEKIND enumeration values are used in the <b>invkind</b>
field of a <a href="d3349d25-e11d-4095-ba86-de3fda178c4e" data-linktype="relative-path">FUNCDESC (section 2.2.42)</a>
to specify the way that a method is invoked using <a href="5c2a1997-60d7-496d-8d9a-ed940bbb82eb" data-linktype="relative-path">IDispatch::Invoke (section 3.1.4.4)</a>.
They are also used in the <a href="9b417eae-849f-4608-89f0-60e3ea04d8a6" data-linktype="relative-path">ITypeInfo2::GetFuncIndexOfMemId</a>,
<a href="d82eb39d-b218-4484-a158-7b582ab65e5c" data-linktype="relative-path">ITypeInfo::GetDllEntry</a>
and <a href="476f00da-0806-40d9-bbf3-6059154abbb7" data-linktype="relative-path">ITypeComp::Bind</a>
methods to distinguish between properties and <a href="5583e1b8-454c-4147-9f56-f72416a15bee#gt_f930baab-25f1-4142-bced-5effc9f62d45" data-linktype="relative-path">property</a> accessor methods
that have the same <a href="ace8758f-ee2b-4cb6-8645-973994d12530" data-linktype="relative-path">MEMBERID (section 2.2.35)</a>
but are invoked differently.</p><p>Fields and parameters that contain function invocation
constants MUST contain a single INVOKEKIND value, and MUST NOT contain bitwise
combinations of multiple INVOKEKIND values.</p><p>The function invocation constants are defined in the
INVOKEKIND enumeration.</p><dl>
<dd>
<div><pre> typedef [v1_enum] enum tagINVOKEKIND
 {
   INVOKE_FUNC = 0x1,
   INVOKE_PROPERTYGET = 0x2,
   INVOKE_PROPERTYPUT = 0x4,
   INVOKE_PROPERTYPUTREF = 0x8
 } INVOKEKIND;
</pre></div>
</dd></dl><p><b>INVOKE_FUNC:  </b>MUST be set if the type member
is a method declared without the <b>[propget]</b>, <b>[propput]</b>, or <b>[propputref]</b>
attributes, or to specify that a <a href="5583e1b8-454c-4147-9f56-f72416a15bee#gt_60e0e1fa-66fe-41e1-b5e3-ceab97e53506" data-linktype="relative-path">client</a> method request MUST
NOT return a property.</p><p><b>INVOKE_PROPERTYGET:  </b>MUST be set if the type
member is a property declared with the <b>[propget]</b> attribute (as specified
in section <a href="232d5f12-4b88-43e3-a633-60fc157b1a5f" data-linktype="relative-path">2.2.49.5.1</a>),
or to specify that a client method request MUST NOT return anything but an <a href="5583e1b8-454c-4147-9f56-f72416a15bee#gt_544446d5-79ab-4b08-85c4-214f1b64fdf2" data-linktype="relative-path">ODL dispinterface</a> property
(as specified in section <a href="e23aaa6d-3ad4-4886-b652-0203a1a50c58" data-linktype="relative-path">2.2.49.5.3</a>)
or a property declared with the <b>[propget]</b> attribute.</p><p><b>INVOKE_PROPERTYPUT:  </b>MUST be set if the type
member is a property declared with the <b>[propput]</b> 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 <b>[propput]</b> attribute.</p><p><b>INVOKE_PROPERTYPUTREF:  </b>MUST be set if the
type member is a property declared with the <b>[propputref]</b> 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 <b>[propputref]</b>
attribute.</p></div>