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 "unknwn.idl"; 21#endif 22 23interface IStream; 24interface IEnumString; 25interface IRunningObjectTable; 26interface IMoniker; 27interface IAdviseSink; 28interface IAsyncManager; 29interface ISynchronize; 30 31typedef struct _COSERVERINFO { 32 DWORD dwReserved1; 33 LPWSTR pwszName; 34 COAUTHINFO *pAuthInfo; 35 DWORD dwReserved2; 36} COSERVERINFO; 37 38/******************** Fundamentals ********************/ 39 40[ 41 local, 42 object, 43 uuid(00000003-0000-0000-C000-000000000046) 44] 45interface IMarshal : IUnknown 46{ 47 typedef [unique] IMarshal *LPMARSHAL; 48 49 HRESULT GetUnmarshalClass( 50 [in] REFIID riid, 51 [in, unique] void *pv, 52 [in] DWORD dwDestContext, 53 [in, unique] void *pvDestContext, 54 [in] DWORD mshlflags, 55 [out] CLSID *pCid); 56 57 HRESULT GetMarshalSizeMax( 58 [in] REFIID riid, 59 [in, unique] void *pv, 60 [in] DWORD dwDestContext, 61 [in, unique] void *pvDestContext, 62 [in] DWORD mshlflags, 63 [out] DWORD *pSize); 64 65 HRESULT MarshalInterface( 66 [in, unique] IStream *pStm, 67 [in] REFIID riid, 68 [in, unique] void *pv, 69 [in] DWORD dwDestContext, 70 [in, unique] void *pvDestContext, 71 [in] DWORD mshlflags); 72 73 HRESULT UnmarshalInterface( 74 [in, unique] IStream *pStm, 75 [in] REFIID riid, 76 [out] void **ppv); 77 78 HRESULT ReleaseMarshalData( 79 [in, unique] IStream *pStm); 80 81 HRESULT DisconnectObject( 82 [in] DWORD dwReserved); 83} 84 85[ 86 local, 87 object, 88 uuid(000001cf-0000-0000-C000-000000000046) 89] 90interface IMarshal2 : IMarshal 91{ 92 typedef [unique] IMarshal2 *LPMARSHAL2; 93} 94 95[ 96 local, 97 object, 98 uuid(00000018-0000-0000-C000-000000000046) 99] 100interface IStdMarshalInfo : IUnknown 101{ 102 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO; 103 104 HRESULT GetClassForHandler( 105 [in] DWORD dwDestContext, 106 [in, unique] void *pvDestContext, 107 [out] CLSID *pClsid); 108} 109 110[ 111 local, 112 object, 113 uuid(00000019-0000-0000-C000-000000000046) 114] 115interface IExternalConnection : IUnknown 116{ 117 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION; 118 119 typedef enum tagEXTCONN { 120 EXTCONN_STRONG = 0x0001, 121 EXTCONN_WEAK = 0x0002, 122 EXTCONN_CALLABLE = 0x0004 123 } EXTCONN; 124 125 DWORD AddConnection( 126 [in] DWORD extconn, 127 [in] DWORD reserved); 128 129 DWORD ReleaseConnection( 130 [in] DWORD extconn, 131 [in] DWORD reserved, 132 [in] BOOL fLastReleaseCloses); 133} 134 135[ 136 local, 137 object, 138 uuid(00000020-0000-0000-C000-000000000046) 139] 140interface IMultiQI : IUnknown 141{ 142 typedef [unique] IMultiQI *LPMULTIQI; 143 144 typedef struct tagMULTI_QI { 145 const IID *pIID; 146 IUnknown *pItf; 147 HRESULT hr; 148 } MULTI_QI; 149 150 HRESULT QueryMultipleInterfaces( 151 [in] ULONG cMQIs, 152 [in, out] MULTI_QI *pMQIs); 153} 154 155[ 156 local, 157 object, 158 uuid(00000002-0000-0000-C000-000000000046) 159] 160interface IMalloc : IUnknown 161{ 162 typedef [unique] IMalloc *LPMALLOC; 163 164 LPVOID Alloc( 165 [in] SIZE_T cb); 166 167 LPVOID Realloc( 168 [in] LPVOID pv, 169 [in] SIZE_T cb); 170 171 void Free( 172 [in] LPVOID pv); 173 174 SIZE_T GetSize( 175 [in] LPVOID pv); 176 177 int DidAlloc(LPVOID pv); 178 179 void HeapMinimize(); 180} 181 182[ 183 local, 184 object, 185 uuid(0000001d-0000-0000-C000-000000000046) 186] 187interface IMallocSpy : IUnknown 188{ 189 typedef [unique] IMallocSpy *LPMALLOCSPY; 190 191 SIZE_T PreAlloc( 192 [in] SIZE_T cbRequest); 193 194 LPVOID PostAlloc( 195 [in] LPVOID pActual); 196 197 LPVOID PreFree( 198 [in] LPVOID pRequest, 199 [in] BOOL fSpyed); 200 201 void PostFree( 202 [in] BOOL fSpyed); 203 204 SIZE_T PreRealloc( 205 [in] LPVOID pRequest, 206 [in] SIZE_T cbRequest, 207 [out] LPVOID *ppNewRequest, 208 [in] BOOL fSpyed); 209 210 LPVOID PostRealloc( 211 [in] LPVOID pActual, 212 [in] BOOL fSpyed); 213 214 LPVOID PreGetSize( 215 [in] LPVOID pRequest, 216 [in] BOOL fSpyed); 217 218 SIZE_T PostGetSize( 219 [in] SIZE_T cbActual, 220 [in] BOOL fSpyed); 221 222 LPVOID PreDidAlloc( 223 [in] LPVOID pRequest, 224 [in] BOOL fSpyed); 225 226 int PostDidAlloc( 227 [in] LPVOID pRequest, 228 [in] BOOL fSpyed, 229 [in] int fActual); 230 231 void PreHeapMinimize(); 232 233 void PostHeapMinimize(); 234} 235 236[ 237 local, 238 object, 239 uuid(00000021-0000-0000-C000-000000000046) 240] 241interface IInternalUnknown : IUnknown 242{ 243 HRESULT QueryInternalInterface( 244 [in] REFIID riid, 245 [out] void **ppv); 246} 247 248[ 249 object, 250 uuid(00000100-0000-0000-C000-000000000046), 251 pointer_default(unique) 252] 253interface IEnumUnknown : IUnknown 254{ 255 typedef [unique] IEnumUnknown *LPENUMUNKNOWN; 256 257 [local] 258 HRESULT Next( 259 [in] ULONG celt, 260 [out] IUnknown **rgelt, 261 [out] ULONG *pceltFetched); 262 263 [call_as(Next)] 264 HRESULT RemoteNext( 265 [in] ULONG celt, 266 [out, size_is(celt), length_is(*pceltFetched)] 267 IUnknown **rgelt, 268 [out] ULONG *pceltFetched); 269 270 HRESULT Skip( 271 [in] ULONG celt); 272 273 HRESULT Reset(); 274 275 HRESULT Clone( 276 [out] IEnumUnknown **ppenum); 277} 278 279[ 280 object, 281 uuid(00000022-0000-0000-C000-000000000046), 282 version(1.0), 283 pointer_default(unique) 284] 285interface ISurrogate : IUnknown 286{ 287 typedef [unique] ISurrogate *LPSURROGATE; 288 289 HRESULT LoadDllServer( 290 [in] REFCLSID Clsid); 291 HRESULT FreeSurrogate(); 292} 293 294[ 295 local, 296 object, 297 uuid(00000146-0000-0000-C000-000000000046) 298] 299interface IGlobalInterfaceTable : IUnknown 300{ 301 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE; 302 303 HRESULT RegisterInterfaceInGlobal( 304 [in] IUnknown *pUnk, 305 [in] REFIID riid, 306 [out] DWORD *pdwCookie); 307 308 HRESULT RevokeInterfaceFromGlobal( 309 [in] DWORD dwCookie); 310 311 HRESULT GetInterfaceFromGlobal( 312 [in] DWORD dwCookie, 313 [in] REFIID riid, 314 [out, iid_is(riid)] void **ppv); 315} 316 317/******************** Monikers ********************/ 318 319[ 320 object, 321 uuid(0000000e-0000-0000-C000-000000000046), 322 pointer_default(unique) 323] 324interface IBindCtx : IUnknown 325{ 326 typedef [unique] IBindCtx *LPBINDCTX; 327 typedef [unique] IBindCtx *LPBC; 328 329 typedef struct tagBIND_OPTS { 330 DWORD cbStruct; 331 DWORD grfFlags; 332 DWORD grfMode; 333 DWORD dwTickCountDeadline; 334 } BIND_OPTS, *LPBIND_OPTS; 335 336 /* FIXME: C++ crap */ 337 typedef struct tagBIND_OPTS2 { 338 DWORD cbStruct; 339 DWORD grfFlags; 340 DWORD grfMode; 341 DWORD dwTickCountDeadline; 342 DWORD dwTrackFlags; 343 DWORD dwClassContext; 344 LCID locale; 345 COSERVERINFO *pServerInfo; 346 } BIND_OPTS2, *LPBIND_OPTS2; 347 348 typedef struct tagBIND_OPTS3 { 349 DWORD cbStruct; 350 DWORD grfFlags; 351 DWORD grfMode; 352 DWORD dwTickCountDeadline; 353 DWORD dwTrackFlags; 354 DWORD dwClassContext; 355 LCID locale; 356 COSERVERINFO *pServerInfo; 357 HWND hwnd; 358 } BIND_OPTS3, *LPBIND_OPTS3; 359 360 typedef enum tagBIND_FLAGS { 361 BIND_MAYBOTHERUSER = 1, 362 BIND_JUSTTESTEXISTENCE = 2 363 } BIND_FLAGS; 364 365 HRESULT RegisterObjectBound( 366 [in, unique] IUnknown *punk); 367 368 HRESULT RevokeObjectBound( 369 [in, unique] IUnknown *punk); 370 371 HRESULT ReleaseBoundObjects(); 372 373 [local] 374 HRESULT SetBindOptions( 375 [in] BIND_OPTS *pbindopts); 376 377 [call_as(SetBindOptions)] 378 HRESULT RemoteSetBindOptions( 379 [in] BIND_OPTS2 *pbindopts); 380 381 [local] 382 HRESULT GetBindOptions( 383 [in, out] BIND_OPTS *pbindopts); 384 385 [call_as(GetBindOptions)] 386 HRESULT RemoteGetBindOptions( 387 [in, out] BIND_OPTS2 *pbindopts); 388 389 HRESULT GetRunningObjectTable( 390 [out] IRunningObjectTable **pprot); 391 392 HRESULT RegisterObjectParam( 393 [in] LPOLESTR pszKey, 394 [in, unique] IUnknown *punk); 395 396 HRESULT GetObjectParam( 397 [in] LPOLESTR pszKey, 398 [out] IUnknown **ppunk); 399 400 HRESULT EnumObjectParam( 401 [out] IEnumString **ppenum); 402 403 HRESULT RevokeObjectParam( 404 [in] LPOLESTR pszKey); 405} 406 407[ 408 object, 409 uuid(00000102-0000-0000-C000-000000000046), 410 pointer_default(unique) 411] 412interface IEnumMoniker : IUnknown 413{ 414 typedef [unique] IEnumMoniker *LPENUMMONIKER; 415 416 [local] 417 HRESULT Next( 418 [in] ULONG celt, 419 [out, size_is(celt), length_is(*pceltFetched)] 420 IMoniker **rgelt, 421 [out] ULONG *pceltFetched); 422 423 [call_as(Next)] 424 HRESULT RemoteNext( 425 [in] ULONG celt, 426 [out, size_is(celt), length_is(*pceltFetched)] 427 IMoniker **rgelt, 428 [out] ULONG *pceltFetched); 429 430 HRESULT Skip( 431 [in] ULONG celt); 432 433 HRESULT Reset(); 434 435 HRESULT Clone( 436 [out] IEnumMoniker **ppenum); 437} 438 439[ 440 object, 441 uuid(00000126-0000-0000-C000-000000000046) 442] 443interface IRunnableObject : IUnknown 444{ 445 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT; 446 447 HRESULT GetRunningClass( 448 [out] LPCLSID lpClsid); 449 450 HRESULT Run( 451 [in] LPBINDCTX pbc); 452 453 [local] 454 BOOL IsRunning(); 455 456 [call_as(IsRunning)] 457 HRESULT RemoteIsRunning(); 458 459 HRESULT LockRunning( 460 [in] BOOL fLock, 461 [in] BOOL fLastUnlockCloses); 462 463 HRESULT SetContainedObject( 464 [in] BOOL fContained); 465} 466 467/* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject), 468 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined, 469 * but GetObject is used as a valid method name below, so we have 470 * to undefine it in that case */ 471cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") 472cpp_quote("#undef GetObject") 473cpp_quote("#endif") 474 475[ 476 object, 477 uuid(00000010-0000-0000-C000-000000000046) 478] 479interface IRunningObjectTable : IUnknown 480{ 481 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE; 482 483 HRESULT Register( 484 [in] DWORD grfFlags, 485 [in, unique] IUnknown *punkObject, 486 [in, unique] IMoniker *pmkObjectName, 487 [out] DWORD *pdwRegister); 488 489 HRESULT Revoke( 490 [in] DWORD dwRegister); 491 492 HRESULT IsRunning( 493 [in, unique] IMoniker *pmkObjectName); 494 495 HRESULT GetObject( 496 [in, unique] IMoniker *pmkObjectName, 497 [out] IUnknown **ppunkObject); 498 499 HRESULT NoteChangeTime( 500 [in] DWORD dwRegister, 501 [in] FILETIME *pfiletime); 502 503 HRESULT GetTimeOfLastChange( 504 [in, unique] IMoniker *pmkObjectName, 505 [out] FILETIME *pfiletime); 506 507 HRESULT EnumRunning( 508 [out] IEnumMoniker **ppenumMoniker); 509} 510 511[ 512 object, 513 uuid(0000010c-0000-0000-C000-000000000046) 514] 515interface IPersist : IUnknown 516{ 517 typedef [unique] IPersist *LPPERSIST; 518 519 HRESULT GetClassID( 520 [out] CLSID *pClassID); 521} 522 523[ 524 object, 525 uuid(00000109-0000-0000-C000-000000000046), 526 pointer_default(unique) 527] 528interface IPersistStream : IPersist 529{ 530 typedef [unique] IPersistStream *LPPERSISTSTREAM; 531 532 HRESULT IsDirty(); 533 534 HRESULT Load( 535 [in, unique] IStream *pStm); 536 537 HRESULT Save( 538 [in, unique] IStream *pStm, 539 [in] BOOL fClearDirty); 540 541 HRESULT GetSizeMax( 542 [out] ULARGE_INTEGER *pcbSize); 543} 544 545[ 546 object, 547 uuid(0000000f-0000-0000-C000-000000000046), 548 pointer_default(unique) 549] 550interface IMoniker : IPersistStream 551{ 552 typedef [unique] IMoniker *LPMONIKER; 553 554 typedef enum tagMKSYS { 555 MKSYS_NONE = 0, 556 MKSYS_GENERICCOMPOSITE = 1, 557 MKSYS_FILEMONIKER = 2, 558 MKSYS_ANTIMONIKER = 3, 559 MKSYS_ITEMMONIKER = 4, 560 MKSYS_POINTERMONIKER = 5, 561 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */ 562 MKSYS_CLASSMONIKER = 7 563 } MKSYS; 564 565 typedef [v1_enum] enum tagMKREDUCE { 566 MKRREDUCE_ONE = 3 << 16, 567 MKRREDUCE_TOUSER = 2 << 16, 568 MKRREDUCE_THROUGHUSER = 1 << 16, 569 MKRREDUCE_ALL = 0 570 } MKRREDUCE; 571 572 [local] 573 HRESULT BindToObject( 574 [in, unique] IBindCtx *pbc, 575 [in, unique] IMoniker *pmkToLeft, 576 [in] REFIID riidResult, 577 [out, iid_is(riidResult)] void **ppvResult); 578 579 [call_as(BindToObject)] 580 HRESULT RemoteBindToObject( 581 [in, unique] IBindCtx *pbc, 582 [in, unique] IMoniker *pmkToLeft, 583 [in] REFIID riidResult, 584 [out, iid_is(riidResult)] IUnknown **ppvResult); 585 586 [local] 587 HRESULT BindToStorage( 588 [in, unique] IBindCtx *pbc, 589 [in, unique] IMoniker *pmkToLeft, 590 [in] REFIID riid, 591 [out, iid_is(riid)] void **ppvObj); 592 593 [call_as(BindToStorage)] 594 HRESULT RemoteBindToStorage( 595 [in, unique] IBindCtx *pbc, 596 [in, unique] IMoniker *pmkToLeft, 597 [in] REFIID riid, 598 [out, iid_is(riid)] IUnknown **ppvObj); 599 600 HRESULT Reduce( 601 [in, unique] IBindCtx *pbc, 602 [in] DWORD dwReduceHowFar, 603 [in, out, unique] IMoniker **ppmkToLeft, 604 [out] IMoniker **ppmkReduced); 605 606 HRESULT ComposeWith( 607 [in, unique] IMoniker *pmkRight, 608 [in] BOOL fOnlyIfNotGeneric, 609 [out] IMoniker **ppmkComposite); 610 611 HRESULT Enum( 612 [in] BOOL fForward, 613 [out] IEnumMoniker **ppenumMoniker); 614 615 HRESULT IsEqual( 616 [in, unique] IMoniker *pmkOtherMoniker); 617 618 HRESULT Hash( 619 [out] DWORD *pdwHash); 620 621 HRESULT IsRunning( 622 [in, unique] IBindCtx *pbc, 623 [in, unique] IMoniker *pmkToLeft, 624 [in, unique] IMoniker *pmkNewlyRunning); 625 626 HRESULT GetTimeOfLastChange( 627 [in, unique] IBindCtx *pbc, 628 [in, unique] IMoniker *pmkToLeft, 629 [out] FILETIME *pFileTime); 630 631 HRESULT Inverse( 632 [out] IMoniker **ppmk); 633 634 HRESULT CommonPrefixWith( 635 [in, unique] IMoniker *pmkOther, 636 [out] IMoniker **ppmkPrefix); 637 638 HRESULT RelativePathTo( 639 [in, unique] IMoniker *pmkOther, 640 [out] IMoniker **ppmkRelPath); 641 642 HRESULT GetDisplayName( 643 [in, unique] IBindCtx *pbc, 644 [in, unique] IMoniker *pmkToLeft, 645 [out] LPOLESTR *ppszDisplayName); 646 647 HRESULT ParseDisplayName( 648 [in, unique] IBindCtx *pbc, 649 [in, unique] IMoniker *pmkToLeft, 650 [in] LPOLESTR pszDisplayName, 651 [out] ULONG *pchEaten, 652 [out] IMoniker **ppmkOut); 653 654 HRESULT IsSystemMoniker( 655 [out] DWORD *pdwMksys); 656} 657 658[ 659 object, 660 uuid(f29f6bc0-5021-11ce-aa15-00006901293f), 661 pointer_default(unique) 662] 663interface IROTData : IUnknown 664{ 665 HRESULT GetComparisonData( 666 [out, size_is(cbMax)] byte *pbData, 667 [in] ULONG cbMax, 668 [out] ULONG *pcbData); 669} 670 671[ 672 object, 673 uuid(00000101-0000-0000-C000-000000000046), 674 pointer_default(unique) 675] 676interface IEnumString : IUnknown 677{ 678 typedef [unique] IEnumString *LPENUMSTRING; 679 680 [local] 681 HRESULT Next( 682 [in] ULONG celt, 683 [out, size_is(celt), length_is(*pceltFetched)] 684 LPOLESTR *rgelt, 685 [out] ULONG *pceltFetched); 686 687 [call_as(Next)] 688 HRESULT RemoteNext( 689 [in] ULONG celt, 690 [out, size_is(celt), length_is(*pceltFetched)] 691 LPOLESTR *rgelt, 692 [out] ULONG *pceltFetched); 693 694 HRESULT Skip( 695 [in] ULONG celt); 696 697 HRESULT Reset(); 698 699 HRESULT Clone( 700 [out] IEnumString **ppenum); 701} 702 703[ 704 object, 705 uuid(00000140-0000-0000-C000-000000000046) 706] 707interface IClassActivator : IUnknown 708{ 709 HRESULT GetClassObject( 710 [in] REFCLSID rclsid, 711 [in] DWORD dwClassContext, 712 [in] LCID locale, 713 [in] REFIID riid, 714 [out, iid_is(riid)] void **ppv); 715} 716 717/******************** Storage ********************/ 718 719[ 720 object, 721 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d), 722 pointer_default(unique) 723] 724interface ISequentialStream : IUnknown 725{ 726 [local] 727 HRESULT Read( 728 [out, size_is(cb), length_is(*pcbRead)] 729 void *pv, 730 [in] ULONG cb, 731 [out] ULONG *pcbRead); 732 733 [call_as(Read)] 734 HRESULT RemoteRead( 735 [out, size_is(cb), length_is(*pcbRead)] 736 byte *pv, 737 [in] ULONG cb, 738 [out] ULONG *pcbRead); 739 740 [local] 741 HRESULT Write( 742 [in, size_is(cb)] const void *pv, 743 [in] ULONG cb, 744 [out] ULONG *pcbWritten); 745 746 [call_as(Write)] 747 HRESULT RemoteWrite( 748 [in, size_is(cb)] const byte *pv, 749 [in] ULONG cb, 750 [out] ULONG *pcbWritten); 751} 752 753[ 754 object, 755 uuid(0000000c-0000-0000-C000-000000000046), 756 pointer_default(unique) 757] 758interface IStream : ISequentialStream 759{ 760 typedef [unique] IStream *LPSTREAM; 761 762 typedef struct tagSTATSTG { 763 LPOLESTR pwcsName; 764 DWORD type; 765 ULARGE_INTEGER cbSize; 766 FILETIME mtime; 767 FILETIME ctime; 768 FILETIME atime; 769 DWORD grfMode; 770 DWORD grfLocksSupported; 771 CLSID clsid; 772 DWORD grfStateBits; 773 DWORD reserved; 774 } STATSTG; 775 776 typedef enum tagSTGTY { 777 STGTY_STORAGE = 1, 778 STGTY_STREAM = 2, 779 STGTY_LOCKBYTES = 3, 780 STGTY_PROPERTY = 4 781 } STGTY; 782 783 typedef enum tagSTREAM_SEEK { 784 STREAM_SEEK_SET = 0, 785 STREAM_SEEK_CUR = 1, 786 STREAM_SEEK_END = 2 787 } STREAM_SEEK; 788 789 /* these are defined in Linux's fcntl.h, 790 * undefine them to avoid conflicts */ 791 cpp_quote("#undef LOCK_MAND") 792 cpp_quote("#undef LOCK_READ") 793 cpp_quote("#undef LOCK_WRITE") 794 cpp_quote("#undef LOCK_RW") 795 796 typedef enum tagLOCKTYPE { 797 LOCK_WRITE = 1, 798 LOCK_EXCLUSIVE = 2, 799 LOCK_ONLYONCE = 4 800 } LOCKTYPE; 801 802 [local] 803 HRESULT Seek( 804 [in] LARGE_INTEGER dlibMove, 805 [in] DWORD dwOrigin, 806 [out] ULARGE_INTEGER *plibNewPosition); 807 808 [call_as(Seek)] 809 HRESULT RemoteSeek( 810 [in] LARGE_INTEGER dlibMove, 811 [in] DWORD dwOrigin, 812 [out] ULARGE_INTEGER *plibNewPosition); 813 814 HRESULT SetSize( 815 [in] ULARGE_INTEGER libNewSize); 816 817 [local] 818 HRESULT CopyTo( 819 [in, unique] IStream *pstm, 820 [in] ULARGE_INTEGER cb, 821 [out] ULARGE_INTEGER *pcbRead, 822 [out] ULARGE_INTEGER *pcbWritten); 823 824 [call_as(CopyTo)] 825 HRESULT RemoteCopyTo( 826 [in, unique] IStream *pstm, 827 [in] ULARGE_INTEGER cb, 828 [out] ULARGE_INTEGER *pcbRead, 829 [out] ULARGE_INTEGER *pcbWritten); 830 831 HRESULT Commit( 832 [in] DWORD grfCommitFlags); 833 834 HRESULT Revert(); 835 836 HRESULT LockRegion( 837 [in] ULARGE_INTEGER libOffset, 838 [in] ULARGE_INTEGER cb, 839 [in] DWORD dwLockType); 840 841 HRESULT UnlockRegion( 842 [in] ULARGE_INTEGER libOffset, 843 [in] ULARGE_INTEGER cb, 844 [in] DWORD dwLockType); 845 846 HRESULT Stat( 847 [out] STATSTG *pstatstg, 848 [in] DWORD grfStatFlag); 849 850 HRESULT Clone( 851 [out] IStream **ppstm); 852} 853 854[ 855 object, 856 uuid(0000000d-0000-0000-C000-000000000046), 857 pointer_default(unique) 858] 859interface IEnumSTATSTG : IUnknown 860{ 861 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG; 862 863 [local] 864 HRESULT Next( 865 [in] ULONG celt, 866 [out, size_is(celt), length_is(*pceltFetched)] 867 STATSTG *rgelt, 868 [out] ULONG *pceltFetched); 869 870 [call_as(Next)] 871 HRESULT RemoteNext( 872 [in] ULONG celt, 873 [out, size_is(celt), length_is(*pceltFetched)] 874 STATSTG *rgelt, 875 [out] ULONG *pceltFetched); 876 877 HRESULT Skip( 878 [in] ULONG celt); 879 880 HRESULT Reset(); 881 882 HRESULT Clone( 883 [out] IEnumSTATSTG **ppenum); 884} 885 886[ 887 object, 888 uuid(0000000b-0000-0000-C000-000000000046), 889 pointer_default(unique) 890] 891interface IStorage : IUnknown 892{ 893 typedef [unique] IStorage *LPSTORAGE; 894 895 typedef struct tagRemSNB { 896 unsigned long ulCntStr; 897 unsigned long ulCntChar; 898 [size_is(ulCntChar)] OLECHAR rgString[]; 899 } RemSNB; 900 901 typedef [unique] RemSNB *wireSNB; 902 typedef [wire_marshal(wireSNB)] OLECHAR **SNB; 903 904 HRESULT CreateStream( 905 [in] LPCOLESTR pwcsName, 906 [in] DWORD grfMode, 907 [in] DWORD reserved1, 908 [in] DWORD reserved2, 909 [out] IStream **ppstm); 910 911 [local] 912 HRESULT OpenStream( 913 [in] LPCOLESTR pwcsName, 914 [in, unique] void *reserved1, 915 [in] DWORD grfMode, 916 [in] DWORD reserved2, 917 [out] IStream **ppstm); 918 919 [call_as(OpenStream)] 920 HRESULT RemoteOpenStream( 921 [in] LPCOLESTR pwcsName, 922 [in] unsigned long cbReserved1, 923 [in, unique, size_is(cbReserved1)] byte *reserved1, 924 [in] DWORD grfMode, 925 [in] DWORD reserved2, 926 [out] IStream **ppstm); 927 928 HRESULT CreateStorage( 929 [in] LPCOLESTR pwcsName, 930 [in] DWORD grfMode, 931 [in] DWORD dwStgFmt, 932 [in] DWORD reserved2, 933 [out] IStorage **ppstg); 934 935 HRESULT OpenStorage( 936 [in, unique] LPCOLESTR pwcsName, 937 [in, unique] IStorage *pstgPriority, 938 [in] DWORD grfMode, 939 [in, unique] SNB snbExclude, 940 [in] DWORD reserved, 941 [out] IStorage **ppstg); 942 943 HRESULT CopyTo( 944 [in] DWORD ciidExclude, 945 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude, 946 [in, unique] SNB snbExclude, 947 [in, unique] IStorage *pstgDest); 948 949 HRESULT MoveElementTo( 950 [in] LPCOLESTR pwcsName, 951 [in, unique] IStorage *pstgDest, 952 [in] LPCOLESTR pwcsNewName, 953 [in] DWORD grfFlags); 954 955 HRESULT Commit( 956 [in] DWORD grfCommitFlags); 957 958 HRESULT Revert(); 959 960 [local] 961 HRESULT EnumElements( 962 [in] DWORD reserved1, 963 [in, unique, size_is(1)] void *reserved2, 964 [in] DWORD reserved3, 965 [out] IEnumSTATSTG **ppenum); 966 967 [call_as(EnumElements)] 968 HRESULT RemoteEnumElements( 969 [in] DWORD reserved1, 970 [in] unsigned long cbReserved2, 971 [in, unique, size_is(cbReserved2)] byte *reserved2, 972 [in] DWORD reserved3, 973 [out] IEnumSTATSTG **ppenum); 974 975 HRESULT DestroyElement( 976 [in] LPCOLESTR pwcsName); 977 978 HRESULT RenameElement( 979 [in] LPCOLESTR pwcsOldName, 980 [in] LPCOLESTR pwcsNewName); 981 982 HRESULT SetElementTimes( 983 [in, unique] LPCOLESTR pwcsName, 984 [in, unique] const FILETIME *pctime, 985 [in, unique] const FILETIME *patime, 986 [in, unique] const FILETIME *pmtime); 987 988 HRESULT SetClass( 989 [in] REFCLSID clsid); 990 991 HRESULT SetStateBits( 992 [in] DWORD grfStateBits, 993 [in] DWORD grfMask); 994 995 HRESULT Stat( 996 [out] STATSTG *pstatstg, 997 [in] DWORD grfStatFlag); 998} 999 1000[ 1001 object, 1002 uuid(0000010b-0000-0000-C000-000000000046), 1003 pointer_default(unique) 1004] 1005interface IPersistFile : IPersist 1006{ 1007 typedef [unique] IPersistFile *LPPERSISTFILE; 1008 1009 HRESULT IsDirty(); 1010 1011 HRESULT Load( 1012 [in] LPCOLESTR pszFileName, 1013 [in] DWORD dwMode); 1014 1015 HRESULT Save( 1016 [in, unique] LPCOLESTR pszFileName, 1017 [in] BOOL fRemember); 1018 1019 HRESULT SaveCompleted( 1020 [in, unique] LPCOLESTR pszFileName); 1021 1022 HRESULT GetCurFile( 1023 [out] LPOLESTR *ppszFileName); 1024} 1025 1026[ 1027 object, 1028 uuid(0000010a-0000-0000-C000-000000000046), 1029 pointer_default(unique) 1030] 1031interface IPersistStorage : IPersist 1032{ 1033 typedef [unique] IPersistStorage *LPPERSISTSTORAGE; 1034 1035 HRESULT IsDirty(); 1036 1037 HRESULT InitNew( 1038 [in, unique] IStorage *pStg); 1039 1040 HRESULT Load( 1041 [in, unique] IStorage *pStg); 1042 1043 HRESULT Save( 1044 [in, unique] IStorage *pStgSave, 1045 [in] BOOL fSameAsLoad); 1046 1047 HRESULT SaveCompleted( 1048 [in, unique] IStorage *pStgNew); 1049 1050 HRESULT HandsOffStorage(); 1051} 1052 1053[ 1054 object, 1055 uuid(00000012-0000-0000-C000-000000000046), 1056 pointer_default(unique) 1057] 1058interface IRootStorage : IUnknown 1059{ 1060 typedef [unique] IRootStorage *LPROOTSTORAGE; 1061 1062 HRESULT SwitchToFile( 1063 [in] LPOLESTR pszFile); 1064} 1065 1066[ 1067 object, 1068 uuid(0000000a-0000-0000-C000-000000000046), 1069 pointer_default(unique) 1070] 1071interface ILockBytes : IUnknown 1072{ 1073 typedef [unique] ILockBytes *LPLOCKBYTES; 1074 1075 [local] 1076 HRESULT ReadAt( 1077 [in] ULARGE_INTEGER ulOffset, 1078 [out, size_is(cb), length_is(*pcbRead)] 1079 void *pv, 1080 [in] ULONG cb, 1081 [out] ULONG *pcbRead); 1082 1083 [call_as(ReadAt)] 1084 HRESULT RemoteReadAt( 1085 [in] ULARGE_INTEGER ulOffset, 1086 [out, size_is(cb), length_is(*pcbRead)] 1087 byte *pv, 1088 [in] ULONG cb, 1089 [out] ULONG *pcbRead); 1090 1091 [local] 1092 HRESULT WriteAt( 1093 [in] ULARGE_INTEGER ulOffset, 1094 [in, size_is(cb)] const void *pv, 1095 [in] ULONG cb, 1096 [out] ULONG *pcbWritten); 1097 1098 [call_as(WriteAt)] 1099 HRESULT RemoteWriteAt( 1100 [in] ULARGE_INTEGER ulOffset, 1101 [in, size_is(cb)] const byte *pv, 1102 [in] ULONG cb, 1103 [out] ULONG *pcbWritten); 1104 1105 HRESULT Flush(); 1106 1107 HRESULT SetSize( 1108 [in] ULARGE_INTEGER cb); 1109 1110 HRESULT LockRegion( 1111 [in] ULARGE_INTEGER libOffset, 1112 [in] ULARGE_INTEGER cb, 1113 [in] DWORD dwLockType); 1114 1115 HRESULT UnlockRegion( 1116 [in] ULARGE_INTEGER libOffset, 1117 [in] ULARGE_INTEGER cb, 1118 [in] DWORD dwLockType); 1119 1120 HRESULT Stat( 1121 [out] STATSTG *pstatstg, 1122 [in] DWORD grfStatFlag); 1123} 1124 1125[ 1126 object, 1127 uuid(99caf010-415e-11cf-8814-00aa00b569f5), 1128 pointer_default(unique) 1129] 1130interface IFillLockBytes : IUnknown 1131{ 1132 [local] 1133 HRESULT FillAppend( 1134 [in, size_is(cb)] const void *pv, 1135 [in] ULONG cb, 1136 [out] ULONG *pcbWritten); 1137 1138 [call_as(FillAppend)] 1139 HRESULT RemoteFillAppend( 1140 [in, size_is(cb)] const byte *pv, 1141 [in] ULONG cb, 1142 [out] ULONG *pcbWritten); 1143 1144 [local] 1145 HRESULT FillAt( 1146 [in] ULARGE_INTEGER ulOffset, 1147 [in, size_is(cb)] const void *pv, 1148 [in] ULONG cb, 1149 [out] ULONG *pcbWritten); 1150 1151 [call_as(FillAt)] 1152 HRESULT RemoteFillAt( 1153 [in] ULARGE_INTEGER ulOffset, 1154 [in, size_is(cb)] const byte *pv, 1155 [in] ULONG cb, 1156 [out] ULONG *pcbWritten); 1157 1158 HRESULT SetFillSize( 1159 [in] ULARGE_INTEGER ulSize); 1160 1161 HRESULT Terminate( 1162 [in] BOOL bCanceled); 1163} 1164 1165[ 1166 object, 1167 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4), 1168 pointer_default(unique) 1169] 1170interface IProgressNotify : IUnknown 1171{ 1172 HRESULT OnProgress( 1173 [in] DWORD dwProgressCurrent, 1174 [in] DWORD dwProgressMaximum, 1175 [in] BOOL fAccurate, 1176 [in] BOOL fOwner); 1177} 1178 1179[ 1180 local, 1181 object, 1182 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4), 1183 pointer_default(unique) 1184] 1185interface ILayoutStorage : IUnknown 1186{ 1187 typedef struct tagStorageLayout { 1188 DWORD LayoutType; 1189 OLECHAR *pwcsElementName; 1190 LARGE_INTEGER cOffset; 1191 LARGE_INTEGER cBytes; 1192 } StorageLayout; 1193 1194 HRESULT LayoutScript( 1195 [in] StorageLayout *pStorageLayout, 1196 [in] DWORD nEntries, 1197 [in] DWORD glfInterleavedFlag); 1198 1199 HRESULT BeginMonitor(); 1200 1201 HRESULT EndMonitor(); 1202 1203 HRESULT ReLayoutDocfile( 1204 [in] OLECHAR *pwcsNewDfName); 1205 1206 HRESULT ReLayoutDocfileOnILockBytes( 1207 [in] ILockBytes *pILockBytes); 1208} 1209 1210[ 1211 object, 1212 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d) 1213] 1214interface IBlockingLock : IUnknown 1215{ 1216 HRESULT Lock( 1217 [in] DWORD dwTimeout); 1218 1219 HRESULT Unlock(); 1220} 1221 1222 1223[ 1224 object, 1225 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4) 1226] 1227interface ITimeAndNoticeControl : IUnknown 1228{ 1229 HRESULT SuppressChanges( 1230 [in] DWORD res1, 1231 [in] DWORD res2); 1232 1233} 1234 1235 1236 1237[ 1238 object, 1239 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4) 1240] 1241interface IOplockStorage: IUnknown 1242{ 1243 HRESULT CreateStorageEx( 1244 [in] LPCWSTR pwcsName, 1245 [in] DWORD grfMode, 1246 [in] DWORD stgfmt, 1247 [in] DWORD grfAttrs, 1248 [in] REFIID riid, 1249 [out, iid_is(riid)] void **ppstgOpen); 1250 1251 HRESULT OpenStorageEx( 1252 [in] LPCWSTR pwcsName, 1253 [in] DWORD grfMode, 1254 [in] DWORD stgfmt, 1255 [in] DWORD grfAttrs, 1256 [in] REFIID riid, 1257 [out, iid_is(riid)] void **ppstgOpen); 1258} 1259 1260/******************** Data Object ********************/ 1261 1262[ 1263 object, 1264 uuid(00000103-0000-0000-C000-000000000046), 1265 pointer_default(unique) 1266] 1267interface IEnumFORMATETC : IUnknown 1268{ 1269 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC; 1270 1271 typedef struct tagDVTARGETDEVICE { 1272 DWORD tdSize; 1273 WORD tdDriverNameOffset; 1274 WORD tdDeviceNameOffset; 1275 WORD tdPortNameOffset; 1276 WORD tdExtDevmodeOffset; 1277 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))] 1278 BYTE tdData[]; 1279 } DVTARGETDEVICE; 1280 1281 typedef CLIPFORMAT *LPCLIPFORMAT; 1282 1283 typedef struct tagFORMATETC { 1284 CLIPFORMAT cfFormat; 1285 [unique] DVTARGETDEVICE *ptd; 1286 DWORD dwAspect; 1287 LONG lindex; 1288 DWORD tymed; 1289 } FORMATETC, *LPFORMATETC; 1290 1291 [local] 1292 HRESULT Next( 1293 [in] ULONG celt, 1294 [out, size_is(celt), length_is(*pceltFetched)] 1295 FORMATETC *rgelt, 1296 [out] ULONG *pceltFetched); 1297 1298 [call_as(Next)] 1299 HRESULT RemoteNext( 1300 [in] ULONG celt, 1301 [out, size_is(celt), length_is(*pceltFetched)] 1302 FORMATETC *rgelt, 1303 [out] ULONG *pceltFetched); 1304 1305 HRESULT Skip( 1306 [in] ULONG celt); 1307 1308 HRESULT Reset(); 1309 1310 HRESULT Clone( 1311 [out] IEnumFORMATETC **ppenum); 1312} 1313 1314[ 1315 object, 1316 uuid(00000105-0000-0000-C000-000000000046), 1317 pointer_default(unique) 1318] 1319interface IEnumSTATDATA : IUnknown 1320{ 1321 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA; 1322 1323 typedef enum tagADVF { 1324 ADVF_NODATA = 1, 1325 ADVF_PRIMEFIRST = 2, 1326 ADVF_ONLYONCE = 4, 1327 ADVF_DATAONSTOP = 64, 1328 ADVFCACHE_NOHANDLER = 8, 1329 ADVFCACHE_FORCEBUILTIN = 16, 1330 ADVFCACHE_ONSAVE = 32 1331 } ADVF; 1332 1333 typedef struct tagSTATDATA 1334 { 1335 FORMATETC formatetc; 1336 DWORD advf; 1337 [unique] IAdviseSink *pAdvSink; 1338 DWORD dwConnection; 1339 } STATDATA, *LPSTATDATA; 1340 1341 [local] 1342 HRESULT Next( 1343 [in] ULONG celt, 1344 [out, size_is(celt), length_is(*pceltFetched)] 1345 STATDATA *rgelt, 1346 [out] ULONG *pceltFetched); 1347 1348 [call_as(Next)] 1349 HRESULT RemoteNext( 1350 [in] ULONG celt, 1351 [out, size_is(celt), length_is(*pceltFetched)] 1352 STATDATA *rgelt, 1353 [out] ULONG *pceltFetched); 1354 1355 HRESULT Skip( 1356 [in] ULONG celt); 1357 1358 HRESULT Reset(); 1359 1360 HRESULT Clone( 1361 [out] IEnumSTATDATA **ppenum); 1362} 1363 1364[ 1365 object, 1366 uuid(0000010f-0000-0000-C000-000000000046), 1367 pointer_default(unique) 1368] 1369interface IAdviseSink : IUnknown 1370{ 1371 typedef IAdviseSink *LPADVISESINK; 1372 1373 typedef [v1_enum] enum tagTYMED { 1374 TYMED_HGLOBAL = 1, 1375 TYMED_FILE = 2, 1376 TYMED_ISTREAM = 4, 1377 TYMED_ISTORAGE = 8, 1378 TYMED_GDI = 16, 1379 TYMED_MFPICT = 32, 1380 TYMED_ENHMF = 64, 1381 TYMED_NULL = 0 1382 } TYMED; 1383 1384 typedef struct tagRemSTGMEDIUM { 1385 DWORD tymed; 1386 DWORD dwHandleType; 1387 unsigned long pData; 1388 unsigned long pUnkForRelease; 1389 unsigned long cbData; 1390 [size_is(cbData)] byte data[]; 1391 } RemSTGMEDIUM; 1392 1393 typedef struct tagSTGMEDIUM { 1394 DWORD tymed; 1395 [switch_is(tymed)] union { 1396 [case(TYMED_GDI)] HBITMAP hBitmap; 1397 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict; 1398 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile; 1399 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal; 1400 [case(TYMED_FILE)] LPOLESTR lpszFileName; 1401 [case(TYMED_ISTREAM)] IStream *pstm; 1402 [case(TYMED_ISTORAGE)] IStorage *pstg; 1403 [default] ; 1404 } DUMMYUNIONNAME; 1405 [unique] IUnknown *pUnkForRelease; 1406 } uSTGMEDIUM; 1407 1408/* copied from wingdi.h */ 1409#define OBJ_PEN 1 1410#define OBJ_BRUSH 2 1411#define OBJ_DC 3 1412#define OBJ_METADC 4 1413#define OBJ_PAL 5 1414#define OBJ_FONT 6 1415#define OBJ_BITMAP 7 1416#define OBJ_REGION 8 1417#define OBJ_METAFILE 9 1418#define OBJ_MEMDC 10 1419#define OBJ_EXTPEN 11 1420#define OBJ_ENHMETADC 12 1421#define OBJ_ENHMETAFILE 13 1422 1423 typedef union _GDI_OBJECT switch(DWORD ObjectType) u { 1424 case OBJ_BITMAP: wireHBITMAP hBitmap; 1425 case OBJ_PAL: wireHPALETTE hPalette; 1426 default: wireHGLOBAL hGeneric; 1427 } GDI_OBJECT; 1428 1429 typedef struct _userSTGMEDIUM { 1430 union switch(DWORD tymed) u { 1431 case TYMED_NULL: ; 1432 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict; 1433 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile; 1434 case TYMED_GDI: GDI_OBJECT *hGdiHandle; 1435 case TYMED_HGLOBAL: wireHGLOBAL hGlobal; 1436 case TYMED_FILE: LPOLESTR lpszFileName; 1437 case TYMED_ISTREAM: BYTE_BLOB *pstm; 1438 case TYMED_ISTORAGE: BYTE_BLOB *pstg; 1439 } DUMMYUNIONNAME; 1440 IUnknown *pUnkForRelease; 1441 } userSTGMEDIUM; 1442 1443 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM; 1444 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM; 1445 1446 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM; 1447 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM; 1448 1449 typedef STGMEDIUM *LPSTGMEDIUM; 1450 1451 typedef struct _userFLAG_STGMEDIUM { 1452 long ContextFlags; 1453 long fPassOwnership; 1454 userSTGMEDIUM Stgmed; 1455 } userFLAG_STGMEDIUM; 1456 1457 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM; 1458 1459 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM { 1460 long ContextFlags; 1461 long fPassOwnership; 1462 STGMEDIUM Stgmed; 1463 } FLAG_STGMEDIUM; 1464 1465 [local] 1466 void OnDataChange( 1467 [in, unique] FORMATETC *pFormatetc, 1468 [in, unique] STGMEDIUM *pStgmed); 1469 1470 [call_as(OnDataChange)] 1471 HRESULT RemoteOnDataChange( 1472 [in, unique] FORMATETC *pFormatetc, 1473 [in, unique] ASYNC_STGMEDIUM *pStgmed); 1474 1475 [local] 1476 void OnViewChange( 1477 [in] DWORD dwAspect, 1478 [in] LONG lindex); 1479 1480 [call_as(OnViewChange)] 1481 HRESULT RemoteOnViewChange( 1482 [in] DWORD dwAspect, 1483 [in] LONG lindex); 1484 1485 [local] 1486 void OnRename( 1487 [in] IMoniker *pmk); 1488 1489 [call_as(OnRename)] 1490 HRESULT RemoteOnRename( 1491 [in] IMoniker *pmk); 1492 1493 [local] 1494 void OnSave(); 1495 1496 [call_as(OnSave)] 1497 HRESULT RemoteOnSave(); 1498 1499 [local] 1500 void OnClose(); 1501 1502 [call_as(OnClose)] 1503 HRESULT RemoteOnClose(); 1504} 1505 1506[ 1507 object, 1508 uuid(00000125-0000-0000-C000-000000000046), 1509 pointer_default(unique) 1510] 1511interface IAdviseSink2 : IAdviseSink 1512{ 1513 typedef [unique] IAdviseSink2 *LPADVISESINK2; 1514 1515 [local] 1516 void OnLinkSrcChange( 1517 [in, unique] IMoniker *pmk); 1518 1519 [call_as(OnLinkSrcChange)] 1520 HRESULT RemoteOnLinkSrcChange( 1521 [in, unique] IMoniker *pmk); 1522} 1523 1524[ 1525 object, 1526 uuid(0000010e-0000-0000-C000-000000000046), 1527 pointer_default(unique) 1528] 1529interface IDataObject : IUnknown 1530{ 1531 typedef [unique] IDataObject *LPDATAOBJECT; 1532 1533 typedef enum tagDATADIR { 1534 DATADIR_GET = 1, 1535 DATADIR_SET = 2 1536 } DATADIR; 1537 1538 [local] 1539 HRESULT GetData( 1540 [in, unique] FORMATETC *pformatetcIn, 1541 [out] STGMEDIUM *pmedium); 1542 1543 [call_as(GetData)] 1544 HRESULT RemoteGetData( 1545 [in, unique] FORMATETC *pformatetcIn, 1546 [out] STGMEDIUM *pRemoteMedium); 1547 1548 [local] 1549 HRESULT GetDataHere( 1550 [in, unique] FORMATETC *pformatetc, 1551 [in, out] STGMEDIUM *pmedium); 1552 1553 [call_as(GetDataHere)] 1554 HRESULT RemoteGetDataHere( 1555 [in, unique] FORMATETC *pformatetc, 1556 [in, out] STGMEDIUM *pRemoteMedium); 1557 1558 HRESULT QueryGetData( 1559 [in, unique] FORMATETC *pformatetc); 1560 1561 HRESULT GetCanonicalFormatEtc( 1562 [in, unique] FORMATETC *pformatectIn, 1563 [out] FORMATETC *pformatetcOut); 1564 1565 [local] 1566 HRESULT SetData( 1567 [in, unique] FORMATETC *pformatetc, 1568 [in, unique] STGMEDIUM *pmedium, 1569 [in] BOOL fRelease); 1570 1571 [call_as(SetData)] 1572 HRESULT RemoteSetData( 1573 [in, unique] FORMATETC *pformatetc, 1574 [in, unique] FLAG_STGMEDIUM *pmedium, 1575 [in] BOOL fRelease); 1576 1577 HRESULT EnumFormatEtc( 1578 [in] DWORD dwDirection, 1579 [out] IEnumFORMATETC **ppenumFormatEtc); 1580 1581 HRESULT DAdvise( 1582 [in] FORMATETC *pformatetc, 1583 [in] DWORD advf, 1584 [in, unique] IAdviseSink *pAdvSink, 1585 [out] DWORD *pdwConnection); 1586 1587 HRESULT DUnadvise( 1588 [in] DWORD dwConnection); 1589 1590 HRESULT EnumDAdvise( 1591 [out] IEnumSTATDATA **ppenumAdvise); 1592} 1593 1594[ 1595 local, 1596 object, 1597 uuid(00000110-0000-0000-C000-000000000046) 1598] 1599interface IDataAdviseHolder : IUnknown 1600{ 1601 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER; 1602 1603 HRESULT Advise( 1604 [in, unique] IDataObject *pDataObject, 1605 [in, unique] FORMATETC *pFetc, 1606 [in] DWORD advf, 1607 [in, unique] IAdviseSink *pAdvise, 1608 [out] DWORD *pdwConnection); 1609 1610 HRESULT Unadvise( 1611 [in] DWORD dwConnection); 1612 1613 HRESULT EnumAdvise( 1614 [out] IEnumSTATDATA **ppenumAdvise); 1615 1616 HRESULT SendOnDataChange( 1617 [in, unique] IDataObject *pDataObject, 1618 [in] DWORD dwReserved, 1619 [in] DWORD advf); 1620} 1621 1622/******************** Remoting ********************/ 1623 1624[ 1625 local, 1626 object, 1627 uuid(00000016-0000-0000-C000-000000000046) 1628] 1629interface IMessageFilter : IUnknown 1630{ 1631 typedef [unique] IMessageFilter *LPMESSAGEFILTER; 1632 1633 typedef enum tagCALLTYPE { 1634 CALLTYPE_TOPLEVEL = 1, 1635 CALLTYPE_NESTED = 2, 1636 CALLTYPE_ASYNC = 3, 1637 CALLTYPE_TOPLEVEL_CALLPENDING = 4, 1638 CALLTYPE_ASYNC_CALLPENDING = 5 1639 } CALLTYPE; 1640 1641 typedef enum tagSERVERCALL { 1642 SERVERCALL_ISHANDLED = 0, 1643 SERVERCALL_REJECTED = 1, 1644 SERVERCALL_RETRYLATER = 2 1645 } SERVERCALL; 1646 1647 typedef enum tagPENDINGTYPE { 1648 PENDINGTYPE_TOPLEVEL = 1, 1649 PENDINGTYPE_NESTED = 2 1650 } PENDINGTYPE; 1651 1652 typedef enum tagPENDINGMSG { 1653 PENDINGMSG_CANCELCALL = 0, 1654 PENDINGMSG_WAITNOPROCESS = 1, 1655 PENDINGMSG_WAITDEFPROCESS = 2 1656 } PENDINGMSG; 1657 1658 typedef struct tagINTERFACEINFO { 1659 IUnknown *pUnk; 1660 IID iid; 1661 WORD wMethod; 1662 } INTERFACEINFO, *LPINTERFACEINFO; 1663 1664 DWORD HandleInComingCall( 1665 [in] DWORD dwCallType, 1666 [in] HTASK htaskCaller, 1667 [in] DWORD dwTickCount, 1668 [in] LPINTERFACEINFO lpInterfaceInfo); 1669 1670 DWORD RetryRejectedCall( 1671 [in] HTASK htaskCallee, 1672 [in] DWORD dwTickCount, 1673 [in] DWORD dwRejectType); 1674 1675 DWORD MessagePending( 1676 [in] HTASK htaskCallee, 1677 [in] DWORD dwTickCount, 1678 [in] DWORD dwPendingType); 1679} 1680 1681[ 1682 local, 1683 object, 1684 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A) 1685] 1686interface IRpcChannelBuffer : IUnknown 1687{ 1688 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER; 1689 1690 typedef unsigned long RPCOLEDATAREP; 1691 1692 typedef struct tagRPCOLEMESSAGE { 1693 void *reserved1; 1694 RPCOLEDATAREP dataRepresentation; 1695 void *Buffer; 1696 ULONG cbBuffer; 1697 ULONG iMethod; 1698 void *reserved2[5]; 1699 ULONG rpcFlags; 1700 } RPCOLEMESSAGE; 1701 1702 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE; 1703 1704 HRESULT GetBuffer( 1705 [in] RPCOLEMESSAGE *pMessage, 1706 [in] REFIID riid); 1707 1708 HRESULT SendReceive( 1709 [in,out] RPCOLEMESSAGE *pMessage, 1710 [out] ULONG *pStatus); 1711 1712 HRESULT FreeBuffer( 1713 [in] RPCOLEMESSAGE *pMessage); 1714 1715 HRESULT GetDestCtx( 1716 [out] DWORD *pdwDestContext, 1717 [out] void **ppvDestContext); 1718 1719 HRESULT IsConnected(); 1720} 1721 1722[ 1723 local, 1724 object, 1725 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf) 1726] 1727interface IRpcChannelBuffer2 : IRpcChannelBuffer 1728{ 1729 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2; 1730 1731 HRESULT GetProtocolVersion( 1732 [in,out] DWORD *pdwVersion); 1733} 1734 1735[ 1736 local, 1737 object, 1738 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2) 1739] 1740interface IRpcChannelBuffer3 : IRpcChannelBuffer2 1741{ 1742 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3; 1743 1744 HRESULT Send( 1745 [in,out] RPCOLEMESSAGE *pMsg, 1746 [out] ULONG *pulStatus); 1747 1748 HRESULT Receive( 1749 [in,out] RPCOLEMESSAGE *pMsg, 1750 [in] ULONG ulSize, 1751 [out] ULONG *pulStatus); 1752 1753 HRESULT Cancel( 1754 [in] RPCOLEMESSAGE *pMsg); 1755 1756 HRESULT GetCallContext( 1757 [in] RPCOLEMESSAGE *pMsg, 1758 [in] REFIID riid, 1759 [out] void **pInterface); 1760 1761 HRESULT GetDestCtxEx( 1762 [in] RPCOLEMESSAGE *pMsg, 1763 [out] DWORD *pdwDestContext, 1764 [out] void **ppvDestContext); 1765 1766 HRESULT GetState( 1767 [in] RPCOLEMESSAGE *pMsg, 1768 [out] DWORD *pState); 1769 1770 HRESULT RegisterAsync( 1771 [in] RPCOLEMESSAGE *pMsg, 1772 [in] IAsyncManager *pAsyncMgr); 1773} 1774 1775[ 1776 local, 1777 object, 1778 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa), 1779 pointer_default(unique) 1780] 1781interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2 1782{ 1783 HRESULT Send( 1784 [in, out] RPCOLEMESSAGE *pMsg, 1785 [in] ISynchronize *pSync, 1786 [out] ULONG *pulStatus); 1787 1788 HRESULT Receive( 1789 [in, out] RPCOLEMESSAGE *pMsg, 1790 [out] ULONG *pulStatus); 1791 1792 HRESULT GetDestCtxEx( 1793 [in] RPCOLEMESSAGE *pMsg, 1794 [out] DWORD *pdwDestContext, 1795 [out] void **ppvDestContext); 1796} 1797 1798[ 1799 local, 1800 object, 1801 uuid(58a08519-24c8-4935-b482-3fd823333a4f) 1802] 1803interface IRpcSyntaxNegotiate : IUnknown 1804{ 1805 HRESULT NegotiateSyntax( 1806 [in, out] RPCOLEMESSAGE *pMsg); 1807} 1808 1809[ 1810 local, 1811 object, 1812 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A) 1813] 1814interface IRpcProxyBuffer : IUnknown 1815{ 1816 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER; 1817 1818 HRESULT Connect( 1819 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer); 1820 1821 void Disconnect(); 1822} 1823 1824[ 1825 local, 1826 object, 1827 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A) 1828] 1829interface IRpcStubBuffer : IUnknown 1830{ 1831 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER; 1832 1833 HRESULT Connect( 1834 [in] IUnknown *pUnkServer); 1835 1836 void Disconnect(); 1837 1838 HRESULT Invoke( 1839 [in] RPCOLEMESSAGE *_prpcmsg, 1840 [in] IRpcChannelBuffer *_pRpcChannelBuffer); 1841 1842 IRpcStubBuffer *IsIIDSupported( 1843 [in] REFIID riid); 1844 1845 ULONG CountRefs(); 1846 1847 HRESULT DebugServerQueryInterface( 1848 void **ppv); 1849 1850 void DebugServerRelease( 1851 void *pv); 1852} 1853 1854[ 1855 local, 1856 object, 1857 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A) 1858] 1859interface IPSFactoryBuffer : IUnknown 1860{ 1861 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER; 1862 1863 HRESULT CreateProxy( 1864 [in] IUnknown *pUnkOuter, 1865 [in] REFIID riid, 1866 [out] IRpcProxyBuffer **ppProxy, 1867 [out] void **ppv); 1868 1869 HRESULT CreateStub( 1870 [in] REFIID riid, 1871 [in, unique] IUnknown *pUnkServer, 1872 [out] IRpcStubBuffer **ppStub); 1873} 1874 1875[ 1876 local, 1877 object, 1878 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4) 1879] 1880interface IChannelHook : IUnknown 1881{ 1882 typedef [unique] IChannelHook *LPCHANNELHOOK; 1883 1884 typedef struct SChannelHookCallInfo { 1885 IID iid; 1886 DWORD cbSize; 1887 GUID uCausality; 1888 DWORD dwServerPid; 1889 DWORD iMethod; 1890 void *pObject; 1891 } SChannelHookCallInfo; 1892 1893 void ClientGetSize( 1894 [in] REFGUID uExtent, 1895 [in] REFIID riid, 1896 [out] ULONG *pDataSize); 1897 1898 void ClientFillBuffer( 1899 [in] REFGUID uExtent, 1900 [in] REFIID riid, 1901 [in, out] ULONG *pDataSize, 1902 [in] void *pDataBuffer); 1903 1904 void ClientNotify( 1905 [in] REFGUID uExtent, 1906 [in] REFIID riid, 1907 [in] ULONG cbDataSize, 1908 [in] void *pDataBuffer, 1909 [in] DWORD lDataRep, 1910 [in] HRESULT hrFault); 1911 1912 void ServerNotify( 1913 [in] REFGUID uExtent, 1914 [in] REFIID riid, 1915 [in] ULONG cbDataSize, 1916 [in] void *pDataBuffer, 1917 [in] DWORD lDataRep); 1918 1919 void ServerGetSize( 1920 [in] REFGUID uExtent, 1921 [in] REFIID riid, 1922 [in] HRESULT hrFault, 1923 [out] ULONG *pDataSize); 1924 1925 void ServerFillBuffer( 1926 [in] REFGUID uExtent, 1927 [in] REFIID riid, 1928 [in, out] ULONG *pDataSize, 1929 [in] void *pDataBuffer, 1930 [in] HRESULT hrFault ); 1931} 1932 1933extern const FMTID FMTID_SummaryInformation; 1934extern const FMTID FMTID_DocSummaryInformation; 1935extern const FMTID FMTID_UserDefinedProperties; 1936 1937 1938/******************** Connection Points ********************/ 1939/* FIXME */ 1940 1941/******************** DCOM ********************/ 1942 1943[ 1944 local, 1945 object, 1946 uuid(0000013D-0000-0000-C000-000000000046) 1947] 1948interface IClientSecurity : IUnknown 1949{ 1950 typedef struct tagSOLE_AUTHENTICATION_SERVICE { 1951 DWORD dwAuthnSvc; 1952 DWORD dwAuthzSvc; 1953 OLECHAR *pPrincipalName; 1954 HRESULT hr; 1955 } SOLE_AUTHENTICATION_SERVICE; 1956 1957 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE; 1958 1959 typedef struct tagSOLE_AUTHENTICATION_INFO { 1960 DWORD dwAuthnSvc; 1961 DWORD dwAuthzSvc; 1962 void *pAuthInfo; 1963 } SOLE_AUTHENTICATION_INFO; 1964 1965 const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1; 1966 const void *COLE_DEFAULT_AUTHINFO = (void*) -1; 1967 1968 typedef struct tagSOLE_AUTHENTICATION_LIST { 1969 DWORD cAuthInfo; 1970 SOLE_AUTHENTICATION_INFO *aAuthInfo; 1971 } SOLE_AUTHENTICATION_LIST; 1972 1973 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { 1974 EOAC_NONE = 0x0, 1975 EOAC_MUTUAL_AUTH = 0x1, 1976 EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */ 1977 EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */ 1978 EOAC_APPID = 0x8, /* CoInitializeSecurity only */ 1979 EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */ 1980 EOAC_STATIC_CLOAKING = 0x20, 1981 EOAC_DYNAMIC_CLOAKING = 0x40, 1982 EOAC_ANY_AUTHORITY = 0x80, 1983 EOAC_MAKE_FULLSIC = 0x100, 1984 EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */ 1985 EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */ 1986 EOAC_DEFAULT = 0x800, 1987 EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */ 1988 EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */ 1989 } EOLE_AUTHENTICATION_CAPABILITIES; 1990 1991 HRESULT QueryBlanket( 1992 [in] IUnknown *pProxy, 1993 [out] DWORD *pAuthnSvc, 1994 [out] DWORD *pAuthzSvc, 1995 [out] OLECHAR **pServerPrincName, 1996 [out] DWORD *pAuthnLevel, 1997 [out] DWORD *pImpLevel, 1998 [out] void **pAuthInfo, 1999 [out] DWORD *pCapabilities); 2000 2001 HRESULT SetBlanket( 2002 [in] IUnknown *pProxy, 2003 [in] DWORD AuthnSvc, 2004 [in] DWORD AuthzSvc, 2005 [in] OLECHAR *pServerPrincName, 2006 [in] DWORD AuthnLevel, 2007 [in] DWORD ImpLevel, 2008 [in] void *pAuthInfo, 2009 [in] DWORD Capabilities); 2010 2011 HRESULT CopyProxy( 2012 [in] IUnknown *pProxy, 2013 [out] IUnknown **ppCopy); 2014} 2015 2016[ 2017 local, 2018 object, 2019 uuid(0000013E-0000-0000-C000-000000000046) 2020] 2021interface IServerSecurity : IUnknown 2022{ 2023 HRESULT QueryBlanket( 2024 [out] DWORD *pAuthnSvc, 2025 [out] DWORD *pAuthzSvc, 2026 [out] OLECHAR **pServerPrincName, 2027 [out] DWORD *pAuthnLevel, 2028 [out] DWORD *pImpLevel, 2029 [out] void **pPrivs, 2030 [out] DWORD *pCapabilities); 2031 2032 HRESULT ImpersonateClient(); 2033 2034 HRESULT RevertToSelf(); 2035 2036 BOOL IsImpersonating(); 2037} 2038 2039[ 2040 local, 2041 object, 2042 uuid(00000024-0000-0000-C000-000000000046) 2043] 2044interface IAsyncSetup : IUnknown 2045{ 2046 HRESULT GetAsyncManager( 2047 [in] REFIID riid, 2048 [in] IUnknown *pOuter, 2049 [in] DWORD dwFlags, 2050 [out] IUnknown **ppInner, 2051 [out] IAsyncManager **ppAsyncMgr); 2052} 2053 2054[ 2055 object, 2056 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4) 2057] 2058interface IDirectWriterLock : IUnknown 2059{ 2060 HRESULT WaitForWriteAccess( 2061 [in] DWORD dwTimeout); 2062 2063 HRESULT ReleaseWriteAccess(); 2064 2065 HRESULT HaveWriteAccess(); 2066} 2067 2068[ 2069 object, 2070 uuid(00000030-0000-0000-C000-000000000046) 2071] 2072 2073interface ISynchronize : IUnknown 2074{ 2075 HRESULT Wait( 2076 [in] DWORD dwFlags, 2077 [in] DWORD dwMilliseconds); 2078 2079 HRESULT Signal(); 2080 2081 HRESULT Reset(); 2082} 2083 2084 2085[ 2086 local, 2087 object, 2088 uuid(00000031-0000-0000-C000-000000000046) 2089] 2090interface ISynchronizeHandle : IUnknown 2091{ 2092 HRESULT GetHandle( 2093 [out] HANDLE *ph); 2094} 2095 2096 2097[ 2098 local, 2099 object, 2100 uuid(00000032-0000-0000-C000-000000000046) 2101] 2102interface ISynchronizeEvent : ISynchronizeHandle 2103{ 2104 HRESULT SetEventHandle( 2105 [in] HANDLE *ph); 2106} 2107 2108 2109[ 2110 local, 2111 object, 2112 uuid(00000033-0000-0000-C000-000000000046) 2113] 2114interface ISynchronizeContainer : IUnknown 2115{ 2116 HRESULT AddSynchronize( 2117 [in] ISynchronize *pSync); 2118 2119 HRESULT WaitMultiple( 2120 [in] DWORD dwFlags, 2121 [in] DWORD dwTimeOut, 2122 [out] ISynchronize **ppSync); 2123} 2124 2125[ 2126 local, 2127 object, 2128 uuid(00000025-0000-0000-C000-000000000046) 2129] 2130interface ISynchronizeMutex : ISynchronize 2131{ 2132 HRESULT ReleaseMutex(); 2133} 2134 2135[ 2136 local, 2137 object, 2138 uuid(00000029-0000-0000-C000-000000000046) 2139] 2140 2141interface ICancelMethodCalls : IUnknown 2142{ 2143 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS; 2144 2145 HRESULT Cancel( 2146 [in] ULONG ulSeconds); 2147 2148 HRESULT TestCancel(); 2149} 2150 2151[ 2152 local, 2153 object, 2154 uuid(0000002A-0000-0000-C000-000000000046) 2155] 2156interface IAsyncManager : IUnknown 2157{ 2158 typedef enum tagDCOM_CALL_STATE { 2159 DCOM_NONE = 0, 2160 DCOM_CALL_COMPLETE = 1, 2161 DCOM_CALL_CANCELED = 2 2162 } DCOM_CALL_STATE; 2163 2164 HRESULT CompleteCall( 2165 [in] HRESULT Result); 2166 2167 HRESULT GetCallContext( 2168 [in] REFIID riid, 2169 [out] void **pInterface); 2170 2171 HRESULT GetState( 2172 [out] ULONG *pulStateFlags); 2173} 2174 2175[ 2176 local, 2177 object, 2178 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d), 2179 pointer_default(unique) 2180] 2181interface ICallFactory : IUnknown 2182{ 2183 HRESULT CreateCall( 2184 [in] REFIID riid, 2185 [in] IUnknown *pCtrlUnk, 2186 [in] REFIID riid2, 2187 [out, iid_is(riid2)] IUnknown **ppv); 2188} 2189 2190[ 2191 local, 2192 object, 2193 uuid(00000144-0000-0000-C000-000000000046) 2194] 2195interface IRpcOptions : IUnknown 2196{ 2197 HRESULT Set( 2198 [in] IUnknown *pPrx, 2199 [in] DWORD dwProperty, 2200 [in] ULONG_PTR dwValue); 2201 2202 HRESULT Query( 2203 [in] IUnknown *pPrx, 2204 [in] DWORD dwProperty, 2205 [out] ULONG_PTR *pdwValue); 2206} 2207 2208enum { 2209 COMBND_RPCTIMEOUT = 1, 2210 COMBND_SERVER_LOCALITY = 2 2211}; 2212 2213enum { 2214 SERVER_LOCALITY_PROCESS_LOCAL = 0, 2215 SERVER_LOCALITY_MACHINE_LOCAL = 1, 2216 SERVER_LOCALITY_REMOTE = 2 2217}; 2218 2219[ 2220 local, 2221 object, 2222 uuid(00000149-0000-0000-C000-000000000046), 2223 pointer_default(unique) 2224] 2225interface IRpcHelper : IUnknown 2226{ 2227 HRESULT GetDCOMProtocolVersion( 2228 [out] DWORD *pComVersion); 2229 2230 HRESULT GetIIDFromOBJREF( 2231 [in] void *pObjRef, 2232 [out] IID **piid); 2233} 2234 2235[ 2236 local, 2237 object, 2238 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859) 2239] 2240interface IReleaseMarshalBuffers : IUnknown 2241{ 2242 HRESULT ReleaseMarshalBuffer( 2243 [in] RPCOLEMESSAGE *pMsg, 2244 [in] DWORD dwFlags, 2245 [in, unique] IUnknown *pChnl); 2246} 2247 2248[ 2249 local, 2250 object, 2251 uuid(0000002B-0000-0000-C000-000000000046) 2252] 2253interface IWaitMultiple : IUnknown 2254{ 2255 HRESULT WaitMultiple( 2256 [in] DWORD timeout, 2257 [out] ISynchronize **pSync); 2258 HRESULT AddSynchronize( 2259 [in] ISynchronize *pSync); 2260} 2261 2262 2263[ 2264 object, 2265 uuid(00000026-0000-0000-C000-000000000046) 2266] 2267interface IUrlMon : IUnknown 2268{ 2269 HRESULT AsyncGetClassBits( 2270 [in] REFCLSID rclsid, 2271 [in, unique] LPCWSTR pszTYPE, 2272 [in, unique] LPCWSTR pszExt, 2273 [in] DWORD dwFileVersionMS, 2274 [in] DWORD dwFileVersionLS, 2275 [in, unique] LPCWSTR pszCodeBase, 2276 [in] IBindCtx *pbc, 2277 [in] DWORD dwClassContext, 2278 [in] REFIID riid, 2279 [in] DWORD flags); 2280} 2281 2282[ 2283 local, 2284 object, 2285 uuid(00000145-0000-0000-C000-000000000046) 2286] 2287interface IForegroundTransfer : IUnknown 2288{ 2289 HRESULT AllowForegroundTransfer( 2290 [in] void *lpvReserved); 2291} 2292 2293[ 2294 local, 2295 object, 2296 uuid(00000147-0000-0000-C000-000000000046) 2297] 2298interface IAddrTrackingControl : IUnknown 2299{ 2300 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL; 2301 2302 HRESULT EnableCOMDynamicAddrTracking(); 2303 HRESULT DisableCOMDynamicAddrTracking(); 2304} 2305 2306[ 2307 local, 2308 object, 2309 uuid(00000148-0000-0000-C000-000000000046) 2310] 2311interface IAddrExclusionControl : IUnknown 2312{ 2313 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL; 2314 2315 HRESULT GetCurrentAddrExclusionList( 2316 [in] REFIID riid, 2317 [out, iid_is(riid)] void **ppEnumerator); 2318 HRESULT UpdateAddrExclusionList( 2319 [in] IUnknown *pEnumerator); 2320} 2321 2322typedef enum _APTTYPE { 2323 APTTYPE_CURRENT = -1, 2324 APTTYPE_STA = 0, 2325 APTTYPE_MTA = 1, 2326 APTTYPE_NA = 2, 2327 APTTYPE_MAINSTA = 3 2328} APTTYPE; 2329 2330typedef enum _APTTYPEQUALIFIER { 2331 APTTYPEQUALIFIER_NONE = 0, 2332 APTTYPEQUALIFIER_IMPLICIT_MTA = 1, 2333 APTTYPEQUALIFIER_NA_ON_MTA = 2, 2334 APTTYPEQUALIFIER_NA_ON_STA = 3, 2335 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4, 2336 APTTYPEQUALIFIER_NA_ON_MAINSTA = 5 2337} APTTYPEQUALIFIER; 2338 2339typedef enum _THDTYPE { 2340 THDTYPE_BLOCKMESSAGES = 0, 2341 THDTYPE_PROCESSMESSAGES = 1 2342} THDTYPE; 2343 2344[ 2345 local, 2346 object, 2347 uuid(000001ce-0000-0000-C000-000000000046), 2348 pointer_default(unique) 2349] 2350interface IComThreadingInfo : IUnknown 2351{ 2352 HRESULT GetCurrentApartmentType( 2353 [out] APTTYPE *pAptType); 2354 HRESULT GetCurrentThreadType( 2355 [out] THDTYPE *pThreadType); 2356 HRESULT GetCurrentLogicalThreadId( 2357 [out] GUID *pguidLogicalThreadId); 2358 HRESULT SetCurrentLogicalThreadId( 2359 [in] REFGUID rguid); 2360} 2361 2362 2363[ 2364 object, 2365 pointer_default(unique), 2366 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9) 2367] 2368interface IProcessInitControl : IUnknown 2369{ 2370 HRESULT ResetInitializerTimeout( 2371 [in] DWORD dwSecondsRemaining); 2372} 2373 2374[ 2375 local, 2376 object, 2377 uuid(00000034-0000-0000-C000-000000000046), 2378 pointer_default(unique) 2379] 2380interface IInitializeSpy : IUnknown 2381{ 2382 typedef [unique] IInitializeSpy *LPINITIALIZESPY; 2383 2384 HRESULT PreInitialize( 2385 [in] DWORD dwCoInit, 2386 [in] DWORD dwCurThreadAptRefs); 2387 2388 HRESULT PostInitialize( 2389 [in] HRESULT hrCoInit, 2390 [in] DWORD dwCoInit, 2391 [in] DWORD dwNewThreadAptRefs); 2392 2393 HRESULT PreUninitialize( 2394 [in] DWORD dwCurThreadAptRefs); 2395 2396 HRESULT PostUninitialize( 2397 [in] DWORD dwNewThreadAptRefs); 2398} 2399 2400[ 2401 object, 2402 uuid(969dc708-5c76-11d1-8d86-0000f804b057) 2403] 2404interface IThumbnailExtractor : IUnknown 2405{ 2406 HRESULT ExtractThumbnail( 2407 [in] IStorage *pStg, 2408 [in] ULONG ulLength, 2409 [in] ULONG ulHeight, 2410 [out] ULONG *pulOutputLength, 2411 [out] ULONG *pulOutputHeight, 2412 [out] HBITMAP *phOutputBitmap); 2413 2414 2415 HRESULT OnFileUpdated( 2416 [in] IStorage *pStg); 2417} 2418 2419typedef enum tagGLOBALOPT_PROPERTIES 2420{ 2421 COMGLB_EXCEPTION_HANDLING = 1, 2422 COMGLB_APPID = 2, 2423 COMGLB_RPC_THREADPOOL_SETTING = 3 2424} GLOBALOPT_PROPERTIES; 2425 2426typedef enum tagGLOBALOPT_EH_VALUES 2427{ 2428 COMGLB_EXCEPTION_HANDLE = 0, 2429 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1, 2430 COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL, 2431 COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2 2432} GLOBALOPT_EH_VALUES; 2433 2434typedef enum tagGLOBALOPT_RPCTP_VALUES 2435{ 2436 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0, 2437 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1 2438} GLOBALOPT_RPCTP_VALUES; 2439 2440 2441[ 2442 object, 2443 local, 2444 pointer_default(unique), 2445 uuid(0000015B-0000-0000-C000-000000000046) 2446] 2447interface IGlobalOptions : IUnknown 2448{ 2449 HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value); 2450 HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value); 2451} 2452 2453[ 2454 object, 2455 pointer_default(unique), 2456 uuid(947990de-cc28-11d2-a0f7-00805f858fb1) 2457] 2458interface IDummyHICONIncluder : IUnknown 2459{ 2460 HRESULT Dummy([in] HICON hIcon, [in] HDC hdc); 2461} 2462 2463[ 2464 object, 2465 local, 2466 pointer_default(unique), 2467 uuid(a2f05a09-27a2-42b5-bc0e-ac163ef49d9b) 2468] 2469interface IApartmentShutdown : IUnknown 2470{ 2471 void OnUninitialize([in] UINT64 identifier); 2472} 2473 2474cpp_quote("#ifdef USE_COM_CONTEXT_DEF") 2475 2476typedef DWORD CPFLAGS; 2477 2478typedef struct tagContextProperty 2479{ 2480 GUID policyId; 2481 CPFLAGS flags; 2482 [unique] IUnknown *pUnk; 2483} ContextProperty; 2484 2485[ 2486 local, 2487 object, 2488 uuid(000001c1-0000-0000-C000-000000000046) 2489] 2490interface IEnumContextProps : IUnknown 2491{ 2492 typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS; 2493 2494 HRESULT Next( 2495 [in] ULONG celt, 2496 [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties, 2497 [out] ULONG *pceltFetched); 2498 2499 HRESULT Skip( 2500 [in] ULONG celt); 2501 2502 HRESULT Reset(); 2503 2504 HRESULT Clone( 2505 [out] IEnumContextProps **ppEnumContextProps); 2506 2507 HRESULT Count( 2508 [out] ULONG *pcelt); 2509} 2510 2511[ 2512 local, 2513 object, 2514 uuid(000001c0-0000-0000-C000-000000000046) 2515] 2516interface IContext : IUnknown 2517{ 2518 HRESULT SetProperty( 2519 [in] REFGUID policyId, 2520 [in] CPFLAGS flags, 2521 [in] IUnknown *pUnk); 2522 2523 HRESULT RemoveProperty( 2524 [in] REFGUID policyId); 2525 2526 HRESULT GetProperty( 2527 [in] REFGUID guid, 2528 [out] CPFLAGS *pFlags, 2529 [out] IUnknown **ppUnk); 2530 2531 HRESULT EnumContextProps( 2532 [out] IEnumContextProps **ppEnumContextProps); 2533} 2534 2535[ 2536 local, 2537 object, 2538 uuid(000001c6-0000-0000-c000-000000000046), 2539 pointer_default(unique) 2540] 2541interface IObjContext : IContext 2542{ 2543 void Reserved1(); 2544 void Reserved2(); 2545 void Reserved3(); 2546 void Reserved4(); 2547 void Reserved5(); 2548 void Reserved6(); 2549 void Reserved7(); 2550} 2551 2552cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */") 2553