1 /**
2     Windows API header module
3 
4     Translated from MinGW Windows headers
5 
6     License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7 */
8 module nulib.system.win32.objidl;
9 import nulib.system.win32.windef;
10 import nulib.system.win32.basetyps;
11 import nulib.system.win32.oleidl;
12 import nulib.system.win32.wtypes;
13 import nulib.system.win32.winbase; // for FILETIME
14 import nulib.system.win32.rpcdce;
15 
16 
17 
18 enum STGM_DIRECT           = 0;
19 enum STGM_TRANSACTED       = 0x10000L;
20 enum STGM_SIMPLE           = 0x8000000L;
21 enum STGM_READ             = 0;
22 enum STGM_WRITE            = 1;
23 enum STGM_READWRITE        = 2;
24 enum STGM_SHARE_DENY_NONE  = 0x40;
25 enum STGM_SHARE_DENY_READ  = 0x30;
26 enum STGM_SHARE_DENY_WRITE = 0x20;
27 enum STGM_SHARE_EXCLUSIVE  = 0x10;
28 enum STGM_PRIORITY         = 0x40000L;
29 enum STGM_DELETEONRELEASE  = 0x4000000;
30 enum STGM_NOSCRATCH        = 0x100000;
31 enum STGM_CREATE           = 0x1000;
32 enum STGM_CONVERT          = 0x20000;
33 enum STGM_NOSNAPSHOT       = 0x200000;
34 enum STGM_FAILIFTHERE      = 0;
35 
36 enum ASYNC_MODE_COMPATIBILITY = 1;
37 enum ASYNC_MODE_DEFAULT       = 0;
38 
39 enum STGTY_REPEAT = 256;
40 enum STG_TOEND = 0xFFFFFFFF;
41 enum STG_LAYOUT_SEQUENTIAL  = 0;
42 enum STG_LAYOUT_INTERLEAVED = 1;
43 
44 enum COM_RIGHTS_EXECUTE            = 1;
45 enum COM_RIGHTS_SAFE_FOR_SCRIPTING = 2;
46 
47 enum STGOPTIONS_VERSION = 2;
48 
49 enum STGFMT {
50     STGFMT_STORAGE = 0,
51     STGFMT_FILE = 3,
52     STGFMT_ANY = 4,
53     STGFMT_DOCFILE = 5
54 }
55 
56 struct STGOPTIONS {
57     USHORT usVersion;
58     USHORT reserved;
59     ULONG ulSectorSize;
60     const(WCHAR)* pwcsTemplateFile;
61 }
62 
63 enum REGCLS {
64     REGCLS_SINGLEUSE = 0,
65     REGCLS_MULTIPLEUSE = 1,
66     REGCLS_MULTI_SEPARATE = 2
67 }
68 
69 struct STATSTG {
70     LPOLESTR pwcsName;
71     DWORD type;
72     ULARGE_INTEGER cbSize;
73     FILETIME mtime;
74     FILETIME ctime;
75     FILETIME atime;
76     DWORD grfMode;
77     DWORD grfLocksSupported;
78     CLSID clsid;
79     DWORD grfStateBits;
80     DWORD reserved;
81 }
82 
83 enum STGTY {
84     STGTY_STORAGE = 1,
85     STGTY_STREAM,
86     STGTY_LOCKBYTES,
87     STGTY_PROPERTY
88 }
89 
90 enum STREAM_SEEK {
91     STREAM_SEEK_SET,
92     STREAM_SEEK_CUR,
93     STREAM_SEEK_END
94 }
95 
96 struct INTERFACEINFO {
97     LPUNKNOWN pUnk;
98     IID iid;
99     WORD wMethod;
100 }
101 
102 alias LPINTERFACEINFO = INTERFACEINFO*;
103 
104 enum CALLTYPE {
105     CALLTYPE_TOPLEVEL = 1,
106     CALLTYPE_NESTED,
107     CALLTYPE_ASYNC,
108     CALLTYPE_TOPLEVEL_CALLPENDING,
109     CALLTYPE_ASYNC_CALLPENDING
110 }
111 
112 enum PENDINGTYPE {
113     PENDINGTYPE_TOPLEVEL = 1,
114     PENDINGTYPE_NESTED
115 }
116 
117 enum PENDINGMSG {
118     PENDINGMSG_CANCELCALL = 0,
119     PENDINGMSG_WAITNOPROCESS,
120     PENDINGMSG_WAITDEFPROCESS
121 }
122 
123 alias SNB = OLECHAR**;
124 
125 enum DATADIR {
126     DATADIR_GET = 1,
127     DATADIR_SET
128 }
129 
130 alias CLIPFORMAT = WORD;
131 alias LPCLIPFORMAT = CLIPFORMAT*;
132 
133 struct DVTARGETDEVICE {
134     DWORD tdSize;
135     WORD tdDriverNameOffset;
136     WORD tdDeviceNameOffset;
137     WORD tdPortNameOffset;
138     WORD tdExtDevmodeOffset;
139     BYTE[1] tdData;
140 }
141 
142 struct FORMATETC {
143     CLIPFORMAT cfFormat;
144     DVTARGETDEVICE* ptd;
145     DWORD dwAspect;
146     LONG lindex;
147     DWORD tymed;
148 }
149 
150 alias LPFORMATETC = FORMATETC*;
151 
152 struct RemSTGMEDIUM {
153     DWORD tymed;
154     DWORD dwHandleType;
155     ULONG pData;
156     uint pUnkForRelease;
157     uint cbData;
158     BYTE[1] data;
159 }
160 
161 struct HLITEM {
162     ULONG uHLID;
163     LPWSTR pwzFriendlyName;
164 }
165 
166 struct STATDATA {
167     FORMATETC formatetc;
168     DWORD grfAdvf;
169     IAdviseSink pAdvSink;
170     DWORD dwConnection;
171 }
172 
173 struct STATPROPSETSTG {
174     FMTID fmtid;
175     CLSID clsid;
176     DWORD grfFlags;
177     FILETIME mtime;
178     FILETIME ctime;
179     FILETIME atime;
180 }
181 
182 enum EXTCONN {
183     EXTCONN_STRONG = 1,
184     EXTCONN_WEAK = 2,
185     EXTCONN_CALLABLE = 4
186 }
187 
188 struct MULTI_QI {
189     const(IID)* pIID;
190     IUnknown pItf;
191     HRESULT hr;
192 }
193 
194 struct AUTH_IDENTITY {
195     USHORT* User;
196     ULONG UserLength;
197     USHORT* Domain;
198     ULONG DomainLength;
199     USHORT* Password;
200     ULONG PasswordLength;
201     ULONG Flags;
202 }
203 
204 struct COAUTHINFO {
205     DWORD dwAuthnSvc;
206     DWORD dwAuthzSvc;
207     LPWSTR pwszServerPrincName;
208     DWORD dwAuthnLevel;
209     DWORD dwImpersonationLevel;
210     AUTH_IDENTITY* pAuthIdentityData;
211     DWORD dwCapabilities;
212 }
213 
214 struct COSERVERINFO {
215     DWORD dwReserved1;
216     LPWSTR pwszName;
217     COAUTHINFO* pAuthInfo;
218     DWORD dwReserved2;
219 }
220 
221 struct BIND_OPTS {
222     DWORD cbStruct;
223     DWORD grfFlags;
224     DWORD grfMode;
225     DWORD dwTickCountDeadline;
226 }
227 
228 alias LPBIND_OPTS = BIND_OPTS*;
229 
230 struct BIND_OPTS2 {
231     DWORD cbStruct;
232     DWORD grfFlags;
233     DWORD grfMode;
234     DWORD dwTickCountDeadline;
235     DWORD dwTrackFlags;
236     DWORD dwClassContext;
237     LCID locale;
238     COSERVERINFO* pServerInfo;
239 }
240 
241 alias LPBIND_OPTS2 = BIND_OPTS2*;
242 
243 enum BIND_FLAGS {
244     BIND_MAYBOTHERUSER = 1,
245     BIND_JUSTTESTEXISTENCE
246 }
247 
248 struct STGMEDIUM {
249     DWORD tymed;
250     union {
251         HBITMAP hBitmap;
252         PVOID hMetaFilePict;
253         HENHMETAFILE hEnhMetaFile;
254         HGLOBAL hGlobal;
255         LPWSTR lpszFileName;
256         LPSTREAM pstm;
257         LPSTORAGE pstg;
258     }
259 
260     LPUNKNOWN pUnkForRelease;
261 }
262 
263 alias LPSTGMEDIUM = STGMEDIUM*;
264 
265 enum LOCKTYPE {
266     LOCK_WRITE = 1,
267     LOCK_EXCLUSIVE = 2,
268     LOCK_ONLYONCE = 4
269 }
270 
271 alias RPCOLEDATAREP = uint;
272 
273 struct RPCOLEMESSAGE {
274     PVOID reserved1;
275     RPCOLEDATAREP dataRepresentation;
276     PVOID Buffer;
277     ULONG cbBuffer;
278     ULONG iMethod;
279     PVOID[5] reserved2;
280     ULONG rpcFlags;
281 }
282 
283 alias PRPCOLEMESSAGE = RPCOLEMESSAGE*;
284 
285 enum MKSYS {
286     MKSYS_NONE,
287     MKSYS_GENERICCOMPOSITE,
288     MKSYS_FILEMONIKER,
289     MKSYS_ANTIMONIKER,
290     MKSYS_ITEMMONIKER,
291     MKSYS_POINTERMONIKER
292 }
293 
294 enum MKREDUCE {
295     MKRREDUCE_ALL,
296     MKRREDUCE_ONE = 196608,
297     MKRREDUCE_TOUSER = 131072,
298     MKRREDUCE_THROUGHUSER = 65536
299 }
300 
301 struct RemSNB {
302     uint ulCntStr;
303     uint ulCntChar;
304     OLECHAR[1] rgString = 0;
305 }
306 
307 enum ADVF {
308     ADVF_NODATA = 1,
309     ADVF_PRIMEFIRST = 2,
310     ADVF_ONLYONCE = 4,
311     ADVFCACHE_NOHANDLER = 8,
312     ADVFCACHE_FORCEBUILTIN = 16,
313     ADVFCACHE_ONSAVE = 32,
314     ADVF_DATAONSTOP = 64
315 }
316 
317 enum TYMED {
318     TYMED_HGLOBAL = 1,
319     TYMED_FILE = 2,
320     TYMED_ISTREAM = 4,
321     TYMED_ISTORAGE = 8,
322     TYMED_GDI = 16,
323     TYMED_MFPICT = 32,
324     TYMED_ENHMF = 64,
325     TYMED_NULL = 0
326 }
327 
328 enum SERVERCALL {
329     SERVERCALL_ISHANDLED,
330     SERVERCALL_REJECTED,
331     SERVERCALL_RETRYLATER
332 }
333 
334 struct CAUB {
335     ULONG cElems;
336     ubyte* pElems;
337 }
338 
339 struct CAI {
340     ULONG cElems;
341     short* pElems;
342 }
343 
344 struct CAUI {
345     ULONG cElems;
346     USHORT* pElems;
347 }
348 
349 struct CAL {
350     ULONG cElems;
351     int* pElems;
352 }
353 
354 struct CAUL {
355     ULONG cElems;
356     ULONG* pElems;
357 }
358 
359 struct CAFLT {
360     ULONG cElems;
361     float* pElems;
362 }
363 
364 struct CADBL {
365     ULONG cElems;
366     double* pElems;
367 }
368 
369 struct CACY {
370     ULONG cElems;
371     CY* pElems;
372 }
373 
374 struct CADATE {
375     ULONG cElems;
376     DATE* pElems;
377 }
378 
379 struct CABSTR {
380     ULONG cElems;
381     BSTR* pElems;
382 }
383 
384 struct CABSTRBLOB {
385     ULONG cElems;
386     BSTRBLOB* pElems;
387 }
388 
389 struct CABOOL {
390     ULONG cElems;
391     VARIANT_BOOL* pElems;
392 }
393 
394 struct CASCODE {
395     ULONG cElems;
396     SCODE* pElems;
397 }
398 
399 struct CAH {
400     ULONG cElems;
401     LARGE_INTEGER* pElems;
402 }
403 
404 struct CAUH {
405     ULONG cElems;
406     ULARGE_INTEGER* pElems;
407 }
408 
409 struct CALPSTR {
410     ULONG cElems;
411     LPSTR* pElems;
412 }
413 
414 struct CALPWSTR {
415     ULONG cElems;
416     LPWSTR* pElems;
417 }
418 
419 struct CAFILETIME {
420     ULONG cElems;
421     FILETIME* pElems;
422 }
423 
424 struct CACLIPDATA {
425     ULONG cElems;
426     CLIPDATA* pElems;
427 }
428 
429 struct CACLSID {
430     ULONG cElems;
431     CLSID* pElems;
432 }
433 
434 alias LPPROPVARIANT = PROPVARIANT*;
435 
436 struct CAPROPVARIANT {
437     ULONG cElems;
438     LPPROPVARIANT pElems;
439 }
440 
441 struct PROPVARIANT {
442     VARTYPE vt;
443     WORD wReserved1;
444     WORD wReserved2;
445     WORD wReserved3;
446     union {
447         CHAR cVal = 0;
448         UCHAR bVal;
449         short iVal;
450         USHORT uiVal;
451         VARIANT_BOOL boolVal;
452         int lVal;
453         ULONG ulVal;
454         float fltVal;
455         SCODE scode;
456         LARGE_INTEGER hVal;
457         ULARGE_INTEGER uhVal;
458         double dblVal;
459         CY cyVal;
460         DATE date;
461         FILETIME filetime;
462         CLSID* puuid;
463         BLOB blob;
464         CLIPDATA* pclipdata;
465         LPSTREAM pStream;
466         LPSTORAGE pStorage;
467         BSTR bstrVal;
468         BSTRBLOB bstrblobVal;
469         LPSTR pszVal;
470         LPWSTR pwszVal;
471         CAUB caub;
472         CAI cai;
473         CAUI caui;
474         CABOOL cabool;
475         CAL cal;
476         CAUL caul;
477         CAFLT caflt;
478         CASCODE cascode;
479         CAH cah;
480         CAUH cauh;
481         CADBL cadbl;
482         CACY cacy;
483         CADATE cadate;
484         CAFILETIME cafiletime;
485         CACLSID cauuid;
486         CACLIPDATA caclipdata;
487         CABSTR cabstr;
488         CABSTRBLOB cabstrblob;
489         CALPSTR calpstr;
490         CALPWSTR calpwstr;
491         CAPROPVARIANT capropvar;
492     }
493 }
494 
495 struct PROPSPEC {
496     ULONG ulKind;
497     union {
498         PROPID propid;
499         LPOLESTR lpwstr;
500     }
501 }
502 
503 struct STATPROPSTG {
504     LPOLESTR lpwstrName;
505     PROPID propid;
506     VARTYPE vt;
507 }
508 
509 enum PROPSETFLAG {
510     PROPSETFLAG_DEFAULT,
511     PROPSETFLAG_NONSIMPLE,
512     PROPSETFLAG_ANSI,
513     PROPSETFLAG_UNBUFFERED = 4
514 }
515 
516 struct STORAGELAYOUT {
517     DWORD LayoutType;
518     OLECHAR* pwcsElementName;
519     LARGE_INTEGER cOffset;
520     LARGE_INTEGER cBytes;
521 }
522 
523 struct SOLE_AUTHENTICATION_SERVICE {
524     DWORD dwAuthnSvc;
525     DWORD dwAuthzSvc;
526     OLECHAR* pPrincipalName;
527     HRESULT hr;
528 }
529 
530 enum OLECHAR* COLE_DEFAULT_PRINCIPAL = cast(OLECHAR*)(-1);
531 
532 enum EOLE_AUTHENTICATION_CAPABILITIES {
533     EOAC_NONE = 0,
534     EOAC_MUTUAL_AUTH = 0x1,
535     EOAC_SECURE_REFS = 0x2,
536     EOAC_ACCESS_CONTROL = 0x4,
537     EOAC_APPID = 0x8,
538     EOAC_DYNAMIC = 0x10,
539     EOAC_STATIC_CLOAKING = 0x20,
540     EOAC_DYNAMIC_CLOAKING = 0x40,
541     EOAC_ANY_AUTHORITY = 0x80,
542     EOAC_MAKE_FULLSIC = 0x100,
543     EOAC_REQUIRE_FULLSIC = 0x200,
544     EOAC_AUTO_IMPERSONATE = 0x400,
545     EOAC_DEFAULT = 0x800,
546     EOAC_DISABLE_AAA = 0x1000,
547     EOAC_NO_CUSTOM_MARSHAL = 0x2000
548 }
549 
550 struct SOLE_AUTHENTICATION_INFO {
551     DWORD dwAuthnSvc;
552     DWORD dwAuthzSvc;
553     void* pAuthInfo;
554 }
555 
556 enum void* COLE_DEFAULT_AUTHINFO = cast(void*)(-1);
557 
558 struct SOLE_AUTHENTICATION_LIST {
559     DWORD cAuthInfo;
560     SOLE_AUTHENTICATION_INFO* aAuthInfo;
561 }
562 
563 alias LPENUMFORMATETC = IEnumFORMATETC;
564 @Guid!("00000103-0000-0000-C000-000000000046")
565 interface IEnumFORMATETC : IUnknown {
566     HRESULT Next(ULONG, FORMATETC*, ULONG*);
567     HRESULT Skip(ULONG);
568     HRESULT Reset();
569     HRESULT Clone(IEnumFORMATETC*);
570 }
571 
572 alias LPENUMHLITEM = IEnumHLITEM;
573 @Guid!("79eac9c6-baf9-11ce-8c82-00aa004ba90b")
574 interface IEnumHLITEM : IUnknown {
575     HRESULT Next(ULONG, HLITEM*, ULONG*);
576     HRESULT Skip(ULONG);
577     HRESULT Reset();
578     HRESULT Clone(IEnumHLITEM*);
579 }
580 
581 alias LPENUMSTATDATA = IEnumSTATDATA;
582 @Guid!("00000105-0000-0000-C000-000000000046")
583 interface IEnumSTATDATA : IUnknown {
584     HRESULT Next(ULONG, STATDATA*, ULONG*);
585     HRESULT Skip(ULONG);
586     HRESULT Reset();
587     HRESULT Clone(IEnumSTATDATA*);
588 }
589 
590 alias LPENUMSTATSTG = IEnumSTATSTG;
591 @Guid!("0000000d-0000-0000-C000-000000000046")
592 interface IEnumSTATSTG : IUnknown {
593     HRESULT Next(ULONG, STATSTG*, ULONG*);
594     HRESULT Skip(ULONG);
595     HRESULT Reset();
596     HRESULT Clone(IEnumSTATSTG*);
597 }
598 
599 alias LPENUMSTATPROPSETSTG = IEnumSTATPROPSETSTG;
600 @Guid!("0000013B-0000-0000-C000-000000000046")
601 interface IEnumSTATPROPSETSTG : IUnknown {
602     HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*);
603     HRESULT Skip(ULONG);
604     HRESULT Reset();
605     HRESULT Clone(IEnumSTATPROPSETSTG*);
606 }
607 
608 alias LPENUMSTATPROPSTG = IEnumSTATPROPSTG;
609 @Guid!("00000139-0000-0000-C000-000000000046")
610 interface IEnumSTATPROPSTG : IUnknown {
611     HRESULT Next(ULONG, STATPROPSTG*, ULONG*);
612     HRESULT Skip(ULONG);
613     HRESULT Reset();
614     HRESULT Clone(IEnumSTATPROPSTG*);
615 }
616 
617 alias LPENUMSTRING = IEnumString;
618 @Guid!("00000101-0000-0000-C000-000000000046")
619 interface IEnumString : IUnknown {
620     HRESULT Next(ULONG, LPOLESTR*, ULONG*);
621     HRESULT Skip(ULONG);
622     HRESULT Reset();
623     HRESULT Clone(IEnumString*);
624 }
625 
626 alias LPENUMMONIKER = IEnumMoniker;
627 @Guid!("00000102-0000-0000-C000-000000000046")
628 interface IEnumMoniker : IUnknown {
629     HRESULT Next(ULONG, IMoniker*, ULONG*);
630     HRESULT Skip(ULONG);
631     HRESULT Reset();
632     HRESULT Clone(IEnumMoniker*);
633 }
634 
635 alias LPENUMUNKNOWN = IEnumUnknown;
636 @Guid!("00000100-0000-0000-C000-000000000046")
637 interface IEnumUnknown : IUnknown {
638     HRESULT Next(ULONG, IUnknown*, ULONG*);
639     HRESULT Skip(ULONG);
640     HRESULT Reset();
641     HRESULT Clone(IEnumUnknown*);
642 }
643 
644 alias LPSEQUENTIALSTREAM = ISequentialStream;
645 @Guid!("0c733a30-2a1c-11ce-ade5-00aa0044773d")
646 interface ISequentialStream : IUnknown {
647     HRESULT Read(void*, ULONG, ULONG*);
648     HRESULT Write(void*, ULONG, ULONG*);
649 }
650 
651 alias LPSTREAM = IStream;
652 @Guid!("0000000c-0000-0000-C000-000000000046")
653 interface IStream : ISequentialStream {
654     HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*);
655     HRESULT SetSize(ULARGE_INTEGER);
656     HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*);
657     HRESULT Commit(DWORD);
658     HRESULT Revert();
659     HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
660     HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
661     HRESULT Stat(STATSTG*, DWORD);
662     HRESULT Clone(LPSTREAM*);
663 }
664 
665 alias LPMARSHAL = IMarshal;
666 @Guid!("00000003-0000-0000-C000-000000000046")
667 interface IMarshal : IUnknown {
668     HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*);
669     HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, DWORD, ULONG*);
670     HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD);
671     HRESULT UnmarshalInterface(IStream, REFIID, void**);
672     HRESULT ReleaseMarshalData(IStream);
673     HRESULT DisconnectObject(DWORD);
674 }
675 
676 alias LPSTDMARSHALINFO = IStdMarshalInfo;
677 @Guid!("00000018-0000-0000-C000-000000000046")
678 interface IStdMarshalInfo : IUnknown {
679     HRESULT GetClassForHandler(DWORD, PVOID, CLSID*);
680 }
681 
682 alias LPMALLOC = IMalloc;
683 @Guid!("00000002-0000-0000-C000-000000000046")
684 interface IMalloc : IUnknown {
685     void* Alloc(SIZE_T);
686     void* Realloc(void*, SIZE_T);
687     void Free(void*);
688     SIZE_T GetSize(void*);
689     int DidAlloc(void*);
690     void HeapMinimize();
691 }
692 
693 alias LPMALLOCSPY = IMallocSpy;
694 @Guid!("0000001d-0000-0000-C000-000000000046")
695 interface IMallocSpy : IUnknown {
696     SIZE_T PreAlloc(SIZE_T);
697     void* PostAlloc(void*);
698     void* PreFree(void*, BOOL);
699     void PostFree(BOOL);
700     SIZE_T PreRealloc(void*, SIZE_T, void**, BOOL);
701     void* PostRealloc(void*, BOOL);
702     void* PreGetSize(void*, BOOL);
703     SIZE_T PostGetSize(SIZE_T, BOOL);
704     void* PreDidAlloc(void*, BOOL);
705     int PostDidAlloc(void*, BOOL, int);
706     void PreHeapMinimize();
707     void PostHeapMinimize();
708 }
709 
710 alias LPMESSAGEFILTER = IMessageFilter;
711 @Guid!("00000016-0000-0000-C000-000000000046")
712 interface IMessageFilter : IUnknown {
713     DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO);
714     DWORD RetryRejectedCall(HTASK, DWORD, DWORD);
715     DWORD MessagePending(HTASK, DWORD, DWORD);
716 }
717 
718 alias LPPERSIST = IPersist;
719 @Guid!("0000010c-0000-0000-C000-000000000046")
720 interface IPersist : IUnknown {
721     HRESULT GetClassID(CLSID*);
722 }
723 
724 alias LPPERSISTSTREAM = IPersistStream;
725 @Guid!("00000109-0000-0000-C000-000000000046")
726 interface IPersistStream : IPersist {
727     HRESULT IsDirty();
728     HRESULT Load(IStream);
729     HRESULT Save(IStream, BOOL);
730     HRESULT GetSizeMax(PULARGE_INTEGER);
731 }
732 
733 alias LPRUNNINGOBJECTTABLE = IRunningObjectTable;
734 @Guid!("00000010-0000-0000-C000-000000000046")
735 interface IRunningObjectTable : IUnknown {
736     HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD);
737     HRESULT Revoke(DWORD);
738     HRESULT IsRunning(LPMONIKER);
739     HRESULT GetObject(LPMONIKER, LPUNKNOWN*);
740     HRESULT NoteChangeTime(DWORD, LPFILETIME);
741     HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME);
742     HRESULT EnumRunning(IEnumMoniker*);
743 }
744 
745 alias LPBINDCTX = IBindCtx;
746 @Guid!("0000000e-0000-0000-C000-000000000046")
747 interface IBindCtx : IUnknown {
748     HRESULT RegisterObjectBound(LPUNKNOWN);
749     HRESULT RevokeObjectBound(LPUNKNOWN);
750     HRESULT ReleaseBoundObjects();
751     HRESULT SetBindOptions(LPBIND_OPTS);
752     HRESULT GetBindOptions(LPBIND_OPTS);
753     HRESULT GetRunningObjectTable(IRunningObjectTable*);
754     HRESULT RegisterObjectParam(LPOLESTR, IUnknown);
755     HRESULT GetObjectParam(LPOLESTR, IUnknown*);
756     HRESULT EnumObjectParam(IEnumString*);
757     HRESULT RevokeObjectParam(LPOLESTR);
758 }
759 
760 alias LPMONIKER = IMoniker;
761 @Guid!("0000000f-0000-0000-C000-000000000046")
762 interface IMoniker : IPersistStream {
763     HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*);
764     HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*);
765     HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*);
766     HRESULT ComposeWith(IMoniker, BOOL, IMoniker*);
767     HRESULT Enum(BOOL, IEnumMoniker*);
768     HRESULT IsEqual(IMoniker);
769     HRESULT Hash(PDWORD);
770     HRESULT IsRunning(IBindCtx, IMoniker, IMoniker);
771     HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME);
772     HRESULT Inverse(IMoniker*);
773     HRESULT CommonPrefixWith(IMoniker, IMoniker*);
774     HRESULT RelativePathTo(IMoniker, IMoniker*);
775     HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*);
776     HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*);
777     HRESULT IsSystemMoniker(PDWORD);
778 }
779 
780 alias LPPERSISTSTORAGE = IPersistStorage;
781 @Guid!("0000010a-0000-0000-C000-000000000046")
782 interface IPersistStorage : IPersist {
783     HRESULT IsDirty();
784     HRESULT InitNew(LPSTORAGE);
785     HRESULT Load(LPSTORAGE);
786     HRESULT Save(LPSTORAGE, BOOL);
787     HRESULT SaveCompleted(LPSTORAGE);
788     HRESULT HandsOffStorage();
789 }
790 
791 alias LPPERSISTFILE = IPersistFile;
792 @Guid!("0000010b-0000-0000-C000-000000000046")
793 interface IPersistFile : IPersist {
794     HRESULT IsDirty();
795     HRESULT Load(LPCOLESTR, DWORD);
796     HRESULT Save(LPCOLESTR, BOOL);
797     HRESULT SaveCompleted(LPCOLESTR);
798     HRESULT GetCurFile(LPOLESTR*);
799 }
800 
801 // Async UUID: 00000150-0000-0000-C000-000000000046
802 alias LPADVISESINK = IAdviseSink;
803 @Guid!("0000010f-0000-0000-C000-000000000046")
804 interface IAdviseSink : IUnknown {
805     HRESULT QueryInterface(REFIID, PVOID*);
806     ULONG AddRef();
807     ULONG Release();
808     void OnDataChange(FORMATETC*, STGMEDIUM*);
809     void OnViewChange(DWORD, LONG);
810     void OnRename(IMoniker);
811     void OnSave();
812     void OnClose();
813 }
814 
815 // Async UUID: 00000150-0000-0000-C000-000000000046
816 alias LPADVISESINK2 = IAdviseSink2;
817 @Guid!("00000151-0000-0000-C000-000000000046")
818 interface IAdviseSink2 : IAdviseSink {
819     void OnLinkSrcChange(IMoniker);
820 }
821 
822 alias LPDATAOBJECT = IDataObject;
823 @Guid!("0000010e-0000-0000-C000-000000000046")
824 interface IDataObject : IUnknown {
825     HRESULT GetData(FORMATETC*, STGMEDIUM*);
826     HRESULT GetDataHere(FORMATETC*, STGMEDIUM*);
827     HRESULT QueryGetData(FORMATETC*);
828     HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*);
829     HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL);
830     HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*);
831     HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD);
832     HRESULT DUnadvise(DWORD);
833     HRESULT EnumDAdvise(IEnumSTATDATA*);
834 }
835 
836 alias LPDATAADVISEHOLDER = IDataAdviseHolder;
837 @Guid!("00000110-0000-0000-C000-000000000046")
838 interface IDataAdviseHolder : IUnknown {
839     HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD);
840     HRESULT Unadvise(DWORD);
841     HRESULT EnumAdvise(IEnumSTATDATA*);
842     HRESULT SendOnDataChange(IDataObject, DWORD, DWORD);
843 }
844 
845 alias LPSTORAGE = IStorage;
846 @Guid!("0000000b-0000-0000-C000-000000000046")
847 interface IStorage : IUnknown {
848     HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream);
849     HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream);
850     HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage);
851     HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage);
852     HRESULT CopyTo(DWORD, IID*, SNB, IStorage);
853     HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD);
854     HRESULT Commit(DWORD);
855     HRESULT Revert();
856     HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG);
857     HRESULT DestroyElement(LPCWSTR);
858     HRESULT RenameElement(LPCWSTR, LPCWSTR);
859     HRESULT SetElementTimes(LPCWSTR, FILETIME*, FILETIME*, FILETIME*);
860     HRESULT SetClass(REFCLSID);
861     HRESULT SetStateBits(DWORD, DWORD);
862     HRESULT Stat(STATSTG*, DWORD);
863 }
864 
865 // FIXME: GetClassID from IPersist not there - what to do about it?
866 alias LPROOTSTORAGE = IRootStorage;
867 @Guid!("00000012-0000-0000-C000-000000000046")
868 interface IRootStorage : IPersist {
869     HRESULT QueryInterface(REFIID, PVOID*);
870     ULONG AddRef();
871     ULONG Release();
872     HRESULT SwitchToFile(LPOLESTR);
873 }
874 
875 alias LPRPCCHANNELBUFFER = IRpcChannelBuffer;
876 @Guid!("D5F56B60-593B-101A-B569-08002B2DBF7A")
877 interface IRpcChannelBuffer : IUnknown {
878     HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID);
879     HRESULT SendReceive(RPCOLEMESSAGE*, PULONG);
880     HRESULT FreeBuffer(RPCOLEMESSAGE*);
881     HRESULT GetDestCtx(PDWORD, PVOID*);
882     HRESULT IsConnected();
883 }
884 
885 alias LPRPCPROXYBUFFER = IRpcProxyBuffer;
886 @Guid!("D5F56A34-593B-101A-B569-08002B2DBF7A")
887 interface IRpcProxyBuffer : IUnknown {
888     HRESULT Connect(IRpcChannelBuffer);
889     void Disconnect();
890 }
891 
892 alias LPRPCSTUBBUFFER = IRpcStubBuffer;
893 @Guid!("D5F56AFC-593B-101A-B569-08002B2DBF7A")
894 interface IRpcStubBuffer : IUnknown {
895     HRESULT Connect(LPUNKNOWN);
896     void Disconnect();
897     HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER);
898     LPRPCSTUBBUFFER IsIIDSupported(REFIID);
899     ULONG CountRefs();
900     HRESULT DebugServerQueryInterface(PVOID*);
901     HRESULT DebugServerRelease(PVOID);
902 }
903 
904 alias LPPSFACTORYBUFFER = IPSFactoryBuffer;
905 @Guid!("D5F569D0-593B-101A-B569-08002B2DBF7A")
906 interface IPSFactoryBuffer : IUnknown {
907     HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*);
908     HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*);
909 }
910 
911 alias LPLOCKBYTES = ILockBytes;
912 @Guid!("0000000a-0000-0000-C000-000000000046")
913 interface ILockBytes : IUnknown {
914     HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*);
915     HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*);
916     HRESULT Flush();
917     HRESULT SetSize(ULARGE_INTEGER);
918     HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
919     HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
920     HRESULT Stat(STATSTG*, DWORD);
921 }
922 
923 alias LPEXTERNALCONNECTION = IExternalConnection;
924 @Guid!("00000019-0000-0000-C000-000000000046")
925 interface IExternalConnection : IUnknown {
926     HRESULT AddConnection(DWORD, DWORD);
927     HRESULT ReleaseConnection(DWORD, DWORD, BOOL);
928 }
929 
930 alias LPRUNNABLEOBJECT = IRunnableObject;
931 @Guid!("00000126-0000-0000-C000-000000000046")
932 interface IRunnableObject : IUnknown {
933     HRESULT GetRunningClass(LPCLSID);
934     HRESULT Run(LPBINDCTX);
935     BOOL IsRunning();
936     HRESULT LockRunning(BOOL, BOOL);
937     HRESULT SetContainedObject(BOOL);
938 }
939 
940 alias LPROTDATA = IROTData;
941 @Guid!("f29f6bc0-5021-11ce-aa15-00006901293f")
942 interface IROTData : IUnknown {
943     HRESULT GetComparisonData(PVOID, ULONG, PULONG);
944 }
945 
946 alias LPCHANNELHOOK = IChannelHook;
947 @Guid!("1008c4a0-7613-11cf-9af1-0020af6e72f4")
948 interface IChannelHook : IUnknown {
949     void ClientGetSize(REFGUID, REFIID, PULONG);
950     void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID);
951     void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT);
952     void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD);
953     void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG);
954     void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT);
955 }
956 
957 alias LPPROPERTYSTORAGE = IPropertyStorage;
958 @Guid!("00000138-0000-0000-C000-000000000046")
959 interface IPropertyStorage : IUnknown {
960     HRESULT ReadMultiple(ULONG, PROPSPEC*, PROPVARIANT*);
961     HRESULT WriteMultiple(ULONG, PROPSPEC*, PROPVARIANT*, PROPID);
962     HRESULT DeleteMultiple(ULONG, PROPSPEC*);
963     HRESULT ReadPropertyNames(ULONG, PROPID*, LPWSTR*);
964     HRESULT WritePropertyNames(ULONG, PROPID*, LPWSTR*);
965     HRESULT DeletePropertyNames(ULONG, PROPID*);
966     HRESULT SetClass(REFCLSID);
967     HRESULT Commit(DWORD);
968     HRESULT Revert();
969     HRESULT Enum(IEnumSTATPROPSTG*);
970     HRESULT Stat(STATPROPSTG*);
971     HRESULT SetTimes(FILETIME*, FILETIME*, FILETIME*);
972 }
973 
974 alias LPPROPERTYSETSTORAGE = IPropertySetStorage;
975 @Guid!("0000013A-0000-0000-C000-000000000046")
976 interface IPropertySetStorage : IUnknown {
977     HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*);
978     HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*);
979     HRESULT Delete(REFFMTID);
980     HRESULT Enum(IEnumSTATPROPSETSTG*);
981 }
982 
983 alias LPCLIENTSECURITY = IClientSecurity;
984 @Guid!("0000013D-0000-0000-C000-000000000046")
985 interface IClientSecurity : IUnknown {
986     HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*);
987     HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD);
988     HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*);
989 }
990 
991 alias LPSERVERSECURITY = IServerSecurity;
992 @Guid!("0000013E-0000-0000-C000-000000000046")
993 interface IServerSecurity : IUnknown {
994     HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*);
995     HRESULT ImpersonateClient();
996     HRESULT RevertToSelf();
997     HRESULT IsImpersonating();
998 }
999 
1000 alias LPCLASSACTIVATOR = IClassActivator;
1001 @Guid!("00000140-0000-0000-C000-000000000046")
1002 interface IClassActivator : IUnknown {
1003     HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*);
1004 }
1005 
1006 alias LPFILLLOCKBYTES = IFillLockBytes;
1007 @Guid!("99caf010-415e-11cf-8814-00aa00b569f5")
1008 interface IFillLockBytes : IUnknown {
1009     HRESULT FillAppend(void*, ULONG, PULONG);
1010     HRESULT FillAt(ULARGE_INTEGER, void*, ULONG, PULONG);
1011     HRESULT SetFillSize(ULARGE_INTEGER);
1012     HRESULT Terminate(BOOL);
1013 }
1014 
1015 alias LPPROGRESSNOTIFY = IProgressNotify;
1016 @Guid!("a9d758a0-4617-11cf-95fc-00aa00680db4")
1017 interface IProgressNotify : IUnknown {
1018     HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL);
1019 }
1020 
1021 alias LPLAYOUTSTORAGE = ILayoutStorage;
1022 @Guid!("0e6d4d90-6738-11cf-9608-00aa00680db4")
1023 interface ILayoutStorage : IUnknown {
1024     HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD);
1025     HRESULT BeginMonitor();
1026     HRESULT EndMonitor();
1027     HRESULT ReLayoutDocfile(OLECHAR*);
1028 }
1029 
1030 alias LPGLOBALINTERFACETABLE = IGlobalInterfaceTable;
1031 @Guid!("00000146-0000-0000-C000-000000000046")
1032 interface IGlobalInterfaceTable : IUnknown {
1033     HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*);
1034     HRESULT RevokeInterfaceFromGlobal(DWORD);
1035     HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**);
1036 }
1037 
1038 extern(Windows) @nogc nothrow:
1039 
1040 HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*);
1041 HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD);
1042 HRESULT CoRevokeClassObject(DWORD);
1043 HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD);
1044 HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD);
1045 HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*);
1046 HRESULT CoMarshalHresult(LPSTREAM, HRESULT);
1047 HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*);
1048 HRESULT CoReleaseMarshalData(LPSTREAM);
1049 HRESULT CoDisconnectObject(LPUNKNOWN, DWORD);
1050 HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL);
1051 HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*);
1052 HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*);
1053 BOOL CoIsHandlerConnected(LPUNKNOWN);
1054 BOOL CoHasStrongExternalConnections(LPUNKNOWN);
1055 HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*);
1056 HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*);
1057 HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*);
1058 HINSTANCE CoLoadLibrary(LPOLESTR, BOOL);
1059 void CoFreeLibrary(HINSTANCE);
1060 void CoFreeAllLibraries();
1061 void CoFreeUnusedLibraries();
1062 HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*);
1063 HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
1064 HRESULT StringFromCLSID(REFCLSID, LPOLESTR*);
1065 HRESULT CLSIDFromString(LPOLESTR, LPCLSID);
1066 HRESULT StringFromIID(REFIID, LPOLESTR*);
1067 HRESULT IIDFromString(LPOLESTR, LPIID);
1068 BOOL CoIsOle1Class(REFCLSID);
1069 HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*);
1070 HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID);
1071 int StringFromGUID2(REFGUID, LPOLESTR, int);
1072 HRESULT CoCreateGuid(GUID*);
1073 BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD);
1074 BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*);
1075 HRESULT CoFileTimeNow(FILETIME*);
1076 HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*);
1077 HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID);
1078 HRESULT CoTreatAsClass(REFCLSID, REFCLSID);
1079 HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*);
1080 HRESULT DllCanUnloadNow();
1081 PVOID CoTaskMemAlloc(SIZE_T);
1082 PVOID CoTaskMemRealloc(PVOID, SIZE_T);
1083 void CoTaskMemFree(PVOID);
1084 HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
1085 HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*);
1086 HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*);
1087 HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*);
1088 HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*);
1089 HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*);
1090 HRESULT StgIsStorageFile(const(OLECHAR)*);
1091 HRESULT StgIsStorageILockBytes(ILockBytes);
1092 HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *);
1093 HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**);
1094 HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**);
1095 HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*);
1096 HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**);
1097 HRESULT MkParseDisplayName(LPBINDCTX, LPCOLESTR, ULONG*, LPMONIKER*);
1098 HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL);
1099 HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*);
1100 HRESULT CreateBindCtx(DWORD, LPBINDCTX*);
1101 HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*);
1102 HRESULT GetClassFile (LPCOLESTR, CLSID*);
1103 HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*);
1104 HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*);
1105 HRESULT CreateAntiMoniker(LPMONIKER*);
1106 HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*);
1107 HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*);
1108 HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*);
1109 HRESULT CoGetCallContext(REFIID, void**);
1110 HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*);
1111 HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD);
1112 HRESULT CoCopyProxy(IUnknown*, IUnknown**);
1113 HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*);
1114 HRESULT CoImpersonateClient();
1115 HRESULT CoRevertToSelf();
1116 HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**);
1117 HRESULT CoSwitchCallContext(IUnknown*, IUnknown**);
1118 HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*);
1119 HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*);
1120 ULONG CoAddRefServerProcess();
1121 ULONG CoReleaseServerProcess();
1122 HRESULT CoResumeClassObjects();
1123 HRESULT CoSuspendClassObjects();
1124 HRESULT CoGetPSClsid(REFIID, CLSID*);
1125 HRESULT CoRegisterPSClsid(REFIID, REFCLSID);