Reactos
at master 1404 lines 31 kB view raw
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#define DO_NO_IMPORTS 22#define OBJIDL_UNDEF_DO_NO_IMPORTS 23#endif 24 25#include "objidlbase.idl" 26#ifdef OBJIDL_UNDEF_DO_NO_IMPORTS 27#undef DO_NO_IMPORTS 28#endif 29 30interface IRunningObjectTable; 31interface IMoniker; 32interface IAdviseSink; 33 34[ 35 local, 36 object, 37 uuid(0000001d-0000-0000-C000-000000000046) 38] 39interface IMallocSpy : IUnknown 40{ 41 typedef [unique] IMallocSpy *LPMALLOCSPY; 42 43 SIZE_T PreAlloc( 44 [in] SIZE_T cbRequest); 45 46 LPVOID PostAlloc( 47 [in] LPVOID pActual); 48 49 LPVOID PreFree( 50 [in] LPVOID pRequest, 51 [in] BOOL fSpyed); 52 53 void PostFree( 54 [in] BOOL fSpyed); 55 56 SIZE_T PreRealloc( 57 [in] LPVOID pRequest, 58 [in] SIZE_T cbRequest, 59 [out] LPVOID *ppNewRequest, 60 [in] BOOL fSpyed); 61 62 LPVOID PostRealloc( 63 [in] LPVOID pActual, 64 [in] BOOL fSpyed); 65 66 LPVOID PreGetSize( 67 [in] LPVOID pRequest, 68 [in] BOOL fSpyed); 69 70 SIZE_T PostGetSize( 71 [in] SIZE_T cbActual, 72 [in] BOOL fSpyed); 73 74 LPVOID PreDidAlloc( 75 [in] LPVOID pRequest, 76 [in] BOOL fSpyed); 77 78 int PostDidAlloc( 79 [in] LPVOID pRequest, 80 [in] BOOL fSpyed, 81 [in] int fActual); 82 83 void PreHeapMinimize(); 84 85 void PostHeapMinimize(); 86} 87 88/******************** Monikers ********************/ 89 90[ 91 object, 92 uuid(0000000e-0000-0000-C000-000000000046), 93 pointer_default(unique) 94] 95interface IBindCtx : IUnknown 96{ 97 typedef [unique] IBindCtx *LPBINDCTX; 98 typedef [unique] IBindCtx *LPBC; 99 100 typedef struct tagBIND_OPTS { 101 DWORD cbStruct; 102 DWORD grfFlags; 103 DWORD grfMode; 104 DWORD dwTickCountDeadline; 105 } BIND_OPTS, *LPBIND_OPTS; 106 107 /* FIXME: C++ crap */ 108 typedef struct tagBIND_OPTS2 { 109 DWORD cbStruct; 110 DWORD grfFlags; 111 DWORD grfMode; 112 DWORD dwTickCountDeadline; 113 DWORD dwTrackFlags; 114 DWORD dwClassContext; 115 LCID locale; 116 COSERVERINFO *pServerInfo; 117 } BIND_OPTS2, *LPBIND_OPTS2; 118 119 typedef struct tagBIND_OPTS3 { 120 DWORD cbStruct; 121 DWORD grfFlags; 122 DWORD grfMode; 123 DWORD dwTickCountDeadline; 124 DWORD dwTrackFlags; 125 DWORD dwClassContext; 126 LCID locale; 127 COSERVERINFO *pServerInfo; 128 HWND hwnd; 129 } BIND_OPTS3, *LPBIND_OPTS3; 130 131 typedef enum tagBIND_FLAGS { 132 BIND_MAYBOTHERUSER = 1, 133 BIND_JUSTTESTEXISTENCE = 2 134 } BIND_FLAGS; 135 136 HRESULT RegisterObjectBound( 137 [in, unique] IUnknown *punk); 138 139 HRESULT RevokeObjectBound( 140 [in, unique] IUnknown *punk); 141 142 HRESULT ReleaseBoundObjects(); 143 144 [local] 145 HRESULT SetBindOptions( 146 [in] BIND_OPTS *pbindopts); 147 148 [call_as(SetBindOptions)] 149 HRESULT RemoteSetBindOptions( 150 [in] BIND_OPTS2 *pbindopts); 151 152 [local] 153 HRESULT GetBindOptions( 154 [in, out] BIND_OPTS *pbindopts); 155 156 [call_as(GetBindOptions)] 157 HRESULT RemoteGetBindOptions( 158 [in, out] BIND_OPTS2 *pbindopts); 159 160 HRESULT GetRunningObjectTable( 161 [out] IRunningObjectTable **pprot); 162 163 HRESULT RegisterObjectParam( 164 [in] LPOLESTR pszKey, 165 [in, unique] IUnknown *punk); 166 167 HRESULT GetObjectParam( 168 [in] LPOLESTR pszKey, 169 [out] IUnknown **ppunk); 170 171 HRESULT EnumObjectParam( 172 [out] IEnumString **ppenum); 173 174 HRESULT RevokeObjectParam( 175 [in] LPOLESTR pszKey); 176} 177 178[ 179 object, 180 uuid(00000102-0000-0000-C000-000000000046), 181 pointer_default(unique) 182] 183interface IEnumMoniker : IUnknown 184{ 185 typedef [unique] IEnumMoniker *LPENUMMONIKER; 186 187 [local] 188 HRESULT Next( 189 [in] ULONG celt, 190 [out, size_is(celt), length_is(*pceltFetched)] 191 IMoniker **rgelt, 192 [out] ULONG *pceltFetched); 193 194 [call_as(Next)] 195 HRESULT RemoteNext( 196 [in] ULONG celt, 197 [out, size_is(celt), length_is(*pceltFetched)] 198 IMoniker **rgelt, 199 [out] ULONG *pceltFetched); 200 201 HRESULT Skip( 202 [in] ULONG celt); 203 204 HRESULT Reset(); 205 206 HRESULT Clone( 207 [out] IEnumMoniker **ppenum); 208} 209 210[ 211 object, 212 uuid(00000126-0000-0000-C000-000000000046) 213] 214interface IRunnableObject : IUnknown 215{ 216 typedef [unique] IRunnableObject *LPRUNNABLEOBJECT; 217 218 HRESULT GetRunningClass( 219 [out] LPCLSID lpClsid); 220 221 HRESULT Run( 222 [in] LPBINDCTX pbc); 223 224 [local] 225 BOOL IsRunning(); 226 227 [call_as(IsRunning)] 228 HRESULT RemoteIsRunning(); 229 230 HRESULT LockRunning( 231 [in] BOOL fLock, 232 [in] BOOL fLastUnlockCloses); 233 234 HRESULT SetContainedObject( 235 [in] BOOL fContained); 236} 237 238/* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject), 239 * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined, 240 * but GetObject is used as a valid method name below, so we have 241 * to undefine it in that case */ 242cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") 243cpp_quote("#undef GetObject") 244cpp_quote("#endif") 245 246[ 247 object, 248 uuid(00000010-0000-0000-C000-000000000046) 249] 250interface IRunningObjectTable : IUnknown 251{ 252 typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE; 253 254 HRESULT Register( 255 [in] DWORD grfFlags, 256 [in, unique] IUnknown *punkObject, 257 [in, unique] IMoniker *pmkObjectName, 258 [out] DWORD *pdwRegister); 259 260 HRESULT Revoke( 261 [in] DWORD dwRegister); 262 263 HRESULT IsRunning( 264 [in, unique] IMoniker *pmkObjectName); 265 266 HRESULT GetObject( 267 [in, unique] IMoniker *pmkObjectName, 268 [out] IUnknown **ppunkObject); 269 270 HRESULT NoteChangeTime( 271 [in] DWORD dwRegister, 272 [in] FILETIME *pfiletime); 273 274 HRESULT GetTimeOfLastChange( 275 [in, unique] IMoniker *pmkObjectName, 276 [out] FILETIME *pfiletime); 277 278 HRESULT EnumRunning( 279 [out] IEnumMoniker **ppenumMoniker); 280} 281 282[ 283 object, 284 uuid(0000010c-0000-0000-C000-000000000046) 285] 286interface IPersist : IUnknown 287{ 288 typedef [unique] IPersist *LPPERSIST; 289 290 HRESULT GetClassID( 291 [out] CLSID *pClassID); 292} 293 294[ 295 object, 296 uuid(00000109-0000-0000-C000-000000000046), 297 pointer_default(unique) 298] 299interface IPersistStream : IPersist 300{ 301 typedef [unique] IPersistStream *LPPERSISTSTREAM; 302 303 HRESULT IsDirty(); 304 305 HRESULT Load( 306 [in, unique] IStream *pStm); 307 308 HRESULT Save( 309 [in, unique] IStream *pStm, 310 [in] BOOL fClearDirty); 311 312 HRESULT GetSizeMax( 313 [out] ULARGE_INTEGER *pcbSize); 314} 315 316[ 317 object, 318 uuid(0000000f-0000-0000-C000-000000000046), 319 pointer_default(unique) 320] 321interface IMoniker : IPersistStream 322{ 323 typedef [unique] IMoniker *LPMONIKER; 324 325 typedef enum tagMKSYS { 326 MKSYS_NONE = 0, 327 MKSYS_GENERICCOMPOSITE = 1, 328 MKSYS_FILEMONIKER = 2, 329 MKSYS_ANTIMONIKER = 3, 330 MKSYS_ITEMMONIKER = 4, 331 MKSYS_POINTERMONIKER = 5, 332 /* MKSYS_URLMONIKER = 6, */ /* defined in urlmon.idl */ 333 MKSYS_CLASSMONIKER = 7, 334 MKSYS_OBJREFMONIKER = 8, 335 MKSYS_SESSIONMONIKER = 9, 336 MKSYS_LUAMONIKER = 10 337 } MKSYS; 338 339 typedef [v1_enum] enum tagMKREDUCE { 340 MKRREDUCE_ONE = 3 << 16, 341 MKRREDUCE_TOUSER = 2 << 16, 342 MKRREDUCE_THROUGHUSER = 1 << 16, 343 MKRREDUCE_ALL = 0 344 } MKRREDUCE; 345 346 [local] 347 HRESULT BindToObject( 348 [in, unique] IBindCtx *pbc, 349 [in, unique] IMoniker *pmkToLeft, 350 [in] REFIID riidResult, 351 [out, iid_is(riidResult)] void **ppvResult); 352 353 [call_as(BindToObject)] 354 HRESULT RemoteBindToObject( 355 [in, unique] IBindCtx *pbc, 356 [in, unique] IMoniker *pmkToLeft, 357 [in] REFIID riidResult, 358 [out, iid_is(riidResult)] IUnknown **ppvResult); 359 360 [local] 361 HRESULT BindToStorage( 362 [in, unique] IBindCtx *pbc, 363 [in, unique] IMoniker *pmkToLeft, 364 [in] REFIID riid, 365 [out, iid_is(riid)] void **ppvObj); 366 367 [call_as(BindToStorage)] 368 HRESULT RemoteBindToStorage( 369 [in, unique] IBindCtx *pbc, 370 [in, unique] IMoniker *pmkToLeft, 371 [in] REFIID riid, 372 [out, iid_is(riid)] IUnknown **ppvObj); 373 374 HRESULT Reduce( 375 [in, unique] IBindCtx *pbc, 376 [in] DWORD dwReduceHowFar, 377 [in, out, unique] IMoniker **ppmkToLeft, 378 [out] IMoniker **ppmkReduced); 379 380 HRESULT ComposeWith( 381 [in, unique] IMoniker *pmkRight, 382 [in] BOOL fOnlyIfNotGeneric, 383 [out] IMoniker **ppmkComposite); 384 385 HRESULT Enum( 386 [in] BOOL fForward, 387 [out] IEnumMoniker **ppenumMoniker); 388 389 HRESULT IsEqual( 390 [in, unique] IMoniker *pmkOtherMoniker); 391 392 HRESULT Hash( 393 [out] DWORD *pdwHash); 394 395 HRESULT IsRunning( 396 [in, unique] IBindCtx *pbc, 397 [in, unique] IMoniker *pmkToLeft, 398 [in, unique] IMoniker *pmkNewlyRunning); 399 400 HRESULT GetTimeOfLastChange( 401 [in, unique] IBindCtx *pbc, 402 [in, unique] IMoniker *pmkToLeft, 403 [out] FILETIME *pFileTime); 404 405 HRESULT Inverse( 406 [out] IMoniker **ppmk); 407 408 HRESULT CommonPrefixWith( 409 [in, unique] IMoniker *pmkOther, 410 [out] IMoniker **ppmkPrefix); 411 412 HRESULT RelativePathTo( 413 [in, unique] IMoniker *pmkOther, 414 [out] IMoniker **ppmkRelPath); 415 416 HRESULT GetDisplayName( 417 [in, unique] IBindCtx *pbc, 418 [in, unique] IMoniker *pmkToLeft, 419 [out] LPOLESTR *ppszDisplayName); 420 421 HRESULT ParseDisplayName( 422 [in, unique] IBindCtx *pbc, 423 [in, unique] IMoniker *pmkToLeft, 424 [in] LPOLESTR pszDisplayName, 425 [out] ULONG *pchEaten, 426 [out] IMoniker **ppmkOut); 427 428 HRESULT IsSystemMoniker( 429 [out] DWORD *pdwMksys); 430} 431 432[ 433 object, 434 uuid(f29f6bc0-5021-11ce-aa15-00006901293f), 435 pointer_default(unique) 436] 437interface IROTData : IUnknown 438{ 439 HRESULT GetComparisonData( 440 [out, size_is(cbMax)] byte *pbData, 441 [in] ULONG cbMax, 442 [out] ULONG *pcbData); 443} 444 445[ 446 object, 447 uuid(00000140-0000-0000-C000-000000000046) 448] 449interface IClassActivator : IUnknown 450{ 451 HRESULT GetClassObject( 452 [in] REFCLSID rclsid, 453 [in] DWORD dwClassContext, 454 [in] LCID locale, 455 [in] REFIID riid, 456 [out, iid_is(riid)] void **ppv); 457} 458 459[ 460 object, 461 uuid(0000000d-0000-0000-C000-000000000046), 462 pointer_default(unique) 463] 464interface IEnumSTATSTG : IUnknown 465{ 466 typedef [unique] IEnumSTATSTG *LPENUMSTATSTG; 467 468 [local] 469 HRESULT Next( 470 [in] ULONG celt, 471 [out, size_is(celt), length_is(*pceltFetched)] 472 STATSTG *rgelt, 473 [out] ULONG *pceltFetched); 474 475 [call_as(Next)] 476 HRESULT RemoteNext( 477 [in] ULONG celt, 478 [out, size_is(celt), length_is(*pceltFetched)] 479 STATSTG *rgelt, 480 [out] ULONG *pceltFetched); 481 482 HRESULT Skip( 483 [in] ULONG celt); 484 485 HRESULT Reset(); 486 487 HRESULT Clone( 488 [out] IEnumSTATSTG **ppenum); 489} 490 491[ 492 object, 493 uuid(0000000b-0000-0000-C000-000000000046), 494 pointer_default(unique) 495] 496interface IStorage : IUnknown 497{ 498 typedef [unique] IStorage *LPSTORAGE; 499 500 typedef struct tagRemSNB { 501 unsigned long ulCntStr; 502 unsigned long ulCntChar; 503 [size_is(ulCntChar)] OLECHAR rgString[]; 504 } RemSNB; 505 506 typedef [unique] RemSNB *wireSNB; 507 typedef [wire_marshal(wireSNB)] OLECHAR **SNB; 508 509 HRESULT CreateStream( 510 [in] LPCOLESTR pwcsName, 511 [in] DWORD grfMode, 512 [in] DWORD reserved1, 513 [in] DWORD reserved2, 514 [out] IStream **ppstm); 515 516 [local] 517 HRESULT OpenStream( 518 [in] LPCOLESTR pwcsName, 519 [in, unique] void *reserved1, 520 [in] DWORD grfMode, 521 [in] DWORD reserved2, 522 [out] IStream **ppstm); 523 524 [call_as(OpenStream)] 525 HRESULT RemoteOpenStream( 526 [in] LPCOLESTR pwcsName, 527 [in] unsigned long cbReserved1, 528 [in, unique, size_is(cbReserved1)] byte *reserved1, 529 [in] DWORD grfMode, 530 [in] DWORD reserved2, 531 [out] IStream **ppstm); 532 533 HRESULT CreateStorage( 534 [in] LPCOLESTR pwcsName, 535 [in] DWORD grfMode, 536 [in] DWORD dwStgFmt, 537 [in] DWORD reserved2, 538 [out] IStorage **ppstg); 539 540 HRESULT OpenStorage( 541 [in, unique] LPCOLESTR pwcsName, 542 [in, unique] IStorage *pstgPriority, 543 [in] DWORD grfMode, 544 [in, unique] SNB snbExclude, 545 [in] DWORD reserved, 546 [out] IStorage **ppstg); 547 548 HRESULT CopyTo( 549 [in] DWORD ciidExclude, 550 [in, unique, size_is(ciidExclude)] const IID *rgiidExclude, 551 [in, unique] SNB snbExclude, 552 [in, unique] IStorage *pstgDest); 553 554 HRESULT MoveElementTo( 555 [in] LPCOLESTR pwcsName, 556 [in, unique] IStorage *pstgDest, 557 [in] LPCOLESTR pwcsNewName, 558 [in] DWORD grfFlags); 559 560 HRESULT Commit( 561 [in] DWORD grfCommitFlags); 562 563 HRESULT Revert(); 564 565 [local] 566 HRESULT EnumElements( 567 [in] DWORD reserved1, 568 [in, unique, size_is(1)] void *reserved2, 569 [in] DWORD reserved3, 570 [out] IEnumSTATSTG **ppenum); 571 572 [call_as(EnumElements)] 573 HRESULT RemoteEnumElements( 574 [in] DWORD reserved1, 575 [in] unsigned long cbReserved2, 576 [in, unique, size_is(cbReserved2)] byte *reserved2, 577 [in] DWORD reserved3, 578 [out] IEnumSTATSTG **ppenum); 579 580 HRESULT DestroyElement( 581 [in] LPCOLESTR pwcsName); 582 583 HRESULT RenameElement( 584 [in] LPCOLESTR pwcsOldName, 585 [in] LPCOLESTR pwcsNewName); 586 587 HRESULT SetElementTimes( 588 [in, unique] LPCOLESTR pwcsName, 589 [in, unique] const FILETIME *pctime, 590 [in, unique] const FILETIME *patime, 591 [in, unique] const FILETIME *pmtime); 592 593 HRESULT SetClass( 594 [in] REFCLSID clsid); 595 596 HRESULT SetStateBits( 597 [in] DWORD grfStateBits, 598 [in] DWORD grfMask); 599 600 HRESULT Stat( 601 [out] STATSTG *pstatstg, 602 [in] DWORD grfStatFlag); 603} 604 605[ 606 object, 607 uuid(0000010b-0000-0000-C000-000000000046), 608 pointer_default(unique) 609] 610interface IPersistFile : IPersist 611{ 612 typedef [unique] IPersistFile *LPPERSISTFILE; 613 614 HRESULT IsDirty(); 615 616 HRESULT Load( 617 [in] LPCOLESTR pszFileName, 618 [in] DWORD dwMode); 619 620 HRESULT Save( 621 [in, unique] LPCOLESTR pszFileName, 622 [in] BOOL fRemember); 623 624 HRESULT SaveCompleted( 625 [in, unique] LPCOLESTR pszFileName); 626 627 HRESULT GetCurFile( 628 [out] LPOLESTR *ppszFileName); 629} 630 631[ 632 object, 633 uuid(0000010a-0000-0000-C000-000000000046), 634 pointer_default(unique) 635] 636interface IPersistStorage : IPersist 637{ 638 typedef [unique] IPersistStorage *LPPERSISTSTORAGE; 639 640 HRESULT IsDirty(); 641 642 HRESULT InitNew( 643 [in, unique] IStorage *pStg); 644 645 HRESULT Load( 646 [in, unique] IStorage *pStg); 647 648 HRESULT Save( 649 [in, unique] IStorage *pStgSave, 650 [in] BOOL fSameAsLoad); 651 652 HRESULT SaveCompleted( 653 [in, unique] IStorage *pStgNew); 654 655 HRESULT HandsOffStorage(); 656} 657 658[ 659 object, 660 uuid(00000012-0000-0000-C000-000000000046), 661 pointer_default(unique) 662] 663interface IRootStorage : IUnknown 664{ 665 typedef [unique] IRootStorage *LPROOTSTORAGE; 666 667 HRESULT SwitchToFile( 668 [in] LPOLESTR pszFile); 669} 670 671[ 672 object, 673 uuid(0000000a-0000-0000-C000-000000000046), 674 pointer_default(unique) 675] 676interface ILockBytes : IUnknown 677{ 678 typedef [unique] ILockBytes *LPLOCKBYTES; 679 680 [local] 681 HRESULT ReadAt( 682 [in] ULARGE_INTEGER ulOffset, 683 [out, size_is(cb), length_is(*pcbRead)] 684 void *pv, 685 [in] ULONG cb, 686 [out] ULONG *pcbRead); 687 688 [call_as(ReadAt)] 689 HRESULT RemoteReadAt( 690 [in] ULARGE_INTEGER ulOffset, 691 [out, size_is(cb), length_is(*pcbRead)] 692 byte *pv, 693 [in] ULONG cb, 694 [out] ULONG *pcbRead); 695 696 [local] 697 HRESULT WriteAt( 698 [in] ULARGE_INTEGER ulOffset, 699 [in, size_is(cb)] const void *pv, 700 [in] ULONG cb, 701 [out] ULONG *pcbWritten); 702 703 [call_as(WriteAt)] 704 HRESULT RemoteWriteAt( 705 [in] ULARGE_INTEGER ulOffset, 706 [in, size_is(cb)] const byte *pv, 707 [in] ULONG cb, 708 [out] ULONG *pcbWritten); 709 710 HRESULT Flush(); 711 712 HRESULT SetSize( 713 [in] ULARGE_INTEGER cb); 714 715 HRESULT LockRegion( 716 [in] ULARGE_INTEGER libOffset, 717 [in] ULARGE_INTEGER cb, 718 [in] DWORD dwLockType); 719 720 HRESULT UnlockRegion( 721 [in] ULARGE_INTEGER libOffset, 722 [in] ULARGE_INTEGER cb, 723 [in] DWORD dwLockType); 724 725 HRESULT Stat( 726 [out] STATSTG *pstatstg, 727 [in] DWORD grfStatFlag); 728} 729 730[ 731 object, 732 uuid(99caf010-415e-11cf-8814-00aa00b569f5), 733 pointer_default(unique) 734] 735interface IFillLockBytes : IUnknown 736{ 737 [local] 738 HRESULT FillAppend( 739 [in, size_is(cb)] const void *pv, 740 [in] ULONG cb, 741 [out] ULONG *pcbWritten); 742 743 [call_as(FillAppend)] 744 HRESULT RemoteFillAppend( 745 [in, size_is(cb)] const byte *pv, 746 [in] ULONG cb, 747 [out] ULONG *pcbWritten); 748 749 [local] 750 HRESULT FillAt( 751 [in] ULARGE_INTEGER ulOffset, 752 [in, size_is(cb)] const void *pv, 753 [in] ULONG cb, 754 [out] ULONG *pcbWritten); 755 756 [call_as(FillAt)] 757 HRESULT RemoteFillAt( 758 [in] ULARGE_INTEGER ulOffset, 759 [in, size_is(cb)] const byte *pv, 760 [in] ULONG cb, 761 [out] ULONG *pcbWritten); 762 763 HRESULT SetFillSize( 764 [in] ULARGE_INTEGER ulSize); 765 766 HRESULT Terminate( 767 [in] BOOL bCanceled); 768} 769 770[ 771 object, 772 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4), 773 pointer_default(unique) 774] 775interface IProgressNotify : IUnknown 776{ 777 HRESULT OnProgress( 778 [in] DWORD dwProgressCurrent, 779 [in] DWORD dwProgressMaximum, 780 [in] BOOL fAccurate, 781 [in] BOOL fOwner); 782} 783 784[ 785 local, 786 object, 787 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4), 788 pointer_default(unique) 789] 790interface ILayoutStorage : IUnknown 791{ 792 typedef struct tagStorageLayout { 793 DWORD LayoutType; 794 OLECHAR *pwcsElementName; 795 LARGE_INTEGER cOffset; 796 LARGE_INTEGER cBytes; 797 } StorageLayout; 798 799 HRESULT LayoutScript( 800 [in] StorageLayout *pStorageLayout, 801 [in] DWORD nEntries, 802 [in] DWORD glfInterleavedFlag); 803 804 HRESULT BeginMonitor(); 805 806 HRESULT EndMonitor(); 807 808 HRESULT ReLayoutDocfile( 809 [in] OLECHAR *pwcsNewDfName); 810 811 HRESULT ReLayoutDocfileOnILockBytes( 812 [in] ILockBytes *pILockBytes); 813} 814 815[ 816 object, 817 uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d) 818] 819interface IBlockingLock : IUnknown 820{ 821 HRESULT Lock( 822 [in] DWORD dwTimeout); 823 824 HRESULT Unlock(); 825} 826 827 828[ 829 object, 830 uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4) 831] 832interface ITimeAndNoticeControl : IUnknown 833{ 834 HRESULT SuppressChanges( 835 [in] DWORD res1, 836 [in] DWORD res2); 837 838} 839 840 841 842[ 843 object, 844 uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4) 845] 846interface IOplockStorage: IUnknown 847{ 848 HRESULT CreateStorageEx( 849 [in] LPCWSTR pwcsName, 850 [in] DWORD grfMode, 851 [in] DWORD stgfmt, 852 [in] DWORD grfAttrs, 853 [in] REFIID riid, 854 [out, iid_is(riid)] void **ppstgOpen); 855 856 HRESULT OpenStorageEx( 857 [in] LPCWSTR pwcsName, 858 [in] DWORD grfMode, 859 [in] DWORD stgfmt, 860 [in] DWORD grfAttrs, 861 [in] REFIID riid, 862 [out, iid_is(riid)] void **ppstgOpen); 863} 864 865/******************** Data Object ********************/ 866 867[ 868 object, 869 uuid(00000103-0000-0000-C000-000000000046), 870 pointer_default(unique) 871] 872interface IEnumFORMATETC : IUnknown 873{ 874 typedef [unique] IEnumFORMATETC *LPENUMFORMATETC; 875 876 typedef struct tagDVTARGETDEVICE { 877 DWORD tdSize; 878 WORD tdDriverNameOffset; 879 WORD tdDeviceNameOffset; 880 WORD tdPortNameOffset; 881 WORD tdExtDevmodeOffset; 882 [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))] 883 BYTE tdData[]; 884 } DVTARGETDEVICE; 885 886 typedef CLIPFORMAT *LPCLIPFORMAT; 887 888 typedef struct tagFORMATETC { 889 CLIPFORMAT cfFormat; 890 [unique] DVTARGETDEVICE *ptd; 891 DWORD dwAspect; 892 LONG lindex; 893 DWORD tymed; 894 } FORMATETC, *LPFORMATETC; 895 896 [local] 897 HRESULT Next( 898 [in] ULONG celt, 899 [out, size_is(celt), length_is(*pceltFetched)] 900 FORMATETC *rgelt, 901 [out] ULONG *pceltFetched); 902 903 [call_as(Next)] 904 HRESULT RemoteNext( 905 [in] ULONG celt, 906 [out, size_is(celt), length_is(*pceltFetched)] 907 FORMATETC *rgelt, 908 [out] ULONG *pceltFetched); 909 910 HRESULT Skip( 911 [in] ULONG celt); 912 913 HRESULT Reset(); 914 915 HRESULT Clone( 916 [out] IEnumFORMATETC **ppenum); 917} 918 919[ 920 object, 921 uuid(00000105-0000-0000-C000-000000000046), 922 pointer_default(unique) 923] 924interface IEnumSTATDATA : IUnknown 925{ 926 typedef [unique] IEnumSTATDATA *LPENUMSTATDATA; 927 928 typedef enum tagADVF { 929 ADVF_NODATA = 1, 930 ADVF_PRIMEFIRST = 2, 931 ADVF_ONLYONCE = 4, 932 ADVF_DATAONSTOP = 64, 933 ADVFCACHE_NOHANDLER = 8, 934 ADVFCACHE_FORCEBUILTIN = 16, 935 ADVFCACHE_ONSAVE = 32 936 } ADVF; 937 938 typedef struct tagSTATDATA 939 { 940 FORMATETC formatetc; 941 DWORD advf; 942 [unique] IAdviseSink *pAdvSink; 943 DWORD dwConnection; 944 } STATDATA, *LPSTATDATA; 945 946 [local] 947 HRESULT Next( 948 [in] ULONG celt, 949 [out, size_is(celt), length_is(*pceltFetched)] 950 STATDATA *rgelt, 951 [out] ULONG *pceltFetched); 952 953 [call_as(Next)] 954 HRESULT RemoteNext( 955 [in] ULONG celt, 956 [out, size_is(celt), length_is(*pceltFetched)] 957 STATDATA *rgelt, 958 [out] ULONG *pceltFetched); 959 960 HRESULT Skip( 961 [in] ULONG celt); 962 963 HRESULT Reset(); 964 965 HRESULT Clone( 966 [out] IEnumSTATDATA **ppenum); 967} 968 969[ 970 object, 971 uuid(0000010f-0000-0000-C000-000000000046), 972 pointer_default(unique) 973] 974interface IAdviseSink : IUnknown 975{ 976 typedef IAdviseSink *LPADVISESINK; 977 978 typedef [v1_enum] enum tagTYMED { 979 TYMED_HGLOBAL = 1, 980 TYMED_FILE = 2, 981 TYMED_ISTREAM = 4, 982 TYMED_ISTORAGE = 8, 983 TYMED_GDI = 16, 984 TYMED_MFPICT = 32, 985 TYMED_ENHMF = 64, 986 TYMED_NULL = 0 987 } TYMED; 988 989 typedef struct tagRemSTGMEDIUM { 990 DWORD tymed; 991 DWORD dwHandleType; 992 unsigned long pData; 993 unsigned long pUnkForRelease; 994 unsigned long cbData; 995 [size_is(cbData)] byte data[]; 996 } RemSTGMEDIUM; 997 998 typedef struct tagSTGMEDIUM { 999 DWORD tymed; 1000 [switch_is(tymed)] union { 1001 [case(TYMED_GDI)] HBITMAP hBitmap; 1002 [case(TYMED_MFPICT)] HMETAFILEPICT hMetaFilePict; 1003 [case(TYMED_ENHMF)] HENHMETAFILE hEnhMetaFile; 1004 [case(TYMED_HGLOBAL)] HGLOBAL hGlobal; 1005 [case(TYMED_FILE)] LPOLESTR lpszFileName; 1006 [case(TYMED_ISTREAM)] IStream *pstm; 1007 [case(TYMED_ISTORAGE)] IStorage *pstg; 1008 [default] ; 1009 } DUMMYUNIONNAME; 1010 [unique] IUnknown *pUnkForRelease; 1011 } uSTGMEDIUM; 1012 1013/* copied from wingdi.h */ 1014#define OBJ_PEN 1 1015#define OBJ_BRUSH 2 1016#define OBJ_DC 3 1017#define OBJ_METADC 4 1018#define OBJ_PAL 5 1019#define OBJ_FONT 6 1020#define OBJ_BITMAP 7 1021#define OBJ_REGION 8 1022#define OBJ_METAFILE 9 1023#define OBJ_MEMDC 10 1024#define OBJ_EXTPEN 11 1025#define OBJ_ENHMETADC 12 1026#define OBJ_ENHMETAFILE 13 1027 1028 typedef union _GDI_OBJECT switch(DWORD ObjectType) u { 1029 case OBJ_BITMAP: wireHBITMAP hBitmap; 1030 case OBJ_PAL: wireHPALETTE hPalette; 1031 default: wireHGLOBAL hGeneric; 1032 } GDI_OBJECT; 1033 1034 /* When NONAMELESSUNION is not defined, the presence of _STGMEDIUM_UNION 1035 * violates the C spec, but is necessary for C++. Avoid C spec violation. */ 1036 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)") 1037 cpp_quote("#define _STGMEDIUM_UNION") 1038 cpp_quote("#endif") 1039 1040 typedef struct _userSTGMEDIUM { 1041 union _STGMEDIUM_UNION switch(DWORD tymed) u { 1042 case TYMED_NULL: ; 1043 case TYMED_MFPICT: wireHMETAFILEPICT hMetaFilePict; 1044 case TYMED_ENHMF: wireHENHMETAFILE hHEnhMetaFile; 1045 case TYMED_GDI: GDI_OBJECT *hGdiHandle; 1046 case TYMED_HGLOBAL: wireHGLOBAL hGlobal; 1047 case TYMED_FILE: LPOLESTR lpszFileName; 1048 case TYMED_ISTREAM: BYTE_BLOB *pstm; 1049 case TYMED_ISTORAGE: BYTE_BLOB *pstg; 1050 } DUMMYUNIONNAME; 1051 IUnknown *pUnkForRelease; 1052 } userSTGMEDIUM; 1053 1054 cpp_quote("#if !defined(NONAMELESSUNION) && !defined(__cplusplus)") 1055 cpp_quote("#undef _STGMEDIUM_UNION") 1056 cpp_quote("#endif") 1057 1058 typedef [unique] userSTGMEDIUM *wireSTGMEDIUM; 1059 typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM; 1060 1061 typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM; 1062 typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM; 1063 1064 typedef STGMEDIUM *LPSTGMEDIUM; 1065 1066 typedef struct _userFLAG_STGMEDIUM { 1067 long ContextFlags; 1068 long fPassOwnership; 1069 userSTGMEDIUM Stgmed; 1070 } userFLAG_STGMEDIUM; 1071 1072 typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM; 1073 1074 typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM { 1075 long ContextFlags; 1076 long fPassOwnership; 1077 STGMEDIUM Stgmed; 1078 } FLAG_STGMEDIUM; 1079 1080 [local] 1081 void OnDataChange( 1082 [in, unique] FORMATETC *pFormatetc, 1083 [in, unique] STGMEDIUM *pStgmed); 1084 1085 [call_as(OnDataChange)] 1086 HRESULT RemoteOnDataChange( 1087 [in, unique] FORMATETC *pFormatetc, 1088 [in, unique] ASYNC_STGMEDIUM *pStgmed); 1089 1090 [local] 1091 void OnViewChange( 1092 [in] DWORD dwAspect, 1093 [in] LONG lindex); 1094 1095 [call_as(OnViewChange)] 1096 HRESULT RemoteOnViewChange( 1097 [in] DWORD dwAspect, 1098 [in] LONG lindex); 1099 1100 [local] 1101 void OnRename( 1102 [in] IMoniker *pmk); 1103 1104 [call_as(OnRename)] 1105 HRESULT RemoteOnRename( 1106 [in] IMoniker *pmk); 1107 1108 [local] 1109 void OnSave(); 1110 1111 [call_as(OnSave)] 1112 HRESULT RemoteOnSave(); 1113 1114 [local] 1115 void OnClose(); 1116 1117 [call_as(OnClose)] 1118 HRESULT RemoteOnClose(); 1119} 1120 1121[ 1122 object, 1123 uuid(00000125-0000-0000-C000-000000000046), 1124 pointer_default(unique) 1125] 1126interface IAdviseSink2 : IAdviseSink 1127{ 1128 typedef [unique] IAdviseSink2 *LPADVISESINK2; 1129 1130 [local] 1131 void OnLinkSrcChange( 1132 [in, unique] IMoniker *pmk); 1133 1134 [call_as(OnLinkSrcChange)] 1135 HRESULT RemoteOnLinkSrcChange( 1136 [in, unique] IMoniker *pmk); 1137} 1138 1139[ 1140 object, 1141 uuid(0000010e-0000-0000-C000-000000000046), 1142 pointer_default(unique) 1143] 1144interface IDataObject : IUnknown 1145{ 1146 typedef [unique] IDataObject *LPDATAOBJECT; 1147 1148 typedef enum tagDATADIR { 1149 DATADIR_GET = 1, 1150 DATADIR_SET = 2 1151 } DATADIR; 1152 1153 [local] 1154 HRESULT GetData( 1155 [in, unique] FORMATETC *pformatetcIn, 1156 [out] STGMEDIUM *pmedium); 1157 1158 [call_as(GetData)] 1159 HRESULT RemoteGetData( 1160 [in, unique] FORMATETC *pformatetcIn, 1161 [out] STGMEDIUM *pRemoteMedium); 1162 1163 [local] 1164 HRESULT GetDataHere( 1165 [in, unique] FORMATETC *pformatetc, 1166 [in, out] STGMEDIUM *pmedium); 1167 1168 [call_as(GetDataHere)] 1169 HRESULT RemoteGetDataHere( 1170 [in, unique] FORMATETC *pformatetc, 1171 [in, out] STGMEDIUM *pRemoteMedium); 1172 1173 HRESULT QueryGetData( 1174 [in, unique] FORMATETC *pformatetc); 1175 1176 HRESULT GetCanonicalFormatEtc( 1177 [in, unique] FORMATETC *pformatectIn, 1178 [out] FORMATETC *pformatetcOut); 1179 1180 [local] 1181 HRESULT SetData( 1182 [in, unique] FORMATETC *pformatetc, 1183 [in, unique] STGMEDIUM *pmedium, 1184 [in] BOOL fRelease); 1185 1186 [call_as(SetData)] 1187 HRESULT RemoteSetData( 1188 [in, unique] FORMATETC *pformatetc, 1189 [in, unique] FLAG_STGMEDIUM *pmedium, 1190 [in] BOOL fRelease); 1191 1192 HRESULT EnumFormatEtc( 1193 [in] DWORD dwDirection, 1194 [out] IEnumFORMATETC **ppenumFormatEtc); 1195 1196 HRESULT DAdvise( 1197 [in] FORMATETC *pformatetc, 1198 [in] DWORD advf, 1199 [in, unique] IAdviseSink *pAdvSink, 1200 [out] DWORD *pdwConnection); 1201 1202 HRESULT DUnadvise( 1203 [in] DWORD dwConnection); 1204 1205 HRESULT EnumDAdvise( 1206 [out] IEnumSTATDATA **ppenumAdvise); 1207} 1208 1209[ 1210 local, 1211 object, 1212 uuid(00000110-0000-0000-C000-000000000046) 1213] 1214interface IDataAdviseHolder : IUnknown 1215{ 1216 typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER; 1217 1218 HRESULT Advise( 1219 [in, unique] IDataObject *pDataObject, 1220 [in, unique] FORMATETC *pFetc, 1221 [in] DWORD advf, 1222 [in, unique] IAdviseSink *pAdvise, 1223 [out] DWORD *pdwConnection); 1224 1225 HRESULT Unadvise( 1226 [in] DWORD dwConnection); 1227 1228 HRESULT EnumAdvise( 1229 [out] IEnumSTATDATA **ppenumAdvise); 1230 1231 HRESULT SendOnDataChange( 1232 [in, unique] IDataObject *pDataObject, 1233 [in] DWORD dwReserved, 1234 [in] DWORD advf); 1235} 1236 1237/******************** Remoting ********************/ 1238 1239[ 1240 local, 1241 object, 1242 uuid(00000016-0000-0000-C000-000000000046) 1243] 1244interface IMessageFilter : IUnknown 1245{ 1246 typedef [unique] IMessageFilter *LPMESSAGEFILTER; 1247 1248 typedef enum tagCALLTYPE { 1249 CALLTYPE_TOPLEVEL = 1, 1250 CALLTYPE_NESTED = 2, 1251 CALLTYPE_ASYNC = 3, 1252 CALLTYPE_TOPLEVEL_CALLPENDING = 4, 1253 CALLTYPE_ASYNC_CALLPENDING = 5 1254 } CALLTYPE; 1255 1256 typedef enum tagSERVERCALL { 1257 SERVERCALL_ISHANDLED = 0, 1258 SERVERCALL_REJECTED = 1, 1259 SERVERCALL_RETRYLATER = 2 1260 } SERVERCALL; 1261 1262 typedef enum tagPENDINGTYPE { 1263 PENDINGTYPE_TOPLEVEL = 1, 1264 PENDINGTYPE_NESTED = 2 1265 } PENDINGTYPE; 1266 1267 typedef enum tagPENDINGMSG { 1268 PENDINGMSG_CANCELCALL = 0, 1269 PENDINGMSG_WAITNOPROCESS = 1, 1270 PENDINGMSG_WAITDEFPROCESS = 2 1271 } PENDINGMSG; 1272 1273 typedef struct tagINTERFACEINFO { 1274 IUnknown *pUnk; 1275 IID iid; 1276 WORD wMethod; 1277 } INTERFACEINFO, *LPINTERFACEINFO; 1278 1279 DWORD HandleInComingCall( 1280 [in] DWORD dwCallType, 1281 [in] HTASK htaskCaller, 1282 [in] DWORD dwTickCount, 1283 [in] LPINTERFACEINFO lpInterfaceInfo); 1284 1285 DWORD RetryRejectedCall( 1286 [in] HTASK htaskCallee, 1287 [in] DWORD dwTickCount, 1288 [in] DWORD dwRejectType); 1289 1290 DWORD MessagePending( 1291 [in] HTASK htaskCallee, 1292 [in] DWORD dwTickCount, 1293 [in] DWORD dwPendingType); 1294} 1295 1296[ 1297 object, 1298 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4) 1299] 1300interface IDirectWriterLock : IUnknown 1301{ 1302 HRESULT WaitForWriteAccess( 1303 [in] DWORD dwTimeout); 1304 1305 HRESULT ReleaseWriteAccess(); 1306 1307 HRESULT HaveWriteAccess(); 1308} 1309 1310[ 1311 object, 1312 uuid(00000026-0000-0000-C000-000000000046) 1313] 1314interface IUrlMon : IUnknown 1315{ 1316 HRESULT AsyncGetClassBits( 1317 [in] REFCLSID rclsid, 1318 [in, unique] LPCWSTR pszTYPE, 1319 [in, unique] LPCWSTR pszExt, 1320 [in] DWORD dwFileVersionMS, 1321 [in] DWORD dwFileVersionLS, 1322 [in, unique] LPCWSTR pszCodeBase, 1323 [in] IBindCtx *pbc, 1324 [in] DWORD dwClassContext, 1325 [in] REFIID riid, 1326 [in] DWORD flags); 1327} 1328 1329[ 1330 local, 1331 object, 1332 uuid(00000145-0000-0000-C000-000000000046) 1333] 1334interface IForegroundTransfer : IUnknown 1335{ 1336 HRESULT AllowForegroundTransfer( 1337 [in] void *lpvReserved); 1338} 1339 1340[ 1341 local, 1342 object, 1343 uuid(00000034-0000-0000-C000-000000000046), 1344 pointer_default(unique) 1345] 1346interface IInitializeSpy : IUnknown 1347{ 1348 typedef [unique] IInitializeSpy *LPINITIALIZESPY; 1349 1350 HRESULT PreInitialize( 1351 [in] DWORD dwCoInit, 1352 [in] DWORD dwCurThreadAptRefs); 1353 1354 HRESULT PostInitialize( 1355 [in] HRESULT hrCoInit, 1356 [in] DWORD dwCoInit, 1357 [in] DWORD dwNewThreadAptRefs); 1358 1359 HRESULT PreUninitialize( 1360 [in] DWORD dwCurThreadAptRefs); 1361 1362 HRESULT PostUninitialize( 1363 [in] DWORD dwNewThreadAptRefs); 1364} 1365 1366[ 1367 object, 1368 uuid(969dc708-5c76-11d1-8d86-0000f804b057) 1369] 1370interface IThumbnailExtractor : IUnknown 1371{ 1372 HRESULT ExtractThumbnail( 1373 [in] IStorage *pStg, 1374 [in] ULONG ulLength, 1375 [in] ULONG ulHeight, 1376 [out] ULONG *pulOutputLength, 1377 [out] ULONG *pulOutputHeight, 1378 [out] HBITMAP *phOutputBitmap); 1379 1380 1381 HRESULT OnFileUpdated( 1382 [in] IStorage *pStg); 1383} 1384 1385[ 1386 object, 1387 pointer_default(unique), 1388 uuid(947990de-cc28-11d2-a0f7-00805f858fb1) 1389] 1390interface IDummyHICONIncluder : IUnknown 1391{ 1392 HRESULT Dummy([in] HICON hIcon, [in] HDC hdc); 1393} 1394 1395[ 1396 object, 1397 local, 1398 pointer_default(unique), 1399 uuid(a2f05a09-27a2-42b5-bc0e-ac163ef49d9b) 1400] 1401interface IApartmentShutdown : IUnknown 1402{ 1403 void OnUninitialize([in] UINT64 identifier); 1404}