This structure is used to define a function description.

typedef struct tagFUNCDESC {
/* [size_is(cScodes)] */ SCODE RPC_FAR *lprgscode;
/* [size_is(cParams)] */ ELEMDESC __RPC_FAR *lprgelemdescParam;
FUNCKIND funckind;
CALLCONV callconv;
short cParams;
short cParamsOpt;
short oVft;
short cScodes;
ELEMDESC elemdescFunc;
WORD wFuncFlags;


  • memid
    Function member identifier.

  • lprgscode


    Specifies whether the function is virtual, static, or dispatch-only.

  • invkind
    Invocation kind. Indicates if this is a property function, and if so, what kind.

  • callconv
    Specifies the function's calling convention.

  • cParams
    Count of total number of parameters, both required and optional.

  • cParamsOpt
    Count of optional parameters.

  • oVft
    For FUNC_VIRTUAL, specifies the offset in the VTBL.

  • cScodes
    Count of permitted return values.

  • elemdescFunc
    Contains the return type of the function.

  • wFuncFlags
    Definition of flags follows.


The cParamsOpt member specifies the form of optional parameters accepted by the function, as follows:

  • A value of 0 specifies that no optional arguments are supported.
  • A value of –1 specifies that the methods last parameter is a pointer to a safe array of variants. Any number of variant arguments greater than cParams –1 must be packaged by the caller into a safe array and passed as the final parameter. This array of optional parameters must be freed by the caller after control is returned from the call.
  • Any other number indicates that the last n parameters of the function are variants and do not need to be specified by the caller explicitly. The parameters left unspecified should be filled in by the compiler or interpreter as variants of type VT_ERROR with the value DISP_E_PARAMNOTFOUND.

For 16-bit systems (Macintosh), the members cScodes and lprgscode store the count and the set of errors that a function can return. If cScodes = –1, then the set of errors is unknown. If cScodes = –1, or if cScodes = 0, then lprgscodeis undefined.


Runs on Versions Defined in Include Link to
Windows CE OS 2.0 and later Oaidl.h    

Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

 Last updated on Tuesday, July 13, 2004

© 1992-2000 Microsoft Corporation. All rights reserved.