1/* 2 * Copyright 2002 Ove Kaaven 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef DO_NO_IMPORTS 20import "objidl.idl"; 21#endif 22 23interface IDispatch; 24interface ITypeInfo; 25interface ITypeLib; 26interface IRecordInfo; 27 28[ 29 version(1.0), 30 pointer_default(unique) 31] 32interface IOleAutomationTypes 33{ 34 35typedef CY CURRENCY; 36 37/* Safe Array */ 38 39typedef struct tagSAFEARRAYBOUND { 40 ULONG cElements; 41 LONG lLbound; 42} SAFEARRAYBOUND, *LPSAFEARRAYBOUND; 43 44typedef [unique] struct _wireVARIANT *wireVARIANT; 45typedef [unique] struct _wireBRECORD *wireBRECORD; 46 47typedef struct _wireSAFEARR_BSTR { 48 ULONG Size; 49 [size_is(Size), ref] wireBSTR *aBstr; 50} SAFEARR_BSTR; 51 52typedef struct _wireSAFEARR_UNKNOWN { 53 ULONG Size; 54 [size_is(Size), ref] IUnknown **apUnknown; 55} SAFEARR_UNKNOWN; 56 57typedef struct _wireSAFEARR_DISPATCH { 58 ULONG Size; 59 [size_is(Size), ref] IDispatch **apDispatch; 60} SAFEARR_DISPATCH; 61 62typedef struct _wireSAFEARR_VARIANT { 63 ULONG Size; 64 [size_is(Size), ref] wireVARIANT *aVariant; 65} SAFEARR_VARIANT; 66 67typedef struct _wireSAFEARR_BRECORD { 68 ULONG Size; 69 [size_is(Size), ref] wireBRECORD *aRecord; 70} SAFEARR_BRECORD; 71 72typedef struct _wireSAFEARR_HAVEIID { 73 ULONG Size; 74 [size_is(Size), ref] IUnknown **apUnknown; 75 IID iid; 76} SAFEARR_HAVEIID; 77 78typedef [v1_enum] enum tagSF_TYPE { 79 SF_ERROR = VT_ERROR, 80 SF_I1 = VT_I1, 81 SF_I2 = VT_I2, 82 SF_I4 = VT_I4, 83 SF_I8 = VT_I8, 84 SF_BSTR = VT_BSTR, 85 SF_UNKNOWN = VT_UNKNOWN, 86 SF_DISPATCH = VT_DISPATCH, 87 SF_VARIANT = VT_VARIANT, 88 SF_RECORD = VT_RECORD, 89 SF_HAVEIID = VT_UNKNOWN|VT_RESERVED, 90} SF_TYPE; 91 92typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u { 93 case SF_BSTR: SAFEARR_BSTR BstrStr; 94 case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr; 95 case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr; 96 case SF_VARIANT: SAFEARR_VARIANT VariantStr; 97 case SF_RECORD: SAFEARR_BRECORD RecordStr; 98 case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr; 99 case SF_I1: BYTE_SIZEDARR ByteStr; 100 case SF_I2: WORD_SIZEDARR WordStr; 101 case SF_I4: DWORD_SIZEDARR LongStr; 102 case SF_I8: HYPER_SIZEDARR HyperStr; 103} SAFEARRAYUNION; 104 105typedef [unique] struct _wireSAFEARRAY { 106 USHORT cDims; 107 USHORT fFeatures; 108 ULONG cbElements; 109 ULONG cLocks; 110 SAFEARRAYUNION uArrayStructs; 111 [size_is(cDims)] SAFEARRAYBOUND rgsabound[]; 112} *wireSAFEARRAY; 113 114typedef [unique] wireSAFEARRAY *wirePSAFEARRAY; 115 116typedef struct tagSAFEARRAY { 117 USHORT cDims; 118 USHORT fFeatures; 119 ULONG cbElements; 120 ULONG cLocks; 121 PVOID pvData; 122 SAFEARRAYBOUND rgsabound[]; 123} SAFEARRAY; 124 125typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY; 126 127const USHORT FADF_AUTO = 0x0001; 128const USHORT FADF_STATIC = 0x0002; 129const USHORT FADF_EMBEDDED = 0x0004; 130const USHORT FADF_FIXEDSIZE = 0x0010; 131const USHORT FADF_RECORD = 0x0020; 132const USHORT FADF_HAVEIID = 0x0040; 133const USHORT FADF_HAVEVARTYPE = 0x0080; 134const USHORT FADF_BSTR = 0x0100; 135const USHORT FADF_UNKNOWN = 0x0200; 136const USHORT FADF_DISPATCH = 0x0400; 137const USHORT FADF_VARIANT = 0x0800; 138const USHORT FADF_RESERVED = 0xF008; 139/* Undocumented flags */ 140const USHORT FADF_DATADELETED = 0x1000; /* Data in a vector has been deleted */ 141const USHORT FADF_CREATEVECTOR = 0x2000; /* This array is a vector */ 142 143/* Variant */ 144 145cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)") 146cpp_quote("#define __VARIANT_NAME_1 n1") 147cpp_quote("#define __VARIANT_NAME_2 n2") 148cpp_quote("#define __VARIANT_NAME_3 n3") 149cpp_quote("#define __VARIANT_NAME_4 brecVal") 150cpp_quote("#else") 151cpp_quote("#define __tagVARIANT") 152cpp_quote("#define __VARIANT_NAME_1") 153cpp_quote("#define __VARIANT_NAME_2") 154cpp_quote("#define __VARIANT_NAME_3") 155cpp_quote("#define __tagBRECORD") 156cpp_quote("#define __VARIANT_NAME_4") 157cpp_quote("#endif") 158 159typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT; 160 161struct tagVARIANT { 162 union { 163 struct __tagVARIANT { 164 VARTYPE vt; 165 WORD wReserved1; 166 WORD wReserved2; 167 WORD wReserved3; 168 union { 169 signed char cVal; 170 USHORT uiVal; 171 ULONG ulVal; 172 INT intVal; 173 UINT uintVal; 174 BYTE bVal; 175 SHORT iVal; 176 LONG lVal; 177 FLOAT fltVal; 178 DOUBLE dblVal; 179 VARIANT_BOOL boolVal; 180#if 0 /* illegal in C++ */ 181 _VARIANT_BOOL bool; 182#endif 183 SCODE scode; 184 DATE date; 185 BSTR bstrVal; 186 CY cyVal; 187 IUnknown *punkVal; 188 IDispatch *pdispVal; 189 SAFEARRAY *parray; 190 LONGLONG llVal; 191 ULONGLONG ullVal; 192 signed char *pcVal; 193 USHORT *puiVal; 194 ULONG *pulVal; 195 INT *pintVal; 196 UINT *puintVal; 197 BYTE *pbVal; 198 SHORT *piVal; 199 LONG *plVal; 200 FLOAT *pfltVal; 201 DOUBLE *pdblVal; 202 VARIANT_BOOL *pboolVal; 203#if 0 204 _VARIANT_BOOL *pbool; 205#endif 206 SCODE *pscode; 207 DATE *pdate; 208 BSTR *pbstrVal; 209 VARIANT *pvarVal; 210 PVOID byref; 211 CY *pcyVal; 212 DECIMAL *pdecVal; 213 IUnknown **ppunkVal; 214 IDispatch **ppdispVal; 215 SAFEARRAY **pparray; 216 LONGLONG *pllVal; 217 ULONGLONG *pullVal; 218 struct __tagBRECORD { 219 PVOID pvRecord; 220 IRecordInfo *pRecInfo; 221 } __VARIANT_NAME_4; 222 } __VARIANT_NAME_3; 223 } __VARIANT_NAME_2; 224 225 DECIMAL decVal; 226 } __VARIANT_NAME_1; 227}; 228 229typedef VARIANT *LPVARIANT; 230typedef VARIANT VARIANTARG; 231typedef VARIANTARG *LPVARIANTARG; 232 233struct _wireBRECORD { 234 ULONG fFlags; 235 ULONG clSize; 236 IRecordInfo *pRecInfo; 237 [size_is(clSize)] byte *pRecord; 238}; 239 240struct _wireVARIANT { 241 DWORD clSize; 242 DWORD rpcReserved; 243 USHORT vt; 244 USHORT wReserved1; 245 USHORT wReserved2; 246 USHORT wReserved3; 247 [switch_is(vt)] union { 248 [case(VT_EMPTY, VT_NULL)] ; 249 [case(VT_I1)] signed char cVal; 250 [case(VT_UI2)] USHORT uiVal; 251 [case(VT_UI4)] ULONG ulVal; 252 [case(VT_INT)] INT intVal; 253 [case(VT_UINT)] UINT uintVal; 254 [case(VT_UI1)] BYTE bVal; 255 [case(VT_I2)] SHORT iVal; 256 [case(VT_I4)] LONG lVal; 257 [case(VT_R4)] FLOAT fltVal; 258 [case(VT_R8)] DOUBLE dblVal; 259 [case(VT_BOOL)] VARIANT_BOOL boolVal; 260 [case(VT_ERROR)] SCODE scode; 261 [case(VT_DATE)] DATE date; 262 [case(VT_BSTR)] wireBSTR bstrVal; 263 [case(VT_CY)] CY cyVal; 264 [case(VT_DECIMAL)] DECIMAL decVal; 265 [case(VT_UNKNOWN)] IUnknown *punkVal; 266 [case(VT_DISPATCH)] IDispatch *pdispVal; 267 [case(VT_ARRAY)] wireSAFEARRAY parray; 268 [case(VT_I1|VT_BYREF)] signed char *pcVal; 269 [case(VT_UI2|VT_BYREF)] USHORT *puiVal; 270 [case(VT_UI4|VT_BYREF)] ULONG *pulVal; 271 [case(VT_INT|VT_BYREF)] INT *pintVal; 272 [case(VT_UINT|VT_BYREF)] UINT *puintVal; 273 [case(VT_UI1|VT_BYREF)] BYTE *pbVal; 274 [case(VT_I2|VT_BYREF)] SHORT *piVal; 275 [case(VT_I4|VT_BYREF)] LONG *plVal; 276 [case(VT_R4|VT_BYREF)] FLOAT *pfltVal; 277 [case(VT_R8|VT_BYREF)] DOUBLE *pdblVal; 278 [case(VT_BOOL|VT_BYREF)] VARIANT_BOOL *pboolVal; 279 [case(VT_ERROR|VT_BYREF)] SCODE *pscode; 280 [case(VT_DATE|VT_BYREF)] DATE *pdate; 281 [case(VT_BSTR|VT_BYREF)] wireBSTR *pbstrVal; 282 [case(VT_VARIANT|VT_BYREF)] wireVARIANT *pvarVal; 283 [case(VT_CY|VT_BYREF)] CY *pcyVal; 284 [case(VT_DECIMAL|VT_BYREF)] DECIMAL *pdecVal; 285 [case(VT_UNKNOWN|VT_BYREF)] IUnknown **ppunkVal; 286 [case(VT_DISPATCH|VT_BYREF)] IDispatch **ppdispVal; 287 [case(VT_ARRAY|VT_BYREF)] wireSAFEARRAY *pparray; 288 [case(VT_RECORD, VT_RECORD|VT_BYREF)] wireBRECORD brecVal; 289 } DUMMYUNIONNAME; 290}; 291 292/* Dispatch */ 293 294typedef LONG DISPID; 295typedef DWORD HREFTYPE; 296typedef DISPID MEMBERID; 297 298typedef [v1_enum] enum tagTYPEKIND { 299 TKIND_ENUM = 0, 300 TKIND_RECORD, 301 TKIND_MODULE, 302 TKIND_INTERFACE, 303 TKIND_DISPATCH, 304 TKIND_COCLASS, 305 TKIND_ALIAS, 306 TKIND_UNION, 307 TKIND_MAX 308} TYPEKIND; 309 310typedef struct tagTYPEDESC { 311 [switch_is(vt)] union { 312 [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc; 313 [case(VT_CARRAY)] struct tagARRAYDESC *lpadesc; 314 [case(VT_USERDEFINED)] HREFTYPE hreftype; 315 [default] ; 316 } DUMMYUNIONNAME; 317 VARTYPE vt; 318} TYPEDESC; 319 320typedef struct tagARRAYDESC { 321 TYPEDESC tdescElem; 322 USHORT cDims; 323 [size_is(cDims)] SAFEARRAYBOUND rgbounds[]; 324} ARRAYDESC; 325 326typedef struct tagPARAMDESCEX { 327 ULONG cBytes; 328 VARIANTARG varDefaultValue; 329} PARAMDESCEX, *LPPARAMDESCEX; 330 331typedef struct tagPARAMDESC { 332 LPPARAMDESCEX pparamdescex; 333 USHORT wParamFlags; 334} PARAMDESC, *LPPARAMDESC; 335 336const USHORT PARAMFLAG_NONE = 0x00; 337const USHORT PARAMFLAG_FIN = 0x01; 338const USHORT PARAMFLAG_FOUT = 0x02; 339const USHORT PARAMFLAG_FLCID = 0x04; 340const USHORT PARAMFLAG_FRETVAL = 0x08; 341const USHORT PARAMFLAG_FOPT = 0x10; 342const USHORT PARAMFLAG_FHASDEFAULT = 0x20; 343const USHORT PARAMFLAG_FHASCUSTDATA = 0x40; 344 345typedef struct tagIDLDESC { 346 ULONG_PTR dwReserved; 347 USHORT wIDLFlags; 348} IDLDESC, *LPIDLDESC; 349 350const USHORT IDLFLAG_NONE = PARAMFLAG_NONE; 351const USHORT IDLFLAG_FIN = PARAMFLAG_FIN; 352const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT; 353const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID; 354const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; 355 356cpp_quote("#if 0") /* for IDL only */ 357typedef struct tagELEMDESC { 358 TYPEDESC tdesc; 359 PARAMDESC paramdesc; 360} ELEMDESC; 361cpp_quote("#else") /* C/C++ defs */ 362cpp_quote("typedef struct tagELEMDESC {") 363cpp_quote(" TYPEDESC tdesc;") 364cpp_quote(" union {") 365cpp_quote(" IDLDESC idldesc;") 366cpp_quote(" PARAMDESC paramdesc;") 367cpp_quote(" } DUMMYUNIONNAME;") 368cpp_quote("} ELEMDESC, *LPELEMDESC;") 369cpp_quote("#endif") 370 371typedef struct tagTYPEATTR { 372 GUID guid; 373 LCID lcid; 374 DWORD dwReserved; 375 MEMBERID memidConstructor; 376 MEMBERID memidDestructor; 377 LPOLESTR lpstrSchema; 378 ULONG cbSizeInstance; 379 TYPEKIND typekind; 380 WORD cFuncs; 381 WORD cVars; 382 WORD cImplTypes; 383 WORD cbSizeVft; 384 WORD cbAlignment; 385 WORD wTypeFlags; 386 WORD wMajorVerNum; 387 WORD wMinorVerNum; 388 TYPEDESC tdescAlias; 389 IDLDESC idldescType; 390} TYPEATTR, *LPTYPEATTR; 391 392typedef struct tagDISPPARAMS { 393 [size_is(cArgs)] VARIANTARG *rgvarg; 394 [size_is(cNamedArgs)] DISPID *rgdispidNamedArgs; 395 UINT cArgs; 396 UINT cNamedArgs; 397} DISPPARAMS; 398 399cpp_quote("#if 0") /* for IDL only */ 400typedef struct tagEXCEPINFO { 401 WORD wCode; 402 WORD wReserved; 403 BSTR bstrSource; 404 BSTR bstrDescription; 405 BSTR bstrHelpFile; 406 DWORD dwHelpContext; 407 ULONG_PTR pvReserved; 408 ULONG_PTR pfnDeferredFillIn; 409 SCODE scode; 410} EXCEPINFO; 411cpp_quote("#else") 412cpp_quote("typedef struct tagEXCEPINFO {") 413cpp_quote(" WORD wCode;") 414cpp_quote(" WORD wReserved;") 415cpp_quote(" BSTR bstrSource;") 416cpp_quote(" BSTR bstrDescription;") 417cpp_quote(" BSTR bstrHelpFile;") 418cpp_quote(" DWORD dwHelpContext;") 419cpp_quote(" PVOID pvReserved;") 420cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);") 421cpp_quote(" SCODE scode;") 422cpp_quote("} EXCEPINFO, *LPEXCEPINFO;") 423cpp_quote("#endif") 424 425typedef [v1_enum] enum tagCALLCONV { 426 CC_FASTCALL = 0, 427 CC_CDECL = 1, 428 CC_MSCPASCAL, 429 CC_PASCAL = CC_MSCPASCAL, 430 CC_MACPASCAL, 431 CC_STDCALL, 432 CC_FPFASTCALL, 433 CC_SYSCALL, 434 CC_MPWCDECL, 435 CC_MPWPASCAL, 436 CC_MAX 437} CALLCONV; 438 439typedef [v1_enum] enum tagFUNCKIND { 440 FUNC_VIRTUAL, 441 FUNC_PUREVIRTUAL, 442 FUNC_NONVIRTUAL, 443 FUNC_STATIC, 444 FUNC_DISPATCH 445} FUNCKIND; 446 447typedef [v1_enum] enum tagINVOKEKIND { 448 INVOKE_FUNC = 1, 449 INVOKE_PROPERTYGET = 2, 450 INVOKE_PROPERTYPUT = 4, 451 INVOKE_PROPERTYPUTREF = 8 452} INVOKEKIND; 453 454typedef struct tagFUNCDESC { 455 MEMBERID memid; 456 [size_is(cScodes)] SCODE *lprgscode; 457 [size_is(cParams)] ELEMDESC *lprgelemdescParam; 458 FUNCKIND funckind; 459 INVOKEKIND invkind; 460 CALLCONV callconv; 461 SHORT cParams; 462 SHORT cParamsOpt; 463 SHORT oVft; 464 SHORT cScodes; 465 ELEMDESC elemdescFunc; 466 WORD wFuncFlags; 467} FUNCDESC, *LPFUNCDESC; 468 469typedef [v1_enum] enum tagVARKIND { 470 VAR_PERINSTANCE, 471 VAR_STATIC, 472 VAR_CONST, 473 VAR_DISPATCH 474} VARKIND; 475 476const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1; 477const USHORT IMPLTYPEFLAG_FSOURCE = 0x2; 478const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4; 479const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE = 0x8; 480 481typedef struct tagVARDESC { 482 MEMBERID memid; 483 LPOLESTR lpstrSchema; 484 [switch_is(varkind)] union { 485 [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst; 486 [case(VAR_CONST)] VARIANT *lpvarValue; 487 } DUMMYUNIONNAME; 488 ELEMDESC elemdescVar; 489 WORD wVarFlags; 490 VARKIND varkind; 491} VARDESC, *LPVARDESC; 492 493typedef enum tagTYPEFLAGS { 494 TYPEFLAG_FAPPOBJECT = 0x0001, 495 TYPEFLAG_FCANCREATE = 0x0002, 496 TYPEFLAG_FLICENSED = 0x0004, 497 TYPEFLAG_FPREDECLID = 0x0008, 498 TYPEFLAG_FHIDDEN = 0x0010, 499 TYPEFLAG_FCONTROL = 0x0020, 500 TYPEFLAG_FDUAL = 0x0040, 501 TYPEFLAG_FNONEXTENSIBLE = 0x0080, 502 TYPEFLAG_FOLEAUTOMATION = 0x0100, 503 TYPEFLAG_FRESTRICTED = 0x0200, 504 TYPEFLAG_FAGGREGATABLE = 0x0400, 505 TYPEFLAG_FREPLACEABLE = 0x0800, 506 TYPEFLAG_FDISPATCHABLE = 0x1000, 507 TYPEFLAG_FREVERSEBIND = 0x2000, 508 TYPEFLAG_FPROXY = 0x4000 509} TYPEFLAGS; 510 511typedef enum tagFUNCFLAGS { 512 FUNCFLAG_FRESTRICTED = 0x0001, 513 FUNCFLAG_FSOURCE = 0x0002, 514 FUNCFLAG_FBINDABLE = 0x0004, 515 FUNCFLAG_FREQUESTEDIT = 0x0008, 516 FUNCFLAG_FDISPLAYBIND = 0x0010, 517 FUNCFLAG_FDEFAULTBIND = 0x0020, 518 FUNCFLAG_FHIDDEN = 0x0040, 519 FUNCFLAG_FUSESGETLASTERROR = 0x0080, 520 FUNCFLAG_FDEFAULTCOLLELEM = 0x0100, 521 FUNCFLAG_FUIDEFAULT = 0x0200, 522 FUNCFLAG_FNONBROWSABLE = 0x0400, 523 FUNCFLAG_FREPLACEABLE = 0x0800, 524 FUNCFLAG_FIMMEDIATEBIND = 0x1000 525} FUNCFLAGS; 526 527typedef enum tagVARFLAGS { 528 VARFLAG_FREADONLY = 0x0001, 529 VARFLAG_FSOURCE = 0x0002, 530 VARFLAG_FBINDABLE = 0x0004, 531 VARFLAG_FREQUESTEDIT = 0x0008, 532 VARFLAG_FDISPLAYBIND = 0x0010, 533 VARFLAG_FDEFAULTBIND = 0x0020, 534 VARFLAG_FHIDDEN = 0x0040, 535 VARFLAG_FRESTRICTED = 0x0080, 536 VARFLAG_FDEFAULTCOLLELEM = 0x0100, 537 VARFLAG_FUIDEFAULT = 0x0200, 538 VARFLAG_FNONBROWSABLE = 0x0400, 539 VARFLAG_FREPLACEABLE = 0x0800, 540 VARFLAG_FIMMEDIATEBIND = 0x1000 541} VARFLAGS; 542 543typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE { 544 IUnknown *pInterface; 545 PVOID pStorage; 546 DWORD flags; 547} CLEANLOCALSTORAGE; 548 549typedef struct tagCUSTDATAITEM { 550 GUID guid; 551 VARIANTARG varValue; 552} CUSTDATAITEM, *LPCUSTDATAITEM; 553 554typedef struct tagCUSTDATA { 555 DWORD cCustData; 556 [size_is(cCustData)] LPCUSTDATAITEM prgCustData; 557} CUSTDATA, *LPCUSTDATA; 558 559} /* interface IOleAutomationTypes */ 560 561/******************** INTERFACES ********************/ 562 563[ 564 object, 565 uuid(00020400-0000-0000-C000-000000000046), 566 pointer_default(unique) 567] 568interface IDispatch : IUnknown 569{ 570 typedef [unique] IDispatch *LPDISPATCH; 571 572 const DISPID DISPID_UNKNOWN = -1; 573 const DISPID DISPID_VALUE = 0; 574 const DISPID DISPID_PROPERTYPUT = -3; 575 const DISPID DISPID_NEWENUM = -4; 576 const DISPID DISPID_EVALUATE = -5; 577 const DISPID DISPID_CONSTRUCTOR = -6; 578 const DISPID DISPID_DESTRUCTOR = -7; 579 const DISPID DISPID_COLLECT = -8; 580 581 HRESULT GetTypeInfoCount( 582 [out] UINT *pctinfo); 583 584 HRESULT GetTypeInfo( 585 [in] UINT iTInfo, 586 [in] LCID lcid, 587 [out] ITypeInfo **ppTInfo); 588 589 HRESULT GetIDsOfNames( 590 [in] REFIID riid, 591 [in, size_is(cNames)] LPOLESTR *rgszNames, 592 [in] UINT cNames, 593 [in] LCID lcid, 594 [out, size_is(cNames)] DISPID *rgDispId); 595 596 [local] 597 HRESULT Invoke( 598 [in] DISPID dispIdMember, 599 [in] REFIID riid, 600 [in] LCID lcid, 601 [in] WORD wFlags, 602 [in, out] DISPPARAMS *pDispParams, 603 [out] VARIANT *pVarResult, 604 [out] EXCEPINFO *pExcepInfo, 605 [out] UINT *puArgErr); 606 607 [call_as(Invoke)] 608 HRESULT RemoteInvoke( 609 [in] DISPID dispIdMember, 610 [in] REFIID riid, 611 [in] LCID lcid, 612 [in] DWORD dwFlags, 613 [in] DISPPARAMS *pDispParams, 614 [out] VARIANT *pVarResult, 615 [out] EXCEPINFO *pExcepInfo, 616 [out] UINT *pArgErr, 617 [in] UINT cVarRef, 618 [in, size_is(cVarRef)] UINT *rgVarRefIdx, 619 [in, out, size_is(cVarRef)] VARIANTARG *rgVarRef); 620} 621 622[ 623 object, 624 uuid(00020404-0000-0000-C000-000000000046), 625 pointer_default(unique) 626] 627interface IEnumVARIANT : IUnknown 628{ 629 typedef [unique] IEnumVARIANT *LPENUMVARIANT; 630 631 [local] 632 HRESULT Next( 633 [in] ULONG celt, 634 [out] VARIANT *rgVar, 635 [out] ULONG *pCeltFetched); 636 637 [call_as(Next)] 638 HRESULT RemoteNext( 639 [in] ULONG celt, 640 [out, size_is(celt), length_is(*pCeltFetched)] 641 VARIANT *rgVar, 642 [out] ULONG *pCeltFetched); 643 644 HRESULT Skip( 645 [in] ULONG celt); 646 647 HRESULT Reset(); 648 649 HRESULT Clone( 650 [out] IEnumVARIANT **ppEnum); 651} 652 653[ 654 object, 655 uuid(00020403-0000-0000-C000-000000000046), 656 pointer_default(unique) 657] 658interface ITypeComp : IUnknown 659{ 660 typedef [unique] ITypeComp *LPTYPECOMP; 661 662 typedef [v1_enum] enum tagDESCKIND { 663 DESCKIND_NONE = 0, 664 DESCKIND_FUNCDESC, 665 DESCKIND_VARDESC, 666 DESCKIND_TYPECOMP, 667 DESCKIND_IMPLICITAPPOBJ, 668 DESCKIND_MAX 669 } DESCKIND; 670 671 typedef union tagBINDPTR { 672 FUNCDESC *lpfuncdesc; 673 VARDESC *lpvardesc; 674 ITypeComp *lptcomp; 675 } BINDPTR, *LPBINDPTR; 676 677 [local] 678 HRESULT Bind( 679 [in] LPOLESTR szName, 680 [in] ULONG lHashVal, 681 [in] WORD wFlags, 682 [out] ITypeInfo **ppTInfo, 683 [out] DESCKIND *pDescKind, 684 [out] BINDPTR *pBindPtr); 685 686 [call_as(Bind)] 687 HRESULT RemoteBind( 688 [in] LPOLESTR szName, 689 [in] ULONG lHashVal, 690 [in] WORD wFlags, 691 [out] ITypeInfo **ppTInfo, 692 [out] DESCKIND *pDescKind, 693 [out] LPFUNCDESC *ppFuncDesc, 694 [out] LPVARDESC *ppVarDesc, 695 [out] ITypeComp **ppTypeComp, 696 [out] CLEANLOCALSTORAGE *pDummy); 697 698 [local] 699 HRESULT BindType( 700 [in] LPOLESTR szName, 701 [in] ULONG lHashVal, 702 [out] ITypeInfo **ppTInfo, 703 [out] ITypeComp **ppTComp); 704 705 [call_as(BindType)] 706 HRESULT RemoteBindType( 707 [in] LPOLESTR szName, 708 [in] ULONG lHashVal, 709 [out] ITypeInfo **ppTInfo); 710} 711 712[ 713 object, 714 uuid(00020401-0000-0000-C000-000000000046), 715 pointer_default(unique) 716] 717interface ITypeInfo : IUnknown 718{ 719 typedef [unique] ITypeInfo *LPTYPEINFO; 720 721 [local] 722 HRESULT GetTypeAttr( 723 [out] TYPEATTR **ppTypeAttr); 724 725 [call_as(GetTypeAttr)] 726 HRESULT RemoteGetTypeAttr( 727 [out] LPTYPEATTR *ppTypeAttr, 728 [out] CLEANLOCALSTORAGE *pDummy); 729 730 HRESULT GetTypeComp( 731 [out] ITypeComp **ppTComp); 732 733 [local] 734 HRESULT GetFuncDesc( 735 [in] UINT index, 736 [out] FUNCDESC **ppFuncDesc); 737 738 [call_as(GetFuncDesc)] 739 HRESULT RemoteGetFuncDesc( 740 [in] UINT index, 741 [out] LPFUNCDESC *ppFuncDesc, 742 [out] CLEANLOCALSTORAGE *pDummy); 743 744 [local] 745 HRESULT GetVarDesc( 746 [in] UINT index, 747 [out] VARDESC **ppVarDesc); 748 749 [call_as(GetVarDesc)] 750 HRESULT RemoteGetVarDesc( 751 [in] UINT index, 752 [out] LPVARDESC *ppVarDesc, 753 [out] CLEANLOCALSTORAGE *pDummy); 754 755 [local] 756 HRESULT GetNames( 757 [in] MEMBERID memid, 758 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames, 759 [in] UINT cMaxNames, 760 [out] UINT *pcNames); 761 762 [call_as(GetNames)] 763 HRESULT RemoteGetNames( 764 [in] MEMBERID memid, 765 [out, size_is(cMaxNames), length_is(*pcNames)] BSTR *rgBstrNames, 766 [in] UINT cMaxNames, 767 [out] UINT *pcNames); 768 769 HRESULT GetRefTypeOfImplType( 770 [in] UINT index, 771 [out] HREFTYPE *pRefType); 772 773 HRESULT GetImplTypeFlags( 774 [in] UINT index, 775 [out] INT *pImplTypeFlags); 776 777 [local] 778 HRESULT GetIDsOfNames( 779 [in, size_is(cNames)] LPOLESTR *rgszNames, 780 [in] UINT cNames, 781 [out, size_is(cNames)] MEMBERID *pMemId); 782 783 [call_as(GetIDsOfNames)] 784 HRESULT LocalGetIDsOfNames(); 785 786 [local] 787 HRESULT Invoke( 788 [in] PVOID pvInstance, 789 [in] MEMBERID memid, 790 [in] WORD wFlags, 791 [in, out] DISPPARAMS *pDispParams, 792 [out] VARIANT *pVarResult, 793 [out] EXCEPINFO *pExcepInfo, 794 [out] UINT *puArgErr); 795 796 [call_as(Invoke)] 797 HRESULT LocalInvoke(); 798 799 [local] 800 HRESULT GetDocumentation( 801 [in] MEMBERID memid, 802 [out] BSTR *pBstrName, 803 [out] BSTR *pBstrDocString, 804 [out] DWORD *pdwHelpContext, 805 [out] BSTR *pBstrHelpFile); 806 807 [call_as(GetDocumentation)] 808 HRESULT RemoteGetDocumentation( 809 [in] MEMBERID memid, 810 [in] DWORD refPtrFlags, 811 [out] BSTR *pBstrName, 812 [out] BSTR *pBstrDocString, 813 [out] DWORD *pdwHelpContext, 814 [out] BSTR *pBstrHelpFile); 815 816 [local] 817 HRESULT GetDllEntry( 818 [in] MEMBERID memid, 819 [in] INVOKEKIND invKind, 820 [out] BSTR *pBstrDllName, 821 [out] BSTR *pBstrName, 822 [out] WORD *pwOrdinal); 823 824 [call_as(GetDllEntry)] 825 HRESULT RemoteGetDllEntry( 826 [in] MEMBERID memid, 827 [in] INVOKEKIND invKind, 828 [in] DWORD refPtrFlags, 829 [out] BSTR *pBstrDllName, 830 [out] BSTR *pBstrName, 831 [out] WORD *pwOrdinal); 832 833 HRESULT GetRefTypeInfo( 834 [in] HREFTYPE hRefType, 835 [out] ITypeInfo **ppTInfo); 836 837 [local] 838 HRESULT AddressOfMember( 839 [in] MEMBERID memid, 840 [in] INVOKEKIND invKind, 841 [out] PVOID *ppv); 842 843 [call_as(AddressOfMember)] 844 HRESULT LocalAddressOfMember(); 845 846 [local] 847 HRESULT CreateInstance( 848 [in] IUnknown *pUnkOuter, 849 [in] REFIID riid, 850 [out, iid_is(riid)] PVOID *ppvObj); 851 852 [call_as(CreateInstance)] 853 HRESULT RemoteCreateInstance( 854 [in] REFIID riid, 855 [out, iid_is(riid)] IUnknown **ppvObj); 856 857 HRESULT GetMops( 858 [in] MEMBERID memid, 859 [out] BSTR *pBstrMops); 860 861 [local] 862 HRESULT GetContainingTypeLib( 863 [out] ITypeLib **ppTLib, 864 [out] UINT *pIndex); 865 866 [call_as(GetContainingTypeLib)] 867 HRESULT RemoteGetContainingTypeLib( 868 [out] ITypeLib **ppTLib, 869 [out] UINT *pIndex); 870 871 [local] 872 void ReleaseTypeAttr( 873 [in] TYPEATTR *pTypeAttr); 874 875 [call_as(ReleaseTypeAttr)] 876 HRESULT LocalReleaseTypeAttr(); 877 878 [local] 879 void ReleaseFuncDesc( 880 [in] FUNCDESC *pFuncDesc); 881 882 [call_as(ReleaseFuncDesc)] 883 HRESULT LocalReleaseFuncDesc(); 884 885 [local] 886 void ReleaseVarDesc( 887 [in] VARDESC *pVarDesc); 888 889 [call_as(ReleaseVarDesc)] 890 HRESULT LocalReleaseVarDesc(); 891} 892 893[ 894 object, 895 uuid(00020412-0000-0000-C000-000000000046), 896 pointer_default(unique) 897] 898interface ITypeInfo2 : ITypeInfo 899{ 900 typedef [unique] ITypeInfo2 *LPTYPEINFO2; 901 902 HRESULT GetTypeKind( 903 [out] TYPEKIND *pTypeKind); 904 905 HRESULT GetTypeFlags( 906 [out] ULONG *pTypeFlags); 907 908 HRESULT GetFuncIndexOfMemId( 909 [in] MEMBERID memid, 910 [in] INVOKEKIND invKind, 911 [out] UINT *pFuncIndex); 912 913 HRESULT GetVarIndexOfMemId( 914 [in] MEMBERID memid, 915 [out] UINT *pVarIndex); 916 917 HRESULT GetCustData( 918 [in] REFGUID guid, 919 [out] VARIANT *pVarVal); 920 921 HRESULT GetFuncCustData( 922 [in] UINT index, 923 [in] REFGUID guid, 924 [out] VARIANT *pVarVal); 925 926 HRESULT GetParamCustData( 927 [in] UINT indexFunc, 928 [in] UINT indexParam, 929 [in] REFGUID guid, 930 [out] VARIANT *pVarVal); 931 932 HRESULT GetVarCustData( 933 [in] UINT index, 934 [in] REFGUID guid, 935 [out] VARIANT *pVarVal); 936 937 HRESULT GetImplTypeCustData( 938 [in] UINT index, 939 [in] REFGUID guid, 940 [out] VARIANT *pVarVal); 941 942 [local] 943 HRESULT GetDocumentation2( 944 [in] MEMBERID memid, 945 [in] LCID lcid, 946 [out] BSTR *pbstrHelpString, 947 [out] DWORD *pdwHelpStringContext, 948 [out] BSTR *pbstrHelpStringDll); 949 950 [call_as(GetDocumentation2)] 951 HRESULT RemoteGetDocumentation2( 952 [in] MEMBERID memid, 953 [in] LCID lcid, 954 [in] DWORD refPtrFlags, 955 [out] BSTR *pbstrHelpString, 956 [out] DWORD *pdwHelpStringContext, 957 [out] BSTR *pbstrHelpStringDll); 958 959 HRESULT GetAllCustData( 960 [out] CUSTDATA *pCustData); 961 962 HRESULT GetAllFuncCustData( 963 [in] UINT index, 964 [out] CUSTDATA *pCustData); 965 966 HRESULT GetAllParamCustData( 967 [in] UINT indexFunc, 968 [in] UINT indexParam, 969 [out] CUSTDATA *pCustData); 970 971 HRESULT GetAllVarCustData( 972 [in] UINT index, 973 [out] CUSTDATA *pCustData); 974 975 HRESULT GetAllImplTypeCustData( 976 [in] UINT index, 977 [out] CUSTDATA *pCustData); 978} 979 980[ 981 object, 982 uuid(00020402-0000-0000-C000-000000000046), 983 pointer_default(unique) 984] 985interface ITypeLib : IUnknown 986{ 987 typedef [unique] ITypeLib *LPTYPELIB; 988 989 typedef [v1_enum] enum tagSYSKIND { 990 SYS_WIN16 = 0, 991 SYS_WIN32, 992 SYS_MAC, 993 SYS_WIN64 994 } SYSKIND; 995 996 typedef [v1_enum] enum tagLIBFLAGS { 997 LIBFLAG_FRESTRICTED = 0x01, 998 LIBFLAG_FCONTROL = 0x02, 999 LIBFLAG_FHIDDEN = 0x04, 1000 LIBFLAG_FHASDISKIMAGE = 0x08 1001 } LIBFLAGS; 1002 1003 typedef struct tagTLIBATTR { 1004 GUID guid; 1005 LCID lcid; 1006 SYSKIND syskind; 1007 WORD wMajorVerNum; 1008 WORD wMinorVerNum; 1009 WORD wLibFlags; 1010 } TLIBATTR, *LPTLIBATTR; 1011 1012 [local] 1013 UINT GetTypeInfoCount(); 1014 1015 [call_as(GetTypeInfoCount)] 1016 HRESULT RemoteGetTypeInfoCount( 1017 [out] UINT *pcTInfo); 1018 1019 HRESULT GetTypeInfo( 1020 [in] UINT index, 1021 [out] ITypeInfo **ppTInfo); 1022 1023 HRESULT GetTypeInfoType( 1024 [in] UINT index, 1025 [out] TYPEKIND *pTKind); 1026 1027 HRESULT GetTypeInfoOfGuid( 1028 [in] REFGUID guid, 1029 [out] ITypeInfo **ppTinfo); 1030 1031 [local] 1032 HRESULT GetLibAttr( 1033 [out] TLIBATTR **ppTLibAttr); 1034 1035 [call_as(GetLibAttr)] 1036 HRESULT RemoteGetLibAttr( 1037 [out] LPTLIBATTR *ppTLibAttr, 1038 [out] CLEANLOCALSTORAGE *pDummy); 1039 1040 HRESULT GetTypeComp( 1041 [out] ITypeComp **ppTComp); 1042 1043 [local] 1044 HRESULT GetDocumentation( 1045 [in] INT index, 1046 [out] BSTR *pBstrName, 1047 [out] BSTR *pBstrDocString, 1048 [out] DWORD *pdwHelpContext, 1049 [out] BSTR *pBstrHelpFile); 1050 1051 [call_as(GetDocumentation)] 1052 HRESULT RemoteGetDocumentation( 1053 [in] INT index, 1054 [in] DWORD refPtrFlags, 1055 [out] BSTR *pBstrName, 1056 [out] BSTR *pBstrDocString, 1057 [out] DWORD *pdwHelpContext, 1058 [out] BSTR *pBstrHelpFile); 1059 1060 [local] 1061 HRESULT IsName( 1062 [in, out] LPOLESTR szNameBuf, 1063 [in] ULONG lHashVal, 1064 [out] BOOL *pfName); 1065 1066 [call_as(IsName)] 1067 HRESULT RemoteIsName( 1068 [in] LPOLESTR szNameBuf, 1069 [in] ULONG lHashVal, 1070 [out] BOOL *pfName, 1071 [out] BSTR *pBstrLibName); 1072 1073 [local] 1074 HRESULT FindName( 1075 [in, out] LPOLESTR szNameBuf, 1076 [in] ULONG lHashVal, 1077 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo, 1078 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId, 1079 [in, out] USHORT *pcFound); 1080 1081 [call_as(FindName)] 1082 HRESULT RemoteFindName( 1083 [in] LPOLESTR szNameBuf, 1084 [in] ULONG lHashVal, 1085 [out, size_is(*pcFound), length_is(*pcFound)] ITypeInfo **ppTInfo, 1086 [out, size_is(*pcFound), length_is(*pcFound)] MEMBERID *rgMemId, 1087 [in, out] USHORT *pcFound, 1088 [out] BSTR *pBstrLibName); 1089 1090 [local] 1091 void ReleaseTLibAttr( 1092 [in] TLIBATTR *pTLibAttr); 1093 1094 [call_as(ReleaseTLibAttr)] 1095 HRESULT LocalReleaseTLibAttr(); 1096} 1097 1098[ 1099 object, 1100 uuid(00020411-0000-0000-C000-000000000046), 1101 pointer_default(unique) 1102] 1103interface ITypeLib2 : ITypeLib 1104{ 1105 typedef [unique] ITypeLib2 *LPTYPELIB2; 1106 1107 HRESULT GetCustData( 1108 [in] REFGUID guid, 1109 [out] VARIANT *pVarVal); 1110 1111 [local] 1112 HRESULT GetLibStatistics( 1113 [out] ULONG *pcUniqueNames, 1114 [out] ULONG *pcchUniqueNames); 1115 1116 [call_as(GetLibStatistics)] 1117 HRESULT RemoteGetLibStatistics( 1118 [out] ULONG *pcUniqueNames, 1119 [out] ULONG *pcchUniqueNames); 1120 1121 [local] 1122 HRESULT GetDocumentation2( 1123 [in] INT index, 1124 [in] LCID lcid, 1125 [out] BSTR *pbstrHelpString, 1126 [out] DWORD *pdwHelpStringContext, 1127 [out] BSTR *pbstrHelpStringDll); 1128 1129 [call_as(GetDocumentation2)] 1130 HRESULT RemoteGetDocumentation2( 1131 [in] INT index, 1132 [in] LCID lcid, 1133 [in] DWORD refPtrFlags, 1134 [out] BSTR *pbstrHelpString, 1135 [out] DWORD *pdwHelpStringContext, 1136 [out] BSTR *pbstrHelpStringDll); 1137 1138 HRESULT GetAllCustData( 1139 [out] CUSTDATA *pCustData); 1140} 1141 1142[ 1143 local, 1144 object, 1145 uuid(00020410-0000-0000-C000-000000000046), 1146 pointer_default(unique) 1147] 1148interface ITypeChangeEvents : IUnknown 1149{ 1150 typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS; 1151 1152 typedef enum tagCHANGEKIND { 1153 CHANGEKIND_ADDMEMBER, 1154 CHANGEKIND_DELETEMEMBER, 1155 CHANGEKIND_SETNAMES, 1156 CHANGEKIND_SETDOCUMENTATION, 1157 CHANGEKIND_GENERAL, 1158 CHANGEKIND_INVALIDATE, 1159 CHANGEKIND_CHANGEFAILED, 1160 CHANGEKIND_MAX 1161 } CHANGEKIND; 1162 1163 HRESULT RequestTypeChange( 1164 [in] CHANGEKIND changeKind, 1165 [in] ITypeInfo *pTInfoBefore, 1166 [in] LPOLESTR pStrName, 1167 [out] INT *pfCancel); 1168 1169 HRESULT AfterTypeChange( 1170 [in] CHANGEKIND changeKind, 1171 [in] ITypeInfo *pTInfoAfter, 1172 [in] LPOLESTR pStrName); 1173} 1174 1175[ 1176 object, 1177 uuid(1CF2B120-547D-101B-8E65-08002B2BD119), 1178 pointer_default(unique) 1179] 1180interface IErrorInfo : IUnknown 1181{ 1182 typedef [unique] IErrorInfo *LPERRORINFO; 1183 1184 HRESULT GetGUID( 1185 [out] GUID *pGUID); 1186 1187 HRESULT GetSource( 1188 [out] BSTR *pBstrSource); 1189 1190 HRESULT GetDescription( 1191 [out] BSTR *pBstrDescription); 1192 1193 HRESULT GetHelpFile( 1194 [out] BSTR *pBstrHelpFile); 1195 1196 HRESULT GetHelpContext( 1197 [out] DWORD *pdwHelpContext); 1198} 1199 1200[ 1201 object, 1202 uuid(22F03340-547D-101B-8E65-08002B2BD119), 1203 pointer_default(unique) 1204] 1205interface ICreateErrorInfo : IUnknown 1206{ 1207 typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO; 1208 1209 HRESULT SetGUID( 1210 [in] REFGUID rguid); 1211 1212 HRESULT SetSource( 1213 [in] LPOLESTR szSource); 1214 1215 HRESULT SetDescription( 1216 [in] LPOLESTR szDescription); 1217 1218 HRESULT SetHelpFile( 1219 [in] LPOLESTR szHelpFile); 1220 1221 HRESULT SetHelpContext( 1222 [in] DWORD dwHelpContext); 1223} 1224 1225[ 1226 object, 1227 uuid(DF0B3D60-548F-101B-8E65-08002B2BD119), 1228 pointer_default(unique) 1229] 1230interface ISupportErrorInfo : IUnknown 1231{ 1232 typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO; 1233 1234 HRESULT InterfaceSupportsErrorInfo( 1235 [in] REFIID riid); 1236} 1237 1238[ 1239 object, 1240 uuid(0000002E-0000-0000-C000-000000000046) 1241] 1242interface ITypeFactory : IUnknown 1243{ 1244 HRESULT CreateFromTypeInfo( 1245 [in] ITypeInfo *pTypeInfo, 1246 [in] REFIID riid, 1247 [out, iid_is(riid)] IUnknown **ppv); 1248} 1249 1250[ 1251 local, 1252 object, 1253 uuid(0000002D-0000-0000-C000-000000000046) 1254] 1255interface ITypeMarshal : IUnknown 1256{ 1257 HRESULT Size( 1258 [in] PVOID pvType, 1259 [in] DWORD dwDestContext, 1260 [in] PVOID pvDestContext, 1261 [out] ULONG *pSize); 1262 1263 HRESULT Marshal( 1264 [in] PVOID pvType, 1265 [in] DWORD dwDestContext, 1266 [in] PVOID pvDestContext, 1267 [in] ULONG cbBufferLength, 1268 [out] BYTE *pBuffer, 1269 [out] ULONG *pcbWritten); 1270 1271 HRESULT Unmarshal( 1272 [out] PVOID pvType, 1273 [in] DWORD dwFlags, 1274 [in] ULONG cbBufferLength, 1275 [in] BYTE *pBuffer, 1276 [out] ULONG *pcbRead); 1277 1278 HRESULT Free( 1279 [in] PVOID pvType); 1280} 1281 1282[ 1283 local, 1284 object, 1285 uuid(0000002F-0000-0000-C000-000000000046) 1286] 1287interface IRecordInfo : IUnknown 1288{ 1289 typedef [unique] IRecordInfo *LPRECORDINFO; 1290 1291 HRESULT RecordInit( 1292 [out] PVOID pvNew); 1293 1294 HRESULT RecordClear( 1295 [in] PVOID pvExisting); 1296 1297 HRESULT RecordCopy( 1298 [in] PVOID pvExisting, 1299 [out] PVOID pvNew); 1300 1301 HRESULT GetGuid( 1302 [out] GUID *pguid); 1303 1304 HRESULT GetName( 1305 [out] BSTR *pbstrName); 1306 1307 HRESULT GetSize( 1308 [out] ULONG *pcbSize); 1309 1310 HRESULT GetTypeInfo( 1311 [out] ITypeInfo **ppTypeInfo); 1312 1313 HRESULT GetField( 1314 [in] PVOID pvData, 1315 [in] LPCOLESTR szFieldName, 1316 [out] VARIANT *pvarField); 1317 1318 HRESULT GetFieldNoCopy( 1319 [in] PVOID pvData, 1320 [in] LPCOLESTR szFieldName, 1321 [out] VARIANT *pvarField, 1322 [out] PVOID *ppvDataCArray); 1323 1324 HRESULT PutField( 1325 [in] ULONG wFlags, 1326 [in, out] PVOID pvData, 1327 [in] LPCOLESTR szFieldName, 1328 [in] VARIANT *pvarField); 1329 1330 HRESULT PutFieldNoCopy( 1331 [in] ULONG wFlags, 1332 [in, out] PVOID pvData, 1333 [in] LPCOLESTR szFieldName, 1334 [in] VARIANT *pvarField); 1335 1336 HRESULT GetFieldNames( 1337 [in, out] ULONG *pcNames, 1338 [out, size_is(*pcNames), length_is(*pcNames)] BSTR *rgBstrNames); 1339 1340 BOOL IsMatchingType( 1341 [in] IRecordInfo *pRecordInfo); 1342 1343 PVOID RecordCreate(); 1344 1345 HRESULT RecordCreateCopy( 1346 [in] PVOID pvSource, 1347 [out] PVOID *ppvDest); 1348 1349 HRESULT RecordDestroy( 1350 [in] PVOID pvRecord); 1351} 1352 1353[ 1354 local, 1355 object, 1356 uuid(00020405-0000-0000-C000-000000000046), 1357 pointer_default(unique) 1358] 1359interface ICreateTypeInfo : IUnknown 1360{ 1361 typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO; 1362 1363 HRESULT SetGuid( 1364 [in] REFGUID guid); 1365 1366 HRESULT SetTypeFlags( 1367 [in] UINT uTypeFlags); 1368 1369 HRESULT SetDocString( 1370 [in] LPOLESTR pStrDoc); 1371 1372 HRESULT SetHelpContext( 1373 [in] DWORD dwHelpContext); 1374 1375 HRESULT SetVersion( 1376 [in] WORD wMajorVerNum, 1377 [in] WORD wMinorVerNum); 1378 1379 HRESULT AddRefTypeInfo( 1380 [in] ITypeInfo *pTInfo, 1381 [in] HREFTYPE *phRefType); 1382 1383 HRESULT AddFuncDesc( 1384 [in] UINT index, 1385 [in] FUNCDESC *pFuncDesc); 1386 1387 HRESULT AddImplType( 1388 [in] UINT index, 1389 [in] HREFTYPE hRefType); 1390 1391 HRESULT SetImplTypeFlags( 1392 [in] UINT index, 1393 [in] INT implTypeFlags); 1394 1395 HRESULT SetAlignment( 1396 [in] WORD cbAlignment); 1397 1398 HRESULT SetSchema( 1399 [in] LPOLESTR pStrSchema); 1400 1401 HRESULT AddVarDesc( 1402 [in] UINT index, 1403 [in] VARDESC *pVarDesc); 1404 1405 HRESULT SetFuncAndParamNames( 1406 [in] UINT index, 1407 [in, size_is(cNames)] LPOLESTR *rgszNames, 1408 [in] UINT cNames); 1409 1410 HRESULT SetVarName( 1411 [in] UINT index, 1412 [in] LPOLESTR szName); 1413 1414 HRESULT SetTypeDescAlias( 1415 [in] TYPEDESC *pTDescAlias); 1416 1417 HRESULT DefineFuncAsDllEntry( 1418 [in] UINT index, 1419 [in] LPOLESTR szDllName, 1420 [in] LPOLESTR szProcName); 1421 1422 HRESULT SetFuncDocString( 1423 [in] UINT index, 1424 [in] LPOLESTR szDocString); 1425 1426 HRESULT SetVarDocString( 1427 [in] UINT index, 1428 [in] LPOLESTR szDocString); 1429 1430 HRESULT SetFuncHelpContext( 1431 [in] UINT index, 1432 [in] DWORD dwHelpContext); 1433 1434 HRESULT SetVarHelpContext( 1435 [in] UINT index, 1436 [in] DWORD dwHelpContext); 1437 1438 HRESULT SetMops( 1439 [in] UINT index, 1440 [in] BSTR bstrMops); 1441 1442 HRESULT SetTypeIdldesc( 1443 [in] IDLDESC * pIdlDesc); 1444 1445 HRESULT LayOut(); 1446} 1447 1448[ 1449 local, 1450 object, 1451 uuid(0002040E-0000-0000-C000-000000000046), 1452 pointer_default(unique) 1453] 1454interface ICreateTypeInfo2 : ICreateTypeInfo 1455{ 1456 typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2; 1457 1458 HRESULT DeleteFuncDesc( 1459 [in] UINT index); 1460 1461 HRESULT DeleteFuncDescByMemId( 1462 [in] MEMBERID memid, 1463 [in] INVOKEKIND invKind); 1464 1465 HRESULT DeleteVarDesc( 1466 [in] UINT index); 1467 1468 HRESULT DeleteVarDescByMemId( 1469 [in] MEMBERID memid); 1470 1471 HRESULT DeleteImplType( 1472 [in] UINT index); 1473 1474 HRESULT SetCustData( 1475 [in] REFGUID guid, 1476 [in] VARIANT *pVarVal); 1477 1478 HRESULT SetFuncCustData( 1479 [in] UINT index, 1480 [in] REFGUID guid, 1481 [in] VARIANT *pVarVal); 1482 1483 HRESULT SetParamCustData( 1484 [in] UINT indexFunc, 1485 [in] UINT indexParam, 1486 [in] REFGUID guid, 1487 [in] VARIANT *pVarVal); 1488 1489 HRESULT SetVarCustData( 1490 [in] UINT index, 1491 [in] REFGUID guid, 1492 [in] VARIANT *pVarVal); 1493 1494 HRESULT SetImplTypeCustData( 1495 [in] UINT index, 1496 [in] REFGUID guid, 1497 [in] VARIANT *pVarVal); 1498 1499 HRESULT SetHelpStringContext( 1500 [in] ULONG dwHelpStringContext); 1501 1502 HRESULT SetFuncHelpStringContext( 1503 [in] UINT index, 1504 [in] ULONG dwHelpStringContext); 1505 1506 HRESULT SetVarHelpStringContext( 1507 [in] UINT index, 1508 [in] ULONG dwHelpStringContext); 1509 1510 HRESULT Invalidate(); 1511 1512 HRESULT SetName( 1513 [in] LPOLESTR szName); 1514} 1515 1516[ 1517 local, 1518 object, 1519 uuid(00020406-0000-0000-C000-000000000046), 1520 pointer_default(unique) 1521] 1522interface ICreateTypeLib : IUnknown 1523{ 1524 typedef [unique] ICreateTypeLib *LPCREATETYPELIB; 1525 1526 HRESULT CreateTypeInfo( 1527 [in] LPOLESTR szName, 1528 [in] TYPEKIND tkind, 1529 [out] ICreateTypeInfo **ppCTInfo); 1530 1531 HRESULT SetName( 1532 [in] LPOLESTR szName); 1533 1534 HRESULT SetVersion( 1535 [in] WORD wMajorVerNum, 1536 [in] WORD wMinorVerNum); 1537 1538 HRESULT SetGuid( 1539 [in] REFGUID guid); 1540 1541 HRESULT SetDocString( 1542 [in] LPOLESTR szDoc); 1543 1544 HRESULT SetHelpFileName( 1545 [in] LPOLESTR szHelpFileName); 1546 1547 HRESULT SetHelpContext( 1548 [in] DWORD dwHelpContext); 1549 1550 HRESULT SetLcid( 1551 [in] LCID lcid); 1552 1553 HRESULT SetLibFlags( 1554 [in] UINT uLibFlags); 1555 1556 HRESULT SaveAllChanges(); 1557} 1558 1559[ 1560 local, 1561 object, 1562 uuid(0002040F-0000-0000-C000-000000000046), 1563 pointer_default(unique) 1564] 1565interface ICreateTypeLib2 : ICreateTypeLib 1566{ 1567 typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2; 1568 1569 HRESULT DeleteTypeInfo( 1570 [in] LPOLESTR szName); 1571 1572 HRESULT SetCustData( 1573 [in] REFGUID guid, 1574 [in] VARIANT *pVarVal); 1575 1576 HRESULT SetHelpStringContext( 1577 [in] ULONG dwHelpStringContext); 1578 1579 HRESULT SetHelpStringDll( 1580 [in] LPOLESTR szFileName); 1581} 1582 1583 1584/***************************************************************************** 1585 * IErrorLog interface 1586 */ 1587[ 1588 object, 1589 uuid(3127ca40-446e-11ce-8135-00aa004bb851), 1590 pointer_default(unique) 1591] 1592interface IErrorLog : IUnknown 1593{ 1594 typedef IErrorLog *LPERRORLOG; 1595 1596 HRESULT AddError( 1597 [in] LPCOLESTR pszPropName, 1598 [in] EXCEPINFO *pExcepInfo); 1599} 1600 1601 1602/***************************************************************************** 1603 * IPropertyBag interface 1604 */ 1605[ 1606 object, 1607 uuid(55272a00-42cb-11ce-8135-00aa004bb851), 1608 pointer_default(unique) 1609] 1610interface IPropertyBag : IUnknown 1611{ 1612 typedef IPropertyBag *LPPROPERTYBAG; 1613 1614 [local] 1615 HRESULT Read( 1616 [in] LPCOLESTR pszPropName, 1617 [in, out] VARIANT *pVar, 1618 [in] IErrorLog *pErrorLog); 1619 1620 [call_as(Read)] 1621 HRESULT RemoteRead( 1622 [in] LPCOLESTR pszPropName, 1623 [out] VARIANT *pVar, 1624 [in] IErrorLog *pErrorLog, 1625 [in] DWORD varType, 1626 [in] IUnknown *pUnkObj); 1627 1628 HRESULT Write( 1629 [in] LPCOLESTR pszPropName, 1630 [in] VARIANT *pVar); 1631} 1632