Reactos
at master 1253 lines 26 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#endif 22 23cpp_quote("#ifndef _OBJIDLBASE_") 24cpp_quote("#define _OBJIDLBASE_") 25 26interface IStream; 27interface IEnumString; 28 29interface IAsyncManager; 30interface ISynchronize; 31 32typedef struct _COSERVERINFO { 33 DWORD dwReserved1; 34 LPWSTR pwszName; 35 COAUTHINFO *pAuthInfo; 36 DWORD dwReserved2; 37} COSERVERINFO; 38 39/******************** Fundamentals ********************/ 40 41[ 42 local, 43 object, 44 uuid(00000003-0000-0000-C000-000000000046) 45] 46interface IMarshal : IUnknown 47{ 48 typedef [unique] IMarshal *LPMARSHAL; 49 50 HRESULT GetUnmarshalClass( 51 [in] REFIID riid, 52 [in, unique] void *pv, 53 [in] DWORD dwDestContext, 54 [in, unique] void *pvDestContext, 55 [in] DWORD mshlflags, 56 [out] CLSID *pCid); 57 58 HRESULT GetMarshalSizeMax( 59 [in] REFIID riid, 60 [in, unique] void *pv, 61 [in] DWORD dwDestContext, 62 [in, unique] void *pvDestContext, 63 [in] DWORD mshlflags, 64 [out] DWORD *pSize); 65 66 HRESULT MarshalInterface( 67 [in, unique] IStream *pStm, 68 [in] REFIID riid, 69 [in, unique] void *pv, 70 [in] DWORD dwDestContext, 71 [in, unique] void *pvDestContext, 72 [in] DWORD mshlflags); 73 74 HRESULT UnmarshalInterface( 75 [in, unique] IStream *pStm, 76 [in] REFIID riid, 77 [out] void **ppv); 78 79 HRESULT ReleaseMarshalData( 80 [in, unique] IStream *pStm); 81 82 HRESULT DisconnectObject( 83 [in] DWORD dwReserved); 84} 85 86[ 87 local, 88 object, 89 uuid(94ea2b94-e9cc-49e0-c0ff-ee64ca8f5b90) 90] 91interface IAgileObject : IUnknown 92{ 93} 94 95[ 96 local, 97 object, 98 uuid(c03f6a43-65a4-9818-987e-e0b810d2a6f2), 99 pointer_default(unique) 100] 101interface IAgileReference : IUnknown 102{ 103 HRESULT Resolve([in] REFIID riid, [out, retval, iid_is(riid)] void **object); 104} 105 106[ 107 local, 108 object, 109 uuid(ecc8691b-c1db-4dc0-855e-65f6c551af49) 110] 111interface INoMarshal : IUnknown 112{ 113} 114 115[ 116 local, 117 object, 118 uuid(000001cf-0000-0000-C000-000000000046) 119] 120interface IMarshal2 : IMarshal 121{ 122 typedef [unique] IMarshal2 *LPMARSHAL2; 123} 124 125[ 126 local, 127 object, 128 uuid(00000018-0000-0000-C000-000000000046) 129] 130interface IStdMarshalInfo : IUnknown 131{ 132 typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO; 133 134 HRESULT GetClassForHandler( 135 [in] DWORD dwDestContext, 136 [in, unique] void *pvDestContext, 137 [out] CLSID *pClsid); 138} 139 140[ 141 local, 142 object, 143 uuid(00000019-0000-0000-C000-000000000046) 144] 145interface IExternalConnection : IUnknown 146{ 147 typedef [unique] IExternalConnection *LPEXTERNALCONNECTION; 148 149 typedef enum tagEXTCONN { 150 EXTCONN_STRONG = 0x0001, 151 EXTCONN_WEAK = 0x0002, 152 EXTCONN_CALLABLE = 0x0004 153 } EXTCONN; 154 155 DWORD AddConnection( 156 [in] DWORD extconn, 157 [in] DWORD reserved); 158 159 DWORD ReleaseConnection( 160 [in] DWORD extconn, 161 [in] DWORD reserved, 162 [in] BOOL fLastReleaseCloses); 163} 164 165[ 166 local, 167 object, 168 uuid(00000020-0000-0000-C000-000000000046) 169] 170interface IMultiQI : IUnknown 171{ 172 typedef [unique] IMultiQI *LPMULTIQI; 173 174 typedef struct tagMULTI_QI { 175 const IID *pIID; 176 IUnknown *pItf; 177 HRESULT hr; 178 } MULTI_QI; 179 180 HRESULT QueryMultipleInterfaces( 181 [in] ULONG cMQIs, 182 [in, out] MULTI_QI *pMQIs); 183} 184 185[ 186 local, 187 object, 188 uuid(00000002-0000-0000-C000-000000000046) 189] 190interface IMalloc : IUnknown 191{ 192 typedef [unique] IMalloc *LPMALLOC; 193 194 LPVOID Alloc( 195 [in] SIZE_T cb); 196 197 LPVOID Realloc( 198 [in] LPVOID pv, 199 [in] SIZE_T cb); 200 201 void Free( 202 [in] LPVOID pv); 203 204 SIZE_T GetSize( 205 [in] LPVOID pv); 206 207 int DidAlloc(LPVOID pv); 208 209 void HeapMinimize(); 210} 211 212[ 213 local, 214 object, 215 uuid(00000021-0000-0000-C000-000000000046) 216] 217interface IInternalUnknown : IUnknown 218{ 219 HRESULT QueryInternalInterface( 220 [in] REFIID riid, 221 [out] void **ppv); 222} 223 224[ 225 object, 226 uuid(00000100-0000-0000-C000-000000000046), 227 pointer_default(unique) 228] 229interface IEnumUnknown : IUnknown 230{ 231 typedef [unique] IEnumUnknown *LPENUMUNKNOWN; 232 233 [local] 234 HRESULT Next( 235 [in] ULONG celt, 236 [out] IUnknown **rgelt, 237 [out] ULONG *pceltFetched); 238 239 [call_as(Next)] 240 HRESULT RemoteNext( 241 [in] ULONG celt, 242 [out, size_is(celt), length_is(*pceltFetched)] 243 IUnknown **rgelt, 244 [out] ULONG *pceltFetched); 245 246 HRESULT Skip( 247 [in] ULONG celt); 248 249 HRESULT Reset(); 250 251 HRESULT Clone( 252 [out] IEnumUnknown **ppenum); 253} 254 255[ 256 object, 257 uuid(00000022-0000-0000-C000-000000000046), 258 version(1.0), 259 pointer_default(unique) 260] 261interface ISurrogate : IUnknown 262{ 263 typedef [unique] ISurrogate *LPSURROGATE; 264 265 HRESULT LoadDllServer( 266 [in] REFCLSID Clsid); 267 HRESULT FreeSurrogate(); 268} 269 270[ 271 local, 272 object, 273 uuid(00000146-0000-0000-C000-000000000046) 274] 275interface IGlobalInterfaceTable : IUnknown 276{ 277 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE; 278 279 HRESULT RegisterInterfaceInGlobal( 280 [in] IUnknown *pUnk, 281 [in] REFIID riid, 282 [out] DWORD *pdwCookie); 283 284 HRESULT RevokeInterfaceFromGlobal( 285 [in] DWORD dwCookie); 286 287 HRESULT GetInterfaceFromGlobal( 288 [in] DWORD dwCookie, 289 [in] REFIID riid, 290 [out, iid_is(riid)] void **ppv); 291} 292 293[ 294 object, 295 uuid(00000101-0000-0000-C000-000000000046), 296 pointer_default(unique) 297] 298interface IEnumString : IUnknown 299{ 300 typedef [unique] IEnumString *LPENUMSTRING; 301 302 [local] 303 HRESULT Next( 304 [in] ULONG celt, 305 [out, size_is(celt), length_is(*pceltFetched)] 306 LPOLESTR *rgelt, 307 [out] ULONG *pceltFetched); 308 309 [call_as(Next)] 310 HRESULT RemoteNext( 311 [in] ULONG celt, 312 [out, size_is(celt), length_is(*pceltFetched)] 313 LPOLESTR *rgelt, 314 [out] ULONG *pceltFetched); 315 316 HRESULT Skip( 317 [in] ULONG celt); 318 319 HRESULT Reset(); 320 321 HRESULT Clone( 322 [out] IEnumString **ppenum); 323} 324 325/******************** Storage ********************/ 326 327[ 328 object, 329 uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d), 330 pointer_default(unique) 331] 332interface ISequentialStream : IUnknown 333{ 334 [local] 335 HRESULT Read( 336 [out, size_is(cb), length_is(*pcbRead)] 337 void *pv, 338 [in] ULONG cb, 339 [out] ULONG *pcbRead); 340 341 [call_as(Read)] 342 HRESULT RemoteRead( 343 [out, size_is(cb), length_is(*pcbRead)] 344 byte *pv, 345 [in] ULONG cb, 346 [out] ULONG *pcbRead); 347 348 [local] 349 HRESULT Write( 350 [in, size_is(cb)] const void *pv, 351 [in] ULONG cb, 352 [out] ULONG *pcbWritten); 353 354 [call_as(Write)] 355 HRESULT RemoteWrite( 356 [in, size_is(cb)] const byte *pv, 357 [in] ULONG cb, 358 [out] ULONG *pcbWritten); 359} 360 361[ 362 object, 363 uuid(0000000c-0000-0000-C000-000000000046), 364 pointer_default(unique) 365] 366interface IStream : ISequentialStream 367{ 368 typedef [unique] IStream *LPSTREAM; 369 370 typedef struct tagSTATSTG { 371 LPOLESTR pwcsName; 372 DWORD type; 373 ULARGE_INTEGER cbSize; 374 FILETIME mtime; 375 FILETIME ctime; 376 FILETIME atime; 377 DWORD grfMode; 378 DWORD grfLocksSupported; 379 CLSID clsid; 380 DWORD grfStateBits; 381 DWORD reserved; 382 } STATSTG; 383 384 typedef enum tagSTGTY { 385 STGTY_STORAGE = 1, 386 STGTY_STREAM = 2, 387 STGTY_LOCKBYTES = 3, 388 STGTY_PROPERTY = 4 389 } STGTY; 390 391 typedef enum tagSTREAM_SEEK { 392 STREAM_SEEK_SET = 0, 393 STREAM_SEEK_CUR = 1, 394 STREAM_SEEK_END = 2 395 } STREAM_SEEK; 396 397 /* these are defined in Linux's fcntl.h, 398 * undefine them to avoid conflicts */ 399 cpp_quote("#undef LOCK_MAND") 400 cpp_quote("#undef LOCK_READ") 401 cpp_quote("#undef LOCK_WRITE") 402 cpp_quote("#undef LOCK_RW") 403 404 typedef enum tagLOCKTYPE { 405 LOCK_WRITE = 1, 406 LOCK_EXCLUSIVE = 2, 407 LOCK_ONLYONCE = 4 408 } LOCKTYPE; 409 410 [local] 411 HRESULT Seek( 412 [in] LARGE_INTEGER dlibMove, 413 [in] DWORD dwOrigin, 414 [out] ULARGE_INTEGER *plibNewPosition); 415 416 [call_as(Seek)] 417 HRESULT RemoteSeek( 418 [in] LARGE_INTEGER dlibMove, 419 [in] DWORD dwOrigin, 420 [out] ULARGE_INTEGER *plibNewPosition); 421 422 HRESULT SetSize( 423 [in] ULARGE_INTEGER libNewSize); 424 425 [local] 426 HRESULT CopyTo( 427 [in, unique] IStream *pstm, 428 [in] ULARGE_INTEGER cb, 429 [out] ULARGE_INTEGER *pcbRead, 430 [out] ULARGE_INTEGER *pcbWritten); 431 432 [call_as(CopyTo)] 433 HRESULT RemoteCopyTo( 434 [in, unique] IStream *pstm, 435 [in] ULARGE_INTEGER cb, 436 [out] ULARGE_INTEGER *pcbRead, 437 [out] ULARGE_INTEGER *pcbWritten); 438 439 HRESULT Commit( 440 [in] DWORD grfCommitFlags); 441 442 HRESULT Revert(); 443 444 HRESULT LockRegion( 445 [in] ULARGE_INTEGER libOffset, 446 [in] ULARGE_INTEGER cb, 447 [in] DWORD dwLockType); 448 449 HRESULT UnlockRegion( 450 [in] ULARGE_INTEGER libOffset, 451 [in] ULARGE_INTEGER cb, 452 [in] DWORD dwLockType); 453 454 HRESULT Stat( 455 [out] STATSTG *pstatstg, 456 [in] DWORD grfStatFlag); 457 458 HRESULT Clone( 459 [out] IStream **ppstm); 460} 461 462 463 464 465[ 466 local, 467 object, 468 uuid(D5F56B60-593B-101A-B569-08002B2DBF7A) 469] 470interface IRpcChannelBuffer : IUnknown 471{ 472 typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER; 473 474 typedef unsigned long RPCOLEDATAREP; 475 476 typedef struct tagRPCOLEMESSAGE { 477 void *reserved1; 478 RPCOLEDATAREP dataRepresentation; 479 void *Buffer; 480 ULONG cbBuffer; 481 ULONG iMethod; 482 void *reserved2[5]; 483 ULONG rpcFlags; 484 } RPCOLEMESSAGE; 485 486 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE; 487 488 HRESULT GetBuffer( 489 [in] RPCOLEMESSAGE *pMessage, 490 [in] REFIID riid); 491 492 HRESULT SendReceive( 493 [in,out] RPCOLEMESSAGE *pMessage, 494 [out] ULONG *pStatus); 495 496 HRESULT FreeBuffer( 497 [in] RPCOLEMESSAGE *pMessage); 498 499 HRESULT GetDestCtx( 500 [out] DWORD *pdwDestContext, 501 [out] void **ppvDestContext); 502 503 HRESULT IsConnected(); 504} 505 506[ 507 local, 508 object, 509 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf) 510] 511interface IRpcChannelBuffer2 : IRpcChannelBuffer 512{ 513 typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2; 514 515 HRESULT GetProtocolVersion( 516 [in,out] DWORD *pdwVersion); 517} 518 519[ 520 local, 521 object, 522 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2) 523] 524interface IRpcChannelBuffer3 : IRpcChannelBuffer2 525{ 526 typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3; 527 528 HRESULT Send( 529 [in,out] RPCOLEMESSAGE *pMsg, 530 [out] ULONG *pulStatus); 531 532 HRESULT Receive( 533 [in,out] RPCOLEMESSAGE *pMsg, 534 [in] ULONG ulSize, 535 [out] ULONG *pulStatus); 536 537 HRESULT Cancel( 538 [in] RPCOLEMESSAGE *pMsg); 539 540 HRESULT GetCallContext( 541 [in] RPCOLEMESSAGE *pMsg, 542 [in] REFIID riid, 543 [out] void **pInterface); 544 545 HRESULT GetDestCtxEx( 546 [in] RPCOLEMESSAGE *pMsg, 547 [out] DWORD *pdwDestContext, 548 [out] void **ppvDestContext); 549 550 HRESULT GetState( 551 [in] RPCOLEMESSAGE *pMsg, 552 [out] DWORD *pState); 553 554 HRESULT RegisterAsync( 555 [in] RPCOLEMESSAGE *pMsg, 556 [in] IAsyncManager *pAsyncMgr); 557} 558 559[ 560 local, 561 object, 562 uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa), 563 pointer_default(unique) 564] 565interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2 566{ 567 HRESULT Send( 568 [in, out] RPCOLEMESSAGE *pMsg, 569 [in] ISynchronize *pSync, 570 [out] ULONG *pulStatus); 571 572 HRESULT Receive( 573 [in, out] RPCOLEMESSAGE *pMsg, 574 [out] ULONG *pulStatus); 575 576 HRESULT GetDestCtxEx( 577 [in] RPCOLEMESSAGE *pMsg, 578 [out] DWORD *pdwDestContext, 579 [out] void **ppvDestContext); 580} 581 582[ 583 local, 584 object, 585 uuid(58a08519-24c8-4935-b482-3fd823333a4f) 586] 587interface IRpcSyntaxNegotiate : IUnknown 588{ 589 HRESULT NegotiateSyntax( 590 [in, out] RPCOLEMESSAGE *pMsg); 591} 592 593[ 594 local, 595 object, 596 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A) 597] 598interface IRpcProxyBuffer : IUnknown 599{ 600 typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER; 601 602 HRESULT Connect( 603 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer); 604 605 void Disconnect(); 606} 607 608[ 609 local, 610 object, 611 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A) 612] 613interface IRpcStubBuffer : IUnknown 614{ 615 typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER; 616 617 HRESULT Connect( 618 [in] IUnknown *pUnkServer); 619 620 void Disconnect(); 621 622 HRESULT Invoke( 623 [in] RPCOLEMESSAGE *_prpcmsg, 624 [in] IRpcChannelBuffer *_pRpcChannelBuffer); 625 626 IRpcStubBuffer *IsIIDSupported( 627 [in] REFIID riid); 628 629 ULONG CountRefs(); 630 631 HRESULT DebugServerQueryInterface( 632 void **ppv); 633 634 void DebugServerRelease( 635 void *pv); 636} 637 638[ 639 local, 640 object, 641 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A) 642] 643interface IPSFactoryBuffer : IUnknown 644{ 645 typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER; 646 647 HRESULT CreateProxy( 648 [in] IUnknown *pUnkOuter, 649 [in] REFIID riid, 650 [out] IRpcProxyBuffer **ppProxy, 651 [out] void **ppv); 652 653 HRESULT CreateStub( 654 [in] REFIID riid, 655 [in, unique] IUnknown *pUnkServer, 656 [out] IRpcStubBuffer **ppStub); 657} 658 659[ 660 local, 661 object, 662 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4) 663] 664interface IChannelHook : IUnknown 665{ 666 typedef [unique] IChannelHook *LPCHANNELHOOK; 667 668 typedef struct SChannelHookCallInfo { 669 IID iid; 670 DWORD cbSize; 671 GUID uCausality; 672 DWORD dwServerPid; 673 DWORD iMethod; 674 void *pObject; 675 } SChannelHookCallInfo; 676 677 void ClientGetSize( 678 [in] REFGUID uExtent, 679 [in] REFIID riid, 680 [out] ULONG *pDataSize); 681 682 void ClientFillBuffer( 683 [in] REFGUID uExtent, 684 [in] REFIID riid, 685 [in, out] ULONG *pDataSize, 686 [in] void *pDataBuffer); 687 688 void ClientNotify( 689 [in] REFGUID uExtent, 690 [in] REFIID riid, 691 [in] ULONG cbDataSize, 692 [in] void *pDataBuffer, 693 [in] DWORD lDataRep, 694 [in] HRESULT hrFault); 695 696 void ServerNotify( 697 [in] REFGUID uExtent, 698 [in] REFIID riid, 699 [in] ULONG cbDataSize, 700 [in] void *pDataBuffer, 701 [in] DWORD lDataRep); 702 703 void ServerGetSize( 704 [in] REFGUID uExtent, 705 [in] REFIID riid, 706 [in] HRESULT hrFault, 707 [out] ULONG *pDataSize); 708 709 void ServerFillBuffer( 710 [in] REFGUID uExtent, 711 [in] REFIID riid, 712 [in, out] ULONG *pDataSize, 713 [in] void *pDataBuffer, 714 [in] HRESULT hrFault ); 715} 716 717extern const FMTID FMTID_SummaryInformation; 718extern const FMTID FMTID_DocSummaryInformation; 719extern const FMTID FMTID_UserDefinedProperties; 720 721 722/******************** Connection Points ********************/ 723/* FIXME */ 724 725/******************** DCOM ********************/ 726 727[ 728 local, 729 object, 730 uuid(0000013D-0000-0000-C000-000000000046) 731] 732interface IClientSecurity : IUnknown 733{ 734 typedef struct tagSOLE_AUTHENTICATION_SERVICE { 735 DWORD dwAuthnSvc; 736 DWORD dwAuthzSvc; 737 OLECHAR *pPrincipalName; 738 HRESULT hr; 739 } SOLE_AUTHENTICATION_SERVICE; 740 741 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE; 742 743 typedef struct tagSOLE_AUTHENTICATION_INFO { 744 DWORD dwAuthnSvc; 745 DWORD dwAuthzSvc; 746 void *pAuthInfo; 747 } SOLE_AUTHENTICATION_INFO; 748 749 const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1; 750 const void *COLE_DEFAULT_AUTHINFO = (void*) -1; 751 752 typedef struct tagSOLE_AUTHENTICATION_LIST { 753 DWORD cAuthInfo; 754 SOLE_AUTHENTICATION_INFO *aAuthInfo; 755 } SOLE_AUTHENTICATION_LIST; 756 757 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES { 758 EOAC_NONE = 0x0, 759 EOAC_MUTUAL_AUTH = 0x1, 760 EOAC_SECURE_REFS = 0x2, /* CoInitializeSecurity only */ 761 EOAC_ACCESS_CONTROL = 0x4, /* CoInitializeSecurity only */ 762 EOAC_APPID = 0x8, /* CoInitializeSecurity only */ 763 EOAC_DYNAMIC = 0x10, /* CoInitializeSecurity only */ 764 EOAC_STATIC_CLOAKING = 0x20, 765 EOAC_DYNAMIC_CLOAKING = 0x40, 766 EOAC_ANY_AUTHORITY = 0x80, 767 EOAC_MAKE_FULLSIC = 0x100, 768 EOAC_REQUIRE_FULLSIC = 0x200, /* CoInitializeSecurity only */ 769 EOAC_AUTO_IMPERSONATE = 0x400, /* CoInitializeSecurity only */ 770 EOAC_DEFAULT = 0x800, 771 EOAC_DISABLE_AAA = 0x1000, /* CoInitializeSecurity only */ 772 EOAC_NO_CUSTOM_MARSHAL = 0x2000, /* CoInitializeSecurity only */ 773 } EOLE_AUTHENTICATION_CAPABILITIES; 774 775 HRESULT QueryBlanket( 776 [in] IUnknown *pProxy, 777 [out] DWORD *pAuthnSvc, 778 [out] DWORD *pAuthzSvc, 779 [out] OLECHAR **pServerPrincName, 780 [out] DWORD *pAuthnLevel, 781 [out] DWORD *pImpLevel, 782 [out] void **pAuthInfo, 783 [out] DWORD *pCapabilities); 784 785 HRESULT SetBlanket( 786 [in] IUnknown *pProxy, 787 [in] DWORD AuthnSvc, 788 [in] DWORD AuthzSvc, 789 [in] OLECHAR *pServerPrincName, 790 [in] DWORD AuthnLevel, 791 [in] DWORD ImpLevel, 792 [in] void *pAuthInfo, 793 [in] DWORD Capabilities); 794 795 HRESULT CopyProxy( 796 [in] IUnknown *pProxy, 797 [out] IUnknown **ppCopy); 798} 799 800[ 801 local, 802 object, 803 uuid(0000013E-0000-0000-C000-000000000046) 804] 805interface IServerSecurity : IUnknown 806{ 807 HRESULT QueryBlanket( 808 [out] DWORD *pAuthnSvc, 809 [out] DWORD *pAuthzSvc, 810 [out] OLECHAR **pServerPrincName, 811 [out] DWORD *pAuthnLevel, 812 [out] DWORD *pImpLevel, 813 [out] void **pPrivs, 814 [out] DWORD *pCapabilities); 815 816 HRESULT ImpersonateClient(); 817 818 HRESULT RevertToSelf(); 819 820 BOOL IsImpersonating(); 821} 822 823[ 824 local, 825 object, 826 uuid(00000024-0000-0000-C000-000000000046) 827] 828interface IAsyncSetup : IUnknown 829{ 830 HRESULT GetAsyncManager( 831 [in] REFIID riid, 832 [in] IUnknown *pOuter, 833 [in] DWORD dwFlags, 834 [out] IUnknown **ppInner, 835 [out] IAsyncManager **ppAsyncMgr); 836} 837 838[ 839 object, 840 uuid(00000030-0000-0000-C000-000000000046) 841] 842 843interface ISynchronize : IUnknown 844{ 845 HRESULT Wait( 846 [in] DWORD dwFlags, 847 [in] DWORD dwMilliseconds); 848 849 HRESULT Signal(); 850 851 HRESULT Reset(); 852} 853 854 855[ 856 local, 857 object, 858 uuid(00000031-0000-0000-C000-000000000046) 859] 860interface ISynchronizeHandle : IUnknown 861{ 862 HRESULT GetHandle( 863 [out] HANDLE *ph); 864} 865 866 867[ 868 local, 869 object, 870 uuid(00000032-0000-0000-C000-000000000046) 871] 872interface ISynchronizeEvent : ISynchronizeHandle 873{ 874 HRESULT SetEventHandle( 875 [in] HANDLE *ph); 876} 877 878 879[ 880 local, 881 object, 882 uuid(00000033-0000-0000-C000-000000000046) 883] 884interface ISynchronizeContainer : IUnknown 885{ 886 HRESULT AddSynchronize( 887 [in] ISynchronize *pSync); 888 889 HRESULT WaitMultiple( 890 [in] DWORD dwFlags, 891 [in] DWORD dwTimeOut, 892 [out] ISynchronize **ppSync); 893} 894 895[ 896 local, 897 object, 898 uuid(00000025-0000-0000-C000-000000000046) 899] 900interface ISynchronizeMutex : ISynchronize 901{ 902 HRESULT ReleaseMutex(); 903} 904 905[ 906 local, 907 object, 908 uuid(00000029-0000-0000-C000-000000000046) 909] 910 911interface ICancelMethodCalls : IUnknown 912{ 913 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS; 914 915 HRESULT Cancel( 916 [in] ULONG ulSeconds); 917 918 HRESULT TestCancel(); 919} 920 921[ 922 local, 923 object, 924 uuid(0000002A-0000-0000-C000-000000000046) 925] 926interface IAsyncManager : IUnknown 927{ 928 typedef enum tagDCOM_CALL_STATE { 929 DCOM_NONE = 0, 930 DCOM_CALL_COMPLETE = 1, 931 DCOM_CALL_CANCELED = 2 932 } DCOM_CALL_STATE; 933 934 HRESULT CompleteCall( 935 [in] HRESULT Result); 936 937 HRESULT GetCallContext( 938 [in] REFIID riid, 939 [out] void **pInterface); 940 941 HRESULT GetState( 942 [out] ULONG *pulStateFlags); 943} 944 945[ 946 local, 947 object, 948 uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d), 949 pointer_default(unique) 950] 951interface ICallFactory : IUnknown 952{ 953 HRESULT CreateCall( 954 [in] REFIID riid, 955 [in] IUnknown *pCtrlUnk, 956 [in] REFIID riid2, 957 [out, iid_is(riid2)] IUnknown **ppv); 958} 959 960[ 961 local, 962 object, 963 uuid(00000144-0000-0000-C000-000000000046) 964] 965interface IRpcOptions : IUnknown 966{ 967 HRESULT Set( 968 [in] IUnknown *pPrx, 969 [in] DWORD dwProperty, 970 [in] ULONG_PTR dwValue); 971 972 HRESULT Query( 973 [in] IUnknown *pPrx, 974 [in] DWORD dwProperty, 975 [out] ULONG_PTR *pdwValue); 976} 977 978enum { 979 COMBND_RPCTIMEOUT = 1, 980 COMBND_SERVER_LOCALITY = 2 981}; 982 983enum { 984 SERVER_LOCALITY_PROCESS_LOCAL = 0, 985 SERVER_LOCALITY_MACHINE_LOCAL = 1, 986 SERVER_LOCALITY_REMOTE = 2 987}; 988 989[ 990 local, 991 object, 992 uuid(00000149-0000-0000-C000-000000000046), 993 pointer_default(unique) 994] 995interface IRpcHelper : IUnknown 996{ 997 HRESULT GetDCOMProtocolVersion( 998 [out] DWORD *pComVersion); 999 1000 HRESULT GetIIDFromOBJREF( 1001 [in] void *pObjRef, 1002 [out] IID **piid); 1003} 1004 1005[ 1006 local, 1007 object, 1008 uuid(eb0cb9e8-7996-11d2-872e-0000f8080859) 1009] 1010interface IReleaseMarshalBuffers : IUnknown 1011{ 1012 HRESULT ReleaseMarshalBuffer( 1013 [in] RPCOLEMESSAGE *pMsg, 1014 [in] DWORD dwFlags, 1015 [in, unique] IUnknown *pChnl); 1016} 1017 1018[ 1019 local, 1020 object, 1021 uuid(0000002B-0000-0000-C000-000000000046) 1022] 1023interface IWaitMultiple : IUnknown 1024{ 1025 HRESULT WaitMultiple( 1026 [in] DWORD timeout, 1027 [out] ISynchronize **pSync); 1028 HRESULT AddSynchronize( 1029 [in] ISynchronize *pSync); 1030} 1031 1032 1033[ 1034 local, 1035 object, 1036 uuid(00000147-0000-0000-C000-000000000046) 1037] 1038interface IAddrTrackingControl : IUnknown 1039{ 1040 typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL; 1041 1042 HRESULT EnableCOMDynamicAddrTracking(); 1043 HRESULT DisableCOMDynamicAddrTracking(); 1044} 1045 1046[ 1047 local, 1048 object, 1049 uuid(00000148-0000-0000-C000-000000000046) 1050] 1051interface IAddrExclusionControl : IUnknown 1052{ 1053 typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL; 1054 1055 HRESULT GetCurrentAddrExclusionList( 1056 [in] REFIID riid, 1057 [out, iid_is(riid)] void **ppEnumerator); 1058 HRESULT UpdateAddrExclusionList( 1059 [in] IUnknown *pEnumerator); 1060} 1061 1062typedef enum _APTTYPE { 1063 APTTYPE_CURRENT = -1, 1064 APTTYPE_STA = 0, 1065 APTTYPE_MTA = 1, 1066 APTTYPE_NA = 2, 1067 APTTYPE_MAINSTA = 3 1068} APTTYPE; 1069 1070typedef enum _APTTYPEQUALIFIER { 1071 APTTYPEQUALIFIER_NONE, 1072 APTTYPEQUALIFIER_IMPLICIT_MTA, 1073 APTTYPEQUALIFIER_NA_ON_MTA, 1074 APTTYPEQUALIFIER_NA_ON_STA, 1075 APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA, 1076 APTTYPEQUALIFIER_NA_ON_MAINSTA 1077} APTTYPEQUALIFIER; 1078 1079typedef enum _THDTYPE { 1080 THDTYPE_BLOCKMESSAGES = 0, 1081 THDTYPE_PROCESSMESSAGES = 1 1082} THDTYPE; 1083 1084[ 1085 local, 1086 object, 1087 uuid(000001ce-0000-0000-C000-000000000046), 1088 pointer_default(unique) 1089] 1090interface IComThreadingInfo : IUnknown 1091{ 1092 HRESULT GetCurrentApartmentType( 1093 [out] APTTYPE *pAptType); 1094 HRESULT GetCurrentThreadType( 1095 [out] THDTYPE *pThreadType); 1096 HRESULT GetCurrentLogicalThreadId( 1097 [out] GUID *pguidLogicalThreadId); 1098 HRESULT SetCurrentLogicalThreadId( 1099 [in] REFGUID rguid); 1100} 1101 1102 1103[ 1104 object, 1105 pointer_default(unique), 1106 uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9) 1107] 1108interface IProcessInitControl : IUnknown 1109{ 1110 HRESULT ResetInitializerTimeout( 1111 [in] DWORD dwSecondsRemaining); 1112} 1113 1114typedef enum tagGLOBALOPT_PROPERTIES 1115{ 1116 COMGLB_EXCEPTION_HANDLING = 1, 1117 COMGLB_APPID = 2, 1118 COMGLB_RPC_THREADPOOL_SETTING = 3, 1119 COMGLB_RO_SETTINGS = 4, 1120 COMGLB_UNMARSHALING_POLICY = 5, 1121 COMGLB_PROPERTIES_RESERVED1 = 6, 1122 COMGLB_PROPERTIES_RESERVED2 = 7, 1123 COMGLB_PROPERTIES_RESERVED3 = 8, 1124} GLOBALOPT_PROPERTIES; 1125 1126typedef enum tagGLOBALOPT_EH_VALUES 1127{ 1128 COMGLB_EXCEPTION_HANDLE = 0, 1129 COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1, 1130 COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL, 1131 COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2 1132} GLOBALOPT_EH_VALUES; 1133 1134typedef enum tagGLOBALOPT_RPCTP_VALUES 1135{ 1136 COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0, 1137 COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1 1138} GLOBALOPT_RPCTP_VALUES; 1139 1140typedef enum tagGLOBALOPT_RO_FLAGS 1141{ 1142 COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES = 0x1, 1143 COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES = 0x2, 1144 COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES = 0x4, 1145 COMGLB_FAST_RUNDOWN = 0x8, 1146 COMGLB_RESERVED1 = 0x10, 1147 COMGLB_RESERVED2 = 0x20, 1148 COMGLB_RESERVED3 = 0x40, 1149 COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES = 0x80, 1150 COMGLB_RESERVED4 = 0x100, 1151 COMGLB_RESERVED5 = 0x200, 1152 COMGLB_RESERVED6 = 0x400, 1153} GLOBALOPT_RO_FLAGS; 1154 1155typedef enum tagGLOBALOPT_UNMARSHALING_POLICY_VALUES 1156{ 1157 COMGLB_UNMARSHALING_POLICY_NORMAL = 0, 1158 COMGLB_UNMARSHALING_POLICY_STRONG = 1, 1159 COMGLB_UNMARSHALING_POLICY_HYBRID = 2, 1160} GLOBALOPT_UNMARSHALING_POLICY_VALUES; 1161 1162[ 1163 object, 1164 local, 1165 pointer_default(unique), 1166 uuid(0000015B-0000-0000-C000-000000000046) 1167] 1168interface IGlobalOptions : IUnknown 1169{ 1170 HRESULT Set([in] GLOBALOPT_PROPERTIES property, [in] ULONG_PTR value); 1171 HRESULT Query([in] GLOBALOPT_PROPERTIES property, [out ] ULONG_PTR *value); 1172} 1173 1174cpp_quote("#ifdef USE_COM_CONTEXT_DEF") 1175 1176typedef DWORD CPFLAGS; 1177 1178typedef struct tagContextProperty 1179{ 1180 GUID policyId; 1181 CPFLAGS flags; 1182 [unique] IUnknown *pUnk; 1183} ContextProperty; 1184 1185[ 1186 local, 1187 object, 1188 uuid(000001c1-0000-0000-C000-000000000046) 1189] 1190interface IEnumContextProps : IUnknown 1191{ 1192 typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS; 1193 1194 HRESULT Next( 1195 [in] ULONG celt, 1196 [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties, 1197 [out] ULONG *pceltFetched); 1198 1199 HRESULT Skip( 1200 [in] ULONG celt); 1201 1202 HRESULT Reset(); 1203 1204 HRESULT Clone( 1205 [out] IEnumContextProps **ppEnumContextProps); 1206 1207 HRESULT Count( 1208 [out] ULONG *pcelt); 1209} 1210 1211[ 1212 local, 1213 object, 1214 uuid(000001c0-0000-0000-C000-000000000046) 1215] 1216interface IContext : IUnknown 1217{ 1218 HRESULT SetProperty( 1219 [in] REFGUID policyId, 1220 [in] CPFLAGS flags, 1221 [in] IUnknown *pUnk); 1222 1223 HRESULT RemoveProperty( 1224 [in] REFGUID policyId); 1225 1226 HRESULT GetProperty( 1227 [in] REFGUID guid, 1228 [out] CPFLAGS *pFlags, 1229 [out] IUnknown **ppUnk); 1230 1231 HRESULT EnumContextProps( 1232 [out] IEnumContextProps **ppEnumContextProps); 1233} 1234 1235[ 1236 local, 1237 object, 1238 uuid(000001c6-0000-0000-c000-000000000046), 1239 pointer_default(unique) 1240] 1241interface IObjContext : IContext 1242{ 1243 void Reserved1(); 1244 void Reserved2(); 1245 void Reserved3(); 1246 void Reserved4(); 1247 void Reserved5(); 1248 void Reserved6(); 1249 void Reserved7(); 1250} 1251 1252cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */") 1253cpp_quote("#endif /* defined _OBJIDLBASE_ */")