ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

oaidl.idl
Go to the documentation of this file.
00001 /*
00002  * Copyright 2002 Ove Kaaven
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #ifndef DO_NO_IMPORTS
00020 import "objidl.idl";
00021 #endif
00022 
00023 interface IDispatch;
00024 interface ITypeInfo;
00025 interface ITypeLib;
00026 interface IRecordInfo;
00027 
00028 [
00029   version(1.0),
00030   pointer_default(unique)
00031 ]
00032 interface IOleAutomationTypes
00033 {
00034 
00035 typedef CY CURRENCY;
00036 
00037 /* Safe Array */
00038 
00039 typedef struct tagSAFEARRAYBOUND {
00040   ULONG cElements;
00041   LONG lLbound;
00042 } SAFEARRAYBOUND, *LPSAFEARRAYBOUND;
00043 
00044 typedef [unique] struct _wireVARIANT *wireVARIANT;
00045 typedef [unique] struct _wireBRECORD *wireBRECORD;
00046 
00047 typedef struct _wireSAFEARR_BSTR {
00048   ULONG Size;
00049   [size_is(Size), ref] wireBSTR *aBstr;
00050 } SAFEARR_BSTR;
00051 
00052 typedef struct _wireSAFEARR_UNKNOWN {
00053   ULONG Size;
00054   [size_is(Size), ref] IUnknown **apUnknown;
00055 } SAFEARR_UNKNOWN;
00056 
00057 typedef struct _wireSAFEARR_DISPATCH {
00058   ULONG Size;
00059   [size_is(Size), ref] IDispatch **apDispatch;
00060 } SAFEARR_DISPATCH;
00061 
00062 typedef struct _wireSAFEARR_VARIANT {
00063   ULONG Size;
00064   [size_is(Size), ref] wireVARIANT *aVariant;
00065 } SAFEARR_VARIANT;
00066 
00067 typedef struct _wireSAFEARR_BRECORD {
00068   ULONG Size;
00069   [size_is(Size), ref] wireBRECORD *aRecord;
00070 } SAFEARR_BRECORD;
00071 
00072 typedef struct _wireSAFEARR_HAVEIID {
00073   ULONG Size;
00074   [size_is(Size), ref] IUnknown **apUnknown;
00075   IID iid;
00076 } SAFEARR_HAVEIID;
00077 
00078 typedef [v1_enum] enum tagSF_TYPE {
00079   SF_ERROR    = VT_ERROR,
00080   SF_I1       = VT_I1,
00081   SF_I2       = VT_I2,
00082   SF_I4       = VT_I4,
00083   SF_I8       = VT_I8,
00084   SF_BSTR     = VT_BSTR,
00085   SF_UNKNOWN  = VT_UNKNOWN,
00086   SF_DISPATCH = VT_DISPATCH,
00087   SF_VARIANT  = VT_VARIANT,
00088   SF_RECORD   = VT_RECORD,
00089   SF_HAVEIID  = VT_UNKNOWN|VT_RESERVED,
00090 } SF_TYPE;
00091 
00092 typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
00093   case SF_BSTR:     SAFEARR_BSTR BstrStr;
00094   case SF_UNKNOWN:  SAFEARR_UNKNOWN UnknownStr;
00095   case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
00096   case SF_VARIANT:  SAFEARR_VARIANT VariantStr;
00097   case SF_RECORD:   SAFEARR_BRECORD RecordStr;
00098   case SF_HAVEIID:  SAFEARR_HAVEIID HaveIidStr;
00099   case SF_I1:       BYTE_SIZEDARR ByteStr;
00100   case SF_I2:       WORD_SIZEDARR WordStr;
00101   case SF_I4:       DWORD_SIZEDARR LongStr;
00102   case SF_I8:       HYPER_SIZEDARR HyperStr;
00103 } SAFEARRAYUNION;
00104 
00105 typedef [unique] struct _wireSAFEARRAY {
00106   USHORT cDims;
00107   USHORT fFeatures;
00108   ULONG cbElements;
00109   ULONG cLocks;
00110   SAFEARRAYUNION uArrayStructs;
00111   [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
00112 } *wireSAFEARRAY;
00113 
00114 typedef [unique] wireSAFEARRAY *wirePSAFEARRAY;
00115 
00116 typedef struct tagSAFEARRAY {
00117   USHORT cDims;
00118   USHORT fFeatures;
00119   ULONG cbElements;
00120   ULONG cLocks;
00121   PVOID pvData;
00122   SAFEARRAYBOUND rgsabound[];
00123 } SAFEARRAY;
00124 
00125 typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY;
00126 
00127 const USHORT FADF_AUTO        = 0x0001;
00128 const USHORT FADF_STATIC      = 0x0002;
00129 const USHORT FADF_EMBEDDED    = 0x0004;
00130 const USHORT FADF_FIXEDSIZE   = 0x0010;
00131 const USHORT FADF_RECORD      = 0x0020;
00132 const USHORT FADF_HAVEIID     = 0x0040;
00133 const USHORT FADF_HAVEVARTYPE = 0x0080;
00134 const USHORT FADF_BSTR        = 0x0100;
00135 const USHORT FADF_UNKNOWN     = 0x0200;
00136 const USHORT FADF_DISPATCH    = 0x0400;
00137 const USHORT FADF_VARIANT     = 0x0800;
00138 const USHORT FADF_RESERVED    = 0xF008;
00139 /* Undocumented flags */
00140 const USHORT FADF_DATADELETED  = 0x1000; /* Data in a vector has been deleted */
00141 const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */
00142 
00143 /* Variant */
00144 
00145 cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
00146 cpp_quote("#define __VARIANT_NAME_1 n1")
00147 cpp_quote("#define __VARIANT_NAME_2 n2")
00148 cpp_quote("#define __VARIANT_NAME_3 n3")
00149 cpp_quote("#define __VARIANT_NAME_4 brecVal")
00150 cpp_quote("#else")
00151 cpp_quote("#define __tagVARIANT")
00152 cpp_quote("#define __VARIANT_NAME_1")
00153 cpp_quote("#define __VARIANT_NAME_2")
00154 cpp_quote("#define __VARIANT_NAME_3")
00155 cpp_quote("#define __tagBRECORD")
00156 cpp_quote("#define __VARIANT_NAME_4")
00157 cpp_quote("#endif")
00158 
00159 typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
00160 
00161 struct tagVARIANT {
00162   union {
00163     struct __tagVARIANT {
00164       VARTYPE vt;
00165       WORD wReserved1;
00166       WORD wReserved2;
00167       WORD wReserved3;
00168       union {
00169         signed char cVal;
00170         USHORT uiVal;
00171         ULONG ulVal;
00172         INT intVal;
00173         UINT uintVal;
00174         BYTE bVal;
00175         SHORT iVal;
00176         LONG lVal;
00177         FLOAT fltVal;
00178         DOUBLE dblVal;
00179         VARIANT_BOOL boolVal;
00180 #if 0 /* illegal in C++ */
00181         _VARIANT_BOOL bool;
00182 #endif
00183         SCODE scode;
00184         DATE date;
00185         BSTR bstrVal;
00186         CY cyVal;
00187         IUnknown *punkVal;
00188         IDispatch *pdispVal;
00189         SAFEARRAY *parray;
00190         LONGLONG llVal;
00191         ULONGLONG ullVal;
00192         signed char *pcVal;
00193         USHORT *puiVal;
00194         ULONG *pulVal;
00195         INT *pintVal;
00196         UINT *puintVal;
00197         BYTE *pbVal;
00198         SHORT *piVal;
00199         LONG *plVal;
00200         FLOAT *pfltVal;
00201         DOUBLE *pdblVal;
00202         VARIANT_BOOL *pboolVal;
00203 #if 0
00204         _VARIANT_BOOL *pbool;
00205 #endif
00206         SCODE *pscode;
00207         DATE *pdate;
00208         BSTR *pbstrVal;
00209         VARIANT *pvarVal;
00210         PVOID byref;
00211         CY *pcyVal;
00212         DECIMAL *pdecVal;
00213         IUnknown **ppunkVal;
00214         IDispatch **ppdispVal;
00215         SAFEARRAY **pparray;
00216         LONGLONG *pllVal;
00217         ULONGLONG *pullVal;
00218         struct __tagBRECORD {
00219           PVOID pvRecord;
00220           IRecordInfo *pRecInfo;
00221         } __VARIANT_NAME_4;
00222       } __VARIANT_NAME_3;
00223     } __VARIANT_NAME_2;
00224 
00225     DECIMAL decVal;
00226   } __VARIANT_NAME_1;
00227 };
00228 
00229 typedef VARIANT *LPVARIANT;
00230 typedef VARIANT VARIANTARG;
00231 typedef VARIANTARG *LPVARIANTARG;
00232 
00233 struct _wireBRECORD {
00234   ULONG fFlags;
00235   ULONG clSize;
00236   IRecordInfo *pRecInfo;
00237   [size_is(clSize)] byte *pRecord;
00238 };
00239 
00240 struct _wireVARIANT {
00241   DWORD clSize;
00242   DWORD rpcReserved;
00243   USHORT vt;
00244   USHORT wReserved1;
00245   USHORT wReserved2;
00246   USHORT wReserved3;
00247   [switch_is(vt)] union {
00248   [case(VT_EMPTY, VT_NULL)]    ;
00249   [case(VT_I1)]                signed char cVal;
00250   [case(VT_UI2)]               USHORT uiVal;
00251   [case(VT_UI4)]               ULONG ulVal;
00252   [case(VT_INT)]               INT intVal;
00253   [case(VT_UINT)]              UINT uintVal;
00254   [case(VT_UI1)]               BYTE bVal;
00255   [case(VT_I2)]                SHORT iVal;
00256   [case(VT_I4)]                LONG lVal;
00257   [case(VT_R4)]                FLOAT fltVal;
00258   [case(VT_R8)]                DOUBLE dblVal;
00259   [case(VT_BOOL)]              VARIANT_BOOL boolVal;
00260   [case(VT_ERROR)]             SCODE scode;
00261   [case(VT_DATE)]              DATE date;
00262   [case(VT_BSTR)]              wireBSTR bstrVal;
00263   [case(VT_CY)]                CY cyVal;
00264   [case(VT_DECIMAL)]           DECIMAL decVal;
00265   [case(VT_UNKNOWN)]           IUnknown *punkVal;
00266   [case(VT_DISPATCH)]          IDispatch *pdispVal;
00267   [case(VT_ARRAY)]             wireSAFEARRAY parray;
00268   [case(VT_I1|VT_BYREF)]       signed char *pcVal;
00269   [case(VT_UI2|VT_BYREF)]      USHORT *puiVal;
00270   [case(VT_UI4|VT_BYREF)]      ULONG *pulVal;
00271   [case(VT_INT|VT_BYREF)]      INT *pintVal;
00272   [case(VT_UINT|VT_BYREF)]     UINT *puintVal;
00273   [case(VT_UI1|VT_BYREF)]      BYTE *pbVal;
00274   [case(VT_I2|VT_BYREF)]       SHORT *piVal;
00275   [case(VT_I4|VT_BYREF)]       LONG *plVal;
00276   [case(VT_R4|VT_BYREF)]       FLOAT *pfltVal;
00277   [case(VT_R8|VT_BYREF)]       DOUBLE *pdblVal;
00278   [case(VT_BOOL|VT_BYREF)]     VARIANT_BOOL *pboolVal;
00279   [case(VT_ERROR|VT_BYREF)]    SCODE *pscode;
00280   [case(VT_DATE|VT_BYREF)]     DATE *pdate;
00281   [case(VT_BSTR|VT_BYREF)]     wireBSTR *pbstrVal;
00282   [case(VT_VARIANT|VT_BYREF)]  wireVARIANT *pvarVal;
00283   [case(VT_CY|VT_BYREF)]       CY *pcyVal;
00284   [case(VT_DECIMAL|VT_BYREF)]  DECIMAL *pdecVal;
00285   [case(VT_UNKNOWN|VT_BYREF)]  IUnknown **ppunkVal;
00286   [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal;
00287   [case(VT_ARRAY|VT_BYREF)]    wireSAFEARRAY *pparray;
00288   [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal;
00289   } DUMMYUNIONNAME;
00290 };
00291 
00292 /* Dispatch */
00293 
00294 typedef LONG DISPID;
00295 typedef DWORD HREFTYPE;
00296 typedef DISPID MEMBERID;
00297 
00298 typedef [v1_enum] enum tagTYPEKIND {
00299   TKIND_ENUM = 0,
00300   TKIND_RECORD,
00301   TKIND_MODULE,
00302   TKIND_INTERFACE,
00303   TKIND_DISPATCH,
00304   TKIND_COCLASS,
00305   TKIND_ALIAS,
00306   TKIND_UNION,
00307   TKIND_MAX
00308 } TYPEKIND;
00309 
00310 typedef struct tagTYPEDESC {
00311   [switch_is(vt)] union {
00312   [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc;
00313   [case(VT_CARRAY)]            struct tagARRAYDESC *lpadesc;
00314   [case(VT_USERDEFINED)]       HREFTYPE hreftype;
00315   [default]                    ;
00316   } DUMMYUNIONNAME;
00317   VARTYPE vt;
00318 } TYPEDESC;
00319 
00320 typedef struct tagARRAYDESC {
00321   TYPEDESC tdescElem;
00322   USHORT cDims;
00323   [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
00324 } ARRAYDESC;
00325 
00326 typedef struct tagPARAMDESCEX {
00327   ULONG cBytes;
00328   VARIANTARG varDefaultValue;
00329 } PARAMDESCEX, *LPPARAMDESCEX;
00330 
00331 typedef struct tagPARAMDESC {
00332   LPPARAMDESCEX pparamdescex;
00333   USHORT wParamFlags;
00334 } PARAMDESC, *LPPARAMDESC;
00335 
00336 const USHORT PARAMFLAG_NONE         = 0x00;
00337 const USHORT PARAMFLAG_FIN          = 0x01;
00338 const USHORT PARAMFLAG_FOUT         = 0x02;
00339 const USHORT PARAMFLAG_FLCID        = 0x04;
00340 const USHORT PARAMFLAG_FRETVAL      = 0x08;
00341 const USHORT PARAMFLAG_FOPT         = 0x10;
00342 const USHORT PARAMFLAG_FHASDEFAULT  = 0x20;
00343 const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
00344 
00345 typedef struct tagIDLDESC {
00346   ULONG_PTR dwReserved;
00347   USHORT wIDLFlags;
00348 } IDLDESC, *LPIDLDESC;
00349 
00350 const USHORT IDLFLAG_NONE    = PARAMFLAG_NONE;
00351 const USHORT IDLFLAG_FIN     = PARAMFLAG_FIN;
00352 const USHORT IDLFLAG_FOUT    = PARAMFLAG_FOUT;
00353 const USHORT IDLFLAG_FLCID   = PARAMFLAG_FLCID;
00354 const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
00355 
00356 cpp_quote("#if 0") /* for IDL only */
00357 typedef struct tagELEMDESC {
00358   TYPEDESC tdesc;
00359   PARAMDESC paramdesc;
00360 } ELEMDESC;
00361 cpp_quote("#else") /* C/C++ defs */
00362 cpp_quote("typedef struct tagELEMDESC {")
00363 cpp_quote("  TYPEDESC tdesc;")
00364 cpp_quote("  union {")
00365 cpp_quote("    IDLDESC idldesc;")
00366 cpp_quote("    PARAMDESC paramdesc;")
00367 cpp_quote("  } DUMMYUNIONNAME;")
00368 cpp_quote("} ELEMDESC, *LPELEMDESC;")
00369 cpp_quote("#endif")
00370 
00371 typedef struct tagTYPEATTR {
00372   GUID guid;
00373   LCID lcid;
00374   DWORD dwReserved;
00375   MEMBERID memidConstructor;
00376   MEMBERID memidDestructor;
00377   LPOLESTR lpstrSchema;
00378   ULONG cbSizeInstance;
00379   TYPEKIND typekind;
00380   WORD cFuncs;
00381   WORD cVars;
00382   WORD cImplTypes;
00383   WORD cbSizeVft;
00384   WORD cbAlignment;
00385   WORD wTypeFlags;
00386   WORD wMajorVerNum;
00387   WORD wMinorVerNum;
00388   TYPEDESC tdescAlias;
00389   IDLDESC idldescType;
00390 } TYPEATTR, *LPTYPEATTR;
00391 
00392 typedef struct tagDISPPARAMS {
00393   [size_is(cArgs)] VARIANTARG *rgvarg;
00394   [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs;
00395   UINT cArgs;
00396   UINT cNamedArgs;
00397 } DISPPARAMS;
00398 
00399 cpp_quote("#if 0") /* for IDL only */
00400 typedef struct tagEXCEPINFO {
00401   WORD wCode;
00402   WORD wReserved;
00403   BSTR bstrSource;
00404   BSTR bstrDescription;
00405   BSTR bstrHelpFile;
00406   DWORD dwHelpContext;
00407   ULONG_PTR pvReserved;
00408   ULONG_PTR pfnDeferredFillIn;
00409   SCODE scode;
00410 } EXCEPINFO;
00411 cpp_quote("#else")
00412 cpp_quote("typedef struct tagEXCEPINFO {")
00413 cpp_quote("  WORD wCode;")
00414 cpp_quote("  WORD wReserved;")
00415 cpp_quote("  BSTR bstrSource;")
00416 cpp_quote("  BSTR bstrDescription;")
00417 cpp_quote("  BSTR bstrHelpFile;")
00418 cpp_quote("  DWORD dwHelpContext;")
00419 cpp_quote("  PVOID pvReserved;")
00420 cpp_quote("  HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
00421 cpp_quote("  SCODE scode;")
00422 cpp_quote("} EXCEPINFO, *LPEXCEPINFO;")
00423 cpp_quote("#endif")
00424 
00425 typedef [v1_enum] enum tagCALLCONV {
00426   CC_FASTCALL = 0,
00427   CC_CDECL = 1,
00428   CC_MSCPASCAL,
00429   CC_PASCAL = CC_MSCPASCAL,
00430   CC_MACPASCAL,
00431   CC_STDCALL,
00432   CC_FPFASTCALL,
00433   CC_SYSCALL,
00434   CC_MPWCDECL,
00435   CC_MPWPASCAL,
00436   CC_MAX
00437 } CALLCONV;
00438 
00439 typedef [v1_enum] enum tagFUNCKIND {
00440   FUNC_VIRTUAL,
00441   FUNC_PUREVIRTUAL,
00442   FUNC_NONVIRTUAL,
00443   FUNC_STATIC,
00444   FUNC_DISPATCH
00445 } FUNCKIND;
00446 
00447 typedef [v1_enum] enum tagINVOKEKIND {
00448   INVOKE_FUNC = 1,
00449   INVOKE_PROPERTYGET = 2,
00450   INVOKE_PROPERTYPUT = 4,
00451   INVOKE_PROPERTYPUTREF = 8
00452 } INVOKEKIND;
00453 
00454 typedef struct tagFUNCDESC {
00455   MEMBERID memid;
00456   [size_is(cScodes)] SCODE *lprgscode;
00457   [size_is(cParams)] ELEMDESC *lprgelemdescParam;
00458   FUNCKIND funckind;
00459   INVOKEKIND invkind;
00460   CALLCONV callconv;
00461   SHORT cParams;
00462   SHORT cParamsOpt;
00463   SHORT oVft;
00464   SHORT cScodes;
00465   ELEMDESC elemdescFunc;
00466   WORD wFuncFlags;
00467 } FUNCDESC, *LPFUNCDESC;
00468 
00469 typedef [v1_enum] enum tagVARKIND {
00470   VAR_PERINSTANCE,
00471   VAR_STATIC,
00472   VAR_CONST,
00473   VAR_DISPATCH
00474 } VARKIND;
00475 
00476 const USHORT IMPLTYPEFLAG_FDEFAULT       = 0x1;
00477 const USHORT IMPLTYPEFLAG_FSOURCE        = 0x2;
00478 const USHORT IMPLTYPEFLAG_FRESTRICTED    = 0x4;
00479 const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8;
00480 
00481 typedef struct tagVARDESC {
00482   MEMBERID memid;
00483   LPOLESTR lpstrSchema;
00484   [switch_is(varkind)] union {
00485   [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
00486   [case(VAR_CONST)] VARIANT *lpvarValue;
00487   } DUMMYUNIONNAME;
00488   ELEMDESC elemdescVar;
00489   WORD wVarFlags;
00490   VARKIND varkind;
00491 } VARDESC, *LPVARDESC;
00492 
00493 typedef enum tagTYPEFLAGS {
00494   TYPEFLAG_FAPPOBJECT     = 0x0001,
00495   TYPEFLAG_FCANCREATE     = 0x0002,
00496   TYPEFLAG_FLICENSED      = 0x0004,
00497   TYPEFLAG_FPREDECLID     = 0x0008,
00498   TYPEFLAG_FHIDDEN        = 0x0010,
00499   TYPEFLAG_FCONTROL       = 0x0020,
00500   TYPEFLAG_FDUAL          = 0x0040,
00501   TYPEFLAG_FNONEXTENSIBLE = 0x0080,
00502   TYPEFLAG_FOLEAUTOMATION = 0x0100,
00503   TYPEFLAG_FRESTRICTED    = 0x0200,
00504   TYPEFLAG_FAGGREGATABLE  = 0x0400,
00505   TYPEFLAG_FREPLACEABLE   = 0x0800,
00506   TYPEFLAG_FDISPATCHABLE  = 0x1000,
00507   TYPEFLAG_FREVERSEBIND   = 0x2000,
00508   TYPEFLAG_FPROXY         = 0x4000
00509 } TYPEFLAGS;
00510 
00511 typedef enum tagFUNCFLAGS {
00512   FUNCFLAG_FRESTRICTED       = 0x0001,
00513   FUNCFLAG_FSOURCE           = 0x0002,
00514   FUNCFLAG_FBINDABLE         = 0x0004,
00515   FUNCFLAG_FREQUESTEDIT      = 0x0008,
00516   FUNCFLAG_FDISPLAYBIND      = 0x0010,
00517   FUNCFLAG_FDEFAULTBIND      = 0x0020,
00518   FUNCFLAG_FHIDDEN           = 0x0040,
00519   FUNCFLAG_FUSESGETLASTERROR = 0x0080,
00520   FUNCFLAG_FDEFAULTCOLLELEM  = 0x0100,
00521   FUNCFLAG_FUIDEFAULT        = 0x0200,
00522   FUNCFLAG_FNONBROWSABLE     = 0x0400,
00523   FUNCFLAG_FREPLACEABLE      = 0x0800,
00524   FUNCFLAG_FIMMEDIATEBIND    = 0x1000
00525 } FUNCFLAGS;
00526 
00527 typedef enum tagVARFLAGS {
00528   VARFLAG_FREADONLY        = 0x0001,
00529   VARFLAG_FSOURCE          = 0x0002,
00530   VARFLAG_FBINDABLE        = 0x0004,
00531   VARFLAG_FREQUESTEDIT     = 0x0008,
00532   VARFLAG_FDISPLAYBIND     = 0x0010,
00533   VARFLAG_FDEFAULTBIND     = 0x0020,
00534   VARFLAG_FHIDDEN          = 0x0040,
00535   VARFLAG_FRESTRICTED      = 0x0080,
00536   VARFLAG_FDEFAULTCOLLELEM = 0x0100,
00537   VARFLAG_FUIDEFAULT       = 0x0200,
00538   VARFLAG_FNONBROWSABLE    = 0x0400,
00539   VARFLAG_FREPLACEABLE     = 0x0800,
00540   VARFLAG_FIMMEDIATEBIND   = 0x1000
00541 } VARFLAGS;
00542 
00543 typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
00544   IUnknown *pInterface;
00545   PVOID pStorage;
00546   DWORD flags;
00547 } CLEANLOCALSTORAGE;
00548 
00549 typedef struct tagCUSTDATAITEM {
00550   GUID guid;
00551   VARIANTARG varValue;
00552 } CUSTDATAITEM, *LPCUSTDATAITEM;
00553 
00554 typedef struct tagCUSTDATA {
00555   DWORD cCustData;
00556   [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
00557 } CUSTDATA, *LPCUSTDATA;
00558 
00559 } /* interface IOleAutomationTypes */
00560 
00561 /******************** INTERFACES ********************/
00562 
00563 [
00564   object,
00565   uuid(00020400-0000-0000-C000-000000000046),
00566   pointer_default(unique)
00567 ]
00568 interface IDispatch : IUnknown
00569 {
00570   typedef [unique] IDispatch *LPDISPATCH;
00571 
00572   const DISPID DISPID_UNKNOWN     = -1;
00573   const DISPID DISPID_VALUE       =  0;
00574   const DISPID DISPID_PROPERTYPUT = -3;
00575   const DISPID DISPID_NEWENUM     = -4;
00576   const DISPID DISPID_EVALUATE    = -5;
00577   const DISPID DISPID_CONSTRUCTOR = -6;
00578   const DISPID DISPID_DESTRUCTOR  = -7;
00579   const DISPID DISPID_COLLECT     = -8;
00580 
00581   HRESULT GetTypeInfoCount(
00582     [out] UINT *pctinfo);
00583 
00584   HRESULT GetTypeInfo(
00585     [in] UINT iTInfo,
00586     [in] LCID lcid,
00587     [out] ITypeInfo **ppTInfo);
00588 
00589   HRESULT GetIDsOfNames(
00590     [in] REFIID riid,
00591     [in, size_is(cNames)] LPOLESTR *rgszNames,
00592     [in] UINT cNames,
00593     [in] LCID lcid,
00594     [out, size_is(cNames)] DISPID *rgDispId);
00595 
00596   [local]
00597   HRESULT Invoke(
00598     [in] DISPID dispIdMember,
00599     [in] REFIID riid,
00600     [in] LCID lcid,
00601     [in] WORD wFlags,
00602     [in, out] DISPPARAMS *pDispParams,
00603     [out] VARIANT *pVarResult,
00604     [out] EXCEPINFO *pExcepInfo,
00605     [out] UINT *puArgErr);
00606 
00607   [call_as(Invoke)]
00608   HRESULT RemoteInvoke(
00609     [in] DISPID dispIdMember,
00610     [in] REFIID riid,
00611     [in] LCID lcid,
00612     [in] DWORD dwFlags,
00613     [in] DISPPARAMS *pDispParams,
00614     [out] VARIANT *pVarResult,
00615     [out] EXCEPINFO *pExcepInfo,
00616     [out] UINT *pArgErr,
00617     [in] UINT cVarRef,
00618     [in, size_is(cVarRef)] UINT *rgVarRefIdx,
00619     [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef);
00620 }
00621 
00622 [
00623   object,
00624   uuid(00020404-0000-0000-C000-000000000046),
00625   pointer_default(unique)
00626 ]
00627 interface IEnumVARIANT : IUnknown
00628 {
00629   typedef [unique] IEnumVARIANT *LPENUMVARIANT;
00630 
00631   [local]
00632   HRESULT Next(
00633     [in] ULONG celt,
00634     [out] VARIANT *rgVar,
00635     [out] ULONG *pCeltFetched);
00636 
00637   [call_as(Next)]
00638   HRESULT RemoteNext(
00639     [in] ULONG celt,
00640     [out, size_is(celt), length_is(*pCeltFetched)]
00641     VARIANT *rgVar,
00642     [out] ULONG *pCeltFetched);
00643 
00644   HRESULT Skip(
00645     [in] ULONG celt);
00646 
00647   HRESULT Reset();
00648 
00649   HRESULT Clone(
00650     [out] IEnumVARIANT **ppEnum);
00651 }
00652 
00653 [
00654   object,
00655   uuid(00020403-0000-0000-C000-000000000046),
00656   pointer_default(unique)
00657 ]
00658 interface ITypeComp : IUnknown
00659 {
00660   typedef [unique] ITypeComp *LPTYPECOMP;
00661 
00662   typedef [v1_enum] enum tagDESCKIND {
00663     DESCKIND_NONE = 0,
00664     DESCKIND_FUNCDESC,
00665     DESCKIND_VARDESC,
00666     DESCKIND_TYPECOMP,
00667     DESCKIND_IMPLICITAPPOBJ,
00668     DESCKIND_MAX
00669   } DESCKIND;
00670 
00671   typedef union tagBINDPTR {
00672     FUNCDESC *lpfuncdesc;
00673     VARDESC *lpvardesc;
00674     ITypeComp *lptcomp;
00675   } BINDPTR, *LPBINDPTR;
00676 
00677   [local]
00678   HRESULT Bind(
00679     [in] LPOLESTR szName,
00680     [in] ULONG lHashVal,
00681     [in] WORD wFlags,
00682     [out] ITypeInfo **ppTInfo,
00683     [out] DESCKIND *pDescKind,
00684     [out] BINDPTR *pBindPtr);
00685 
00686   [call_as(Bind)]
00687   HRESULT RemoteBind(
00688     [in] LPOLESTR szName,
00689     [in] ULONG lHashVal,
00690     [in] WORD wFlags,
00691     [out] ITypeInfo **ppTInfo,
00692     [out] DESCKIND *pDescKind,
00693     [out] LPFUNCDESC *ppFuncDesc,
00694     [out] LPVARDESC *ppVarDesc,
00695     [out] ITypeComp **ppTypeComp,
00696     [out] CLEANLOCALSTORAGE *pDummy);
00697 
00698   [local]
00699   HRESULT BindType(
00700     [in] LPOLESTR szName,
00701     [in] ULONG lHashVal,
00702     [out] ITypeInfo **ppTInfo,
00703     [out] ITypeComp **ppTComp);
00704 
00705   [call_as(BindType)]
00706   HRESULT RemoteBindType(
00707     [in] LPOLESTR szName,
00708     [in] ULONG lHashVal,
00709     [out] ITypeInfo **ppTInfo);
00710 }
00711 
00712 [
00713   object,
00714   uuid(00020401-0000-0000-C000-000000000046),
00715   pointer_default(unique)
00716 ]
00717 interface ITypeInfo : IUnknown
00718 {
00719   typedef [unique] ITypeInfo *LPTYPEINFO;
00720 
00721   [local]
00722   HRESULT GetTypeAttr(
00723     [out] TYPEATTR **ppTypeAttr);
00724 
00725   [call_as(GetTypeAttr)]
00726   HRESULT RemoteGetTypeAttr(
00727     [out] LPTYPEATTR *ppTypeAttr,
00728     [out] CLEANLOCALSTORAGE *pDummy);
00729 
00730   HRESULT GetTypeComp(
00731     [out] ITypeComp **ppTComp);
00732 
00733   [local]
00734   HRESULT GetFuncDesc(
00735     [in] UINT index,
00736     [out] FUNCDESC **ppFuncDesc);
00737 
00738   [call_as(GetFuncDesc)]
00739   HRESULT RemoteGetFuncDesc(
00740     [in] UINT index,
00741     [out] LPFUNCDESC *ppFuncDesc,
00742     [out] CLEANLOCALSTORAGE *pDummy);
00743 
00744   [local]
00745   HRESULT GetVarDesc(
00746     [in] UINT index,
00747     [out] VARDESC **ppVarDesc);
00748 
00749   [call_as(GetVarDesc)]
00750   HRESULT RemoteGetVarDesc(
00751     [in] UINT index,
00752     [out] LPVARDESC *ppVarDesc,
00753     [out] CLEANLOCALSTORAGE *pDummy);
00754 
00755   [local]
00756   HRESULT GetNames(
00757     [in] MEMBERID memid,
00758     [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
00759     [in] UINT cMaxNames,
00760     [out] UINT *pcNames);
00761 
00762   [call_as(GetNames)]
00763   HRESULT RemoteGetNames(
00764     [in] MEMBERID memid,
00765     [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames,
00766     [in] UINT cMaxNames,
00767     [out] UINT *pcNames);
00768 
00769   HRESULT GetRefTypeOfImplType(
00770     [in] UINT index,
00771     [out] HREFTYPE *pRefType);
00772 
00773   HRESULT GetImplTypeFlags(
00774     [in] UINT index,
00775     [out] INT *pImplTypeFlags);
00776 
00777   [local]
00778   HRESULT GetIDsOfNames(
00779     [in, size_is(cNames)] LPOLESTR *rgszNames,
00780     [in] UINT cNames,
00781     [out, size_is(cNames)] MEMBERID *pMemId);
00782 
00783   [call_as(GetIDsOfNames)]
00784   HRESULT LocalGetIDsOfNames();
00785 
00786   [local]
00787   HRESULT Invoke(
00788     [in] PVOID pvInstance,
00789     [in] MEMBERID memid,
00790     [in] WORD wFlags,
00791     [in, out] DISPPARAMS *pDispParams,
00792     [out] VARIANT *pVarResult,
00793     [out] EXCEPINFO *pExcepInfo,
00794     [out] UINT *puArgErr);
00795 
00796   [call_as(Invoke)]
00797   HRESULT LocalInvoke();
00798 
00799   [local]
00800   HRESULT GetDocumentation(
00801     [in] MEMBERID memid,
00802     [out] BSTR *pBstrName,
00803     [out] BSTR *pBstrDocString,
00804     [out] DWORD *pdwHelpContext,
00805     [out] BSTR *pBstrHelpFile);
00806 
00807   [call_as(GetDocumentation)]
00808   HRESULT RemoteGetDocumentation(
00809     [in] MEMBERID memid,
00810     [in] DWORD refPtrFlags,
00811     [out] BSTR *pBstrName,
00812     [out] BSTR *pBstrDocString,
00813     [out] DWORD *pdwHelpContext,
00814     [out] BSTR *pBstrHelpFile);
00815 
00816   [local]
00817   HRESULT GetDllEntry(
00818     [in] MEMBERID memid,
00819     [in] INVOKEKIND invKind,
00820     [out] BSTR *pBstrDllName,
00821     [out] BSTR *pBstrName,
00822     [out] WORD *pwOrdinal);
00823 
00824   [call_as(GetDllEntry)]
00825   HRESULT RemoteGetDllEntry(
00826     [in] MEMBERID memid,
00827     [in] INVOKEKIND invKind,
00828     [in] DWORD refPtrFlags,
00829     [out] BSTR *pBstrDllName,
00830     [out] BSTR *pBstrName,
00831     [out] WORD *pwOrdinal);
00832 
00833   HRESULT GetRefTypeInfo(
00834     [in] HREFTYPE hRefType,
00835     [out] ITypeInfo **ppTInfo);
00836 
00837   [local]
00838   HRESULT AddressOfMember(
00839     [in] MEMBERID memid,
00840     [in] INVOKEKIND invKind,
00841     [out] PVOID *ppv);
00842 
00843   [call_as(AddressOfMember)]
00844   HRESULT LocalAddressOfMember();
00845 
00846   [local]
00847   HRESULT CreateInstance(
00848     [in] IUnknown *pUnkOuter,
00849     [in] REFIID riid,
00850     [out, iid_is(riid)] PVOID *ppvObj);
00851 
00852   [call_as(CreateInstance)]
00853   HRESULT RemoteCreateInstance(
00854     [in] REFIID riid,
00855     [out, iid_is(riid)] IUnknown **ppvObj);
00856 
00857   HRESULT GetMops(
00858     [in] MEMBERID memid,
00859     [out] BSTR *pBstrMops);
00860 
00861   [local]
00862   HRESULT GetContainingTypeLib(
00863     [out] ITypeLib **ppTLib,
00864     [out] UINT *pIndex);
00865 
00866   [call_as(GetContainingTypeLib)]
00867   HRESULT RemoteGetContainingTypeLib(
00868     [out] ITypeLib **ppTLib,
00869     [out] UINT *pIndex);
00870 
00871   [local]
00872   void ReleaseTypeAttr(
00873     [in] TYPEATTR *pTypeAttr);
00874 
00875   [call_as(ReleaseTypeAttr)]
00876   HRESULT LocalReleaseTypeAttr();
00877 
00878   [local]
00879   void ReleaseFuncDesc(
00880     [in] FUNCDESC *pFuncDesc);
00881 
00882   [call_as(ReleaseFuncDesc)]
00883   HRESULT LocalReleaseFuncDesc();
00884 
00885   [local]
00886   void ReleaseVarDesc(
00887     [in] VARDESC *pVarDesc);
00888 
00889   [call_as(ReleaseVarDesc)]
00890   HRESULT LocalReleaseVarDesc();
00891 }
00892 
00893 [
00894   object,
00895   uuid(00020412-0000-0000-C000-000000000046),
00896   pointer_default(unique)
00897 ]
00898 interface ITypeInfo2 : ITypeInfo
00899 {
00900   typedef [unique] ITypeInfo2 *LPTYPEINFO2;
00901 
00902   HRESULT GetTypeKind(
00903     [out] TYPEKIND *pTypeKind);
00904 
00905   HRESULT GetTypeFlags(
00906     [out] ULONG *pTypeFlags);
00907 
00908   HRESULT GetFuncIndexOfMemId(
00909     [in] MEMBERID memid,
00910     [in] INVOKEKIND invKind,
00911     [out] UINT *pFuncIndex);
00912 
00913   HRESULT GetVarIndexOfMemId(
00914     [in] MEMBERID memid,
00915     [out] UINT *pVarIndex);
00916 
00917   HRESULT GetCustData(
00918     [in] REFGUID guid,
00919     [out] VARIANT *pVarVal);
00920 
00921   HRESULT GetFuncCustData(
00922     [in] UINT index,
00923     [in] REFGUID guid,
00924     [out] VARIANT *pVarVal);
00925 
00926   HRESULT GetParamCustData(
00927     [in] UINT indexFunc,
00928     [in] UINT indexParam,
00929     [in] REFGUID guid,
00930     [out] VARIANT *pVarVal);
00931 
00932   HRESULT GetVarCustData(
00933     [in] UINT index,
00934     [in] REFGUID guid,
00935     [out] VARIANT *pVarVal);
00936 
00937   HRESULT GetImplTypeCustData(
00938     [in] UINT index,
00939     [in] REFGUID guid,
00940     [out] VARIANT *pVarVal);
00941 
00942   [local]
00943   HRESULT GetDocumentation2(
00944     [in] MEMBERID memid,
00945     [in] LCID lcid,
00946     [out] BSTR *pbstrHelpString,
00947     [out] DWORD *pdwHelpStringContext,
00948     [out] BSTR *pbstrHelpStringDll);
00949 
00950   [call_as(GetDocumentation2)]
00951   HRESULT RemoteGetDocumentation2(
00952     [in] MEMBERID memid,
00953     [in] LCID lcid,
00954     [in] DWORD refPtrFlags,
00955     [out] BSTR *pbstrHelpString,
00956     [out] DWORD *pdwHelpStringContext,
00957     [out] BSTR *pbstrHelpStringDll);
00958 
00959   HRESULT GetAllCustData(
00960     [out] CUSTDATA *pCustData);
00961 
00962   HRESULT GetAllFuncCustData(
00963     [in] UINT index,
00964     [out] CUSTDATA *pCustData);
00965 
00966   HRESULT GetAllParamCustData(
00967     [in] UINT indexFunc,
00968     [in] UINT indexParam,
00969     [out] CUSTDATA *pCustData);
00970 
00971   HRESULT GetAllVarCustData(
00972     [in] UINT index,
00973     [out] CUSTDATA *pCustData);
00974 
00975   HRESULT GetAllImplTypeCustData(
00976     [in] UINT index,
00977     [out] CUSTDATA *pCustData);
00978 }
00979 
00980 [
00981   object,
00982   uuid(00020402-0000-0000-C000-000000000046),
00983   pointer_default(unique)
00984 ]
00985 interface ITypeLib : IUnknown
00986 {
00987   typedef [unique] ITypeLib *LPTYPELIB;
00988 
00989   typedef [v1_enum] enum tagSYSKIND {
00990     SYS_WIN16 = 0,
00991     SYS_WIN32,
00992     SYS_MAC,
00993     SYS_WIN64
00994   } SYSKIND;
00995 
00996   typedef [v1_enum] enum tagLIBFLAGS {
00997     LIBFLAG_FRESTRICTED   = 0x01,
00998     LIBFLAG_FCONTROL      = 0x02,
00999     LIBFLAG_FHIDDEN       = 0x04,
01000     LIBFLAG_FHASDISKIMAGE = 0x08
01001   } LIBFLAGS;
01002 
01003   typedef struct tagTLIBATTR {
01004     GUID guid;
01005     LCID lcid;
01006     SYSKIND syskind;
01007     WORD wMajorVerNum;
01008     WORD wMinorVerNum;
01009     WORD wLibFlags;
01010   } TLIBATTR, *LPTLIBATTR;
01011 
01012   [local]
01013   UINT GetTypeInfoCount();
01014 
01015   [call_as(GetTypeInfoCount)]
01016   HRESULT RemoteGetTypeInfoCount(
01017     [out] UINT *pcTInfo);
01018 
01019   HRESULT GetTypeInfo(
01020     [in] UINT index,
01021     [out] ITypeInfo **ppTInfo);
01022 
01023   HRESULT GetTypeInfoType(
01024     [in] UINT index,
01025     [out] TYPEKIND *pTKind);
01026 
01027   HRESULT GetTypeInfoOfGuid(
01028     [in] REFGUID guid,
01029     [out] ITypeInfo **ppTinfo);
01030 
01031   [local]
01032   HRESULT GetLibAttr(
01033     [out] TLIBATTR **ppTLibAttr);
01034 
01035   [call_as(GetLibAttr)]
01036   HRESULT RemoteGetLibAttr(
01037     [out] LPTLIBATTR *ppTLibAttr,
01038     [out] CLEANLOCALSTORAGE *pDummy);
01039 
01040   HRESULT GetTypeComp(
01041     [out] ITypeComp **ppTComp);
01042 
01043   [local]
01044   HRESULT GetDocumentation(
01045     [in] INT index,
01046     [out] BSTR *pBstrName,
01047     [out] BSTR *pBstrDocString,
01048     [out] DWORD *pdwHelpContext,
01049     [out] BSTR *pBstrHelpFile);
01050 
01051   [call_as(GetDocumentation)]
01052   HRESULT RemoteGetDocumentation(
01053     [in] INT index,
01054     [in] DWORD refPtrFlags,
01055     [out] BSTR *pBstrName,
01056     [out] BSTR *pBstrDocString,
01057     [out] DWORD *pdwHelpContext,
01058     [out] BSTR *pBstrHelpFile);
01059 
01060   [local]
01061   HRESULT IsName(
01062     [in, out] LPOLESTR szNameBuf,
01063     [in] ULONG lHashVal,
01064     [out] BOOL *pfName);
01065 
01066   [call_as(IsName)]
01067   HRESULT RemoteIsName(
01068     [in] LPOLESTR szNameBuf,
01069     [in] ULONG lHashVal,
01070     [out] BOOL *pfName,
01071     [out] BSTR *pBstrLibName);
01072 
01073   [local]
01074   HRESULT FindName(
01075     [in, out] LPOLESTR szNameBuf,
01076     [in] ULONG lHashVal,
01077     [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
01078     [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
01079     [in, out] USHORT *pcFound);
01080 
01081   [call_as(FindName)]
01082   HRESULT RemoteFindName(
01083     [in] LPOLESTR szNameBuf,
01084     [in] ULONG lHashVal,
01085     [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo,
01086     [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId,
01087     [in, out] USHORT *pcFound,
01088     [out] BSTR *pBstrLibName);
01089 
01090   [local]
01091   void ReleaseTLibAttr(
01092     [in] TLIBATTR *pTLibAttr);
01093 
01094   [call_as(ReleaseTLibAttr)]
01095   HRESULT LocalReleaseTLibAttr();
01096 }
01097 
01098 [
01099   object,
01100   uuid(00020411-0000-0000-C000-000000000046),
01101   pointer_default(unique)
01102 ]
01103 interface ITypeLib2 : ITypeLib
01104 {
01105   typedef [unique] ITypeLib2 *LPTYPELIB2;
01106 
01107   HRESULT GetCustData(
01108     [in] REFGUID guid,
01109     [out] VARIANT *pVarVal);
01110 
01111   [local]
01112   HRESULT GetLibStatistics(
01113     [out] ULONG *pcUniqueNames,
01114     [out] ULONG *pcchUniqueNames);
01115 
01116   [call_as(GetLibStatistics)]
01117   HRESULT RemoteGetLibStatistics(
01118     [out] ULONG *pcUniqueNames,
01119     [out] ULONG *pcchUniqueNames);
01120 
01121   [local]
01122   HRESULT GetDocumentation2(
01123     [in] INT index,
01124     [in] LCID lcid,
01125     [out] BSTR *pbstrHelpString,
01126     [out] DWORD *pdwHelpStringContext,
01127     [out] BSTR *pbstrHelpStringDll);
01128 
01129   [call_as(GetDocumentation2)]
01130   HRESULT RemoteGetDocumentation2(
01131     [in] INT index,
01132     [in] LCID lcid,
01133     [in] DWORD refPtrFlags,
01134     [out] BSTR *pbstrHelpString,
01135     [out] DWORD *pdwHelpStringContext,
01136     [out] BSTR *pbstrHelpStringDll);
01137 
01138   HRESULT GetAllCustData(
01139     [out] CUSTDATA *pCustData);
01140 }
01141 
01142 [
01143   local,
01144   object,
01145   uuid(00020410-0000-0000-C000-000000000046),
01146   pointer_default(unique)
01147 ]
01148 interface ITypeChangeEvents : IUnknown
01149 {
01150   typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS;
01151 
01152   typedef enum tagCHANGEKIND {
01153     CHANGEKIND_ADDMEMBER,
01154     CHANGEKIND_DELETEMEMBER,
01155     CHANGEKIND_SETNAMES,
01156     CHANGEKIND_SETDOCUMENTATION,
01157     CHANGEKIND_GENERAL,
01158     CHANGEKIND_INVALIDATE,
01159     CHANGEKIND_CHANGEFAILED,
01160     CHANGEKIND_MAX
01161   } CHANGEKIND;
01162 
01163   HRESULT RequestTypeChange(
01164     [in] CHANGEKIND changeKind,
01165     [in] ITypeInfo *pTInfoBefore,
01166     [in] LPOLESTR pStrName,
01167     [out] INT *pfCancel);
01168   
01169   HRESULT AfterTypeChange(
01170     [in] CHANGEKIND changeKind,
01171     [in] ITypeInfo *pTInfoAfter,
01172     [in] LPOLESTR pStrName);
01173 }
01174 
01175 [
01176   object,
01177   uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
01178   pointer_default(unique)
01179 ]
01180 interface IErrorInfo : IUnknown
01181 {
01182   typedef [unique] IErrorInfo *LPERRORINFO;
01183 
01184   HRESULT GetGUID(
01185     [out] GUID *pGUID);
01186 
01187   HRESULT GetSource(
01188     [out] BSTR *pBstrSource);
01189 
01190   HRESULT GetDescription(
01191     [out] BSTR *pBstrDescription);
01192 
01193   HRESULT GetHelpFile(
01194     [out] BSTR *pBstrHelpFile);
01195 
01196   HRESULT GetHelpContext(
01197     [out] DWORD *pdwHelpContext);
01198 }
01199 
01200 [
01201   object,
01202   uuid(22F03340-547D-101B-8E65-08002B2BD119),
01203   pointer_default(unique)
01204 ]
01205 interface ICreateErrorInfo : IUnknown
01206 {
01207   typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO;
01208 
01209   HRESULT SetGUID(
01210     [in] REFGUID rguid);
01211 
01212   HRESULT SetSource(
01213     [in] LPOLESTR szSource);
01214 
01215   HRESULT SetDescription(
01216     [in] LPOLESTR szDescription);
01217 
01218   HRESULT SetHelpFile(
01219     [in] LPOLESTR szHelpFile);
01220 
01221   HRESULT SetHelpContext(
01222     [in] DWORD dwHelpContext);
01223 }
01224 
01225 [
01226   object,
01227   uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
01228   pointer_default(unique)
01229 ]
01230 interface ISupportErrorInfo : IUnknown
01231 {
01232   typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO;
01233 
01234   HRESULT InterfaceSupportsErrorInfo(
01235     [in] REFIID riid);
01236 }
01237 
01238 [
01239   object,
01240   uuid(0000002E-0000-0000-C000-000000000046)
01241 ]
01242 interface ITypeFactory : IUnknown
01243 {
01244   HRESULT CreateFromTypeInfo(
01245     [in] ITypeInfo *pTypeInfo,
01246     [in] REFIID riid,
01247     [out, iid_is(riid)] IUnknown **ppv);
01248 }
01249 
01250 [
01251   local,
01252   object,
01253   uuid(0000002D-0000-0000-C000-000000000046)
01254 ]
01255 interface ITypeMarshal : IUnknown
01256 {
01257   HRESULT Size(
01258     [in] PVOID pvType,
01259     [in] DWORD dwDestContext,
01260     [in] PVOID pvDestContext,
01261     [out] ULONG *pSize);
01262 
01263   HRESULT Marshal(
01264     [in] PVOID pvType,
01265     [in] DWORD dwDestContext,
01266     [in] PVOID pvDestContext,
01267     [in] ULONG cbBufferLength,
01268     [out] BYTE *pBuffer,
01269     [out] ULONG *pcbWritten);
01270 
01271   HRESULT Unmarshal(
01272     [out] PVOID pvType,
01273     [in] DWORD dwFlags,
01274     [in] ULONG cbBufferLength,
01275     [in] BYTE *pBuffer,
01276     [out] ULONG *pcbRead);
01277 
01278   HRESULT Free(
01279     [in] PVOID pvType);
01280 }
01281 
01282 [
01283   local,
01284   object,
01285   uuid(0000002F-0000-0000-C000-000000000046)
01286 ]
01287 interface IRecordInfo : IUnknown
01288 {
01289   typedef [unique] IRecordInfo *LPRECORDINFO;
01290 
01291   HRESULT RecordInit(
01292     [out] PVOID pvNew);
01293 
01294   HRESULT RecordClear(
01295     [in] PVOID pvExisting);
01296 
01297   HRESULT RecordCopy(
01298     [in] PVOID pvExisting,
01299     [out] PVOID pvNew);
01300 
01301   HRESULT GetGuid(
01302     [out] GUID *pguid);
01303 
01304   HRESULT GetName(
01305     [out] BSTR *pbstrName);
01306 
01307   HRESULT GetSize(
01308     [out] ULONG *pcbSize);
01309 
01310   HRESULT GetTypeInfo(
01311     [out] ITypeInfo **ppTypeInfo);
01312 
01313   HRESULT GetField(
01314     [in] PVOID pvData,
01315     [in] LPCOLESTR szFieldName,
01316     [out] VARIANT *pvarField);
01317 
01318   HRESULT GetFieldNoCopy(
01319     [in] PVOID pvData,
01320     [in] LPCOLESTR szFieldName,
01321     [out] VARIANT *pvarField,
01322     [out] PVOID *ppvDataCArray);
01323 
01324   HRESULT PutField(
01325     [in] ULONG wFlags,
01326     [in, out] PVOID pvData,
01327     [in] LPCOLESTR szFieldName,
01328     [in] VARIANT *pvarField);
01329 
01330   HRESULT PutFieldNoCopy(
01331     [in] ULONG wFlags,
01332     [in, out] PVOID pvData,
01333     [in] LPCOLESTR szFieldName,
01334     [in] VARIANT *pvarField);
01335 
01336   HRESULT GetFieldNames(
01337     [in, out] ULONG *pcNames,
01338     [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames);
01339 
01340   BOOL IsMatchingType(
01341     [in] IRecordInfo *pRecordInfo);
01342 
01343   PVOID RecordCreate();
01344 
01345   HRESULT RecordCreateCopy(
01346     [in] PVOID pvSource,
01347     [out] PVOID *ppvDest);
01348 
01349   HRESULT RecordDestroy(
01350     [in] PVOID pvRecord);
01351 }
01352 
01353 [
01354   local,
01355   object,
01356   uuid(00020405-0000-0000-C000-000000000046),
01357   pointer_default(unique)
01358 ]
01359 interface ICreateTypeInfo : IUnknown
01360 {
01361   typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO;
01362 
01363   HRESULT SetGuid(
01364     [in] REFGUID guid);
01365 
01366   HRESULT SetTypeFlags(
01367     [in] UINT uTypeFlags);
01368 
01369   HRESULT SetDocString(
01370     [in] LPOLESTR pStrDoc);
01371 
01372   HRESULT SetHelpContext(
01373     [in] DWORD dwHelpContext);
01374 
01375   HRESULT SetVersion(
01376     [in] WORD wMajorVerNum,
01377     [in] WORD wMinorVerNum);
01378 
01379   HRESULT AddRefTypeInfo(
01380     [in] ITypeInfo *pTInfo,
01381     [in] HREFTYPE *phRefType);
01382 
01383   HRESULT AddFuncDesc(
01384     [in] UINT index,
01385     [in] FUNCDESC *pFuncDesc);
01386 
01387   HRESULT AddImplType(
01388     [in] UINT index,
01389     [in] HREFTYPE hRefType);
01390 
01391   HRESULT SetImplTypeFlags(
01392     [in] UINT index,
01393     [in] INT implTypeFlags);
01394 
01395   HRESULT SetAlignment(
01396     [in] WORD cbAlignment);
01397 
01398   HRESULT SetSchema(
01399     [in] LPOLESTR pStrSchema);
01400 
01401   HRESULT AddVarDesc(
01402     [in] UINT index,
01403     [in] VARDESC *pVarDesc);
01404 
01405   HRESULT SetFuncAndParamNames(
01406     [in] UINT index,
01407     [in, size_is(cNames)] LPOLESTR *rgszNames,
01408     [in] UINT cNames);
01409 
01410   HRESULT SetVarName(
01411     [in] UINT index,
01412     [in] LPOLESTR szName);
01413 
01414   HRESULT SetTypeDescAlias(
01415     [in] TYPEDESC *pTDescAlias);
01416 
01417   HRESULT DefineFuncAsDllEntry(
01418     [in] UINT index,
01419     [in] LPOLESTR szDllName,
01420     [in] LPOLESTR szProcName);
01421 
01422   HRESULT SetFuncDocString(
01423     [in] UINT index,
01424     [in] LPOLESTR szDocString);
01425 
01426   HRESULT SetVarDocString(
01427     [in] UINT index,
01428     [in] LPOLESTR szDocString);
01429 
01430   HRESULT SetFuncHelpContext(
01431     [in] UINT index,
01432     [in] DWORD dwHelpContext);
01433 
01434   HRESULT SetVarHelpContext(
01435     [in] UINT index,
01436     [in] DWORD dwHelpContext);
01437 
01438   HRESULT SetMops(
01439     [in] UINT index,
01440     [in] BSTR bstrMops);
01441 
01442   HRESULT SetTypeIdldesc(
01443     [in] IDLDESC * pIdlDesc);
01444 
01445   HRESULT LayOut();
01446 }
01447 
01448 [
01449   local,
01450   object,
01451   uuid(0002040E-0000-0000-C000-000000000046),
01452   pointer_default(unique)
01453 ]
01454 interface ICreateTypeInfo2 : ICreateTypeInfo
01455 {
01456   typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2;
01457 
01458   HRESULT DeleteFuncDesc(
01459     [in] UINT index);
01460 
01461   HRESULT DeleteFuncDescByMemId(
01462     [in] MEMBERID memid,
01463     [in] INVOKEKIND invKind);
01464 
01465   HRESULT DeleteVarDesc(
01466     [in] UINT index);
01467 
01468   HRESULT DeleteVarDescByMemId(
01469     [in] MEMBERID memid);
01470 
01471   HRESULT DeleteImplType(
01472     [in] UINT index);
01473 
01474   HRESULT SetCustData(
01475     [in] REFGUID guid,
01476     [in] VARIANT *pVarVal);
01477 
01478   HRESULT SetFuncCustData( 
01479     [in] UINT index, 
01480     [in] REFGUID guid, 
01481     [in] VARIANT *pVarVal);
01482   
01483   HRESULT SetParamCustData( 
01484     [in] UINT indexFunc, 
01485     [in] UINT indexParam, 
01486     [in] REFGUID guid, 
01487     [in] VARIANT *pVarVal);
01488 
01489   HRESULT SetVarCustData( 
01490     [in] UINT index, 
01491     [in] REFGUID guid, 
01492     [in] VARIANT *pVarVal);
01493 
01494   HRESULT SetImplTypeCustData( 
01495     [in] UINT index, 
01496     [in] REFGUID guid, 
01497     [in] VARIANT *pVarVal);
01498 
01499   HRESULT SetHelpStringContext(
01500     [in] ULONG dwHelpStringContext);
01501 
01502   HRESULT SetFuncHelpStringContext(
01503     [in] UINT index,
01504     [in] ULONG dwHelpStringContext);
01505 
01506   HRESULT SetVarHelpStringContext(
01507     [in] UINT index,
01508     [in] ULONG dwHelpStringContext);
01509 
01510   HRESULT Invalidate();
01511 
01512   HRESULT SetName(
01513     [in] LPOLESTR szName);
01514 }
01515 
01516 [
01517   local,
01518   object,
01519   uuid(00020406-0000-0000-C000-000000000046),
01520   pointer_default(unique)
01521 ]
01522 interface ICreateTypeLib : IUnknown
01523 {
01524   typedef [unique] ICreateTypeLib *LPCREATETYPELIB;
01525 
01526   HRESULT CreateTypeInfo(
01527     [in] LPOLESTR szName,
01528     [in] TYPEKIND tkind,
01529     [out] ICreateTypeInfo **ppCTInfo);
01530 
01531   HRESULT SetName(
01532     [in] LPOLESTR szName);
01533 
01534   HRESULT SetVersion(
01535     [in] WORD wMajorVerNum,
01536     [in] WORD wMinorVerNum);
01537 
01538   HRESULT SetGuid(
01539     [in] REFGUID guid);
01540 
01541   HRESULT SetDocString(
01542     [in] LPOLESTR szDoc);
01543 
01544   HRESULT SetHelpFileName(
01545     [in] LPOLESTR szHelpFileName);
01546 
01547   HRESULT SetHelpContext(
01548     [in] DWORD dwHelpContext);
01549 
01550   HRESULT SetLcid(
01551     [in] LCID lcid);
01552 
01553   HRESULT SetLibFlags(
01554     [in] UINT uLibFlags);
01555 
01556   HRESULT SaveAllChanges();
01557 }
01558 
01559 [
01560   local,
01561   object,
01562   uuid(0002040F-0000-0000-C000-000000000046),
01563   pointer_default(unique)
01564 ]
01565 interface ICreateTypeLib2 : ICreateTypeLib
01566 {
01567   typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2;
01568 
01569   HRESULT DeleteTypeInfo(
01570     [in] LPOLESTR szName);
01571 
01572   HRESULT SetCustData(
01573     [in] REFGUID guid,
01574     [in] VARIANT *pVarVal);
01575 
01576   HRESULT SetHelpStringContext(
01577     [in] ULONG dwHelpStringContext);
01578 
01579   HRESULT SetHelpStringDll(
01580     [in] LPOLESTR szFileName);
01581 }
01582 
01583 
01584 /*****************************************************************************
01585  * IErrorLog interface
01586  */
01587 [
01588   object,
01589   uuid(3127ca40-446e-11ce-8135-00aa004bb851),
01590   pointer_default(unique)
01591 ]
01592 interface IErrorLog : IUnknown
01593 {
01594   typedef IErrorLog *LPERRORLOG;
01595 
01596   HRESULT AddError(
01597     [in] LPCOLESTR pszPropName,
01598     [in] EXCEPINFO *pExcepInfo);
01599 }
01600 
01601 
01602 /*****************************************************************************
01603  * IPropertyBag interface
01604  */
01605 [
01606   object,
01607   uuid(55272a00-42cb-11ce-8135-00aa004bb851),
01608   pointer_default(unique)
01609 ]
01610 interface IPropertyBag : IUnknown
01611 {
01612   typedef IPropertyBag *LPPROPERTYBAG;
01613 
01614   [local]
01615   HRESULT Read(
01616     [in] LPCOLESTR pszPropName,
01617     [in, out] VARIANT *pVar,
01618     [in] IErrorLog *pErrorLog);
01619 
01620   [call_as(Read)]
01621   HRESULT RemoteRead(
01622     [in] LPCOLESTR pszPropName,
01623     [out] VARIANT *pVar,
01624     [in] IErrorLog *pErrorLog,
01625     [in] DWORD varType,
01626     [in] IUnknown *pUnkObj);
01627 
01628   HRESULT Write(
01629     [in] LPCOLESTR pszPropName,
01630     [in] VARIANT *pVar);
01631 }

Generated on Sat May 26 2012 04:30:54 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.