comparison org.eclipse.swt.win32.win32.x86/src/org/eclipse/swt/internal/ole/win32/OBJIDL.d @ 0:6dd524f61e62

add dwt win and basic java stuff
author Frank Benoit <benoit@tionex.de>
date Mon, 02 Mar 2009 14:44:16 +0100
parents
children 2e09b0e6857a
comparison
equal deleted inserted replaced
-1:000000000000 0:6dd524f61e62
1 module org.eclipse.swt.internal.ole.win32.OBJIDL;
2 //+-------------------------------------------------------------------------
3 //
4 // Microsoft Windows
5 // Copyright (C) Microsoft Corporation, 1992-1997.
6 //
7 // File: objidl.idl
8 //
9 //--------------------------------------------------------------------------
10
11
12 private import org.eclipse.swt.internal.ole.win32.extras;
13 private import org.eclipse.swt.internal.win32.WINTYPES;
14 // private import std.c.windows.windows;
15 // private import std.c.windows.com;
16 // private import org.eclipse.swt.internal.win32.os;
17
18
19 /* *NEED* to port wtypes.h */
20
21 extern( Windows ) {
22
23
24
25
26 //#ifndef DO_NO_IMPORTS
27 //import "unknwn.idl";
28 //import "wtypes.idl";
29 //#endif
30
31 enum SRVINFO
32 {
33 SRVINFO_F_COSERVERINFO = 0,
34 SRVINFO_F_COSERVERINFO2 = 1
35 }
36
37 struct COSERVERINFO
38 {
39 DWORD dwReserved1;
40 LPWSTR pwszName;
41 COAUTHINFO * pAuthInfo;
42 DWORD dwReserved2;
43 }
44
45 struct COSERVERINFO2 {
46 DWORD dwFlags;
47 LPWSTR pwszName;
48 COAUTHINFO* pAuthInfo;
49 IUnknown* ppCall;
50 LPWSTR pwszCodeURL;
51 DWORD dwFileVersionMS;
52 DWORD dwFileVersionLS;
53 LPWSTR pwszContentType;
54 }
55
56
57 /****************************************************************************
58 * Component Object Interfaces
59 ****************************************************************************/
60
61 interface IMarshal : IUnknown
62 {
63 HRESULT GetUnmarshalClass( REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid );
64 HRESULT GetMarshalSizeMax( REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize );
65 HRESULT MarshalInterface( IStream pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags );
66 HRESULT UnmarshalInterface( IStream pStm, REFIID riid, void **ppv );
67 HRESULT ReleaseMarshalData( IStream pStm );
68 HRESULT DisconnectObject( DWORD dwReserved );
69 }
70 alias IMarshal LPMARSHAL;
71
72 interface IMalloc : IUnknown
73 {
74 void * Alloc( ULONG cb );
75 void * Realloc( void * pv, ULONG cb );
76 void Free( void * pv );
77 ULONG GetSize( void * pv );
78 int DidAlloc( void * pv );
79 void HeapMinimize();
80 }
81 alias IMalloc LPMALLOC;
82
83 interface IMallocSpy : IUnknown
84 {
85 ULONG PreAlloc( ULONG cbRequest );
86 void * PostAlloc( void * pActual );
87 void * PreFree( void *pRequest, BOOL fSpyed );
88 void PostFree( BOOL fSpyed );
89 ULONG PreRealloc( void *pRequest, ULONG cbRequest, void **ppNewRequest, BOOL fSpyed );
90 void * PostRealloc( void *pActual, BOOL fSpyed );
91 void * PreGetSize( void *pRequest, BOOL fSpyed );
92 ULONG PostGetSize( ULONG cbActual, BOOL fSpyed );
93 void * PreDidAlloc( void * pRequest, BOOL fSpyed );
94 int PostDidAlloc( void *pRequest, BOOL fSpyed, int fActual );
95 void PreHeapMinimize();
96 void PostHeapMinimize();
97 }
98 alias IMallocSpy LPMALLOCSPY;
99
100 interface IStdMarshalInfo : IUnknown
101 {
102 HRESULT GetClassForHandler( DWORD dwDestContext, void *pvDestContext, CLSID *pClsid );
103 }
104 alias IStdMarshalInfo LPSTDMARSHALINFO;
105
106 // bit flags for IExternalConnection
107 enum EXTCONN
108 {
109 EXTCONN_STRONG = 0x0001, // strong connection
110 EXTCONN_WEAK = 0x0002, // weak connection (table, container)
111 EXTCONN_CALLABLE = 0x0004, // table .vs. callable
112 }
113
114 interface IExternalConnection : IUnknown
115 {
116 // *** IExternalConnection methods ***
117 DWORD AddConnection( DWORD extconn, DWORD reserved );
118 DWORD ReleaseConnection( DWORD extconn, DWORD reserved, BOOL fLastReleaseCloses );
119 }
120 alias IExternalConnection LPEXTERNALCONNECTION;
121
122
123 struct MULTI_QI
124 {
125 const IID *pIID; // pass this one in
126 IUnknown pItf; // get these out (you must set to NULL before calling)
127 HRESULT hr;
128 }
129
130 interface IMultiQI : IUnknown
131 {
132 HRESULT QueryMultipleInterfaces( ULONG cMQIs, MULTI_QI *pMQIs );
133 }
134 alias IMultiQI LPMULTIQI;
135
136 interface IEnumUnknown : IUnknown
137 {
138 HRESULT Next( ULONG celt, IUnknown * rgelt, ULONG *pceltFetched);
139 HRESULT Skip( ULONG celt );
140 HRESULT Reset();
141 HRESULT Clone( IEnumUnknown * ppenum );
142 }
143 alias IEnumUnknown LPENUMUNKNOWN;
144
145
146
147 /****************************************************************************
148 * Binding Interfaces
149 ****************************************************************************/
150
151 struct BIND_OPTS {
152 DWORD cbStruct; // sizeof(BIND_OPTS)
153 DWORD grfFlags;
154 DWORD grfMode;
155 DWORD dwTickCountDeadline;
156 }
157 alias BIND_OPTS * LPBIND_OPTS;
158
159 struct BIND_OPTS2 {
160 DWORD cbStruct; // sizeof(BIND_OPTS2)
161 DWORD grfFlags;
162 DWORD grfMode;
163 DWORD dwTickCountDeadline;
164 DWORD dwTrackFlags;
165 DWORD dwClassContext;
166 LCID locale;
167 COSERVERINFO * pServerInfo;
168 }
169 alias BIND_OPTS2 * LPBIND_OPTS2;
170
171 enum BIND_FLAGS
172 {
173 BIND_MAYBOTHERUSER = 1,
174 BIND_JUSTTESTEXISTENCE = 2
175 }
176
177 interface IBindCtx : IUnknown
178 {
179 HRESULT RegisterObjectBound( IUnknown punk );
180 HRESULT RevokeObjectBound( IUnknown punk );
181 HRESULT ReleaseBoundObjects();
182 HRESULT SetBindOptions( BIND_OPTS * pbindopts );
183 HRESULT GetBindOptions( BIND_OPTS * pbindopts );
184 HRESULT GetRunningObjectTable( IRunningObjectTable * pprot );
185 HRESULT RegisterObjectParam( LPOLESTR pszKey, IUnknown punk );
186 HRESULT GetObjectParam( LPOLESTR pszKey, IUnknown * ppunk );
187 HRESULT EnumObjectParam( IEnumString * ppenum );
188 HRESULT RevokeObjectParam( LPOLESTR pszKey );
189 }
190 alias IBindCtx LPBC;
191 alias IBindCtx LPBINDCTX;
192
193 interface IEnumMoniker : IUnknown
194 {
195 HRESULT Next( ULONG celt, IMoniker * rgelt, ULONG *pceltFetched );
196 HRESULT Skip( ULONG celt );
197 HRESULT Reset();
198 HRESULT Clone( IEnumMoniker * ppenum );
199 }
200 alias IEnumMoniker LPENUMMONIKER;
201
202 interface IRunnableObject : IUnknown
203 {
204 HRESULT GetRunningClass( LPCLSID lpClsid );
205 HRESULT Run( LPBINDCTX pbc );
206 BOOL IsRunning();
207 HRESULT LockRunning( BOOL fLock, BOOL fLastUnlockCloses );
208 HRESULT SetContainedObject( BOOL fContained );
209 }
210 alias IRunnableObject LPRUNNABLEOBJECT;
211
212 interface IRunningObjectTable : IUnknown
213 {
214 HRESULT Register( DWORD grfFlags, IUnknown punkObject, IMoniker pmkObjectName, DWORD *pdwRegister );
215 HRESULT Revoke ( DWORD dwRegister );
216 HRESULT IsRunning( IMoniker pmkObjectName );
217 HRESULT GetObject( IMoniker pmkObjectName, IUnknown * ppunkObject );
218 HRESULT NoteChangeTime( DWORD dwRegister, FILETIME *pfiletime );
219 HRESULT GetTimeOfLastChange( IMoniker pmkObjectName, FILETIME *pfiletime );
220 HRESULT EnumRunning( IEnumMoniker * ppenumMoniker );
221 }
222 alias IRunningObjectTable LPRUNNINGOBJECTTABLE;
223
224 interface IPersist : IUnknown
225 {
226 HRESULT GetClassID( CLSID * pClassID );
227 }
228 alias IPersist LPPERSIST;
229
230 interface IPersistStream : IPersist
231 {
232 HRESULT IsDirty( );
233 HRESULT Load( IStream pStm );
234 HRESULT Save( IStream pStm, BOOL fClearDirty );
235 HRESULT GetSizeMax( ULARGE_INTEGER *pcbSize );
236 }
237 alias IPersistStream LPPERSISTSTREAM;
238
239 // system moniker types; returned from IsSystemMoniker.
240 enum MKSYS
241 {
242 MKSYS_NONE = 0,
243 MKSYS_GENERICCOMPOSITE = 1,
244 MKSYS_FILEMONIKER = 2,
245 MKSYS_ANTIMONIKER = 3,
246 MKSYS_ITEMMONIKER = 4,
247 MKSYS_POINTERMONIKER = 5,
248 // MKSYS_URLMONIKER = 6,
249 MKSYS_CLASSMONIKER = 7
250 }
251
252 enum MKREDUCE
253 {
254 MKRREDUCE_ONE = 3<<16,
255 MKRREDUCE_TOUSER = 2<<16,
256 MKRREDUCE_THROUGHUSER = 1<<16,
257 MKRREDUCE_ALL = 0
258 }
259
260 interface IMoniker : IPersistStream
261 {
262 HRESULT BindToObject( IBindCtx pbc, IMoniker pmkToLeft, REFIID riidResult, void **ppvResult );
263 HRESULT BindToStorage( IBindCtx pbc, IMoniker pmkToLeft, REFIID riid, void * ppvObj );
264 HRESULT Reduce( IBindCtx pbc, DWORD dwReduceHowFar, IMoniker * ppmkToLeft, IMoniker * ppmkReduced );
265 HRESULT ComposeWith( IMoniker pmkRight, BOOL fOnlyIfNotGeneric, IMoniker * ppmkComposite );
266 HRESULT Enum( BOOL fForward, IEnumMoniker * ppenumMoniker );
267 HRESULT IsEqual( IMoniker pmkOtherMoniker );
268 HRESULT Hash( DWORD *pdwHash );
269 HRESULT IsRunning( IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning );
270 HRESULT GetTimeOfLastChange( IBindCtx pbc, IMoniker pmkToLeft, FILETIME *pFileTime );
271 HRESULT Inverse( IMoniker * ppmk );
272 HRESULT CommonPrefixWith( IMoniker pmkOther, IMoniker * ppmkPrefix );
273 HRESULT RelativePathTo( IMoniker pmkOther, IMoniker * ppmkRelPath );
274 HRESULT GetDisplayName( IBindCtx pbc, IMoniker pmkToLeft, LPOLESTR *ppszDisplayName );
275 HRESULT ParseDisplayName( IBindCtx pbc, IMoniker pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker * ppmkOut );
276 HRESULT IsSystemMoniker( DWORD * pdwMksys );
277 }
278 alias IMoniker LPMONIKER;
279
280 interface IROTData : IUnknown
281 {
282 HRESULT GetComparisonData( byte * pbData, ULONG cbMax, ULONG *pcbData );
283 }
284
285 interface IEnumString : IUnknown
286 {
287 HRESULT Next( ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched );
288 HRESULT Skip( ULONG celt );
289 HRESULT Reset();
290 HRESULT Clone( IEnumString * ppenum );
291 }
292 alias IEnumString LPENUMSTRING;
293
294
295 /****************************************************************************
296 * Structured Storage Interfaces
297 ****************************************************************************/
298
299 interface ISequentialStream : IUnknown
300 {
301 HRESULT Read( void *pv, ULONG cb, ULONG *pcbRead );
302 HRESULT Write( void *pv, ULONG cb, ULONG *pcbWritten );
303 }
304
305 /* Storage stat buffer */
306 struct STATSTG
307 {
308 LPOLESTR pwcsName;
309 DWORD type;
310 ULARGE_INTEGER cbSize;
311 FILETIME mtime;
312 FILETIME ctime;
313 FILETIME atime;
314 DWORD grfMode;
315 DWORD grfLocksSupported;
316 CLSID clsid;
317 DWORD grfStateBits;
318 DWORD reserved;
319 }
320
321 /* Storage element types */
322 enum STGTY
323 {
324 STGTY_STORAGE = 1,
325 STGTY_STREAM = 2,
326 STGTY_LOCKBYTES = 3,
327 STGTY_PROPERTY = 4
328 }
329
330 enum STREAM_SEEK
331 {
332 STREAM_SEEK_SET = 0,
333 STREAM_SEEK_CUR = 1,
334 STREAM_SEEK_END = 2
335 }
336
337 enum LOCKTYPE
338 {
339 LOCK_WRITE = 1,
340 LOCK_EXCLUSIVE = 2,
341 LOCK_ONLYONCE = 4
342 }
343
344 interface IStream : ISequentialStream
345 {
346 HRESULT Seek( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition );
347 HRESULT SetSize( ULARGE_INTEGER libNewSize );
348 HRESULT CopyTo( IStream pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten);
349 HRESULT Commit( DWORD grfCommitFlags );
350 HRESULT Revert();
351 HRESULT LockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType );
352 HRESULT UnlockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType );
353 HRESULT Stat( STATSTG *pstatstg, DWORD grfStatFlag);
354 HRESULT Clone( IStream * ppstm );
355 }
356 alias IStream LPSTREAM;
357
358 interface IEnumSTATSTG : IUnknown
359 {
360 HRESULT Next( ULONG celt, STATSTG *rgelt, ULONG *pceltFetched );
361 HRESULT Skip( ULONG celt );
362 HRESULT Reset();
363 HRESULT Clone( IEnumSTATSTG * ppenum );
364 }
365 alias IEnumSTATSTG LPENUMSTATSTG;
366
367 struct RemSNB
368 {
369 ULONG ulCntStr;
370 ULONG ulCntChar;
371 OLECHAR rgString[];
372 }
373 alias RemSNB * wireSNB;
374 alias OLECHAR ** SNB;
375
376 interface IStorage : IUnknown
377 {
378 HRESULT CreateStream( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream * ppstm);
379 HRESULT OpenStream( OLECHAR *pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream * ppstm);
380 HRESULT CreateStorage( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStorage * ppstg);
381 HRESULT OpenStorage( OLECHAR *pwcsName, IStorage pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage * ppstg );
382 HRESULT CopyTo( DWORD ciidExclude, IID *rgiidExclude, SNB snbExclude, IStorage pstgDest );
383 HRESULT MoveElementTo( OLECHAR * pwcsName, IStorage pstgDest, OLECHAR *pwcsNewName, DWORD grfFlags );
384 HRESULT Commit( DWORD grfCommitFlags );
385 HRESULT Revert();
386 HRESULT EnumElements( DWORD reserved1, void *reserved2, DWORD reserved3, IEnumSTATSTG * ppenum);
387 HRESULT DestroyElement( OLECHAR * pwcsName );
388 HRESULT RenameElement( OLECHAR *pwcsOldName, OLECHAR *pwcsNewName );
389 HRESULT SetElementTimes( OLECHAR * pwcsName, FILETIME * pctime, FILETIME *patime, FILETIME *pmtime );
390 HRESULT SetClass( REFCLSID clsid );
391 HRESULT SetStateBits( DWORD grfStateBits, DWORD grfMask );
392 HRESULT Stat( STATSTG *pstatstg, DWORD grfStatFlag );
393 }
394 alias IStorage LPSTORAGE;
395
396 interface IPersistFile : IPersist
397 {
398 HRESULT IsDirty();
399 HRESULT Load(LPCOLESTR pszFileName,DWORD dwMode);
400 HRESULT Save(LPCOLESTR pszFileName,BOOL fRemember);
401 HRESULT SaveCompleted(LPCOLESTR pszFileName);
402 HRESULT GetCurFile(LPOLESTR *ppszFileName );
403 }
404 alias IPersistFile LPPERSISTFILE;
405
406 interface IPersistStorage : IPersist
407 {
408 HRESULT IsDirty();
409 HRESULT InitNew(IStorage pStg);
410 HRESULT Load(IStorage pStg);
411 HRESULT Save(IStorage pStgSave,BOOL fSameAsLoad);
412 HRESULT SaveCompleted(IStorage pStgNew);
413 HRESULT HandsOffStorage();
414 }
415 alias IPersistStorage LPPERSISTSTORAGE;
416
417 interface ILockBytes : IUnknown
418 {
419 HRESULT ReadAt(
420 ULARGE_INTEGER ulOffset,
421 void *pv,
422 ULONG cb,
423 ULONG *pcbRead);
424
425 HRESULT WriteAt(
426 ULARGE_INTEGER ulOffset,
427 void *pv,
428 ULONG cb,
429 ULONG *pcbWritten);
430
431 HRESULT Flush();
432
433 HRESULT SetSize(
434 ULARGE_INTEGER cb);
435
436 HRESULT LockRegion(
437 ULARGE_INTEGER libOffset,
438 ULARGE_INTEGER cb,
439 DWORD dwLockType);
440
441 HRESULT UnlockRegion(
442 ULARGE_INTEGER libOffset,
443 ULARGE_INTEGER cb,
444 DWORD dwLockType);
445
446 HRESULT Stat(
447 STATSTG *pstatstg,
448 DWORD grfStatFlag);
449 }
450 alias ILockBytes LPLOCKBYTES;
451
452 struct DVTARGETDEVICE {
453 DWORD tdSize;
454 WORD tdDriverNameOffset;
455 WORD tdDeviceNameOffset;
456 WORD tdPortNameOffset;
457 WORD tdExtDevmodeOffset;
458 BYTE[1] tdData;
459 }
460
461 typedef CLIPFORMAT LPCLIPFORMAT;
462
463 struct FORMATETC {
464 CLIPFORMAT cfFormat;
465 DVTARGETDEVICE * ptd;
466 DWORD dwAspect;
467 LONG lindex;
468 DWORD tymed;
469 }
470 alias FORMATETC *LPFORMATETC;
471
472 interface IEnumFORMATETC : IUnknown
473 {
474 HRESULT Next(
475 ULONG celt,
476 FORMATETC *rgelt,
477 ULONG *pceltFetched);
478
479 HRESULT Skip(
480 ULONG celt);
481
482 HRESULT Reset();
483
484 HRESULT Clone(
485 IEnumFORMATETC * ppenum);
486 }
487 alias IEnumFORMATETC LPENUMFORMATETC;
488
489 //Advise Flags
490 enum ADVF
491 {
492 ADVF_NODATA = 1,
493 ADVF_PRIMEFIRST = 2,
494 ADVF_ONLYONCE = 4,
495 ADVF_DATAONSTOP = 64,
496 ADVFCACHE_NOHANDLER = 8,
497 ADVFCACHE_FORCEBUILTIN = 16,
498 ADVFCACHE_ONSAVE = 32
499 }
500
501 // Stats for data; used by several enumerations and by at least one
502 // implementation of IDataAdviseHolder; if a field is not used, it
503 // will be NULL.
504
505 struct STATDATA
506 { // field used by:
507 FORMATETC formatetc; // EnumAdvise, EnumData (cache), EnumFormats
508 DWORD advf; // EnumAdvise, EnumData (cache)
509 IAdviseSink pAdvSink; // EnumAdvise
510 DWORD dwConnection; // EnumAdvise
511 }
512 alias STATDATA * LPSTATDATA;
513
514 interface IEnumSTATDATA : IUnknown
515 {
516 HRESULT Next(
517 ULONG celt,
518 STATDATA *rgelt,
519 ULONG *pceltFetched);
520
521
522 HRESULT Skip(
523 ULONG celt);
524
525 HRESULT Reset();
526
527 HRESULT Clone(
528 IEnumSTATDATA * ppenum);
529 }
530 alias IEnumSTATDATA LPENUMSTATDATA;
531
532 interface IRootStorage : IUnknown
533 {
534 HRESULT SwitchToFile( LPOLESTR pszFile );
535 }
536 alias IRootStorage LPROOTSTORAGE;
537
538
539 /****************************************************************************
540 * Notification Interfaces
541 ****************************************************************************/
542
543 enum TYMED {
544 TYMED_HGLOBAL = 1,
545 TYMED_FILE = 2,
546 TYMED_ISTREAM = 4,
547 TYMED_ISTORAGE = 8,
548 TYMED_GDI = 16,
549 TYMED_MFPICT = 32,
550 TYMED_ENHMF = 64,
551 TYMED_NULL = 0
552 }
553
554 struct RemSTGMEDIUM {
555 DWORD tymed;
556 DWORD dwHandleType;
557 ULONG pData;
558 ULONG pUnkForRelease;
559 ULONG cbData;
560 byte[1] data;
561 }
562
563 union UNION_u {
564 HBITMAP hBitmap;
565 HMETAFILEPICT hMetaFilePict;
566 HENHMETAFILE hEnhMetaFile;
567 HGLOBAL hGlobal;
568 LPOLESTR lpszFileName;
569 IStream pstm;
570 IStorage pstg;
571 }
572 /*
573 struct uSTGMEDIUM {
574 DWORD tymed;
575 UNION_u u;
576 IUnknown pUnkForRelease;
577 }
578 */
579 // <Shawn Liu> modified
580 struct uSTGMEDIUM {
581 DWORD tymed;
582 void* unionField;
583 IUnknown pUnkForRelease;
584 }
585
586
587 enum {
588 OBJ_PEN =1,
589 OBJ_BRUSH =2,
590 OBJ_DC =3,
591 OBJ_METADC =4,
592 OBJ_PAL =5,
593 OBJ_FONT =6,
594 OBJ_BITMAP =7,
595 OBJ_REGION =8,
596 OBJ_METAFILE =9,
597 OBJ_MEMDC =10,
598 OBJ_EXTPEN =11,
599 OBJ_ENHMETADC =12,
600 OBJ_ENHMETAFILE =13
601 }
602 union __MIDL_IAdviseSink_0002
603 {
604 wireHBITMAP hBitmap;
605 wireHPALETTE hPalette;
606 wireHGLOBAL hGeneric;
607 }
608
609 struct GDI_OBJECT
610 {
611 DWORD ObjectType;
612 __MIDL_IAdviseSink_0002 u;
613 }
614
615 union __MIDL_IAdviseSink_0003
616 {
617 wireHMETAFILEPICT hMetaFilePict;
618 wireHENHMETAFILE hHEnhMetaFile;
619 GDI_OBJECT *hGdiHandle;
620 wireHGLOBAL hGlobal;
621 LPOLESTR lpszFileName;
622 BYTE_BLOB *pstm;
623 BYTE_BLOB *pstg;
624 }
625
626 struct userSTGMEDIUM
627 {
628 DWORD tymed;
629 __MIDL_IAdviseSink_0003 u;
630 IUnknown pUnkForRelease;
631 }
632
633 alias userSTGMEDIUM *wireSTGMEDIUM;
634 alias uSTGMEDIUM STGMEDIUM;
635 alias userSTGMEDIUM *wireASYNC_STGMEDIUM;
636 alias STGMEDIUM ASYNC_STGMEDIUM;
637 alias STGMEDIUM *LPSTGMEDIUM;
638
639 struct userFLAG_STGMEDIUM
640 {
641 LONG ContextFlags;
642 LONG fPassOwnership;
643 userSTGMEDIUM Stgmed;
644 }
645
646 alias userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
647
648 struct FLAG_STGMEDIUM
649 {
650 LONG ContextFlags;
651 LONG fPassOwnership;
652 STGMEDIUM Stgmed;
653 }
654
655
656 interface IAdviseSink : IUnknown
657 {
658 void OnDataChange(FORMATETC *pFormatetc,STGMEDIUM *pStgmed);
659 void OnViewChange(DWORD dwAspect,LONG lindex);
660 void OnRename(IMoniker pmk);
661 void OnSave();
662 void OnClose();
663 }
664 alias IAdviseSink LPADVISESINK;
665
666 interface IAdviseSink2 : IAdviseSink
667 {
668 void OnLinkSrcChange( IMoniker pmk );
669 }
670 alias IAdviseSink2 LPADVISESINK2;
671
672
673 enum DATADIR
674 {
675 DATADIR_GET = 1,
676 DATADIR_SET = 2
677 }
678
679 interface IDataObject : IUnknown
680 {
681
682 HRESULT GetData( FORMATETC *pformatetcIn, STGMEDIUM *pmedium);
683
684 HRESULT GetDataHere( FORMATETC *pformatetc, STGMEDIUM *pmedium);
685
686 HRESULT QueryGetData( FORMATETC *pformatetc);
687
688 HRESULT GetCanonicalFormatEtc(
689 FORMATETC *pformatectIn,
690 FORMATETC *pformatetcOut);
691
692 HRESULT SetData(
693 FORMATETC *pformatetc,
694 STGMEDIUM *pmedium,
695 BOOL fRelease);
696
697 HRESULT EnumFormatEtc(
698 DWORD dwDirection,
699 IEnumFORMATETC * ppenumFormatEtc);
700
701 HRESULT DAdvise(
702 FORMATETC *pformatetc,
703 DWORD advf,
704 IAdviseSink pAdvSink,
705 DWORD *pdwConnection);
706
707 HRESULT DUnadvise(DWORD dwConnection);
708
709 HRESULT EnumDAdvise(IEnumSTATDATA * ppenumAdvise);
710
711 }
712 alias IDataObject LPDATAOBJECT;
713
714 interface IDataAdviseHolder : IUnknown
715 {
716 HRESULT Advise
717 (
718 IDataObject pDataObject,
719 FORMATETC *pFetc,
720 DWORD advf,
721 IAdviseSink pAdvise,
722 DWORD *pdwConnection
723 );
724
725 HRESULT Unadvise
726 (
727 DWORD dwConnection
728 );
729
730 HRESULT EnumAdvise
731 (
732 IEnumSTATDATA * ppenumAdvise
733 );
734
735 HRESULT SendOnDataChange
736 (
737 IDataObject pDataObject,
738 DWORD dwReserved,
739 DWORD advf
740 );
741
742 }
743 alias IDataAdviseHolder LPDATAADVISEHOLDER;
744
745
746 // call type used by IMessageFilter::HandleIncomingMessage
747 enum CALLTYPE
748 {
749 CALLTYPE_TOPLEVEL = 1, // toplevel call - no outgoing call
750 CALLTYPE_NESTED = 2, // callback on behalf of previous outgoing call - should always handle
751 CALLTYPE_ASYNC = 3, // aysnchronous call - can NOT be rejected
752 CALLTYPE_TOPLEVEL_CALLPENDING = 4, // new toplevel call with new LID
753 CALLTYPE_ASYNC_CALLPENDING = 5 // async call - can NOT be rejected
754 }
755
756 // status of server call - returned by IMessageFilter::HandleIncomingCall
757 // and passed to IMessageFilter::RetryRejectedCall
758 enum SERVERCALL
759 {
760 SERVERCALL_ISHANDLED = 0,
761 SERVERCALL_REJECTED = 1,
762 SERVERCALL_RETRYLATER = 2
763 }
764
765 // Pending type indicates the level of nesting
766 enum PENDINGTYPE
767 {
768 PENDINGTYPE_TOPLEVEL = 1, // toplevel call
769 PENDINGTYPE_NESTED = 2 // nested call
770 }
771
772 // return values of MessagePending
773 enum PENDINGMSG
774 {
775 PENDINGMSG_CANCELCALL = 0, // cancel the outgoing call
776 PENDINGMSG_WAITNOPROCESS = 1, // wait for the return and don't dispatch the message
777 PENDINGMSG_WAITDEFPROCESS = 2 // wait and dispatch the message
778
779 }
780
781 // additional interface information about the incoming call
782 struct INTERFACEINFO
783 {
784 IUnknown pUnk; // the pointer to the object
785 IID iid; // interface id
786 WORD wMethod; // interface method
787 }
788 alias INTERFACEINFO *LPINTERFACEINFO;
789
790
791 interface IMessageFilter : IUnknown
792 {
793
794 DWORD HandleInComingCall
795 (
796 DWORD dwCallType,
797 HTASK htaskCaller,
798 DWORD dwTickCount,
799 LPINTERFACEINFO lpInterfaceInfo
800 );
801
802 DWORD RetryRejectedCall
803 (
804 HTASK htaskCallee,
805 DWORD dwTickCount,
806 DWORD dwRejectType
807 );
808
809 DWORD MessagePending
810 (
811 HTASK htaskCallee,
812 DWORD dwTickCount,
813 DWORD dwPendingType
814 );
815 }
816 alias IMessageFilter LPMESSAGEFILTER;
817
818
819
820 /****************************************************************************
821 * Object Remoting Interfaces
822 ****************************************************************************/
823 /*
824 interface IRpcChannelBuffer : IUnknown
825 {
826
827 typedef unsigned long RPCOLEDATAREP;
828
829 typedef struct tagRPCOLEMESSAGE
830 {
831 void *reserved1;
832 RPCOLEDATAREP dataRepresentation;
833 void *Buffer;
834 ULONG cbBuffer;
835 ULONG iMethod;
836 void *reserved2[5];
837 ULONG rpcFlags;
838 } RPCOLEMESSAGE;
839
840 typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
841
842 HRESULT GetBuffer
843 (
844 [in] RPCOLEMESSAGE *pMessage,
845 [in] REFIID riid
846 );
847
848 HRESULT SendReceive
849 (
850 [in,out] RPCOLEMESSAGE *pMessage,
851 [out] ULONG *pStatus
852 );
853
854 HRESULT FreeBuffer
855 (
856 [in] RPCOLEMESSAGE *pMessage
857 );
858
859 HRESULT GetDestCtx
860 (
861 [out] DWORD *pdwDestContext,
862 [out] void **ppvDestContext
863 );
864
865 HRESULT IsConnected
866 (
867 void
868 );
869
870 }
871
872 [
873 local,
874 object,
875 uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
876 ]
877 interface IRpcChannelBuffer2 : IRpcChannelBuffer
878 {
879
880 HRESULT GetProtocolVersion
881 (
882 [in,out] DWORD *pdwVersion
883 );
884 }
885
886 [
887 local,
888 object,
889 uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
890 ]
891 interface IRpcChannelBuffer3 : IRpcChannelBuffer2
892 {
893
894 HRESULT Send
895 (
896 [in,out] RPCOLEMESSAGE *pMsg,
897 [out] ULONG *pulStatus
898 );
899
900 HRESULT Receive
901 (
902 [in,out] RPCOLEMESSAGE *pMsg,
903 [in] ULONG ulSize,
904 [out] ULONG *pulStatus
905 );
906
907 HRESULT Cancel
908 (
909 [in] RPCOLEMESSAGE *pMsg
910 );
911
912 HRESULT GetCallContext
913 (
914 [in] RPCOLEMESSAGE *pMsg,
915 [in] REFIID riid,
916 [out] void **pInterface
917 );
918
919 HRESULT GetDestCtxEx
920 (
921 [in] RPCOLEMESSAGE *pMsg,
922 [out] DWORD *pdwDestContext,
923 [out] void **ppvDestContext
924 );
925
926 HRESULT GetState
927 (
928 [in] RPCOLEMESSAGE *pMsg,
929 [out] DWORD *pState
930 );
931
932 HRESULT RegisterAsync
933 (
934 [in] RPCOLEMESSAGE *pMsg,
935 [in] IAsyncManager *pAsyncMgr
936 );
937
938 }
939
940
941 [
942 local,
943 object,
944 uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
945 ]
946 interface IRpcProxyBuffer : IUnknown
947 {
948
949 HRESULT Connect
950 (
951 [in, unique] IRpcChannelBuffer *pRpcChannelBuffer
952 );
953
954 void Disconnect
955 (
956 void
957 );
958
959 }
960
961 [
962 local,
963 object,
964 uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
965 ]
966 interface IRpcStubBuffer : IUnknown
967 {
968
969 HRESULT Connect
970 (
971 [in] IUnknown *pUnkServer
972 );
973
974 void Disconnect();
975
976 HRESULT Invoke
977 (
978 [in] RPCOLEMESSAGE *_prpcmsg,
979 [in] IRpcChannelBuffer *_pRpcChannelBuffer
980 );
981
982 IRpcStubBuffer *IsIIDSupported
983 (
984 [in] REFIID riid
985 );
986
987 ULONG CountRefs
988 (
989 void
990 );
991
992 HRESULT DebugServerQueryInterface
993 (
994 void **ppv
995 );
996
997 void DebugServerRelease
998 (
999 void *pv
1000 );
1001
1002 }
1003
1004
1005
1006 [
1007 local,
1008 object,
1009 uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
1010 ]
1011 interface IPSFactoryBuffer : IUnknown
1012 {
1013
1014 HRESULT CreateProxy
1015 (
1016 [in] IUnknown *pUnkOuter,
1017 [in] REFIID riid,
1018 [out] IRpcProxyBuffer **ppProxy,
1019 [out] void **ppv
1020 );
1021
1022 HRESULT CreateStub
1023 (
1024 [in] REFIID riid,
1025 [in, unique] IUnknown *pUnkServer,
1026 [out] IRpcStubBuffer **ppStub
1027 );
1028 }
1029
1030 cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
1031 cpp_quote( "// This interface is only valid on Windows NT 4.0" )
1032
1033 // This structure contains additional data for hooks. As a backward
1034 // compatability hack, the entire structure is passed in place of the
1035 // RIID parameter on all hook methods. Thus the IID must be the first
1036 // parameter. As a forward compatability hack the second field is the
1037 // current size of the structure.
1038 typedef struct SChannelHookCallInfo
1039 {
1040 IID iid;
1041 DWORD cbSize;
1042 GUID uCausality;
1043 DWORD dwServerPid;
1044 DWORD iMethod;
1045 void *pObject;
1046 } SChannelHookCallInfo;
1047
1048 [
1049 local,
1050 object,
1051 uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
1052 ]
1053 interface IChannelHook : IUnknown
1054 {
1055 void ClientGetSize(
1056 [in] REFGUID uExtent,
1057 [in] REFIID riid,
1058 [out] ULONG *pDataSize );
1059
1060 void ClientFillBuffer(
1061 [in] REFGUID uExtent,
1062 [in] REFIID riid,
1063 [in, out] ULONG *pDataSize,
1064 [in] void *pDataBuffer );
1065
1066 void ClientNotify(
1067 [in] REFGUID uExtent,
1068 [in] REFIID riid,
1069 [in] ULONG cbDataSize,
1070 [in] void *pDataBuffer,
1071 [in] DWORD lDataRep,
1072 [in] HRESULT hrFault );
1073
1074 void ServerNotify(
1075 [in] REFGUID uExtent,
1076 [in] REFIID riid,
1077 [in] ULONG cbDataSize,
1078 [in] void *pDataBuffer,
1079 [in] DWORD lDataRep );
1080
1081 void ServerGetSize(
1082 [in] REFGUID uExtent,
1083 [in] REFIID riid,
1084 [in] HRESULT hrFault,
1085 [out] ULONG *pDataSize );
1086
1087 void ServerFillBuffer(
1088 [in] REFGUID uExtent,
1089 [in] REFIID riid,
1090 [in, out] ULONG *pDataSize,
1091 [in] void *pDataBuffer,
1092 [in] HRESULT hrFault );
1093 };
1094
1095 cpp_quote( "#endif //DCOM" )
1096 */
1097
1098 /****************************************************************************
1099 * Property Storage Interfaces
1100 ****************************************************************************/
1101
1102 /*
1103 interface IPropertyStorage;
1104 interface IEnumSTATPROPSTG;
1105 interface IEnumSTATPROPSETSTG;
1106
1107 [
1108 object,
1109 uuid(00000138-0000-0000-C000-000000000046),
1110 pointer_default(unique)
1111 ]
1112
1113 interface IPropertyStorage : IUnknown
1114 {
1115
1116 cpp_quote("")
1117 cpp_quote("// Well-known Property Set Format IDs")
1118 extern const FMTID FMTID_SummaryInformation;
1119 extern const FMTID FMTID_DocSummaryInformation;
1120 extern const FMTID FMTID_UserDefinedProperties;
1121
1122 cpp_quote("")
1123 cpp_quote("// Flags for IPropertySetStorage::Create")
1124 const DWORD PROPSETFLAG_DEFAULT = 0;
1125 const DWORD PROPSETFLAG_NONSIMPLE = 1;
1126 const DWORD PROPSETFLAG_ANSI = 2;
1127 cpp_quote("// This flag is only supported on StgCreatePropStg & StgOpenPropStg")
1128 const DWORD PROPSETFLAG_UNBUFFERED = 4;
1129
1130 typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE;
1131
1132 typedef struct tagPROPVARIANT PROPVARIANT;
1133
1134 #define TYPEDEF_CA(type, name) \
1135 typedef struct tag##name\
1136 {\
1137 ULONG cElems;\
1138 [size_is( cElems )]\
1139 type * pElems;\
1140 } name
1141
1142 TYPEDEF_CA(unsigned char, CAUB);
1143 TYPEDEF_CA(short, CAI);
1144 TYPEDEF_CA(USHORT, CAUI);
1145 TYPEDEF_CA(long, CAL);
1146 TYPEDEF_CA(ULONG, CAUL);
1147 TYPEDEF_CA(float, CAFLT);
1148 TYPEDEF_CA(double, CADBL);
1149 TYPEDEF_CA(CY, CACY);
1150 TYPEDEF_CA(DATE, CADATE);
1151 TYPEDEF_CA(BSTR, CABSTR);
1152 TYPEDEF_CA(BSTRBLOB, CABSTRBLOB);
1153 TYPEDEF_CA(VARIANT_BOOL, CABOOL);
1154 TYPEDEF_CA(SCODE, CASCODE);
1155 TYPEDEF_CA(PROPVARIANT, CAPROPVARIANT);
1156 TYPEDEF_CA(LARGE_INTEGER, CAH);
1157 TYPEDEF_CA(ULARGE_INTEGER, CAUH);
1158 TYPEDEF_CA(LPSTR, CALPSTR);
1159 TYPEDEF_CA(LPWSTR, CALPWSTR);
1160 TYPEDEF_CA(FILETIME, CAFILETIME);
1161 TYPEDEF_CA(CLIPDATA, CACLIPDATA);
1162 TYPEDEF_CA(CLSID, CACLSID);
1163
1164 cpp_quote("// Disable the warning about the obsolete member named 'bool'")
1165 cpp_quote("// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'")
1166 cpp_quote("// are reserved keywords")
1167 cpp_quote("#pragma warning(disable:4237)")
1168
1169 struct tagPROPVARIANT
1170 {
1171 VARTYPE vt;
1172 WORD wReserved1;
1173 WORD wReserved2;
1174 WORD wReserved3;
1175 [switch_is((unsigned short) (vt & 0x1fff))] union
1176 {
1177 [case(VT_EMPTY, VT_NULL)]
1178 ;
1179 [case(VT_UI1)]
1180 UCHAR bVal;
1181 [case(VT_I2)]
1182 short iVal;
1183 [case(VT_UI2)]
1184 USHORT uiVal;
1185 [case(VT_BOOL)]
1186 VARIANT_BOOL boolVal;
1187 [case(VT_ILLEGAL)] // obsolete field name; use boolVal
1188 _VARIANT_BOOL bool;
1189 [case(VT_I4)]
1190 long lVal;
1191 [case(VT_UI4)]
1192 ULONG ulVal;
1193 [case(VT_R4)]
1194 float fltVal;
1195 [case(VT_ERROR)]
1196 SCODE scode;
1197 [case(VT_I8)]
1198 LARGE_INTEGER hVal;
1199 [case(VT_UI8)]
1200 ULARGE_INTEGER uhVal;
1201 [case(VT_R8)]
1202 double dblVal;
1203 [case(VT_CY)]
1204 CY cyVal;
1205 [case(VT_DATE)]
1206 DATE date;
1207 [case(VT_FILETIME)]
1208 FILETIME filetime;
1209 [case(VT_CLSID)]
1210 CLSID * puuid;
1211 [case(VT_BLOB, VT_BLOB_OBJECT)]
1212 BLOB blob;
1213 [case(VT_CF)]
1214 CLIPDATA *pclipdata;
1215 [case(VT_STREAM, VT_STREAMED_OBJECT)]
1216 IStream * pStream;
1217 [case(VT_STORAGE, VT_STORED_OBJECT)]
1218 IStorage * pStorage;
1219 [case(VT_BSTR)]
1220 BSTR bstrVal;
1221 [case(VT_BSTR_BLOB)] // System use only
1222 BSTRBLOB bstrblobVal;
1223 [case(VT_LPSTR)]
1224 LPSTR pszVal;
1225 [case(VT_LPWSTR)]
1226 LPWSTR pwszVal;
1227 [case(VT_UI1|VT_VECTOR)]
1228 CAUB caub;
1229 [case(VT_I2|VT_VECTOR)]
1230 CAI cai;
1231 [case(VT_UI2|VT_VECTOR)]
1232 CAUI caui;
1233 [case(VT_BOOL|VT_VECTOR)]
1234 CABOOL cabool;
1235 [case(VT_I4|VT_VECTOR)]
1236 CAL cal;
1237 [case(VT_UI4|VT_VECTOR)]
1238 CAUL caul;
1239 [case(VT_R4|VT_VECTOR)]
1240 CAFLT caflt;
1241 [case(VT_ERROR|VT_VECTOR)]
1242 CASCODE cascode;
1243 [case(VT_I8|VT_VECTOR)]
1244 CAH cah;
1245 [case(VT_UI8|VT_VECTOR)]
1246 CAUH cauh;
1247 [case(VT_R8|VT_VECTOR)]
1248 CADBL cadbl;
1249 [case(VT_CY|VT_VECTOR)]
1250 CACY cacy;
1251 [case(VT_DATE|VT_VECTOR)]
1252 CADATE cadate;
1253 [case(VT_FILETIME|VT_VECTOR)]
1254 CAFILETIME cafiletime;
1255 [case(VT_CLSID|VT_VECTOR)]
1256 CACLSID cauuid;
1257 [case(VT_CF|VT_VECTOR)]
1258 CACLIPDATA caclipdata;
1259 [case(VT_BSTR|VT_VECTOR)]
1260 CABSTR cabstr;
1261 [case(VT_BSTR_BLOB|VT_VECTOR)] // System use only
1262 CABSTRBLOB cabstrblob;
1263 [case(VT_LPSTR|VT_VECTOR)]
1264 CALPSTR calpstr;
1265 [case(VT_LPWSTR|VT_VECTOR)]
1266 CALPWSTR calpwstr;
1267 [case(VT_VARIANT|VT_VECTOR)]
1268 CAPROPVARIANT capropvar;
1269 };
1270 };
1271
1272 typedef struct tagPROPVARIANT * LPPROPVARIANT;
1273
1274 cpp_quote("// Reserved global Property IDs")
1275 const PROPID PID_DICTIONARY = 0x00000000;
1276 const PROPID PID_CODEPAGE = 0x00000001;
1277 const PROPID PID_FIRST_USABLE = 0x00000002;
1278 const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff;
1279 const PROPID PID_LOCALE = 0x80000000;
1280 const PROPID PID_MODIFY_TIME = 0x80000001;
1281 const PROPID PID_SECURITY = 0x80000002;
1282 const PROPID PID_ILLEGAL = 0xffffffff;
1283
1284
1285 cpp_quote("// Property IDs for the SummaryInformation Property Set")
1286 cpp_quote("")
1287 cpp_quote("#define PIDSI_TITLE 0x00000002L // VT_LPSTR")
1288 cpp_quote("#define PIDSI_SUBJECT 0x00000003L // VT_LPSTR")
1289 cpp_quote("#define PIDSI_AUTHOR 0x00000004L // VT_LPSTR")
1290 cpp_quote("#define PIDSI_KEYWORDS 0x00000005L // VT_LPSTR")
1291 cpp_quote("#define PIDSI_COMMENTS 0x00000006L // VT_LPSTR")
1292 cpp_quote("#define PIDSI_TEMPLATE 0x00000007L // VT_LPSTR")
1293 cpp_quote("#define PIDSI_LASTAUTHOR 0x00000008L // VT_LPSTR")
1294 cpp_quote("#define PIDSI_REVNUMBER 0x00000009L // VT_LPSTR")
1295 cpp_quote("#define PIDSI_EDITTIME 0x0000000aL // VT_FILETIME (UTC)")
1296 cpp_quote("#define PIDSI_LASTPRINTED 0x0000000bL // VT_FILETIME (UTC)")
1297 cpp_quote("#define PIDSI_CREATE_DTM 0x0000000cL // VT_FILETIME (UTC)")
1298 cpp_quote("#define PIDSI_LASTSAVE_DTM 0x0000000dL // VT_FILETIME (UTC)")
1299 cpp_quote("#define PIDSI_PAGECOUNT 0x0000000eL // VT_I4")
1300 cpp_quote("#define PIDSI_WORDCOUNT 0x0000000fL // VT_I4")
1301 cpp_quote("#define PIDSI_CHARCOUNT 0x00000010L // VT_I4")
1302 cpp_quote("#define PIDSI_THUMBNAIL 0x00000011L // VT_CF")
1303 cpp_quote("#define PIDSI_APPNAME 0x00000012L // VT_LPSTR")
1304 cpp_quote("#define PIDSI_DOC_SECURITY 0x00000013L // VT_I4")
1305
1306 const ULONG PRSPEC_INVALID = 0xffffffff;
1307 const ULONG PRSPEC_LPWSTR = 0;
1308 const ULONG PRSPEC_PROPID = 1;
1309
1310 typedef struct tagPROPSPEC
1311 {
1312
1313 ULONG ulKind;
1314 [switch_is(ulKind)] union
1315 {
1316 [case(PRSPEC_PROPID)]
1317 PROPID propid;
1318 [case(PRSPEC_LPWSTR)]
1319 LPOLESTR lpwstr;
1320 [default] ;
1321 } ;
1322
1323 } PROPSPEC;
1324
1325 typedef struct tagSTATPROPSTG
1326 {
1327
1328 LPOLESTR lpwstrName;
1329 PROPID propid;
1330 VARTYPE vt;
1331
1332 } STATPROPSTG;
1333
1334 cpp_quote("// Macros for parsing the OS Version of the Property Set Header")
1335 cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD( (dwOSVer) )")
1336 cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD( (dwOSVer) ))")
1337 cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD( (dwOSVer) ))")
1338 cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN 0xFFFFFFFF")
1339
1340
1341 typedef struct tagSTATPROPSETSTG
1342 {
1343
1344 FMTID fmtid;
1345 CLSID clsid;
1346 DWORD grfFlags;
1347 FILETIME mtime;
1348 FILETIME ctime;
1349 FILETIME atime;
1350 DWORD dwOSVersion;
1351
1352 } STATPROPSETSTG;
1353
1354
1355 // When this IDL file is used for "IProp.dll" (the
1356 // standalone property set DLL), we must have local
1357 // and remotable routines (call_as routines are used
1358 // to remove BSTRs, which are not remotable with some
1359 // RPC run-times).
1360 //
1361 // For the remotable routines, we must use pointer
1362 // parameters (e.g. "*rgspec" rather than "rgspec[]")
1363 // so that the MIDL 2.0 compiler will generate an
1364 // interpereted proxy/stub, rather than inline.
1365
1366 #ifdef IPROPERTY_DLL
1367 [local]
1368 #endif
1369 HRESULT ReadMultiple(
1370 [in] ULONG cpspec,
1371 [in, size_is(cpspec)]
1372 const PROPSPEC rgpspec[],
1373 [out, size_is(cpspec)]
1374 PROPVARIANT rgpropvar[]
1375 );
1376
1377 #ifdef IPROPERTY_DLL
1378 [call_as(ReadMultiple)]
1379 HRESULT RemoteReadMultiple(
1380 [out] BOOL *pfBstrPresent,
1381 [in] ULONG cpspec,
1382 [in, size_is(cpspec)]
1383 const PROPSPEC *rgpspec,
1384 [out, size_is(cpspec)]
1385 PROPVARIANT *rgpropvar
1386 );
1387 #endif
1388
1389 #ifdef IPROPERTY_DLL
1390 [local]
1391 #endif
1392 HRESULT WriteMultiple(
1393 [in] ULONG cpspec,
1394 [in, size_is(cpspec)]
1395 const PROPSPEC rgpspec[],
1396 [in, size_is(cpspec)]
1397 const PROPVARIANT rgpropvar[],
1398 [in] PROPID propidNameFirst
1399 );
1400
1401 #ifdef IPROPERTY_DLL
1402 [call_as(WriteMultiple)]
1403 HRESULT RemoteWriteMultiple(
1404 [in] BOOL fBstrPresent,
1405 [in] ULONG cpspec,
1406 [in, size_is(cpspec)]
1407 const PROPSPEC *rgpspec,
1408 [in, size_is(cpspec)]
1409 const PROPVARIANT *rgpropvar,
1410 [in] PROPID propidNameFirst
1411 );
1412 #endif
1413
1414 #ifdef IPROPERTY_DLL
1415 [local]
1416 #endif
1417 HRESULT DeleteMultiple(
1418 [in] ULONG cpspec,
1419 [in, size_is(cpspec)]
1420 const PROPSPEC rgpspec[]
1421 );
1422
1423 #ifdef IPROPERTY_DLL
1424 [call_as(DeleteMultiple)]
1425 HRESULT RemoteDeleteMultiple(
1426 [in] ULONG cpspec,
1427 [in, size_is(cpspec)]
1428 const PROPSPEC *rgpspec
1429 );
1430 #endif
1431
1432 HRESULT ReadPropertyNames(
1433 [in] ULONG cpropid,
1434 [in, size_is(cpropid)]
1435 const PROPID rgpropid[],
1436 [out, size_is(cpropid)]
1437 LPOLESTR rglpwstrName[]
1438 );
1439
1440 HRESULT WritePropertyNames(
1441 [in] ULONG cpropid,
1442 [in, size_is(cpropid)]
1443 const PROPID rgpropid[],
1444 [in, size_is(cpropid)]
1445 const LPOLESTR rglpwstrName[]
1446 );
1447
1448 HRESULT DeletePropertyNames(
1449 [in] ULONG cpropid,
1450 [in, size_is(cpropid)]
1451 const PROPID rgpropid[]
1452 );
1453
1454 HRESULT Commit(
1455 [in] DWORD grfCommitFlags
1456 );
1457
1458 HRESULT Revert();
1459
1460 HRESULT Enum(
1461 [out] IEnumSTATPROPSTG ** ppenum
1462 );
1463
1464 HRESULT SetTimes(
1465 [in] FILETIME const * pctime,
1466 [in] FILETIME const * patime,
1467 [in] FILETIME const * pmtime
1468 );
1469
1470 HRESULT SetClass(
1471 [in] REFCLSID clsid
1472 );
1473
1474 HRESULT Stat(
1475 [out] STATPROPSETSTG * pstatpsstg
1476 );
1477 }
1478
1479 [
1480 object,
1481 uuid(0000013A-0000-0000-C000-000000000046),
1482 pointer_default(unique)
1483 ]
1484
1485 interface IPropertySetStorage : IUnknown
1486 {
1487
1488 typedef [unique] IPropertySetStorage * LPPROPERTYSETSTORAGE;
1489
1490 HRESULT Create(
1491 [in] REFFMTID rfmtid,
1492 [in, unique]
1493 const CLSID * pclsid,
1494 [in] DWORD grfFlags,
1495 [in] DWORD grfMode,
1496 [out] IPropertyStorage ** ppprstg
1497 );
1498
1499 HRESULT Open(
1500 [in] REFFMTID rfmtid,
1501 [in] DWORD grfMode,
1502 [out] IPropertyStorage ** ppprstg
1503 );
1504
1505 HRESULT Delete(
1506 [in] REFFMTID rfmtid
1507 );
1508
1509 HRESULT Enum(
1510 [out] IEnumSTATPROPSETSTG ** ppenum
1511 );
1512
1513 }
1514
1515
1516 [
1517 object,
1518 uuid(00000139-0000-0000-C000-000000000046),
1519 pointer_default(unique)
1520 ]
1521
1522 interface IEnumSTATPROPSTG : IUnknown
1523 {
1524
1525 typedef [unique] IEnumSTATPROPSTG * LPENUMSTATPROPSTG;
1526
1527 [local]
1528 HRESULT Next(
1529 [in] ULONG celt,
1530 [out, size_is(celt), length_is(*pceltFetched)]
1531 STATPROPSTG * rgelt,
1532 [out] ULONG * pceltFetched
1533 );
1534
1535 [call_as(Next)]
1536 HRESULT RemoteNext(
1537 [in] ULONG celt,
1538 [out, size_is(celt), length_is(*pceltFetched)]
1539 STATPROPSTG * rgelt,
1540 [out] ULONG * pceltFetched
1541 );
1542
1543 HRESULT Skip(
1544 [in] ULONG celt
1545 );
1546
1547 HRESULT Reset();
1548
1549 HRESULT Clone(
1550 [out] IEnumSTATPROPSTG ** ppenum
1551 );
1552 }
1553
1554
1555 [
1556 object,
1557 uuid(0000013B-0000-0000-C000-000000000046),
1558 pointer_default(unique)
1559 ]
1560
1561 interface IEnumSTATPROPSETSTG : IUnknown
1562 {
1563
1564 typedef [unique] IEnumSTATPROPSETSTG * LPENUMSTATPROPSETSTG;
1565
1566 [local]
1567 HRESULT Next(
1568 [in] ULONG celt,
1569 [out, size_is(celt), length_is(*pceltFetched)]
1570 STATPROPSETSTG * rgelt,
1571 [out] ULONG * pceltFetched
1572 );
1573
1574 [call_as(Next)]
1575 HRESULT RemoteNext(
1576 [in] ULONG celt,
1577 [out, size_is(celt), length_is(*pceltFetched)]
1578 STATPROPSETSTG * rgelt,
1579 [out] ULONG * pceltFetched
1580 );
1581
1582 HRESULT Skip(
1583 [in] ULONG celt
1584 );
1585
1586 HRESULT Reset();
1587
1588 HRESULT Clone(
1589 [out] IEnumSTATPROPSETSTG ** ppenum
1590 );
1591 }
1592
1593
1594 cpp_quote("WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );")
1595 cpp_quote("WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );")
1596 cpp_quote("WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );")
1597
1598 cpp_quote("")
1599 cpp_quote("#define _PROPVARIANTINIT_DEFINED_")
1600 cpp_quote("# ifdef __cplusplus")
1601 cpp_quote("inline void PropVariantInit ( PROPVARIANT * pvar )")
1602 cpp_quote("{")
1603 cpp_quote(" memset ( pvar, 0, sizeof(PROPVARIANT) );")
1604 cpp_quote("}")
1605 cpp_quote("# else")
1606 cpp_quote("# define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )")
1607 cpp_quote("# endif")
1608 cpp_quote("")
1609
1610 cpp_quote("")
1611 cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
1612 cpp_quote("WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
1613 cpp_quote("WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
1614 cpp_quote("WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);")
1615
1616 cpp_quote("")
1617 cpp_quote("#define CCH_MAX_PROPSTG_NAME 31")
1618 cpp_quote("WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );" )
1619 cpp_quote("WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );" )
1620 cpp_quote("#endif")
1621
1622 */
1623
1624 /****************************************************************************
1625 * Connection Point Interfaces
1626 ****************************************************************************/
1627 /*
1628 #ifdef __INCLUDE_CPIFS
1629 interface IConnectionPointContainer;
1630 interface IConnectionPoint;
1631 interface IEnumConnections;
1632 interface IEnumConnectionPoints;
1633
1634 [
1635 object,
1636 uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
1637 pointer_default(unique)
1638 ]
1639 interface IConnectionPoint : IUnknown
1640 {
1641 typedef IConnectionPoint * PCONNECTIONPOINT;
1642 typedef IConnectionPoint * LPCONNECTIONPOINT;
1643
1644 HRESULT GetConnectionInterface
1645 (
1646 [out] IID * piid
1647 );
1648
1649 HRESULT GetConnectionPointContainer
1650 (
1651 [out] IConnectionPointContainer ** ppCPC
1652 );
1653
1654 HRESULT Advise
1655 (
1656 [in] IUnknown * pUnkSink,
1657 [out] DWORD * pdwCookie
1658 );
1659
1660 HRESULT Unadvise
1661 (
1662 [in] DWORD dwCookie
1663 );
1664
1665 HRESULT EnumConnections
1666 (
1667 [out] IEnumConnections ** ppEnum
1668 );
1669 }
1670
1671 [
1672 object,
1673 uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
1674 pointer_default(unique)
1675 ]
1676 interface IConnectionPointContainer : IUnknown
1677 {
1678 typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
1679 typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
1680
1681 HRESULT EnumConnectionPoints
1682 (
1683 [out] IEnumConnectionPoints ** ppEnum
1684 );
1685
1686 HRESULT FindConnectionPoint
1687 (
1688 [in] REFIID riid,
1689 [out] IConnectionPoint ** ppCP
1690 );
1691 }
1692
1693
1694 [
1695 object,
1696 uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
1697 pointer_default(unique)
1698 ]
1699 interface IEnumConnections : IUnknown
1700 {
1701 typedef IEnumConnections * PENUMCONNECTIONS;
1702 typedef IEnumConnections * LPENUMCONNECTIONS;
1703
1704 typedef struct tagCONNECTDATA
1705 {
1706 IUnknown * pUnk;
1707 DWORD dwCookie;
1708 } CONNECTDATA;
1709
1710 typedef struct tagCONNECTDATA * PCONNECTDATA;
1711 typedef struct tagCONNECTDATA * LPCONNECTDATA;
1712
1713 [local]
1714 HRESULT Next(
1715 [in] ULONG cConnections,
1716 [out,
1717 size_is(cConnections),
1718 length_is(*lpcFetched)] CONNECTDATA * rgcd,
1719 [out] ULONG * lpcFetched
1720 );
1721
1722 [call_as(Next)]
1723 HRESULT RemoteNext(
1724 [in] ULONG cConnections,
1725 [out,
1726 size_is(cConnections),
1727 length_is(*lpcFetched)] CONNECTDATA * rgcd,
1728 [out] ULONG * lpcFetched
1729 );
1730
1731 HRESULT Skip
1732 (
1733 [in] ULONG cConnections
1734 );
1735
1736 HRESULT Reset
1737 (
1738 void
1739 );
1740
1741 HRESULT Clone
1742 (
1743 [out] IEnumConnections ** ppEnum
1744 );
1745 }
1746
1747
1748 [
1749 object,
1750 uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
1751 pointer_default(unique)
1752 ]
1753 interface IEnumConnectionPoints : IUnknown
1754 {
1755 typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
1756 typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
1757
1758 [local]
1759 HRESULT Next(
1760 [in] ULONG cConnections,
1761 [out,
1762 size_is(cConnections),
1763 length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
1764 [out] ULONG * lpcFetched
1765 );
1766
1767 [call_as(Next)]
1768 HRESULT RemoteNext(
1769 [in] ULONG cConnections,
1770 [out,
1771 size_is(cConnections),
1772 length_is(*lpcFetched)] IConnectionPoint ** rgpcn,
1773 [out] ULONG * lpcFetched
1774 );
1775
1776 HRESULT Skip
1777 (
1778 [in] ULONG cConnections
1779 );
1780
1781 HRESULT Reset
1782 (
1783 void
1784 );
1785
1786 HRESULT Clone
1787 (
1788 [out] IEnumConnectionPoints ** ppEnum
1789 );
1790 }
1791 #endif // __INCLUDE_CPIFS
1792
1793
1794 cpp_quote( "#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
1795 cpp_quote( "// This interface is only valid on Windows NT 4.0" )
1796
1797 [
1798 local,
1799 object,
1800 uuid(0000013D-0000-0000-C000-000000000046)
1801 ]
1802 interface IClientSecurity : IUnknown
1803 {
1804
1805 typedef struct tagSOLE_AUTHENTICATION_SERVICE
1806 {
1807 DWORD dwAuthnSvc;
1808 DWORD dwAuthzSvc;
1809 OLECHAR *pPrincipalName;
1810 HRESULT hr;
1811 } SOLE_AUTHENTICATION_SERVICE;
1812
1813 typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
1814
1815 typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
1816 {
1817 EOAC_NONE = 0x0,
1818 EOAC_MUTUAL_AUTH = 0x1,
1819 EOAC_CLOAKING = 0x10,
1820
1821 // These are only valid for CoInitializeSecurity
1822 EOAC_SECURE_REFS = 0x2,
1823 EOAC_ACCESS_CONTROL = 0x4,
1824 EOAC_APPID = 0x8
1825 } EOLE_AUTHENTICATION_CAPABILITIES;
1826
1827 HRESULT QueryBlanket
1828 (
1829 [in] IUnknown *pProxy,
1830 [out] DWORD *pAuthnSvc,
1831 [out] DWORD *pAuthzSvc,
1832 [out] OLECHAR **pServerPrincName,
1833 [out] DWORD *pAuthnLevel,
1834 [out] DWORD *pImpLevel,
1835 [out] void **pAuthInfo,
1836 [out] DWORD *pCapabilites
1837 );
1838
1839 HRESULT SetBlanket
1840 (
1841 [in] IUnknown *pProxy,
1842 [in] DWORD AuthnSvc,
1843 [in] DWORD AuthzSvc,
1844 [in] OLECHAR *pServerPrincName,
1845 [in] DWORD AuthnLevel,
1846 [in] DWORD ImpLevel,
1847 [in] void *pAuthInfo,
1848 [in] DWORD Capabilities
1849 );
1850
1851 HRESULT CopyProxy
1852 (
1853 [in] IUnknown *pProxy,
1854 [out] IUnknown **ppCopy
1855 );
1856 }
1857
1858 [
1859 local,
1860 object,
1861 uuid(0000013E-0000-0000-C000-000000000046)
1862 ]
1863 interface IServerSecurity : IUnknown
1864 {
1865 HRESULT QueryBlanket
1866 (
1867 [out] DWORD *pAuthnSvc,
1868 [out] DWORD *pAuthzSvc,
1869 [out] OLECHAR **pServerPrincName,
1870 [out] DWORD *pAuthnLevel,
1871 [out] DWORD *pImpLevel,
1872 [out] void **pPrivs,
1873 [out] DWORD *pCapabilities
1874 );
1875
1876 HRESULT ImpersonateClient();
1877
1878 HRESULT RevertToSelf();
1879
1880 BOOL IsImpersonating();
1881 }
1882
1883 [
1884 object,
1885 uuid(00000140-0000-0000-C000-000000000046)
1886 ]
1887
1888 interface IClassActivator : IUnknown
1889 {
1890 HRESULT GetClassObject(
1891 [in] REFCLSID rclsid,
1892 [in] DWORD dwClassContext,
1893 [in] LCID locale,
1894 [in] REFIID riid,
1895 [out, iid_is(riid)] void **ppv);
1896 }
1897
1898
1899 [
1900 object,
1901 local,
1902 uuid(00000144-0000-0000-C000-000000000046),
1903 oleautomation
1904 ]
1905 interface IRpcOptions : IUnknown
1906 {
1907 HRESULT Set([in] IUnknown * pPrx,
1908 [in] DWORD dwProperty,
1909 [in] DWORD dwValue);
1910
1911 HRESULT Query([in] IUnknown * pPrx,
1912 [in] DWORD dwProperty,
1913 [out] DWORD * pdwValue);
1914
1915 HRESULT CopyProxy([in] IUnknown * punkProxy,
1916 [out] IUnknown ** ppunkCopy);
1917 }
1918
1919 enum {COMBND_RPCSTRINGS = 0x01}; // flag indicating arBndInfo is the
1920 // Rpc string bindings to be used.
1921
1922 [
1923 object,
1924 local,
1925 uuid(00000148-0000-0000-C000-000000000046)
1926 ]
1927 interface IComBinding : IUnknown
1928 {
1929 HRESULT InitBinding([in] DWORD dwEndpointFlags,
1930 [in] DWORD dwNICFlags,
1931 [in] DWORD mbzReserved1,
1932 [in] DWORD mbzReserved2,
1933 [in] LPOLESTR pszBinding
1934 );
1935
1936 HRESULT QueryBinding([out] LPDWORD pdwEndpointFlags,
1937 [out] LPDWORD pdwNICFlags,
1938 [out] LPDWORD mbzReserved1,
1939 [out] LPDWORD mbzReserved2,
1940 [out] LPOLESTR *ppszBinding
1941 );
1942
1943
1944 }
1945
1946
1947
1948
1949 cpp_quote( "#endif //DCOM" )
1950
1951
1952 [
1953 object,
1954 uuid(99caf010-415e-11cf-8814-00aa00b569f5),
1955 pointer_default(unique)
1956 ]
1957
1958 interface IFillLockBytes: IUnknown
1959 {
1960 [local]
1961 HRESULT FillAppend
1962 (
1963 [in, size_is(cb)] void const *pv,
1964 [in] ULONG cb,
1965 [out] ULONG *pcbWritten
1966 );
1967
1968 [call_as(FillAppend)]
1969 HRESULT _stdcall RemoteFillAppend(
1970 [in, size_is(cb)] byte const *pv,
1971 [in] ULONG cb,
1972 [out] ULONG *pcbWritten);
1973
1974 [local]
1975 HRESULT FillAt
1976 (
1977 [in] ULARGE_INTEGER ulOffset,
1978 [in, size_is(cb)] void const *pv,
1979 [in] ULONG cb,
1980 [out] ULONG *pcbWritten
1981 );
1982
1983 [call_as(FillAt)]
1984 HRESULT _stdcall RemoteFillAt(
1985 [in] ULARGE_INTEGER ulOffset,
1986 [in, size_is(cb)] byte const *pv,
1987 [in] ULONG cb,
1988 [out] ULONG *pcbWritten);
1989
1990 HRESULT SetFillSize
1991 (
1992 [in] ULARGE_INTEGER ulSize
1993 );
1994
1995 HRESULT Terminate
1996 (
1997 [in] BOOL bCanceled
1998 );
1999 }
2000
2001
2002 [
2003 object,
2004 uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
2005 pointer_default(unique)
2006 ]
2007
2008 interface IProgressNotify: IUnknown
2009 {
2010 HRESULT OnProgress
2011 (
2012 [in] DWORD dwProgressCurrent,
2013 [in] DWORD dwProgressMaximum,
2014 [in] BOOL fAccurate,
2015 [in] BOOL fOwner
2016 );
2017 }
2018
2019
2020 [
2021 local,
2022 object,
2023 uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
2024 pointer_default(unique)
2025 ]
2026
2027 interface ILayoutStorage: IUnknown
2028 {
2029 typedef struct tagStorageLayout
2030 {
2031 DWORD LayoutType;
2032 OLECHAR *pwcsElementName;
2033 LARGE_INTEGER cOffset;
2034 LARGE_INTEGER cBytes;
2035 } StorageLayout;
2036
2037 HRESULT __stdcall LayoutScript
2038 (
2039 [in] StorageLayout *pStorageLayout,
2040 [in] DWORD nEntries,
2041 [in] DWORD glfInterleavedFlag
2042 );
2043 HRESULT __stdcall BeginMonitor(void);
2044
2045 HRESULT __stdcall EndMonitor(void);
2046
2047 HRESULT __stdcall ReLayoutDocfile
2048 (
2049 [in] OLECHAR *pwcsNewDfName
2050 );
2051
2052 HRESULT __stdcall ReLayoutDocfileOnILockBytes
2053 (
2054 [in] ILockBytes *pILockBytes
2055 );
2056
2057
2058 }
2059
2060 [
2061 uuid(00000022-0000-0000-C000-000000000046),
2062 version(1.0),
2063 pointer_default(unique)
2064 , object
2065 ]
2066
2067 interface ISurrogate : IUnknown
2068 {
2069 typedef [unique] ISurrogate* LPSURROGATE;
2070
2071 HRESULT LoadDllServer(
2072 [in] REFCLSID Clsid);
2073 HRESULT FreeSurrogate();
2074 }
2075
2076
2077 [
2078 local,
2079 object,
2080 uuid(00000146-0000-0000-C000-000000000046)
2081 ]
2082 interface IGlobalInterfaceTable : IUnknown
2083 {
2084 typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
2085
2086 HRESULT RegisterInterfaceInGlobal
2087 (
2088 [in] IUnknown *pUnk,
2089 [in] REFIID riid,
2090 [out] DWORD *pdwCookie
2091 );
2092
2093 HRESULT RevokeInterfaceFromGlobal
2094 (
2095 [in] DWORD dwCookie
2096 );
2097
2098 HRESULT GetInterfaceFromGlobal
2099 (
2100 [in] DWORD dwCookie,
2101 [in] REFIID riid,
2102 [out, iid_is(riid)] void **ppv
2103 );
2104 };
2105
2106
2107 [
2108 object,
2109 uuid(0e6d4d92-6738-11cf-9608-00aa00680db4),
2110 pointer_default(unique)
2111 ]
2112
2113 interface IDirectWriterLock : IUnknown
2114 {
2115
2116 HRESULT WaitForWriteAccess ([in] DWORD dwTimeout);
2117
2118 HRESULT ReleaseWriteAccess ();
2119
2120 HRESULT HaveWriteAccess ();
2121
2122 }
2123
2124 [
2125 object,
2126 uuid(00000023-0000-0000-C000-000000000046)
2127 ]
2128
2129 interface ISynchronize : IUnknown
2130 {
2131 HRESULT Wait([in] DWORD dwMilliseconds);
2132 HRESULT Signal();
2133 HRESULT Reset();
2134 }
2135
2136 [
2137 local,
2138 object,
2139 uuid(00000025-0000-0000-C000-000000000046)
2140 ]
2141 interface ISynchronizeMutex : ISynchronize
2142 {
2143 HRESULT ReleaseMutex();
2144 }
2145
2146 [
2147 local,
2148 object,
2149 uuid(00000024-0000-0000-C000-000000000046)
2150 ]
2151 interface IAsyncSetup : IUnknown
2152 {
2153 HRESULT GetAsyncManager( [in] REFIID riid,
2154 [in] IUnknown *pOuter,
2155 [in] DWORD dwFlags,
2156 [out] IUnknown **ppInner,
2157 [out] IAsyncManager **ppAsyncMgr );
2158 }
2159
2160 [
2161 local,
2162 object,
2163 uuid(00000029-0000-0000-C000-000000000046)
2164 ]
2165
2166 interface ICancelMethodCalls : IUnknown
2167 {
2168 typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
2169
2170 HRESULT Cancel (void);
2171 HRESULT TestCancel (void);
2172 HRESULT SetCancelTimeout([in] ULONG ulSeconds);
2173 }
2174
2175 [
2176 local,
2177 object,
2178 uuid(0000002A-0000-0000-C000-000000000046)
2179 ]
2180 interface IAsyncManager : IUnknown
2181 {
2182 typedef enum tagDCOM_CALL_STATE
2183 {
2184 DCOM_NONE = 0x0,
2185 DCOM_CALL_COMPLETE = 0x1,
2186 DCOM_CALL_CANCELED = 0x2,
2187 } DCOM_CALL_STATE;
2188
2189 HRESULT CompleteCall ( [in] HRESULT Result );
2190 HRESULT GetCallContext( [in] REFIID riid, [out] void **pInterface );
2191 HRESULT GetState ( [out] ULONG *pulStateFlags);
2192 }
2193
2194 [
2195 local,
2196 object,
2197 uuid(0000002B-0000-0000-C000-000000000046)
2198 ]
2199 interface IWaitMultiple : IUnknown
2200 {
2201 HRESULT WaitMultiple ( [in] DWORD timeout, [out] ISynchronize **pSync );
2202 HRESULT AddSynchronize( [in] ISynchronize *pSync );
2203 }
2204
2205 [
2206 local,
2207 object,
2208 uuid(0000002C-0000-0000-C000-000000000046)
2209 ]
2210 interface ISynchronizeEvent : IUnknown
2211 {
2212 HRESULT GetEvent( [out] HANDLE *pEvent );
2213 }
2214
2215 [
2216 object,
2217 uuid(00000026-0000-0000-C000-000000000046)
2218 ]
2219 interface IUrlMon : IUnknown
2220 {
2221 HRESULT AsyncGetClassBits(
2222 [in] REFCLSID rclsid,
2223 [in, unique] LPCWSTR pszTYPE,
2224 [in, unique] LPCWSTR pszExt,
2225 [in] DWORD dwFileVersionMS,
2226 [in] DWORD dwFileVersionLS,
2227 [in, unique] LPCWSTR pszCodeBase,
2228 [in] IBindCtx * pbc,
2229 [in] DWORD dwClassContext,
2230 [in] REFIID riid,
2231 [in] DWORD flags);
2232 }
2233
2234 //----------------------------------------------------------------------------
2235 // The Class Store Access Interface.
2236 //----------------------------------------------------------------------------
2237 [
2238 object,
2239 uuid(00000190-0000-0000-C000-000000000046)
2240 ]
2241 interface IClassAccess : IUnknown
2242 {
2243
2244 // This is the most common method to access the Class Container.
2245 // It queries the Class Store for implementations for a specific
2246 // Class Id.
2247 // If a matching implementation is available for the object type,
2248 // client architecture, locale and class context a pointer to the
2249 // binary is returned along with other package info in the [out] parameter
2250 // pPackageInfo.
2251 //
2252 // If the binary needs to be downloaded to the local machine, it is
2253 // done as a part of this.
2254 //
2255 HRESULT GetClassInfo(
2256 [in] REFCLSID clsid, // Class ID
2257 [in] QUERYCONTEXT QryContext, // Query Attributes
2258 [out] PACKAGEINFO * pPackageInfo
2259 );
2260
2261 //
2262 // GetClassSpecInfo is same as GetClassInfo except for it takes in
2263 // any Class Specifier , CLSID or File Ext, or ProgID or MIME type.
2264 //
2265 HRESULT GetClassSpecInfo(
2266 [in] uCLSSPEC * pClassSpec, // Class Spec (CLSID/Ext/MIME)
2267 [in] QUERYCONTEXT QryContext, // Query Attributes
2268 [out] PACKAGEINFO * pPackageInfo
2269 );
2270
2271
2272 //
2273 // GetInstallablePackages is used by CoGetPublishedAppInfo
2274 // to provide list of published apps from the class store that are
2275 // available for installation.
2276 //
2277
2278 typedef struct tagPUBLISHEDINFOLIST {
2279 DWORD cPublApps;
2280 [size_is(cPublApps), unique] PUBLISHEDAPPINFO *pPublAppInfo;
2281 } PUBLISHEDINFOLIST;
2282
2283 HRESULT GetInstallablePackages (
2284 [in] DWORD Count,
2285 [out] PUBLISHEDINFOLIST *pInfoList
2286 );
2287
2288 }
2289
2290 [
2291 object,
2292 uuid(00000192-0000-0000-C000-000000000046)
2293 ]
2294 interface IClassRefresh : IUnknown
2295 {
2296 //
2297 // GetUpgrades is called to check if the Class Store has
2298 // newer versions for any of a list of CLSIDs. The client calls this
2299 // with a list of CLSIDs that were installed from the Class Container.
2300 //
2301
2302 typedef struct tagPACKAGEINFOLIST {
2303 DWORD cPackInfo;
2304 [size_is(cPackInfo), unique] PACKAGEINFO *pPackageInfo;
2305 } PACKAGEINFOLIST;
2306
2307 HRESULT GetUpgrades (
2308 [in] ULONG cClasses,
2309 [in, size_is(cClasses)] CLSID *pClassList, // CLSIDs Installed
2310 [in] CSPLATFORM Platform,
2311 [in] LCID Locale,
2312 [out] PACKAGEINFOLIST *pPackageInfoList);
2313
2314 //
2315 // CommitUpgrades is called to notify the Class Store that
2316 // the newer versions were successfully installed and that the update sequence
2317 // can be moved forward.
2318 //
2319
2320 HRESULT CommitUpgrades ();
2321 }
2322
2323
2324 //----------------------------------------------------------------------------
2325 // The Class Store Admin Interface.
2326 //----------------------------------------------------------------------------
2327
2328 typedef struct tagCLASSDETAIL {
2329 CLSID Clsid;
2330 LPOLESTR pszDesc;
2331 LPOLESTR pszIconPath;
2332 CLSID TreatAsClsid;
2333 CLSID AutoConvertClsid;
2334 DWORD cFileExt;
2335 [size_is(cFileExt)] LPOLESTR *prgFileExt;
2336 LPOLESTR pMimeType;
2337 LPOLESTR pDefaultProgId;
2338 DWORD cOtherProgId;
2339 [size_is(cOtherProgId)] LPOLESTR *prgOtherProgId;
2340 } CLASSDETAIL;
2341
2342 //+---------------------------------------------------------------------------
2343 // Contents: Enum Interfaces for Class Store
2344 //----------------------------------------------------------------------------
2345 cpp_quote("#ifndef _LPCSADMNENUM_DEFINED")
2346 cpp_quote("#define _LPCSADMNENUM_DEFINED")
2347
2348 //
2349 // IEnumPackage
2350 // ============
2351 //
2352
2353 [
2354 object,
2355 uuid(00000193-0000-0000-C000-000000000046)
2356 ]
2357 interface IEnumPackage : IUnknown
2358 {
2359
2360 //---- Next()
2361
2362 HRESULT Next(
2363 [in] ULONG celt,
2364 [out, size_is(celt), length_is(*pceltFetched)] PACKAGEDETAIL *rgelt,
2365 [out] ULONG *pceltFetched);
2366
2367 //
2368 // celt number of elements to be fetched.
2369 // rgelt array of PackageDetail structures.
2370 // pceltFetched elements actually fetched.
2371 //
2372 // Returns:
2373 // S_OK
2374 // S_FALSE (Not enough elements to be fetched.)
2375 // E_INVALIDARG
2376 // E_FAIL
2377 // CS_E_INVALID_VERSION (Class Container is corrupted
2378 // OR is of a version that is no more supported)
2379 // E_OUTOFMEMORY
2380 //
2381 // on errors
2382 // *pceltFetched = 0
2383 //
2384
2385
2386 //---- Skip()
2387
2388 HRESULT Skip(
2389 [in] ULONG celt);
2390
2391 //
2392 // celt number of elements to be skipped.
2393 //
2394 // Returns:
2395 // S_OK
2396 // S_FALSE (Not enough elements to be skipped.)
2397 // E_FAIL
2398 // E_ACCESSDENIED
2399 // E_OUTOFMEMORY
2400
2401
2402 //---- Reset()
2403
2404 HRESULT Reset();
2405
2406 //
2407 // Returns:
2408 // S_OK
2409 //
2410
2411
2412 //---- Clone()
2413
2414 HRESULT Clone(
2415 [out] IEnumPackage **ppenum);
2416
2417 //
2418 // Returns:
2419 // S_OK
2420 // E_FAIL
2421 // E_INVALIDARG
2422 // E_ACCESSDENIED
2423 // E_OUTOFMEMORY
2424
2425
2426 }
2427
2428
2429 //
2430 // IEnumClass
2431 // ==========
2432 //
2433
2434 [
2435 object,
2436 uuid(00000194-0000-0000-C000-000000000046)
2437 ]
2438
2439 interface IEnumClass : IUnknown
2440 {
2441 //---- Next()
2442
2443 HRESULT Next(
2444 [in] ULONG celt,
2445 [out, size_is(celt), length_is(*pceltFetched)] CLASSDETAIL *rgelt,
2446 [out] ULONG *pceltFetched);
2447
2448 //
2449 // celt number of elements to be fetched.
2450 // rgelt array of CLASSDETAIL structures.
2451 // pceltFetched elements actually fetched.
2452 //
2453 // Returns:
2454 // S_OK
2455 // S_FALSE (Not enough elements to be fetched.)
2456 // E_INVALIDARG
2457 // E_FAIL
2458 // CS_E_INVALID_VERSION (Class Container is corrupted
2459 // OR is of a version that is no more supported)
2460 // E_OUTOFMEMORY
2461 //
2462 // on errors
2463 // *pceltFetched = 0
2464 //
2465
2466 //---- Skip()
2467
2468 HRESULT Skip(
2469 [in] ULONG celt);
2470
2471 //
2472 // celt number of elements to be skipped.
2473 //
2474 // Returns:
2475 // S_OK
2476 // S_FALSE (Not enough elements to be skipped.)
2477 // E_FAIL
2478 // E_ACCESSDENIED
2479 // E_OUTOFMEMORY
2480
2481 //---- Reset()
2482
2483 HRESULT Reset();
2484
2485 //
2486 // Returns:
2487 // S_OK
2488 //
2489
2490
2491 //---- Clone()
2492
2493 HRESULT Clone(
2494 [out] IEnumClass **ppenum);
2495
2496 //
2497 // Returns:
2498 // S_OK
2499 // E_FAIL
2500 // E_INVALIDARG
2501 // E_ACCESSDENIED
2502 // E_OUTOFMEMORY
2503
2504
2505
2506 }
2507 cpp_quote("#endif")
2508
2509 //
2510 // IClassAdmin
2511 // ===========
2512 //
2513
2514
2515 [
2516 object,
2517 uuid(00000191-0000-0000-C000-000000000046)
2518 ]
2519 interface IClassAdmin : IUnknown
2520 {
2521
2522 // ::NewClass
2523 // -----------
2524 // Stores a new Class Definition in the Class Store
2525 // Corresponds to HKCR/{CLSID} in registry
2526 // [In] - CLSID
2527 // Class Name
2528 // TreatAs CLSID (NULL GUID if no TreatAs)
2529 // AutoConvert CLSID (NULL GUID if no AutoConvert)
2530 // File Extension (NULL if no association)
2531 // Mime Type (NULL if no association)
2532 // Default ProgId (NULL if no association)
2533 // Other ProgIds
2534 // TypelibID
2535 // Icon Path (NULL if none).
2536 //
2537 // Returns - S_OK
2538 // E_ALREADY_EXISTS
2539 // E_INVALIDARG
2540 //
2541 HRESULT NewClass (
2542 [in] CLASSDETAIL *pClassDetail
2543 );
2544
2545 // ::DeleteClass
2546 // -----------
2547 // Removes a Class Definition from the Class Store
2548 // [In] - CLSID
2549
2550 HRESULT DeleteClass (
2551 [in] REFCLSID guidClsId
2552 );
2553
2554
2555 // ::NewInterface
2556 // --------------
2557 // Stores a new Interface Definition in the Class Store
2558 // Corresponds to HKCR/{IID} in registry
2559 // [In] - IID
2560 // Interface Name
2561 // Proxy-Stub CLSID (NULL GUID if no ProxyStub)
2562 // TypeLib GUID (NULL GUID if no TypeLib)
2563 //
2564 // Returns - S_OK
2565 // E_ALREADY_EXISTS
2566 // E_INVALID_ARG
2567 //
2568 HRESULT NewInterface (
2569 [in] REFIID iid,
2570 [in, unique] LPOLESTR pszDesc,
2571 [in] REFCLSID psclsid,
2572 [in] REFCLSID typelibid
2573 );
2574
2575 // ::DeleteInterface
2576 // -----------
2577 // Removes an Interface Definition from the Class Store
2578 // [In] - IID
2579
2580 HRESULT DeleteInterface (
2581 [in] REFIID iid
2582 );
2583
2584
2585 // ::NewPackage
2586 // ------------
2587 // Stores a new application package in the Class Store
2588 // May Correspond to HKCR/{CLSID}/LocalServer32 likes in registry
2589 //
2590 // Returns - S_OK
2591 // E_ALREADY_EXISTS
2592 // E_INVALIDARG
2593 //
2594 HRESULT NewPackage (
2595 [in] PACKAGEDETAIL *pPackageDetail
2596 );
2597
2598
2599 // ::DeletePackage
2600 // -----------
2601 // Removes a package from the Class Store
2602 // [In] - PackageName
2603
2604 HRESULT DeletePackage (
2605 [in] LPOLESTR pszPackageName
2606 );
2607
2608 // ::GetClassesEnum()
2609 //
2610 // Returns the clsid enumerator
2611 // for browsing classes defined in the class store.
2612 //
2613 // Returns:
2614 // S_OK
2615 // E_INVALIDARG
2616 // E_FAIL
2617 // E_ACCESSDENIED
2618 // E_OUTOFMEMORY
2619 //
2620 //
2621 // The value of the enumerator is NULL for all the error conditions.
2622 //
2623
2624 HRESULT GetClassesEnum(
2625 [out] IEnumClass **ppIEnumClass
2626 );
2627
2628
2629
2630 // ::GetPackagesEnum()
2631 //
2632 // Getting the Package enumerator from the classstore.
2633 //
2634 // guidClsid: All the apps that implements the clsid.
2635 // ignored if NULLGUID.
2636 // Vendor: All the apps provided by a given Vendor.
2637 // ignored if NULL.
2638 //
2639 // ppIEnumPackage: NULL if there is any error.
2640 //
2641 // Returns:
2642 // S_OK
2643 // E_INVALIDARG
2644 // E_FAIL
2645 // E_ACCESSDENIED
2646 // E_OUTOFMEMORY
2647 //
2648 // The value of the enumerator is NULL for all the error conditions.
2649 //
2650
2651 HRESULT GetPackagesEnum(
2652 [in] REFCLSID guidClsid,
2653 [in, unique] LPOLESTR pszVendor,
2654 [in] CSPLATFORM Platform,
2655 [in] DWORD dwContext,
2656 [in] LCID Locale,
2657 [out] IEnumPackage **ppIEnumPackage
2658 );
2659
2660
2661 // ::GetClassDetails()
2662 //
2663 // Get all the class details given the clsid.
2664 //
2665 // [in] guidClsID class ID (guid)
2666 // [out] CLASSDETAIL *pClassDetail
2667 //
2668 // Returns:
2669 // S_OK
2670 // E_INVALIDARG
2671 // E_FAIL
2672 // E_NOTFOUND (no such class)
2673 // E_ACCESSDENIED
2674 // E_OUTOFMEMORY
2675 //
2676 //
2677
2678
2679
2680 HRESULT GetClassDetails (
2681 [in] REFCLSID guidClsId,
2682 [out] CLASSDETAIL *pClassDetail
2683 );
2684
2685
2686 // ::GetIidDetails()
2687 //
2688 // [IN]
2689 // iid IID (guid)
2690 // [OUT]
2691 // pszDesc Description
2692 // psClsid Proxy Stub Class ID
2693 // pTypeLibId libid
2694 //
2695 // Returns:
2696 // S_OK
2697 // E_INVALIDARG
2698 // E_FAIL
2699 // E_NOTFOUND
2700 // E_ACCESSDENIED
2701 // E_OUTOFMEMORY
2702 //
2703 //
2704
2705 HRESULT GetIidDetails (
2706 [in] REFIID iid,
2707 [out] LPOLESTR *ppszDesc,
2708 [out] CLSID *psClsid,
2709 [out] CLSID *pTypeLibId
2710 );
2711
2712 // ::GetPackageDetails()
2713 //
2714 // Get all the Package details given packagename.
2715 //
2716 // [IN]
2717 // PackageName: Name of the package
2718 // [OUT]
2719 // pPackageDetail Package Detail
2720 //
2721 // Returns:
2722 // S_OK
2723 // E_INVALIDARG
2724 // E_FAIL
2725 // E_NOTFOUND (no such class)
2726 // E_ACCESSDENIED
2727 // E_OUTOFMEMORY
2728 //
2729 //
2730
2731
2732 HRESULT GetPackageDetails (
2733 [in] LPOLESTR pszPackageName,
2734 [out] PACKAGEDETAIL *pPackageDetail
2735 );
2736 }
2737
2738 cpp_quote("#if ( _MSC_VER >= 800 )")
2739 cpp_quote("#pragma warning(default:4201)")
2740 cpp_quote("#endif")
2741
2742 */
2743
2744 } // extern (Windows)