FUNCDESC

Describes a function, and is defined as follows:

typedef struct tagFUNCDESC {
    MEMBERID memid;                        // Function member ID.
/* [size_is] */ SCODE __RPC_FAR *lprgscode;
/* [size_is] */ ELEMDESC __RPC_FAR *lprgelemdescParam;    FUNCKIND funckind;                    // Specifies whether the                                                 // function is virtual, static,                                         // or dispatch-only.
    INVOKEKIND invkind;        // Invocation kind. Indicates if this is a                             // property function, and if so, what kind.
    CALLCONV callconv;        // Specifies the function's calling 
                            // convention.
    short cParams;            // Count of total number of parameters.
    short cParamsOpt;        // Count of optional parameters (detailed 
                            // description follows).
    short oVft;                // For FUNC_VIRTUAL, specifies the offset in                             // the VTBL.
    short cScodes;    // Count of permitted return values. 
    ELEMDESC elemdescFunc;    // Contains the return type of the function.
    WORD wFuncFlags;     // Definition of flags follows.
}    FUNCDESC;
 

The cParams field specifies the total number of required and optional parameters.

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

For 16-bit systems (Macintosh), the fields 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.