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

Information | Donate

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

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

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

ReactOS Development > Doxygen

objidl.idl
Go to the documentation of this file.
00001 /*
00002  * Copyright 2002 Ove Kaaven
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #ifndef DO_NO_IMPORTS
00020 import "unknwn.idl";
00021 #endif
00022 
00023 interface IStream;
00024 interface IEnumString;
00025 interface IRunningObjectTable;
00026 interface IMoniker;
00027 interface IAdviseSink;
00028 interface IAsyncManager;
00029 interface ISynchronize;
00030 
00031 typedef struct _COSERVERINFO {
00032   DWORD dwReserved1;
00033   LPWSTR pwszName;
00034   COAUTHINFO *pAuthInfo;
00035   DWORD dwReserved2;
00036 } COSERVERINFO;
00037 
00038 /******************** Fundamentals ********************/
00039 
00040 [
00041   local,
00042   object,
00043   uuid(00000003-0000-0000-C000-000000000046)
00044 ]
00045 interface IMarshal : IUnknown
00046 {
00047   typedef [unique] IMarshal *LPMARSHAL;
00048 
00049   HRESULT GetUnmarshalClass(
00050     [in] REFIID riid,
00051     [in, unique] void *pv,
00052     [in] DWORD dwDestContext,
00053     [in, unique] void *pvDestContext,
00054     [in] DWORD mshlflags,
00055     [out] CLSID *pCid);
00056 
00057   HRESULT GetMarshalSizeMax(
00058     [in] REFIID riid,
00059     [in, unique] void *pv,
00060     [in] DWORD dwDestContext,
00061     [in, unique] void *pvDestContext,
00062     [in] DWORD mshlflags,
00063     [out] DWORD *pSize);
00064 
00065   HRESULT MarshalInterface(
00066     [in, unique] IStream *pStm,
00067     [in] REFIID riid,
00068     [in, unique] void *pv,
00069     [in] DWORD dwDestContext,
00070     [in, unique] void *pvDestContext,
00071     [in] DWORD mshlflags);
00072 
00073   HRESULT UnmarshalInterface(
00074     [in, unique] IStream *pStm,
00075     [in] REFIID riid,
00076     [out] void **ppv);
00077 
00078   HRESULT ReleaseMarshalData(
00079     [in, unique] IStream *pStm);
00080 
00081   HRESULT DisconnectObject(
00082     [in] DWORD dwReserved);
00083 }
00084 
00085 [
00086     local,
00087     object,
00088     uuid(000001cf-0000-0000-C000-000000000046)
00089 ]
00090 interface IMarshal2 : IMarshal
00091 {
00092     typedef [unique] IMarshal2 *LPMARSHAL2;
00093 }
00094 
00095 [
00096   local,
00097   object,
00098   uuid(00000018-0000-0000-C000-000000000046)
00099 ]
00100 interface IStdMarshalInfo : IUnknown
00101 {
00102   typedef [unique] IStdMarshalInfo *LPSTDMARSHALINFO;
00103 
00104   HRESULT GetClassForHandler(
00105     [in] DWORD dwDestContext,
00106     [in, unique] void *pvDestContext,
00107     [out] CLSID *pClsid);
00108 }
00109 
00110 [
00111   local,
00112   object,
00113   uuid(00000019-0000-0000-C000-000000000046)
00114 ]
00115 interface IExternalConnection : IUnknown
00116 {
00117   typedef [unique] IExternalConnection *LPEXTERNALCONNECTION;
00118 
00119   typedef enum tagEXTCONN {
00120     EXTCONN_STRONG   = 0x0001,
00121     EXTCONN_WEAK     = 0x0002,
00122     EXTCONN_CALLABLE = 0x0004
00123   } EXTCONN;
00124 
00125   DWORD AddConnection(
00126     [in] DWORD extconn,
00127     [in] DWORD reserved);
00128 
00129   DWORD ReleaseConnection(
00130     [in] DWORD extconn,
00131     [in] DWORD reserved,
00132     [in] BOOL fLastReleaseCloses);
00133 }
00134 
00135 [
00136   local,
00137   object,
00138   uuid(00000020-0000-0000-C000-000000000046)
00139 ]
00140 interface IMultiQI : IUnknown
00141 {
00142   typedef [unique] IMultiQI *LPMULTIQI;
00143 
00144   typedef struct tagMULTI_QI {
00145     const IID *pIID;
00146     IUnknown *pItf;
00147     HRESULT hr;
00148   } MULTI_QI;
00149 
00150   HRESULT QueryMultipleInterfaces(
00151     [in] ULONG cMQIs,
00152     [in, out] MULTI_QI *pMQIs);
00153 }
00154 
00155 [
00156   local,
00157   object,
00158   uuid(00000002-0000-0000-C000-000000000046)
00159 ]
00160 interface IMalloc : IUnknown
00161 {
00162   typedef [unique] IMalloc *LPMALLOC;
00163 
00164   LPVOID Alloc(
00165     [in] ULONG cb);
00166 
00167   LPVOID Realloc(
00168     [in] LPVOID pv,
00169     [in] ULONG cb);
00170 
00171   void Free(
00172     [in] LPVOID pv);
00173 
00174   ULONG GetSize(
00175     [in] LPVOID pv);
00176 
00177   int DidAlloc(LPVOID pv);
00178 
00179   void HeapMinimize();
00180 }
00181 
00182 [
00183   local,
00184   object,
00185   uuid(0000001d-0000-0000-C000-000000000046)
00186 ]
00187 interface IMallocSpy : IUnknown
00188 {
00189   typedef [unique] IMallocSpy *LPMALLOCSPY;
00190 
00191   ULONG PreAlloc(
00192     [in] ULONG cbRequest);
00193 
00194   LPVOID PostAlloc(
00195     [in] LPVOID pActual);
00196 
00197   LPVOID PreFree(
00198     [in] LPVOID pRequest,
00199     [in] BOOL fSpyed);
00200 
00201   void PostFree(
00202     [in] BOOL fSpyed);
00203 
00204   ULONG PreRealloc(
00205     [in] LPVOID pRequest,
00206     [in] ULONG cbRequest,
00207     [out] LPVOID *ppNewRequest,
00208     [in] BOOL fSpyed);
00209 
00210   LPVOID PostRealloc(
00211     [in] LPVOID pActual,
00212     [in] BOOL fSpyed);
00213 
00214   LPVOID PreGetSize(
00215     [in] LPVOID pRequest,
00216     [in] BOOL fSpyed);
00217 
00218   ULONG PostGetSize(
00219     [in] ULONG cbActual,
00220     [in] BOOL fSpyed);
00221 
00222   LPVOID PreDidAlloc(
00223     [in] LPVOID pRequest,
00224     [in] BOOL fSpyed);
00225 
00226   int PostDidAlloc(
00227     [in] LPVOID pRequest,
00228     [in] BOOL fSpyed,
00229     [in] int fActual);
00230 
00231   void PreHeapMinimize();
00232 
00233   void PostHeapMinimize();
00234 }
00235 
00236 [
00237   local,
00238   object,
00239   uuid(00000021-0000-0000-C000-000000000046)
00240 ]
00241 interface IInternalUnknown : IUnknown
00242 {
00243   HRESULT QueryInternalInterface(
00244     [in] REFIID riid,
00245     [out] void **ppv);
00246 }
00247 
00248 [
00249   object,
00250   uuid(00000100-0000-0000-C000-000000000046),
00251   pointer_default(unique)
00252 ]
00253 interface IEnumUnknown : IUnknown
00254 {
00255   typedef [unique] IEnumUnknown *LPENUMUNKNOWN;
00256 
00257   [local]
00258   HRESULT Next(
00259     [in] ULONG celt,
00260     [out] IUnknown **rgelt,
00261     [out] ULONG *pceltFetched);
00262 
00263   [call_as(Next)]
00264   HRESULT RemoteNext(
00265     [in] ULONG celt,
00266     [out, size_is(celt), length_is(*pceltFetched)]
00267     IUnknown **rgelt,
00268     [out] ULONG *pceltFetched);
00269 
00270   HRESULT Skip(
00271     [in] ULONG celt);
00272 
00273   HRESULT Reset();
00274 
00275   HRESULT Clone(
00276     [out] IEnumUnknown **ppenum);
00277 }
00278 
00279 [
00280   object,
00281   uuid(00000022-0000-0000-C000-000000000046),
00282   version(1.0),
00283   pointer_default(unique)
00284 ]
00285 interface ISurrogate : IUnknown
00286 {
00287   typedef [unique] ISurrogate *LPSURROGATE;
00288 
00289   HRESULT LoadDllServer(
00290     [in] REFCLSID Clsid);
00291   HRESULT FreeSurrogate();
00292 }
00293 
00294 [
00295   local,
00296   object,
00297   uuid(00000146-0000-0000-C000-000000000046)
00298 ]
00299 interface IGlobalInterfaceTable : IUnknown
00300 {
00301   typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
00302 
00303   HRESULT RegisterInterfaceInGlobal(
00304     [in] IUnknown *pUnk,
00305     [in] REFIID riid,
00306     [out] DWORD *pdwCookie);
00307 
00308   HRESULT RevokeInterfaceFromGlobal(
00309     [in] DWORD dwCookie);
00310 
00311   HRESULT GetInterfaceFromGlobal(
00312     [in] DWORD dwCookie,
00313     [in] REFIID riid,
00314     [out, iid_is(riid)] void **ppv);
00315 }
00316 
00317 /******************** Monikers ********************/
00318 
00319 [
00320   object,
00321   uuid(0000000e-0000-0000-C000-000000000046),
00322   pointer_default(unique)
00323 ]
00324 interface IBindCtx : IUnknown
00325 {
00326   typedef [unique] IBindCtx *LPBINDCTX;
00327   typedef [unique] IBindCtx *LPBC;
00328 
00329   typedef struct tagBIND_OPTS {
00330     DWORD cbStruct;
00331     DWORD grfFlags;
00332     DWORD grfMode;
00333     DWORD dwTickCountDeadline;
00334   } BIND_OPTS, *LPBIND_OPTS;
00335 
00336   /* FIXME: C++ crap */
00337   typedef struct tagBIND_OPTS2 {
00338     DWORD cbStruct;
00339     DWORD grfFlags;
00340     DWORD grfMode;
00341     DWORD dwTickCountDeadline;
00342     DWORD dwTrackFlags;
00343     DWORD dwClassContext;
00344     LCID  locale;
00345     COSERVERINFO *pServerInfo;
00346   } BIND_OPTS2, *LPBIND_OPTS2;
00347 
00348   typedef struct tagBIND_OPTS3 {
00349     DWORD cbStruct;
00350     DWORD grfFlags;
00351     DWORD grfMode;
00352     DWORD dwTickCountDeadline;
00353     DWORD dwTrackFlags;
00354     DWORD dwClassContext;
00355     LCID  locale;
00356     COSERVERINFO *pServerInfo;
00357     HWND hwnd;
00358   } BIND_OPTS3, *LPBIND_OPTS3;
00359 
00360   typedef enum tagBIND_FLAGS {
00361     BIND_MAYBOTHERUSER   = 1,
00362     BIND_JUSTTESTEXISTENCE = 2
00363   } BIND_FLAGS;
00364 
00365   HRESULT RegisterObjectBound(
00366     [in, unique] IUnknown *punk);
00367 
00368   HRESULT RevokeObjectBound(
00369     [in, unique] IUnknown *punk);
00370 
00371   HRESULT ReleaseBoundObjects();
00372 
00373   [local]
00374   HRESULT SetBindOptions(
00375     [in] BIND_OPTS *pbindopts);
00376 
00377   [call_as(SetBindOptions)]
00378   HRESULT RemoteSetBindOptions(
00379     [in] BIND_OPTS2 *pbindopts);
00380 
00381   [local]
00382   HRESULT GetBindOptions(
00383     [in, out] BIND_OPTS *pbindopts);
00384 
00385   [call_as(GetBindOptions)]
00386   HRESULT RemoteGetBindOptions(
00387     [in, out] BIND_OPTS2 *pbindopts);
00388 
00389   HRESULT GetRunningObjectTable(
00390     [out] IRunningObjectTable **pprot);
00391 
00392   HRESULT RegisterObjectParam(
00393     [in] LPOLESTR pszKey,
00394     [in, unique] IUnknown *punk);
00395 
00396   HRESULT GetObjectParam(
00397     [in] LPOLESTR pszKey,
00398     [out] IUnknown **ppunk);
00399 
00400   HRESULT EnumObjectParam(
00401     [out] IEnumString **ppenum);
00402 
00403   HRESULT RevokeObjectParam(
00404     [in] LPOLESTR pszKey);
00405 }
00406 
00407 [
00408   object,
00409   uuid(00000102-0000-0000-C000-000000000046),
00410   pointer_default(unique)
00411 ]
00412 interface IEnumMoniker : IUnknown
00413 {
00414   typedef [unique] IEnumMoniker *LPENUMMONIKER;
00415 
00416   [local]
00417   HRESULT Next(
00418     [in] ULONG celt,
00419     [out, size_is(celt), length_is(*pceltFetched)]
00420     IMoniker **rgelt,
00421     [out] ULONG *pceltFetched);
00422 
00423   [call_as(Next)]
00424   HRESULT RemoteNext(
00425     [in] ULONG celt,
00426     [out, size_is(celt), length_is(*pceltFetched)]
00427     IMoniker **rgelt,
00428     [out] ULONG *pceltFetched);
00429 
00430   HRESULT Skip(
00431     [in] ULONG celt);
00432 
00433   HRESULT Reset();
00434 
00435   HRESULT Clone(
00436     [out] IEnumMoniker **ppenum);
00437 }
00438 
00439 [
00440   object,
00441   uuid(00000126-0000-0000-C000-000000000046)
00442 ]
00443 interface IRunnableObject : IUnknown
00444 {
00445   typedef [unique] IRunnableObject *LPRUNNABLEOBJECT;
00446 
00447   HRESULT GetRunningClass(
00448     [out] LPCLSID lpClsid);
00449 
00450   HRESULT Run(
00451     [in] LPBINDCTX pbc);
00452 
00453   [local]
00454   BOOL IsRunning();
00455 
00456   [call_as(IsRunning)]
00457   HRESULT RemoteIsRunning();
00458 
00459   HRESULT LockRunning(
00460     [in] BOOL fLock,
00461     [in] BOOL fLastUnlockCloses);
00462 
00463   HRESULT SetContainedObject(
00464     [in] BOOL fContained);
00465 }
00466 
00467 /* GetObject is defined in wingdi.h as WINELIB_NAME_AW(GetObject),
00468  * which resolves to a compilation failure if WINE_NO_UNICODE_MACROS is defined,
00469  * but GetObject is used as a valid method name below, so we have
00470  * to undefine it in that case */
00471 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
00472 cpp_quote("#undef GetObject")
00473 cpp_quote("#endif")
00474 
00475 [
00476   object,
00477   uuid(00000010-0000-0000-C000-000000000046)
00478 ]
00479 interface IRunningObjectTable : IUnknown
00480 {
00481   typedef [unique] IRunningObjectTable *LPRUNNINGOBJECTTABLE;
00482 
00483   HRESULT Register(
00484     [in] DWORD grfFlags,
00485     [in, unique] IUnknown *punkObject,
00486     [in, unique] IMoniker *pmkObjectName,
00487     [out] DWORD *pdwRegister);
00488 
00489   HRESULT Revoke(
00490     [in] DWORD dwRegister);
00491 
00492   HRESULT IsRunning(
00493     [in, unique] IMoniker *pmkObjectName);
00494 
00495   HRESULT GetObject(
00496     [in, unique] IMoniker *pmkObjectName,
00497     [out] IUnknown **ppunkObject);
00498 
00499   HRESULT NoteChangeTime(
00500     [in] DWORD dwRegister,
00501     [in] FILETIME *pfiletime);
00502 
00503   HRESULT GetTimeOfLastChange(
00504     [in, unique] IMoniker *pmkObjectName,
00505     [out] FILETIME *pfiletime);
00506 
00507   HRESULT EnumRunning(
00508     [out] IEnumMoniker **ppenumMoniker);
00509 }
00510 
00511 [
00512   object,
00513   uuid(0000010c-0000-0000-C000-000000000046)
00514 ]
00515 interface IPersist : IUnknown
00516 {
00517   typedef [unique] IPersist *LPPERSIST;
00518 
00519   HRESULT GetClassID(
00520     [out] CLSID *pClassID);
00521 }
00522 
00523 [
00524   object,
00525   uuid(00000109-0000-0000-C000-000000000046),
00526   pointer_default(unique)
00527 ]
00528 interface IPersistStream : IPersist
00529 {
00530   typedef [unique] IPersistStream *LPPERSISTSTREAM;
00531 
00532   HRESULT IsDirty();
00533 
00534   HRESULT Load(
00535     [in, unique] IStream *pStm);
00536 
00537   HRESULT Save(
00538     [in, unique] IStream *pStm,
00539     [in] BOOL fClearDirty);
00540 
00541   HRESULT GetSizeMax(
00542     [out] ULARGE_INTEGER *pcbSize);
00543 }
00544 
00545 [
00546   object,
00547   uuid(0000000f-0000-0000-C000-000000000046),
00548   pointer_default(unique)
00549 ]
00550 interface IMoniker : IPersistStream
00551 {
00552   typedef [unique] IMoniker *LPMONIKER;
00553 
00554   typedef enum tagMKSYS {
00555     MKSYS_NONE             = 0,
00556     MKSYS_GENERICCOMPOSITE = 1,
00557     MKSYS_FILEMONIKER      = 2,
00558     MKSYS_ANTIMONIKER      = 3,
00559     MKSYS_ITEMMONIKER      = 4,
00560     MKSYS_POINTERMONIKER   = 5,
00561     /* MKSYS_URLMONIKER       = 6, */ /* defined in urlmon.idl */
00562     MKSYS_CLASSMONIKER     = 7
00563   } MKSYS;
00564 
00565   typedef [v1_enum] enum tagMKREDUCE {
00566     MKRREDUCE_ONE         = 3 << 16,
00567     MKRREDUCE_TOUSER      = 2 << 16,
00568     MKRREDUCE_THROUGHUSER = 1 << 16,
00569     MKRREDUCE_ALL         = 0
00570   } MKRREDUCE;
00571 
00572   [local]
00573   HRESULT BindToObject(
00574     [in, unique] IBindCtx *pbc,
00575     [in, unique] IMoniker *pmkToLeft,
00576     [in] REFIID riidResult,
00577     [out, iid_is(riidResult)] void **ppvResult);
00578 
00579   [call_as(BindToObject)]
00580   HRESULT RemoteBindToObject(
00581     [in, unique] IBindCtx *pbc,
00582     [in, unique] IMoniker *pmkToLeft,
00583     [in] REFIID riidResult,
00584     [out, iid_is(riidResult)] IUnknown **ppvResult);
00585 
00586   [local]
00587   HRESULT BindToStorage(
00588     [in, unique] IBindCtx *pbc,
00589     [in, unique] IMoniker *pmkToLeft,
00590     [in] REFIID riid,
00591     [out, iid_is(riid)] void **ppvObj);
00592 
00593   [call_as(BindToStorage)]
00594   HRESULT RemoteBindToStorage(
00595     [in, unique] IBindCtx *pbc,
00596     [in, unique] IMoniker *pmkToLeft,
00597     [in] REFIID riid,
00598     [out, iid_is(riid)] IUnknown **ppvObj);
00599 
00600   HRESULT Reduce(
00601     [in, unique] IBindCtx *pbc,
00602     [in] DWORD dwReduceHowFar,
00603     [in, out, unique] IMoniker **ppmkToLeft,
00604     [out] IMoniker **ppmkReduced);
00605 
00606   HRESULT ComposeWith(
00607     [in, unique] IMoniker *pmkRight,
00608     [in] BOOL fOnlyIfNotGeneric,
00609     [out] IMoniker **ppmkComposite);
00610 
00611   HRESULT Enum(
00612     [in] BOOL fForward,
00613     [out] IEnumMoniker **ppenumMoniker);
00614 
00615   HRESULT IsEqual(
00616     [in, unique] IMoniker *pmkOtherMoniker);
00617 
00618   HRESULT Hash(
00619     [out] DWORD *pdwHash);
00620 
00621   HRESULT IsRunning(
00622     [in, unique] IBindCtx *pbc,
00623     [in, unique] IMoniker *pmkToLeft,
00624     [in, unique] IMoniker *pmkNewlyRunning);
00625 
00626   HRESULT GetTimeOfLastChange(
00627     [in, unique] IBindCtx *pbc,
00628     [in, unique] IMoniker *pmkToLeft,
00629     [out] FILETIME *pFileTime);
00630 
00631   HRESULT Inverse(
00632     [out] IMoniker **ppmk);
00633 
00634   HRESULT CommonPrefixWith(
00635     [in, unique] IMoniker *pmkOther,
00636     [out] IMoniker **ppmkPrefix);
00637 
00638   HRESULT RelativePathTo(
00639     [in, unique] IMoniker *pmkOther,
00640     [out] IMoniker **ppmkRelPath);
00641 
00642   HRESULT GetDisplayName(
00643     [in, unique] IBindCtx *pbc,
00644     [in, unique] IMoniker *pmkToLeft,
00645     [out] LPOLESTR *ppszDisplayName);
00646 
00647   HRESULT ParseDisplayName(
00648     [in, unique] IBindCtx *pbc,
00649     [in, unique] IMoniker *pmkToLeft,
00650     [in] LPOLESTR pszDisplayName,
00651     [out] ULONG *pchEaten,
00652     [out] IMoniker **ppmkOut);
00653 
00654   HRESULT IsSystemMoniker(
00655     [out] DWORD *pdwMksys);
00656 }
00657 
00658 [
00659   object,
00660   uuid(f29f6bc0-5021-11ce-aa15-00006901293f),
00661   pointer_default(unique)
00662 ]
00663 interface IROTData : IUnknown
00664 {
00665   HRESULT GetComparisonData(
00666     [out, size_is(cbMax)] byte *pbData,
00667     [in] ULONG cbMax,
00668     [out] ULONG *pcbData);
00669 }
00670 
00671 [
00672   object,
00673   uuid(00000101-0000-0000-C000-000000000046),
00674   pointer_default(unique)
00675 ]
00676 interface IEnumString : IUnknown
00677 {
00678   typedef [unique] IEnumString *LPENUMSTRING;
00679 
00680   [local]
00681   HRESULT Next(
00682     [in] ULONG celt,
00683     [out, size_is(celt), length_is(*pceltFetched)]
00684     LPOLESTR *rgelt,
00685     [out] ULONG *pceltFetched);
00686 
00687   [call_as(Next)]
00688   HRESULT RemoteNext(
00689     [in] ULONG celt,
00690     [out, size_is(celt), length_is(*pceltFetched)]
00691     LPOLESTR *rgelt,
00692     [out] ULONG *pceltFetched);
00693 
00694   HRESULT Skip(
00695     [in] ULONG celt);
00696 
00697   HRESULT Reset();
00698 
00699   HRESULT Clone(
00700     [out] IEnumString **ppenum);
00701 }
00702 
00703 [
00704   object,
00705   uuid(00000140-0000-0000-C000-000000000046)
00706 ]
00707 interface IClassActivator : IUnknown
00708 {
00709   HRESULT GetClassObject(
00710     [in] REFCLSID rclsid,
00711     [in] DWORD dwClassContext,
00712     [in] LCID locale,
00713     [in] REFIID riid,
00714     [out, iid_is(riid)] void **ppv);
00715 }
00716 
00717 /******************** Storage ********************/
00718 
00719 [
00720   object,
00721   uuid(0c733a30-2a1c-11ce-ade5-00aa0044773d),
00722   pointer_default(unique)
00723 ]
00724 interface ISequentialStream : IUnknown
00725 {
00726   [local]
00727   HRESULT Read(
00728     [out, size_is(cb), length_is(*pcbRead)]
00729     void *pv,
00730     [in] ULONG cb,
00731     [out] ULONG *pcbRead);
00732 
00733   [call_as(Read)]
00734   HRESULT RemoteRead(
00735     [out, size_is(cb), length_is(*pcbRead)]
00736     byte *pv,
00737     [in] ULONG cb,
00738     [out] ULONG *pcbRead);
00739 
00740   [local]
00741   HRESULT Write(
00742     [in, size_is(cb)] const void *pv,
00743     [in] ULONG cb,
00744     [out] ULONG *pcbWritten);
00745 
00746   [call_as(Write)]
00747   HRESULT RemoteWrite(
00748     [in, size_is(cb)] const byte *pv,
00749     [in] ULONG cb,
00750     [out] ULONG *pcbWritten);
00751 }
00752 
00753 [
00754   object,
00755   uuid(0000000c-0000-0000-C000-000000000046),
00756   pointer_default(unique)
00757 ]
00758 interface IStream : ISequentialStream
00759 {
00760   typedef [unique] IStream *LPSTREAM;
00761 
00762   typedef struct tagSTATSTG {
00763     LPOLESTR pwcsName;
00764     DWORD type;
00765     ULARGE_INTEGER cbSize;
00766     FILETIME mtime;
00767     FILETIME ctime;
00768     FILETIME atime;
00769     DWORD grfMode;
00770     DWORD grfLocksSupported;
00771     CLSID clsid;
00772     DWORD grfStateBits;
00773     DWORD reserved;
00774   } STATSTG;
00775 
00776   typedef enum tagSTGTY {
00777     STGTY_STORAGE   = 1,
00778     STGTY_STREAM    = 2,
00779     STGTY_LOCKBYTES = 3,
00780     STGTY_PROPERTY  = 4
00781   } STGTY;
00782 
00783   typedef enum tagSTREAM_SEEK {
00784     STREAM_SEEK_SET = 0,
00785     STREAM_SEEK_CUR = 1,
00786     STREAM_SEEK_END = 2
00787   } STREAM_SEEK;
00788 
00789   /* these are defined in Linux's fcntl.h,
00790    * undefine them to avoid conflicts */
00791   cpp_quote("#undef LOCK_MAND")
00792   cpp_quote("#undef LOCK_READ")
00793   cpp_quote("#undef LOCK_WRITE")
00794   cpp_quote("#undef LOCK_RW")
00795 
00796   typedef enum tagLOCKTYPE {
00797     LOCK_WRITE      = 1,
00798     LOCK_EXCLUSIVE  = 2,
00799     LOCK_ONLYONCE   = 4
00800   } LOCKTYPE;
00801 
00802   [local]
00803   HRESULT Seek(
00804     [in] LARGE_INTEGER dlibMove,
00805     [in] DWORD dwOrigin,
00806     [out] ULARGE_INTEGER *plibNewPosition);
00807 
00808   [call_as(Seek)]
00809   HRESULT RemoteSeek(
00810     [in] LARGE_INTEGER dlibMove,
00811     [in] DWORD dwOrigin,
00812     [out] ULARGE_INTEGER *plibNewPosition);
00813 
00814   HRESULT SetSize(
00815     [in] ULARGE_INTEGER libNewSize);
00816 
00817   [local]
00818   HRESULT CopyTo(
00819     [in, unique] IStream *pstm,
00820     [in] ULARGE_INTEGER cb,
00821     [out] ULARGE_INTEGER *pcbRead,
00822     [out] ULARGE_INTEGER *pcbWritten);
00823 
00824   [call_as(CopyTo)]
00825   HRESULT RemoteCopyTo(
00826     [in, unique] IStream *pstm,
00827     [in] ULARGE_INTEGER cb,
00828     [out] ULARGE_INTEGER *pcbRead,
00829     [out] ULARGE_INTEGER *pcbWritten);
00830 
00831   HRESULT Commit(
00832     [in] DWORD grfCommitFlags);
00833 
00834   HRESULT Revert();
00835 
00836   HRESULT LockRegion(
00837     [in] ULARGE_INTEGER libOffset,
00838     [in] ULARGE_INTEGER cb,
00839     [in] DWORD dwLockType);
00840 
00841   HRESULT UnlockRegion(
00842     [in] ULARGE_INTEGER libOffset,
00843     [in] ULARGE_INTEGER cb,
00844     [in] DWORD dwLockType);
00845 
00846   HRESULT Stat(
00847     [out] STATSTG *pstatstg,
00848     [in] DWORD grfStatFlag);
00849 
00850   HRESULT Clone(
00851     [out] IStream **ppstm);
00852 }
00853 
00854 [
00855   object,
00856   uuid(0000000d-0000-0000-C000-000000000046),
00857   pointer_default(unique)
00858 ]
00859 interface IEnumSTATSTG : IUnknown
00860 {
00861   typedef [unique] IEnumSTATSTG *LPENUMSTATSTG;
00862 
00863   [local]
00864   HRESULT Next(
00865     [in] ULONG celt,
00866     [out, size_is(celt), length_is(*pceltFetched)]
00867     STATSTG *rgelt,
00868     [out] ULONG *pceltFetched);
00869 
00870   [call_as(Next)]
00871   HRESULT RemoteNext(
00872     [in] ULONG celt,
00873     [out, size_is(celt), length_is(*pceltFetched)]
00874     STATSTG *rgelt,
00875     [out] ULONG *pceltFetched);
00876 
00877   HRESULT Skip(
00878     [in] ULONG celt);
00879 
00880   HRESULT Reset();
00881 
00882   HRESULT Clone(
00883     [out] IEnumSTATSTG **ppenum);
00884 }
00885 
00886 [
00887   object,
00888   uuid(0000000b-0000-0000-C000-000000000046),
00889   pointer_default(unique)
00890 ]
00891 interface IStorage : IUnknown
00892 {
00893   typedef [unique] IStorage *LPSTORAGE;
00894 
00895   typedef struct tagRemSNB {
00896     unsigned long ulCntStr;
00897     unsigned long ulCntChar;
00898     [size_is(ulCntChar)] OLECHAR rgString[];
00899   } RemSNB;
00900 
00901   typedef [unique] RemSNB *wireSNB;
00902   typedef [wire_marshal(wireSNB)] OLECHAR **SNB;
00903 
00904   HRESULT CreateStream(
00905     [in] LPCOLESTR pwcsName,
00906     [in] DWORD grfMode,
00907     [in] DWORD reserved1,
00908     [in] DWORD reserved2,
00909     [out] IStream **ppstm);
00910 
00911   [local]
00912   HRESULT OpenStream(
00913     [in] LPCOLESTR pwcsName,
00914     [in, unique] void *reserved1,
00915     [in] DWORD grfMode,
00916     [in] DWORD reserved2,
00917     [out] IStream **ppstm);
00918 
00919   [call_as(OpenStream)]
00920   HRESULT RemoteOpenStream(
00921     [in] LPCOLESTR pwcsName,
00922     [in] unsigned long cbReserved1,
00923     [in, unique, size_is(cbReserved1)] byte *reserved1,
00924     [in] DWORD grfMode,
00925     [in] DWORD reserved2,
00926     [out] IStream **ppstm);
00927 
00928   HRESULT CreateStorage(
00929     [in] LPCOLESTR pwcsName,
00930     [in] DWORD grfMode,
00931     [in] DWORD dwStgFmt,
00932     [in] DWORD reserved2,
00933     [out] IStorage **ppstg);
00934 
00935   HRESULT OpenStorage(
00936     [in, unique] LPCOLESTR pwcsName,
00937     [in, unique] IStorage *pstgPriority,
00938     [in] DWORD grfMode,
00939     [in, unique] SNB snbExclude,
00940     [in] DWORD reserved,
00941     [out] IStorage **ppstg);
00942 
00943   HRESULT CopyTo(
00944     [in] DWORD ciidExclude,
00945     [in, unique, size_is(ciidExclude)] const IID *rgiidExclude,
00946     [in, unique] SNB snbExclude,
00947     [in, unique] IStorage *pstgDest);
00948 
00949   HRESULT MoveElementTo(
00950     [in] LPCOLESTR pwcsName,
00951     [in, unique] IStorage *pstgDest,
00952     [in] LPCOLESTR pwcsNewName,
00953     [in] DWORD grfFlags);
00954 
00955   HRESULT Commit(
00956     [in] DWORD grfCommitFlags);
00957 
00958   HRESULT Revert();
00959 
00960   [local]
00961   HRESULT EnumElements(
00962     [in] DWORD reserved1,
00963     [in, unique, size_is(1)] void *reserved2,
00964     [in] DWORD reserved3,
00965     [out] IEnumSTATSTG **ppenum);
00966 
00967   [call_as(EnumElements)]
00968   HRESULT RemoteEnumElements(
00969     [in] DWORD reserved1,
00970     [in] unsigned long cbReserved2,
00971     [in, unique, size_is(cbReserved2)] byte *reserved2,
00972     [in] DWORD reserved3,
00973     [out] IEnumSTATSTG **ppenum);
00974 
00975   HRESULT DestroyElement(
00976     [in] LPCOLESTR pwcsName);
00977 
00978   HRESULT RenameElement(
00979     [in] LPCOLESTR pwcsOldName,
00980     [in] LPCOLESTR pwcsNewName);
00981 
00982   HRESULT SetElementTimes(
00983     [in, unique] LPCOLESTR pwcsName,
00984     [in, unique] const FILETIME *pctime,
00985     [in, unique] const FILETIME *patime,
00986     [in, unique] const FILETIME *pmtime);
00987 
00988   HRESULT SetClass(
00989     [in] REFCLSID clsid);
00990 
00991   HRESULT SetStateBits(
00992     [in] DWORD grfStateBits,
00993     [in] DWORD grfMask);
00994 
00995   HRESULT Stat(
00996     [out] STATSTG *pstatstg,
00997     [in] DWORD grfStatFlag);
00998 }
00999 
01000 [
01001   object,
01002   uuid(0000010b-0000-0000-C000-000000000046),
01003   pointer_default(unique)
01004 ]
01005 interface IPersistFile : IPersist
01006 {
01007   typedef [unique] IPersistFile *LPPERSISTFILE;
01008 
01009   HRESULT IsDirty();
01010 
01011   HRESULT Load(
01012     [in] LPCOLESTR pszFileName,
01013     [in] DWORD dwMode);
01014 
01015   HRESULT Save(
01016     [in, unique] LPCOLESTR pszFileName,
01017     [in] BOOL fRemember);
01018 
01019   HRESULT SaveCompleted(
01020     [in, unique] LPCOLESTR pszFileName);
01021 
01022   HRESULT GetCurFile(
01023     [out] LPOLESTR *ppszFileName);
01024 }
01025 
01026 [
01027   object,
01028   uuid(0000010a-0000-0000-C000-000000000046),
01029   pointer_default(unique)
01030 ]
01031 interface IPersistStorage : IPersist
01032 {
01033   typedef [unique] IPersistStorage *LPPERSISTSTORAGE;
01034 
01035   HRESULT IsDirty();
01036 
01037   HRESULT InitNew(
01038     [in, unique] IStorage *pStg);
01039 
01040   HRESULT Load(
01041     [in, unique] IStorage *pStg);
01042 
01043   HRESULT Save(
01044     [in, unique] IStorage *pStgSave,
01045     [in] BOOL fSameAsLoad);
01046 
01047   HRESULT SaveCompleted(
01048     [in, unique] IStorage *pStgNew);
01049 
01050   HRESULT HandsOffStorage();
01051 }
01052 
01053 [
01054   object,
01055   uuid(00000012-0000-0000-C000-000000000046),
01056   pointer_default(unique)
01057 ]
01058 interface IRootStorage : IUnknown
01059 {
01060   typedef [unique] IRootStorage *LPROOTSTORAGE;
01061 
01062   HRESULT SwitchToFile(
01063     [in] LPOLESTR pszFile);
01064 }
01065 
01066 [
01067   object,
01068   uuid(0000000a-0000-0000-C000-000000000046),
01069   pointer_default(unique)
01070 ]
01071 interface ILockBytes : IUnknown
01072 {
01073   typedef [unique] ILockBytes *LPLOCKBYTES;
01074 
01075   [local]
01076   HRESULT ReadAt(
01077     [in] ULARGE_INTEGER ulOffset,
01078     [out, size_is(cb), length_is(*pcbRead)]
01079     void *pv,
01080     [in] ULONG cb,
01081     [out] ULONG *pcbRead);
01082 
01083   [call_as(ReadAt)]
01084   HRESULT RemoteReadAt(
01085     [in] ULARGE_INTEGER ulOffset,
01086     [out, size_is(cb), length_is(*pcbRead)]
01087     byte *pv,
01088     [in] ULONG cb,
01089     [out] ULONG *pcbRead);
01090 
01091   [local]
01092   HRESULT WriteAt(
01093     [in] ULARGE_INTEGER ulOffset,
01094     [in, size_is(cb)] const void *pv,
01095     [in] ULONG cb,
01096     [out] ULONG *pcbWritten);
01097 
01098   [call_as(WriteAt)]
01099   HRESULT RemoteWriteAt(
01100     [in] ULARGE_INTEGER ulOffset,
01101     [in, size_is(cb)] const byte *pv,
01102     [in] ULONG cb,
01103     [out] ULONG *pcbWritten);
01104 
01105   HRESULT Flush();
01106 
01107   HRESULT SetSize(
01108     [in] ULARGE_INTEGER cb);
01109 
01110   HRESULT LockRegion(
01111     [in] ULARGE_INTEGER libOffset,
01112     [in] ULARGE_INTEGER cb,
01113     [in] DWORD dwLockType);
01114 
01115   HRESULT UnlockRegion(
01116     [in] ULARGE_INTEGER libOffset,
01117     [in] ULARGE_INTEGER cb,
01118     [in] DWORD dwLockType);
01119 
01120   HRESULT Stat(
01121     [out] STATSTG *pstatstg,
01122     [in] DWORD grfStatFlag);
01123 }
01124 
01125 [
01126   object,
01127   uuid(99caf010-415e-11cf-8814-00aa00b569f5),
01128   pointer_default(unique)
01129 ]
01130 interface IFillLockBytes : IUnknown
01131 {
01132   [local]
01133   HRESULT FillAppend(
01134     [in, size_is(cb)] const void *pv,
01135     [in] ULONG cb,
01136     [out] ULONG *pcbWritten);
01137 
01138   [call_as(FillAppend)]
01139   HRESULT RemoteFillAppend(
01140     [in, size_is(cb)] const byte *pv,
01141     [in] ULONG cb,
01142     [out] ULONG *pcbWritten);
01143 
01144   [local]
01145   HRESULT FillAt(
01146     [in] ULARGE_INTEGER ulOffset,
01147     [in, size_is(cb)] const void *pv,
01148     [in] ULONG cb,
01149     [out] ULONG *pcbWritten);
01150 
01151   [call_as(FillAt)]
01152   HRESULT RemoteFillAt(
01153     [in] ULARGE_INTEGER ulOffset,
01154     [in, size_is(cb)] const byte *pv,
01155     [in] ULONG cb,
01156     [out] ULONG *pcbWritten);
01157 
01158   HRESULT SetFillSize(
01159     [in] ULARGE_INTEGER ulSize);
01160 
01161   HRESULT Terminate(
01162     [in] BOOL bCanceled);
01163 }
01164 
01165 [
01166   object,
01167   uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
01168   pointer_default(unique)
01169 ]
01170 interface IProgressNotify : IUnknown
01171 {
01172   HRESULT OnProgress(
01173     [in] DWORD dwProgressCurrent,
01174     [in] DWORD dwProgressMaximum,
01175     [in] BOOL fAccurate,
01176     [in] BOOL fOwner);
01177 }
01178 
01179 [
01180   local,
01181   object,
01182   uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
01183   pointer_default(unique)
01184 ]
01185 interface ILayoutStorage : IUnknown
01186 {
01187   typedef struct tagStorageLayout {
01188     DWORD LayoutType;
01189     OLECHAR *pwcsElementName;
01190     LARGE_INTEGER cOffset;
01191     LARGE_INTEGER cBytes;
01192   } StorageLayout;
01193 
01194   HRESULT LayoutScript(
01195     [in] StorageLayout *pStorageLayout,
01196     [in] DWORD nEntries,
01197     [in] DWORD glfInterleavedFlag);
01198 
01199   HRESULT BeginMonitor();
01200 
01201   HRESULT EndMonitor();
01202 
01203   HRESULT ReLayoutDocfile(
01204     [in] OLECHAR *pwcsNewDfName);
01205 
01206   HRESULT ReLayoutDocfileOnILockBytes(
01207     [in] ILockBytes *pILockBytes);
01208 }
01209 
01210 [
01211     object,
01212     uuid(30f3d47a-6447-11d1-8e3c-00c04fb9386d)
01213 ]
01214 interface IBlockingLock : IUnknown
01215 {
01216     HRESULT Lock(
01217         [in] DWORD dwTimeout);
01218 
01219     HRESULT Unlock();
01220 }
01221 
01222 
01223 [
01224     object,
01225     uuid(bc0bf6ae-8878-11d1-83e9-00c04fc2c6d4)
01226 ]
01227 interface ITimeAndNoticeControl : IUnknown
01228 {
01229     HRESULT SuppressChanges(
01230         [in] DWORD res1,
01231         [in] DWORD res2);
01232 
01233 }
01234 
01235 
01236 
01237 [
01238     object,
01239     uuid(8d19c834-8879-11d1-83e9-00c04fc2c6d4)
01240 ]
01241 interface IOplockStorage: IUnknown
01242 {
01243     HRESULT CreateStorageEx(
01244         [in] LPCWSTR pwcsName,
01245         [in] DWORD grfMode,
01246         [in] DWORD stgfmt,
01247         [in] DWORD grfAttrs,
01248         [in] REFIID riid,
01249         [out, iid_is(riid)] void **ppstgOpen);
01250 
01251     HRESULT OpenStorageEx(
01252         [in] LPCWSTR pwcsName,
01253         [in] DWORD grfMode,
01254         [in] DWORD stgfmt,
01255         [in] DWORD grfAttrs,
01256         [in] REFIID riid,
01257         [out, iid_is(riid)] void **ppstgOpen);
01258 }
01259 
01260 /******************** Data Object ********************/
01261 
01262 [
01263   object,
01264   uuid(00000103-0000-0000-C000-000000000046),
01265   pointer_default(unique)
01266 ]
01267 interface IEnumFORMATETC : IUnknown
01268 {
01269   typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;
01270 
01271   typedef struct tagDVTARGETDEVICE {
01272     DWORD tdSize;
01273     WORD tdDriverNameOffset;
01274     WORD tdDeviceNameOffset;
01275     WORD tdPortNameOffset;
01276     WORD tdExtDevmodeOffset;
01277     [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
01278     BYTE tdData[];
01279   } DVTARGETDEVICE;
01280 
01281   typedef CLIPFORMAT *LPCLIPFORMAT;
01282 
01283   typedef struct tagFORMATETC {
01284     CLIPFORMAT cfFormat;
01285     [unique] DVTARGETDEVICE *ptd;
01286     DWORD dwAspect;
01287     LONG lindex;
01288     DWORD tymed;
01289   } FORMATETC, *LPFORMATETC;
01290 
01291   [local]
01292   HRESULT Next(
01293     [in] ULONG celt,
01294     [out, size_is(celt), length_is(*pceltFetched)]
01295     FORMATETC *rgelt,
01296     [out] ULONG *pceltFetched);
01297 
01298   [call_as(Next)]
01299   HRESULT RemoteNext(
01300     [in] ULONG celt,
01301     [out, size_is(celt), length_is(*pceltFetched)]
01302     FORMATETC *rgelt,
01303     [out] ULONG *pceltFetched);
01304 
01305   HRESULT Skip(
01306     [in] ULONG celt);
01307 
01308   HRESULT Reset();
01309 
01310   HRESULT Clone(
01311     [out] IEnumFORMATETC **ppenum);
01312 }
01313 
01314 [
01315   object,
01316   uuid(00000105-0000-0000-C000-000000000046),
01317   pointer_default(unique)
01318 ]
01319 interface IEnumSTATDATA : IUnknown
01320 {
01321   typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;
01322 
01323   typedef enum tagADVF {
01324     ADVF_NODATA            = 1,
01325     ADVF_PRIMEFIRST        = 2,
01326     ADVF_ONLYONCE          = 4,
01327     ADVF_DATAONSTOP        = 64,
01328     ADVFCACHE_NOHANDLER    = 8,
01329     ADVFCACHE_FORCEBUILTIN = 16,
01330     ADVFCACHE_ONSAVE       = 32
01331   } ADVF;
01332 
01333   typedef struct tagSTATDATA
01334   {
01335     FORMATETC formatetc;
01336     DWORD advf;
01337     [unique] IAdviseSink *pAdvSink;
01338     DWORD dwConnection;
01339   } STATDATA, *LPSTATDATA;
01340 
01341   [local]
01342   HRESULT Next(
01343     [in] ULONG celt,
01344     [out, size_is(celt), length_is(*pceltFetched)]
01345     STATDATA *rgelt,
01346     [out] ULONG *pceltFetched);
01347 
01348   [call_as(Next)]
01349   HRESULT RemoteNext(
01350     [in] ULONG celt,
01351     [out, size_is(celt), length_is(*pceltFetched)]
01352     STATDATA *rgelt,
01353     [out] ULONG *pceltFetched);
01354 
01355   HRESULT Skip(
01356     [in] ULONG celt);
01357 
01358   HRESULT Reset();
01359 
01360   HRESULT Clone(
01361     [out] IEnumSTATDATA **ppenum);
01362 }
01363 
01364 [
01365   object,
01366   uuid(0000010f-0000-0000-C000-000000000046),
01367   pointer_default(unique)
01368 ]
01369 interface IAdviseSink : IUnknown
01370 {
01371   typedef IAdviseSink *LPADVISESINK;
01372 
01373   typedef [v1_enum] enum tagTYMED {
01374     TYMED_HGLOBAL  = 1,
01375     TYMED_FILE     = 2,
01376     TYMED_ISTREAM  = 4,
01377     TYMED_ISTORAGE = 8,
01378     TYMED_GDI      = 16,
01379     TYMED_MFPICT   = 32,
01380     TYMED_ENHMF    = 64,
01381     TYMED_NULL     = 0
01382   } TYMED;
01383 
01384   typedef struct tagRemSTGMEDIUM {
01385     DWORD tymed;
01386     DWORD dwHandleType;
01387     unsigned long pData;
01388     unsigned long pUnkForRelease;
01389     unsigned long cbData;
01390     [size_is(cbData)] byte data[];
01391   } RemSTGMEDIUM;
01392 
01393   typedef struct tagSTGMEDIUM {
01394     DWORD tymed;
01395     [switch_is(tymed)] union {
01396     [case(TYMED_GDI)]      HBITMAP hBitmap;
01397     [case(TYMED_MFPICT)]   HMETAFILEPICT hMetaFilePict;
01398     [case(TYMED_ENHMF)]    HENHMETAFILE hEnhMetaFile;
01399     [case(TYMED_HGLOBAL)]  HGLOBAL hGlobal;
01400     [case(TYMED_FILE)]     LPOLESTR lpszFileName;
01401     [case(TYMED_ISTREAM)]  IStream *pstm;
01402     [case(TYMED_ISTORAGE)] IStorage *pstg;
01403     [default]              ;
01404     } DUMMYUNIONNAME;
01405     [unique] IUnknown *pUnkForRelease;
01406   } uSTGMEDIUM;
01407 
01408 /* copied from wingdi.h */
01409 #define OBJ_PEN             1
01410 #define OBJ_BRUSH           2
01411 #define OBJ_DC              3
01412 #define OBJ_METADC          4
01413 #define OBJ_PAL             5
01414 #define OBJ_FONT            6
01415 #define OBJ_BITMAP          7
01416 #define OBJ_REGION          8
01417 #define OBJ_METAFILE        9
01418 #define OBJ_MEMDC           10
01419 #define OBJ_EXTPEN          11
01420 #define OBJ_ENHMETADC       12
01421 #define OBJ_ENHMETAFILE     13
01422 
01423   typedef union _GDI_OBJECT switch(DWORD ObjectType) u {
01424     case OBJ_BITMAP: wireHBITMAP hBitmap;
01425     case OBJ_PAL:    wireHPALETTE hPalette;
01426     default:         wireHGLOBAL hGeneric;
01427   } GDI_OBJECT;
01428 
01429   typedef struct _userSTGMEDIUM {
01430     union switch(DWORD tymed) u {
01431     case TYMED_NULL:     ;
01432     case TYMED_MFPICT:   wireHMETAFILEPICT hMetaFilePict;
01433     case TYMED_ENHMF:    wireHENHMETAFILE hHEnhMetaFile;
01434     case TYMED_GDI:      GDI_OBJECT *hGdiHandle;
01435     case TYMED_HGLOBAL:  wireHGLOBAL hGlobal;
01436     case TYMED_FILE:     LPOLESTR lpszFileName;
01437     case TYMED_ISTREAM:  BYTE_BLOB *pstm;
01438     case TYMED_ISTORAGE: BYTE_BLOB *pstg;
01439     } DUMMYUNIONNAME;
01440     IUnknown *pUnkForRelease;
01441   } userSTGMEDIUM;
01442 
01443   typedef [unique] userSTGMEDIUM *wireSTGMEDIUM;
01444   typedef [wire_marshal(wireSTGMEDIUM)] uSTGMEDIUM STGMEDIUM;
01445 
01446   typedef [unique] userSTGMEDIUM *wireASYNC_STGMEDIUM;
01447   typedef [wire_marshal(wireASYNC_STGMEDIUM)] STGMEDIUM ASYNC_STGMEDIUM;
01448 
01449   typedef STGMEDIUM *LPSTGMEDIUM;
01450 
01451   typedef struct _userFLAG_STGMEDIUM {
01452     long ContextFlags;
01453     long fPassOwnership;
01454     userSTGMEDIUM Stgmed;
01455   } userFLAG_STGMEDIUM;
01456 
01457   typedef [unique] userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
01458 
01459   typedef [wire_marshal(wireFLAG_STGMEDIUM)] struct _FLAG_STGMEDIUM {
01460     long ContextFlags;
01461     long fPassOwnership;
01462     STGMEDIUM Stgmed;
01463   } FLAG_STGMEDIUM;
01464 
01465   [local]
01466   void OnDataChange(
01467     [in, unique] FORMATETC *pFormatetc,
01468     [in, unique] STGMEDIUM *pStgmed);
01469 
01470   [call_as(OnDataChange)]
01471   HRESULT  RemoteOnDataChange(
01472     [in, unique] FORMATETC *pFormatetc,
01473     [in, unique] ASYNC_STGMEDIUM *pStgmed);
01474 
01475   [local]
01476   void OnViewChange(
01477     [in] DWORD dwAspect,
01478     [in] LONG lindex);
01479 
01480   [call_as(OnViewChange)]
01481   HRESULT RemoteOnViewChange(
01482     [in] DWORD dwAspect,
01483     [in] LONG lindex);
01484 
01485   [local]
01486   void OnRename(
01487     [in] IMoniker *pmk);
01488 
01489   [call_as(OnRename)]
01490   HRESULT RemoteOnRename(
01491     [in] IMoniker *pmk);
01492 
01493   [local]
01494   void OnSave();
01495 
01496   [call_as(OnSave)]
01497   HRESULT RemoteOnSave();
01498 
01499   [local]
01500   void OnClose();
01501 
01502   [call_as(OnClose)]
01503   HRESULT RemoteOnClose();
01504 }
01505 
01506 [
01507   object,
01508   uuid(00000125-0000-0000-C000-000000000046),
01509   pointer_default(unique)
01510 ]
01511 interface IAdviseSink2 : IAdviseSink
01512 {
01513   typedef [unique] IAdviseSink2 *LPADVISESINK2;
01514 
01515   [local]
01516   void OnLinkSrcChange(
01517     [in, unique] IMoniker *pmk);
01518 
01519   [call_as(OnLinkSrcChange)]
01520   HRESULT RemoteOnLinkSrcChange(
01521     [in, unique] IMoniker *pmk);
01522 }
01523 
01524 [
01525   object,
01526   uuid(0000010e-0000-0000-C000-000000000046),
01527   pointer_default(unique)
01528 ]
01529 interface IDataObject : IUnknown
01530 {
01531   typedef [unique] IDataObject *LPDATAOBJECT;
01532 
01533   typedef enum tagDATADIR {
01534     DATADIR_GET = 1,
01535     DATADIR_SET = 2
01536   } DATADIR;
01537 
01538   [local]
01539   HRESULT GetData(
01540     [in, unique] FORMATETC *pformatetcIn,
01541     [out] STGMEDIUM *pmedium);
01542 
01543   [call_as(GetData)]
01544   HRESULT RemoteGetData(
01545     [in, unique] FORMATETC *pformatetcIn,
01546     [out] STGMEDIUM *pRemoteMedium);
01547 
01548   [local]
01549   HRESULT GetDataHere(
01550     [in, unique] FORMATETC *pformatetc,
01551     [in, out] STGMEDIUM *pmedium);
01552 
01553   [call_as(GetDataHere)]
01554   HRESULT RemoteGetDataHere(
01555     [in, unique] FORMATETC *pformatetc,
01556     [in, out] STGMEDIUM *pRemoteMedium);
01557 
01558   HRESULT QueryGetData(
01559     [in, unique] FORMATETC *pformatetc);
01560 
01561   HRESULT GetCanonicalFormatEtc(
01562     [in, unique] FORMATETC *pformatectIn,
01563     [out] FORMATETC *pformatetcOut);
01564 
01565   [local]
01566   HRESULT SetData(
01567     [in, unique] FORMATETC *pformatetc,
01568     [in, unique] STGMEDIUM *pmedium,
01569     [in] BOOL fRelease);
01570 
01571   [call_as(SetData)]
01572   HRESULT RemoteSetData(
01573     [in, unique] FORMATETC *pformatetc,
01574     [in, unique] FLAG_STGMEDIUM *pmedium,
01575     [in] BOOL fRelease);
01576 
01577   HRESULT EnumFormatEtc(
01578     [in] DWORD dwDirection,
01579     [out] IEnumFORMATETC **ppenumFormatEtc);
01580 
01581   HRESULT DAdvise(
01582     [in] FORMATETC *pformatetc,
01583     [in] DWORD advf,
01584     [in, unique] IAdviseSink *pAdvSink,
01585     [out] DWORD *pdwConnection);
01586 
01587   HRESULT DUnadvise(
01588     [in] DWORD dwConnection);
01589 
01590   HRESULT EnumDAdvise(
01591     [out] IEnumSTATDATA **ppenumAdvise);
01592 }
01593 
01594 [
01595   local,
01596   object,
01597   uuid(00000110-0000-0000-C000-000000000046)
01598 ]
01599 interface IDataAdviseHolder : IUnknown
01600 {
01601   typedef [unique] IDataAdviseHolder *LPDATAADVISEHOLDER;
01602 
01603   HRESULT Advise(
01604     [in, unique] IDataObject *pDataObject,
01605     [in, unique] FORMATETC *pFetc,
01606     [in] DWORD advf,
01607     [in, unique] IAdviseSink *pAdvise,
01608     [out] DWORD *pdwConnection);
01609 
01610   HRESULT Unadvise(
01611     [in] DWORD dwConnection);
01612 
01613   HRESULT EnumAdvise(
01614     [out] IEnumSTATDATA **ppenumAdvise);
01615 
01616   HRESULT SendOnDataChange(
01617     [in, unique] IDataObject *pDataObject,
01618     [in] DWORD dwReserved,
01619     [in] DWORD advf);
01620 }
01621 
01622 /******************** Remoting ********************/
01623 
01624 [
01625   local,
01626   object,
01627   uuid(00000016-0000-0000-C000-000000000046)
01628 ]
01629 interface IMessageFilter : IUnknown
01630 {
01631   typedef [unique] IMessageFilter *LPMESSAGEFILTER;
01632 
01633   typedef enum tagCALLTYPE {
01634     CALLTYPE_TOPLEVEL = 1,
01635     CALLTYPE_NESTED   = 2,
01636     CALLTYPE_ASYNC    = 3,
01637     CALLTYPE_TOPLEVEL_CALLPENDING = 4,
01638     CALLTYPE_ASYNC_CALLPENDING    = 5
01639   } CALLTYPE;
01640 
01641   typedef enum tagSERVERCALL {
01642     SERVERCALL_ISHANDLED  = 0,
01643     SERVERCALL_REJECTED   = 1,
01644     SERVERCALL_RETRYLATER = 2
01645   } SERVERCALL;
01646 
01647   typedef enum tagPENDINGTYPE {
01648     PENDINGTYPE_TOPLEVEL = 1,
01649     PENDINGTYPE_NESTED   = 2
01650   } PENDINGTYPE;
01651 
01652   typedef enum tagPENDINGMSG {
01653     PENDINGMSG_CANCELCALL     = 0,
01654     PENDINGMSG_WAITNOPROCESS  = 1,
01655     PENDINGMSG_WAITDEFPROCESS = 2
01656   } PENDINGMSG;
01657 
01658   typedef struct tagINTERFACEINFO {
01659     IUnknown *pUnk;
01660     IID iid;
01661     WORD wMethod;
01662   } INTERFACEINFO, *LPINTERFACEINFO;
01663 
01664   DWORD HandleInComingCall(
01665     [in] DWORD dwCallType,
01666     [in] HTASK htaskCaller,
01667     [in] DWORD dwTickCount,
01668     [in] LPINTERFACEINFO lpInterfaceInfo);
01669 
01670   DWORD RetryRejectedCall(
01671     [in] HTASK htaskCallee,
01672     [in] DWORD dwTickCount,
01673     [in] DWORD dwRejectType);
01674 
01675   DWORD MessagePending(
01676     [in] HTASK htaskCallee,
01677     [in] DWORD dwTickCount,
01678     [in] DWORD dwPendingType);
01679 }
01680 
01681 [
01682   local,
01683   object,
01684   uuid(D5F56B60-593B-101A-B569-08002B2DBF7A)
01685 ]
01686 interface IRpcChannelBuffer : IUnknown
01687 {
01688   typedef [unique] IRpcChannelBuffer *LPRPCCHANNELBUFFER;
01689 
01690   typedef unsigned long RPCOLEDATAREP;
01691 
01692   typedef struct tagRPCOLEMESSAGE {
01693     void *reserved1;
01694     RPCOLEDATAREP dataRepresentation;
01695     void *Buffer;
01696     ULONG cbBuffer;
01697     ULONG iMethod;
01698     void *reserved2[5];
01699     ULONG rpcFlags;
01700   } RPCOLEMESSAGE;
01701 
01702   typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
01703 
01704   HRESULT GetBuffer(
01705     [in] RPCOLEMESSAGE *pMessage,
01706     [in] REFIID riid);
01707 
01708   HRESULT SendReceive(
01709     [in,out] RPCOLEMESSAGE *pMessage,
01710     [out] ULONG *pStatus);
01711 
01712   HRESULT FreeBuffer(
01713     [in] RPCOLEMESSAGE *pMessage);
01714 
01715   HRESULT GetDestCtx(
01716     [out] DWORD *pdwDestContext,
01717     [out] void **ppvDestContext);
01718 
01719   HRESULT IsConnected();
01720 }
01721 
01722 [
01723   local,
01724   object,
01725   uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
01726 ]
01727 interface IRpcChannelBuffer2 : IRpcChannelBuffer
01728 {
01729   typedef [unique] IRpcChannelBuffer2 *LPRPCCHANNELBUFFER2;
01730 
01731   HRESULT GetProtocolVersion(
01732     [in,out] DWORD *pdwVersion);
01733 }
01734 
01735 [
01736   local,
01737   object,
01738   uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
01739 ]
01740 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
01741 {
01742   typedef [unique] IRpcChannelBuffer3 *LPRPCCHANNELBUFFER3;
01743 
01744   HRESULT Send(
01745     [in,out] RPCOLEMESSAGE *pMsg,
01746     [out] ULONG *pulStatus);
01747 
01748   HRESULT Receive(
01749     [in,out] RPCOLEMESSAGE *pMsg,
01750     [in] ULONG ulSize,
01751     [out] ULONG *pulStatus);
01752 
01753   HRESULT Cancel(
01754     [in] RPCOLEMESSAGE *pMsg);
01755 
01756   HRESULT GetCallContext(
01757     [in] RPCOLEMESSAGE *pMsg,
01758     [in] REFIID riid,
01759     [out] void **pInterface);
01760 
01761   HRESULT GetDestCtxEx(
01762     [in] RPCOLEMESSAGE *pMsg,
01763     [out] DWORD *pdwDestContext,
01764     [out] void **ppvDestContext);
01765 
01766   HRESULT GetState(
01767     [in] RPCOLEMESSAGE *pMsg,
01768     [out] DWORD *pState);
01769 
01770   HRESULT RegisterAsync(
01771     [in] RPCOLEMESSAGE *pMsg,
01772     [in] IAsyncManager *pAsyncMgr);
01773 }
01774 
01775 [
01776     local,
01777     object,
01778     uuid(a5029fb6-3c34-11d1-9c99-00c04fb998aa),
01779     pointer_default(unique)
01780 ]
01781 interface IAsyncRpcChannelBuffer : IRpcChannelBuffer2
01782 {
01783     HRESULT Send(
01784         [in, out] RPCOLEMESSAGE *pMsg,
01785         [in] ISynchronize *pSync,
01786         [out] ULONG *pulStatus);
01787 
01788     HRESULT Receive(
01789         [in, out] RPCOLEMESSAGE *pMsg,
01790         [out] ULONG *pulStatus);
01791 
01792     HRESULT GetDestCtxEx(
01793         [in] RPCOLEMESSAGE *pMsg,
01794         [out] DWORD *pdwDestContext,
01795         [out] void **ppvDestContext);
01796 }
01797 
01798 [
01799     local,
01800     object,
01801     uuid(58a08519-24c8-4935-b482-3fd823333a4f)
01802 ]
01803 interface IRpcSyntaxNegotiate : IUnknown
01804 {
01805     HRESULT NegotiateSyntax(
01806         [in, out] RPCOLEMESSAGE *pMsg);
01807 }
01808 
01809 [
01810   local,
01811   object,
01812   uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
01813 ]
01814 interface IRpcProxyBuffer : IUnknown
01815 {
01816   typedef [unique] IRpcProxyBuffer *LPRPCPROXYBUFFER;
01817 
01818   HRESULT Connect(
01819     [in, unique] IRpcChannelBuffer *pRpcChannelBuffer);
01820 
01821   void Disconnect();
01822 }
01823 
01824 [
01825   local,
01826   object,
01827   uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
01828 ]
01829 interface IRpcStubBuffer : IUnknown
01830 {
01831   typedef [unique] IRpcStubBuffer *LPRPCSTUBBUFFER;
01832 
01833   HRESULT Connect(
01834     [in] IUnknown *pUnkServer);
01835 
01836   void Disconnect();
01837 
01838   HRESULT Invoke(
01839     [in] RPCOLEMESSAGE *_prpcmsg,
01840     [in] IRpcChannelBuffer *_pRpcChannelBuffer);
01841 
01842   IRpcStubBuffer *IsIIDSupported(
01843     [in] REFIID riid);
01844 
01845   ULONG CountRefs();
01846 
01847   HRESULT DebugServerQueryInterface(
01848     void **ppv);
01849 
01850   void DebugServerRelease(
01851     void *pv);
01852 }
01853 
01854 [
01855   local,
01856   object,
01857   uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
01858 ]
01859 interface IPSFactoryBuffer : IUnknown
01860 {
01861   typedef [unique] IPSFactoryBuffer *LPPSFACTORYBUFFER;
01862 
01863   HRESULT CreateProxy(
01864     [in] IUnknown *pUnkOuter,
01865     [in] REFIID riid,
01866     [out] IRpcProxyBuffer **ppProxy,
01867     [out] void **ppv);
01868 
01869   HRESULT CreateStub(
01870     [in] REFIID riid,
01871     [in, unique] IUnknown *pUnkServer,
01872     [out] IRpcStubBuffer **ppStub);
01873 }
01874 
01875 [
01876   local,
01877   object,
01878   uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
01879 ]
01880 interface IChannelHook : IUnknown
01881 {
01882   typedef [unique] IChannelHook *LPCHANNELHOOK;
01883 
01884   typedef struct SChannelHookCallInfo {
01885     IID iid;
01886     DWORD cbSize;
01887     GUID uCausality;
01888     DWORD dwServerPid;
01889     DWORD iMethod;
01890     void *pObject;
01891   } SChannelHookCallInfo;
01892 
01893   void ClientGetSize(
01894     [in] REFGUID uExtent,
01895     [in] REFIID riid,
01896     [out] ULONG *pDataSize);
01897 
01898   void ClientFillBuffer(
01899     [in] REFGUID uExtent,
01900     [in] REFIID riid,
01901     [in, out] ULONG *pDataSize,
01902     [in] void *pDataBuffer);
01903 
01904   void ClientNotify(
01905     [in] REFGUID uExtent,
01906     [in] REFIID riid,
01907     [in] ULONG cbDataSize,
01908     [in] void *pDataBuffer,
01909     [in] DWORD lDataRep,
01910     [in] HRESULT hrFault);
01911 
01912   void ServerNotify(
01913     [in] REFGUID uExtent,
01914     [in] REFIID riid,
01915     [in] ULONG cbDataSize,
01916     [in] void *pDataBuffer,
01917     [in] DWORD lDataRep);
01918 
01919   void ServerGetSize(
01920     [in] REFGUID uExtent,
01921     [in] REFIID riid,
01922     [in] HRESULT hrFault,
01923     [out] ULONG *pDataSize);
01924 
01925   void ServerFillBuffer(
01926     [in] REFGUID uExtent,
01927     [in] REFIID riid,
01928     [in, out] ULONG *pDataSize,
01929     [in] void *pDataBuffer,
01930     [in] HRESULT hrFault );
01931 }
01932 
01933 extern const FMTID FMTID_SummaryInformation;
01934 extern const FMTID FMTID_DocSummaryInformation;
01935 extern const FMTID FMTID_UserDefinedProperties;
01936 
01937 
01938 /******************** Connection Points ********************/
01939 /* FIXME */
01940 
01941 /******************** DCOM ********************/
01942 
01943 [
01944   local,
01945   object,
01946   uuid(0000013D-0000-0000-C000-000000000046)
01947 ]
01948 interface IClientSecurity : IUnknown
01949 {
01950   typedef struct tagSOLE_AUTHENTICATION_SERVICE {
01951     DWORD dwAuthnSvc;
01952     DWORD dwAuthzSvc;
01953     OLECHAR *pPrincipalName;
01954     HRESULT hr;
01955   } SOLE_AUTHENTICATION_SERVICE;
01956 
01957   typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
01958 
01959   typedef struct tagSOLE_AUTHENTICATION_INFO {
01960     DWORD dwAuthnSvc;
01961     DWORD dwAuthzSvc;
01962     void *pAuthInfo;
01963   } SOLE_AUTHENTICATION_INFO;
01964 
01965   const OLECHAR *COLE_DEFAULT_PRINCIPAL = (OLECHAR*) -1;
01966   const void *COLE_DEFAULT_AUTHINFO = (void*) -1;
01967 
01968   typedef struct tagSOLE_AUTHENTICATION_LIST {
01969     DWORD cAuthInfo;
01970     SOLE_AUTHENTICATION_INFO *aAuthInfo;
01971   } SOLE_AUTHENTICATION_LIST;
01972 
01973   typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
01974     EOAC_NONE               = 0x0,
01975     EOAC_MUTUAL_AUTH        = 0x1,
01976     EOAC_SECURE_REFS        = 0x2, /* CoInitializeSecurity only */
01977     EOAC_ACCESS_CONTROL     = 0x4, /* CoInitializeSecurity only */
01978     EOAC_APPID              = 0x8, /* CoInitializeSecurity only */
01979     EOAC_DYNAMIC            = 0x10, /* CoInitializeSecurity only */
01980     EOAC_STATIC_CLOAKING    = 0x20,
01981     EOAC_DYNAMIC_CLOAKING   = 0x40,
01982     EOAC_ANY_AUTHORITY      = 0x80,
01983     EOAC_MAKE_FULLSIC       = 0x100,
01984     EOAC_REQUIRE_FULLSIC    = 0x200, /* CoInitializeSecurity only */
01985     EOAC_AUTO_IMPERSONATE   = 0x400, /* CoInitializeSecurity only */
01986     EOAC_DEFAULT            = 0x800,
01987     EOAC_DISABLE_AAA        = 0x1000, /* CoInitializeSecurity only */
01988     EOAC_NO_CUSTOM_MARSHAL  = 0x2000, /* CoInitializeSecurity only */
01989   } EOLE_AUTHENTICATION_CAPABILITIES;
01990 
01991   HRESULT QueryBlanket(
01992     [in] IUnknown *pProxy,
01993     [out] DWORD *pAuthnSvc,
01994     [out] DWORD *pAuthzSvc,
01995     [out] OLECHAR **pServerPrincName,
01996     [out] DWORD *pAuthnLevel,
01997     [out] DWORD *pImpLevel,
01998     [out] void **pAuthInfo,
01999     [out] DWORD *pCapabilities);
02000 
02001   HRESULT SetBlanket(
02002     [in] IUnknown *pProxy,
02003     [in] DWORD AuthnSvc,
02004     [in] DWORD AuthzSvc,
02005     [in] OLECHAR *pServerPrincName,
02006     [in] DWORD AuthnLevel,
02007     [in] DWORD ImpLevel,
02008     [in] void *pAuthInfo,
02009     [in] DWORD Capabilities);
02010 
02011   HRESULT CopyProxy(
02012     [in] IUnknown *pProxy,
02013     [out] IUnknown **ppCopy);
02014 }
02015 
02016 [
02017   local,
02018   object,
02019   uuid(0000013E-0000-0000-C000-000000000046)
02020 ]
02021 interface IServerSecurity : IUnknown
02022 {
02023   HRESULT QueryBlanket(
02024     [out] DWORD *pAuthnSvc,
02025     [out] DWORD *pAuthzSvc,
02026     [out] OLECHAR **pServerPrincName,
02027     [out] DWORD *pAuthnLevel,
02028     [out] DWORD *pImpLevel,
02029     [out] void **pPrivs,
02030     [out] DWORD *pCapabilities);
02031 
02032   HRESULT ImpersonateClient();
02033 
02034   HRESULT RevertToSelf();
02035 
02036   BOOL IsImpersonating();
02037 }
02038 
02039 [
02040   local,
02041   object,
02042   uuid(00000024-0000-0000-C000-000000000046)
02043 ]
02044 interface IAsyncSetup : IUnknown
02045 {
02046   HRESULT GetAsyncManager(
02047     [in] REFIID riid,
02048     [in] IUnknown *pOuter,
02049     [in] DWORD dwFlags,
02050     [out] IUnknown **ppInner,
02051     [out] IAsyncManager **ppAsyncMgr);
02052 }
02053 
02054 [
02055     object,
02056     uuid(0e6d4d92-6738-11cf-9608-00aa00680db4)
02057 ]
02058 interface IDirectWriterLock : IUnknown
02059 {
02060     HRESULT WaitForWriteAccess(
02061         [in] DWORD dwTimeout);
02062 
02063     HRESULT ReleaseWriteAccess();
02064 
02065     HRESULT HaveWriteAccess();
02066 }
02067 
02068 [
02069     object,
02070     uuid(00000030-0000-0000-C000-000000000046)
02071 ]
02072 
02073 interface ISynchronize : IUnknown
02074 {
02075     HRESULT Wait(
02076         [in] DWORD dwFlags,
02077         [in] DWORD dwMilliseconds);
02078 
02079     HRESULT Signal();
02080 
02081     HRESULT Reset();
02082 }
02083 
02084 
02085 [
02086     local,
02087     object,
02088     uuid(00000031-0000-0000-C000-000000000046)
02089 ]
02090 interface ISynchronizeHandle : IUnknown
02091 {
02092     HRESULT GetHandle(
02093         [out] HANDLE *ph);
02094 }
02095 
02096 
02097 [
02098     local,
02099     object,
02100     uuid(00000032-0000-0000-C000-000000000046)
02101 ]
02102 interface ISynchronizeEvent : ISynchronizeHandle
02103 {
02104     HRESULT SetEventHandle(
02105         [in] HANDLE *ph);
02106 }
02107 
02108 
02109 [
02110     local,
02111     object,
02112     uuid(00000033-0000-0000-C000-000000000046)
02113 ]
02114 interface ISynchronizeContainer : IUnknown
02115 {
02116     HRESULT AddSynchronize(
02117         [in] ISynchronize *pSync);
02118 
02119     HRESULT WaitMultiple(
02120         [in] DWORD dwFlags,
02121         [in] DWORD dwTimeOut,
02122         [out] ISynchronize **ppSync);
02123 }
02124 
02125 [
02126     local,
02127     object,
02128     uuid(00000025-0000-0000-C000-000000000046)
02129 ]
02130 interface ISynchronizeMutex : ISynchronize
02131 {
02132     HRESULT ReleaseMutex();
02133 }
02134 
02135 [
02136     local,
02137     object,
02138     uuid(00000029-0000-0000-C000-000000000046)
02139 ]
02140 
02141 interface ICancelMethodCalls : IUnknown
02142 {
02143     typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
02144 
02145     HRESULT Cancel(
02146         [in] ULONG ulSeconds);
02147 
02148     HRESULT TestCancel();
02149 }
02150 
02151 [
02152   local,
02153   object,
02154   uuid(0000002A-0000-0000-C000-000000000046)
02155 ]
02156 interface IAsyncManager : IUnknown
02157 {
02158   typedef enum tagDCOM_CALL_STATE {
02159     DCOM_NONE          = 0,
02160     DCOM_CALL_COMPLETE = 1,
02161     DCOM_CALL_CANCELED = 2
02162   } DCOM_CALL_STATE;
02163 
02164   HRESULT CompleteCall(
02165     [in] HRESULT Result);
02166 
02167   HRESULT GetCallContext(
02168     [in] REFIID riid,
02169     [out] void **pInterface);
02170 
02171   HRESULT GetState(
02172     [out] ULONG *pulStateFlags);
02173 }
02174 
02175 [
02176     local,
02177     object,
02178     uuid(1c733a30-2a1c-11ce-ade5-00aa0044773d),
02179     pointer_default(unique)
02180 ]
02181 interface ICallFactory : IUnknown
02182 {
02183     HRESULT CreateCall(
02184         [in] REFIID riid,
02185         [in] IUnknown *pCtrlUnk,
02186         [in] REFIID riid2,
02187         [out, iid_is(riid2)] IUnknown **ppv);
02188 }
02189 
02190 [
02191     local,
02192     object,
02193     uuid(00000144-0000-0000-C000-000000000046)
02194 ]
02195 interface IRpcOptions : IUnknown
02196 {
02197     HRESULT Set(
02198         [in] IUnknown *pPrx,
02199         [in] DWORD dwProperty,
02200         [in] ULONG_PTR dwValue);
02201 
02202     HRESULT Query(
02203         [in] IUnknown *pPrx,
02204         [in] DWORD dwProperty,
02205         [out] ULONG_PTR *pdwValue);
02206 }
02207 
02208 enum {
02209    COMBND_RPCTIMEOUT = 1,
02210    COMBND_SERVER_LOCALITY = 2
02211 };  
02212 
02213 enum {
02214    SERVER_LOCALITY_PROCESS_LOCAL = 0,
02215    SERVER_LOCALITY_MACHINE_LOCAL = 1,
02216    SERVER_LOCALITY_REMOTE = 2
02217 };
02218 
02219 [
02220     local,
02221     object,
02222     uuid(00000149-0000-0000-C000-000000000046),
02223     pointer_default(unique)
02224 ]
02225 interface IRpcHelper : IUnknown
02226 {
02227     HRESULT GetDCOMProtocolVersion(
02228         [out] DWORD *pComVersion);
02229 
02230     HRESULT GetIIDFromOBJREF(
02231         [in] void *pObjRef,
02232         [out] IID **piid);
02233 }
02234 
02235 [
02236     local,
02237     object,
02238     uuid(eb0cb9e8-7996-11d2-872e-0000f8080859)
02239 ]
02240 interface IReleaseMarshalBuffers : IUnknown
02241 {
02242     HRESULT ReleaseMarshalBuffer(
02243         [in] RPCOLEMESSAGE *pMsg,
02244         [in] DWORD dwFlags,
02245         [in, unique] IUnknown *pChnl);
02246 }
02247 
02248 [
02249     local,
02250     object,
02251     uuid(0000002B-0000-0000-C000-000000000046)
02252 ]
02253 interface IWaitMultiple : IUnknown
02254 {
02255     HRESULT WaitMultiple(
02256         [in] DWORD timeout,
02257         [out] ISynchronize **pSync);
02258     HRESULT AddSynchronize(
02259         [in] ISynchronize *pSync);
02260 }
02261 
02262 
02263 [
02264     object,
02265     uuid(00000026-0000-0000-C000-000000000046)
02266 ]
02267 interface IUrlMon : IUnknown
02268 {
02269     HRESULT AsyncGetClassBits(
02270         [in] REFCLSID rclsid,
02271         [in, unique] LPCWSTR pszTYPE,
02272         [in, unique] LPCWSTR pszExt,
02273         [in] DWORD dwFileVersionMS,
02274         [in] DWORD dwFileVersionLS,
02275         [in, unique] LPCWSTR pszCodeBase,
02276         [in] IBindCtx *pbc,
02277         [in] DWORD dwClassContext,
02278         [in] REFIID riid,
02279         [in] DWORD flags);
02280 }
02281 
02282 [
02283     local,
02284     object,
02285     uuid(00000145-0000-0000-C000-000000000046)
02286 ]
02287 interface IForegroundTransfer : IUnknown
02288 {
02289     HRESULT AllowForegroundTransfer(
02290         [in] void *lpvReserved);
02291 }
02292 
02293 [
02294     local,
02295     object,
02296     uuid(00000147-0000-0000-C000-000000000046)
02297 ]
02298 interface IAddrTrackingControl : IUnknown
02299 {
02300     typedef [unique] IAddrTrackingControl *LPADDRTRACKINGCONTROL;
02301 
02302     HRESULT EnableCOMDynamicAddrTracking();
02303     HRESULT DisableCOMDynamicAddrTracking();
02304 }
02305 
02306 [
02307     local,
02308     object,
02309     uuid(00000148-0000-0000-C000-000000000046)
02310 ]
02311 interface IAddrExclusionControl : IUnknown
02312 {
02313     typedef [unique] IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
02314 
02315     HRESULT GetCurrentAddrExclusionList(
02316         [in] REFIID riid,
02317         [out, iid_is(riid)] void **ppEnumerator);
02318     HRESULT UpdateAddrExclusionList(
02319         [in] IUnknown *pEnumerator);
02320 }
02321 
02322 typedef enum _APTTYPE {
02323     APTTYPE_CURRENT = -1,
02324     APTTYPE_STA     = 0,
02325     APTTYPE_MTA     = 1,
02326     APTTYPE_NA      = 2,
02327     APTTYPE_MAINSTA = 3
02328 } APTTYPE;
02329 
02330 typedef enum _THDTYPE {
02331     THDTYPE_BLOCKMESSAGES   = 0,
02332     THDTYPE_PROCESSMESSAGES = 1
02333 } THDTYPE;
02334 
02335 [
02336     local,
02337     object,
02338     uuid(000001ce-0000-0000-C000-000000000046),
02339     pointer_default(unique)
02340 ]
02341 interface IComThreadingInfo : IUnknown
02342 {
02343     HRESULT GetCurrentApartmentType(
02344         [out] APTTYPE *pAptType);
02345     HRESULT GetCurrentThreadType(
02346         [out] THDTYPE *pThreadType);
02347     HRESULT GetCurrentLogicalThreadId(
02348         [out] GUID *pguidLogicalThreadId);
02349     HRESULT SetCurrentLogicalThreadId(
02350         [in] REFGUID rguid);
02351 }
02352 
02353 
02354 [
02355     object,
02356     pointer_default(unique),
02357     uuid(72380d55-8d2b-43a3-8513-2b6ef31434e9)
02358 ]
02359 interface IProcessInitControl : IUnknown
02360 {
02361     HRESULT ResetInitializerTimeout(
02362         [in] DWORD dwSecondsRemaining);
02363 }
02364 
02365 [
02366     local,
02367     object,
02368     uuid(00000034-0000-0000-C000-000000000046),
02369     pointer_default(unique)
02370 ]
02371 interface IInitializeSpy : IUnknown
02372 {
02373     typedef [unique] IInitializeSpy *LPINITIALIZESPY;
02374 
02375     HRESULT PreInitialize(
02376         [in] DWORD dwCoInit,
02377         [in] DWORD dwCurThreadAptRefs);
02378 
02379     HRESULT PostInitialize(
02380         [in] HRESULT hrCoInit,
02381         [in] DWORD dwCoInit,
02382         [in] DWORD dwNewThreadAptRefs);
02383 
02384     HRESULT PreUninitialize(
02385         [in] DWORD dwCurThreadAptRefs);
02386 
02387     HRESULT PostUninitialize(
02388         [in] DWORD dwNewThreadAptRefs);
02389 }
02390 
02391 [
02392     object,
02393     uuid(969dc708-5c76-11d1-8d86-0000f804b057)
02394 ]
02395 interface IThumbnailExtractor : IUnknown
02396 {
02397     HRESULT ExtractThumbnail(
02398         [in] IStorage *pStg,
02399         [in] ULONG ulLength,
02400         [in] ULONG ulHeight,
02401         [out] ULONG *pulOutputLength,
02402         [out] ULONG *pulOutputHeight,
02403         [out] HBITMAP *phOutputBitmap);
02404 
02405 
02406     HRESULT OnFileUpdated(
02407         [in] IStorage *pStg);
02408 }
02409 
02410 
02411 cpp_quote("#ifdef USE_COM_CONTEXT_DEF")
02412 
02413 typedef DWORD CPFLAGS;
02414 
02415 typedef struct tagContextProperty
02416 {
02417     GUID policyId;
02418     CPFLAGS flags;
02419     [unique] IUnknown *pUnk;
02420 } ContextProperty;
02421 
02422 [
02423     local,
02424     object,
02425     uuid(000001c1-0000-0000-C000-000000000046)
02426 ]
02427 interface IEnumContextProps : IUnknown
02428 {
02429     typedef [unique] IEnumContextProps *LPENUMCONTEXTPROPS;
02430 
02431     HRESULT Next(
02432         [in] ULONG celt,
02433         [out, size_is(celt), length_is(*pceltFetched)] ContextProperty *pContextProperties,
02434         [out] ULONG *pceltFetched);
02435 
02436     HRESULT Skip(
02437         [in] ULONG celt);
02438 
02439     HRESULT Reset();
02440 
02441     HRESULT Clone(
02442         [out] IEnumContextProps **ppEnumContextProps);
02443 
02444     HRESULT Count(
02445         [out] ULONG *pcelt);
02446 }
02447 
02448 [
02449     local,
02450     object,
02451     uuid(000001c0-0000-0000-C000-000000000046)
02452 ]
02453 interface IContext : IUnknown
02454 {
02455     HRESULT SetProperty(
02456         [in] REFGUID policyId,
02457         [in] CPFLAGS flags,
02458         [in] IUnknown *pUnk);
02459 
02460     HRESULT RemoveProperty(
02461         [in] REFGUID policyId);
02462 
02463     HRESULT GetProperty(
02464         [in] REFGUID guid,
02465         [out] CPFLAGS *pFlags,
02466         [out] IUnknown **ppUnk);
02467 
02468     HRESULT EnumContextProps(
02469         [out] IEnumContextProps **ppEnumContextProps);
02470 }
02471 
02472 [
02473     local,
02474     object,
02475     uuid(000001c6-0000-0000-c000-000000000046),
02476     pointer_default(unique)
02477 ]
02478 interface IObjContext : IContext
02479 {
02480     void Reserved1();
02481     void Reserved2();
02482     void Reserved3();
02483     void Reserved4();
02484     void Reserved5();
02485     void Reserved6();
02486     void Reserved7();
02487 }
02488 
02489 cpp_quote("#endif /* defined USE_COM_CONTEXT_DEF */")

Generated on Tue May 22 2012 04:36:17 for ReactOS by doxygen 1.7.6.1

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