ReactOS 0.4.16-dev-2610-ge2c92c0
objbase.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1998-1999 Francois Gouget
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#include <rpc.h>
20#include <rpcndr.h>
21
22#ifndef _OBJBASE_H_
23#define _OBJBASE_H_
24
25/*****************************************************************************
26 * Macros to define a COM interface
27 */
28/*
29 * The goal of the following set of definitions is to provide a way to use the same
30 * header file definitions to provide both a C interface and a C++ object oriented
31 * interface to COM interfaces. The type of interface is selected automatically
32 * depending on the language but it is always possible to get the C interface in C++
33 * by defining CINTERFACE.
34 *
35 * It is based on the following assumptions:
36 * - all COM interfaces derive from IUnknown, this should not be a problem.
37 * - the header file only defines the interface, the actual fields are defined
38 * separately in the C file implementing the interface.
39 *
40 * The natural approach to this problem would be to make sure we get a C++ class and
41 * virtual methods in C++ and a structure with a table of pointer to functions in C.
42 * Unfortunately the layout of the virtual table is compiler specific, the layout of
43 * g++ virtual tables is not the same as that of an egcs virtual table which is not the
44 * same as that generated by Visual C++. There are workarounds to make the virtual tables
45 * compatible via padding but unfortunately the one which is imposed to the WINE emulator
46 * by the Windows binaries, i.e. the Visual C++ one, is the most compact of all.
47 *
48 * So the solution I finally adopted does not use virtual tables. Instead I use inline
49 * non virtual methods that dereference the method pointer themselves and perform the call.
50 *
51 * Let's take Direct3D as an example:
52 *
53 * #define INTERFACE IDirect3D
54 * DECLARE_INTERFACE_(IDirect3D,IUnknown)
55 * {
56 * // *** IUnknown methods *** //
57 * STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID, void**) PURE;
58 * STDMETHOD_(ULONG,AddRef)(THIS) PURE;
59 * STDMETHOD_(ULONG,Release)(THIS) PURE;
60 * // *** IDirect3D methods *** //
61 * STDMETHOD(Initialize)(THIS_ REFIID) PURE;
62 * STDMETHOD(EnumDevices)(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID) PURE;
63 * STDMETHOD(CreateLight)(THIS_ LPDIRECT3DLIGHT *, IUnknown *) PURE;
64 * STDMETHOD(CreateMaterial)(THIS_ LPDIRECT3DMATERIAL *, IUnknown *) PURE;
65 * STDMETHOD(CreateViewport)(THIS_ LPDIRECT3DVIEWPORT *, IUnknown *) PURE;
66 * STDMETHOD(FindDevice)(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT) PURE;
67 * };
68 * #undef INTERFACE
69 *
70 * #ifdef COBJMACROS
71 * // *** IUnknown methods *** //
72 * #define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
73 * #define IDirect3D_AddRef(p) (p)->lpVtbl->AddRef(p)
74 * #define IDirect3D_Release(p) (p)->lpVtbl->Release(p)
75 * // *** IDirect3D methods *** //
76 * #define IDirect3D_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
77 * #define IDirect3D_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevice(p,a,b)
78 * #define IDirect3D_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b)
79 * #define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
80 * #define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
81 * #define IDirect3D_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b)
82 * #endif
83 *
84 * Comments:
85 * - The INTERFACE macro is used in the STDMETHOD macros to define the type of the 'this'
86 * pointer. Defining this macro here saves us the trouble of having to repeat the interface
87 * name everywhere. Note however that because of the way macros work, a macro like STDMETHOD
88 * cannot use 'INTERFACE##_VTABLE' because this would give 'INTERFACE_VTABLE' and not
89 * 'IDirect3D_VTABLE'.
90 * - The DECLARE_INTERFACE declares all the structures necessary for the interface. We have to
91 * explicitly use the interface name for macro expansion reasons again. It defines the list of
92 * methods that are inheritable from this interface. It must be written manually (rather than
93 * using a macro to generate the equivalent code) to avoid macro recursion (which compilers
94 * don't like). It must start with the methods definition of the parent interface so that
95 * method inheritance works properly.
96 * - The 'undef INTERFACE' is here to remind you that using INTERFACE in the following macros
97 * will not work.
98 * - Finally the set of 'IDirect3D_Xxx' macros is a standard set of macros defined to ease access
99 * to the interface methods in C. Unfortunately I don't see any way to avoid having to duplicate
100 * the inherited method definitions there. This time I could have used a trick to use only one
101 * macro whatever the number of parameters but I preferred to have it work the same way as above.
102 * - You probably have noticed that we don't define the fields we need to actually implement this
103 * interface: reference count, pointer to other resources and miscellaneous fields. That's
104 * because these interfaces are just that: interfaces. They may be implemented more than once, in
105 * different contexts and sometimes not even in Wine. Thus it would not make sense to impose
106 * that the interface contains some specific fields.
107 *
108 *
109 * In C this gives:
110 * typedef struct IDirect3DVtbl IDirect3DVtbl;
111 * struct IDirect3D {
112 * IDirect3DVtbl* lpVtbl;
113 * };
114 * struct IDirect3DVtbl {
115 * HRESULT (*QueryInterface)(IDirect3D* me, REFIID riid, LPVOID* ppvObj);
116 * ULONG (*AddRef)(IDirect3D* me);
117 * ULONG (*Release)(IDirect3D* me);
118 * HRESULT (*Initialize)(IDirect3D* me, REFIID a);
119 * HRESULT (*EnumDevices)(IDirect3D* me, LPD3DENUMDEVICESCALLBACK a, LPVOID b);
120 * HRESULT (*CreateLight)(IDirect3D* me, LPDIRECT3DLIGHT* a, IUnknown* b);
121 * HRESULT (*CreateMaterial)(IDirect3D* me, LPDIRECT3DMATERIAL* a, IUnknown* b);
122 * HRESULT (*CreateViewport)(IDirect3D* me, LPDIRECT3DVIEWPORT* a, IUnknown* b);
123 * HRESULT (*FindDevice)(IDirect3D* me, LPD3DFINDDEVICESEARCH a, LPD3DFINDDEVICERESULT b);
124 * };
125 *
126 * #ifdef COBJMACROS
127 * // *** IUnknown methods *** //
128 * #define IDirect3D_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
129 * #define IDirect3D_AddRef(p) (p)->lpVtbl->AddRef(p)
130 * #define IDirect3D_Release(p) (p)->lpVtbl->Release(p)
131 * // *** IDirect3D methods *** //
132 * #define IDirect3D_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
133 * #define IDirect3D_EnumDevices(p,a,b) (p)->lpVtbl->EnumDevice(p,a,b)
134 * #define IDirect3D_CreateLight(p,a,b) (p)->lpVtbl->CreateLight(p,a,b)
135 * #define IDirect3D_CreateMaterial(p,a,b) (p)->lpVtbl->CreateMaterial(p,a,b)
136 * #define IDirect3D_CreateViewport(p,a,b) (p)->lpVtbl->CreateViewport(p,a,b)
137 * #define IDirect3D_FindDevice(p,a,b) (p)->lpVtbl->FindDevice(p,a,b)
138 * #endif
139 *
140 * Comments:
141 * - IDirect3D only contains a pointer to the IDirect3D virtual/jump table. This is the only thing
142 * the user needs to know to use the interface. Of course the structure we will define to
143 * implement this interface will have more fields but the first one will match this pointer.
144 * - The code generated by DECLARE_INTERFACE defines both the structure representing the interface and
145 * the structure for the jump table.
146 * - Each method is declared as a pointer to function field in the jump table. The implementation
147 * will fill this jump table with appropriate values, probably using a static variable, and
148 * initialize the lpVtbl field to point to this variable.
149 * - The IDirect3D_Xxx macros then just derefence the lpVtbl pointer and use the function pointer
150 * corresponding to the macro name. This emulates the behavior of a virtual table and should be
151 * just as fast.
152 * - This C code should be quite compatible with the Windows headers both for code that uses COM
153 * interfaces and for code implementing a COM interface.
154 *
155 *
156 * And in C++ (with gcc's g++):
157 *
158 * typedef struct IDirect3D: public IUnknown {
159 * virtual HRESULT Initialize(REFIID a) = 0;
160 * virtual HRESULT EnumDevices(LPD3DENUMDEVICESCALLBACK a, LPVOID b) = 0;
161 * virtual HRESULT CreateLight(LPDIRECT3DLIGHT* a, IUnknown* b) = 0;
162 * virtual HRESULT CreateMaterial(LPDIRECT3DMATERIAL* a, IUnknown* b) = 0;
163 * virtual HRESULT CreateViewport(LPDIRECT3DVIEWPORT* a, IUnknown* b) = 0;
164 * virtual HRESULT FindDevice(LPD3DFINDDEVICESEARCH a, LPD3DFINDDEVICERESULT b) = 0;
165 * };
166 *
167 * Comments:
168 * - Of course in C++ we use inheritance so that we don't have to duplicate the method definitions.
169 * - Finally there is no IDirect3D_Xxx macro. These are not needed in C++ unless the CINTERFACE
170 * macro is defined in which case we would not be here.
171 */
172
173#if defined(__cplusplus) && !defined(CINTERFACE)
174
175/* C++ interface */
176
177#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
178#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
179#define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method
180#define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method
181
182#define PURE = 0
183#define THIS_
184#define THIS void
185
186#define interface struct
187#define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface
188#define DECLARE_INTERFACE_(iface,ibase) interface DECLSPEC_NOVTABLE iface : public ibase
189#define DECLARE_INTERFACE_IID_(iface, ibase, iid) interface DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE iface : public ibase
190
191#define BEGIN_INTERFACE
192#define END_INTERFACE
193
194#else /* __cplusplus && !CINTERFACE */
195
196/* C interface */
197
198#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method)
199#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE *method)
200#define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method)
201#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method)
202
203#define PURE
204#define THIS_ INTERFACE *This,
205#define THIS INTERFACE *This
206
207#define interface struct
208
209#ifdef __WINESRC__
210#define CONST_VTABLE
211#endif
212
213#ifdef CONST_VTABLE
214#undef CONST_VTBL
215#define CONST_VTBL const
216#define DECLARE_INTERFACE(iface) \
217 typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; \
218 typedef struct iface##Vtbl iface##Vtbl; \
219 struct iface##Vtbl
220#else
221#undef CONST_VTBL
222#define CONST_VTBL
223#define DECLARE_INTERFACE(iface) \
224 typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; \
225 typedef struct iface##Vtbl iface##Vtbl; \
226 struct iface##Vtbl
227#endif
228#define DECLARE_INTERFACE_(iface,ibase) DECLARE_INTERFACE(iface)
229#define DECLARE_INTERFACE_IID_(iface, ibase, iid) DECLARE_INTERFACE_(iface, ibase)
230
231#define BEGIN_INTERFACE
232#define END_INTERFACE
233
234#endif /* __cplusplus && !CINTERFACE */
235
236#ifndef __IRpcStubBuffer_FWD_DEFINED__
237#define __IRpcStubBuffer_FWD_DEFINED__
239#endif
240#ifndef __IRpcChannelBuffer_FWD_DEFINED__
241#define __IRpcChannelBuffer_FWD_DEFINED__
243#endif
244
245#ifndef RC_INVOKED
246/* For compatibility only, at least for now */
247#include <stdlib.h>
248#endif
249
250#include <combaseapi.h>
251#include <wtypes.h>
252#include <unknwn.h>
253#include <objidl.h>
254
255#include <guiddef.h>
256#ifndef INITGUID
257#include <cguid.h>
258#endif
259
260#ifdef __cplusplus
261extern "C" {
262#endif
263
264#ifndef NONAMELESSSTRUCT
265#define LISet32(li, v) ((li).HighPart = (v) < 0 ? -1 : 0, (li).LowPart = (v))
266#define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v))
267#else
268#define LISet32(li, v) ((li).u.HighPart = (v) < 0 ? -1 : 0, (li).u.LowPart = (v))
269#define ULISet32(li, v) ((li).u.HighPart = 0, (li).u.LowPart = (v))
270#endif
271
272/*****************************************************************************
273 * Standard API
274 */
276
277typedef enum tagCOINIT
278{
279 COINIT_APARTMENTTHREADED = 0x2, /* Apartment model */
280 COINIT_MULTITHREADED = 0x0, /* OLE calls objects on any thread */
281 COINIT_DISABLE_OLE1DDE = 0x4, /* Don't use DDE for Ole1 support */
282 COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */
284
285DECLARE_HANDLE(CO_MTA_USAGE_COOKIE);
286
288
291WINAPI
294 _In_ DWORD dwCoInit);
295
296void WINAPI CoUninitialize(void);
302
304void WINAPI CoFreeAllLibraries(void);
307
308void
309WINAPI
311 _In_ DWORD dwUnloadDelay,
313
316WINAPI
318 _In_ REFCLSID rclsid,
319 _In_opt_ LPUNKNOWN pUnkOuter,
320 _In_ DWORD dwClsContext,
321 _In_ REFIID iid,
322 _Outptr_ _At_(*ppv, _Post_readable_size_(_Inexpressible_(varies))) LPVOID *ppv);
323
326WINAPI
328 _In_ REFCLSID rclsid,
329 _In_opt_ LPUNKNOWN pUnkOuter,
330 _In_ DWORD dwClsContext,
331 _In_opt_ COSERVERINFO *pServerInfo,
332 _In_ ULONG cmq,
333 _Inout_updates_(cmq) MULTI_QI *pResults);
334
337WINAPI
339 _In_opt_ COSERVERINFO *pServerInfo,
340 _In_opt_ CLSID *pClsid,
341 _In_opt_ IUnknown *punkOuter,
342 _In_ DWORD dwClsCtx,
343 _In_ DWORD grfMode,
345 _In_ DWORD dwCount,
346 _Inout_updates_(dwCount) MULTI_QI *pResults);
347
350WINAPI
352 _In_opt_ COSERVERINFO *pServerInfo,
353 _In_opt_ CLSID *pClsid,
354 _In_opt_ IUnknown *punkOuter,
355 _In_ DWORD dwClsCtx,
356 _In_ IStorage *pstg,
357 _In_ DWORD dwCount,
358 _Inout_updates_(dwCount) MULTI_QI *pResults);
359
362WINAPI
364 _In_ DWORD dwMemContext,
365 _Outptr_ LPMALLOC *lpMalloc);
366
371LPVOID
372WINAPI
374
375void
376WINAPI
379
383LPVOID
384WINAPI
388
391
393
394/* class registration flags; passed to CoRegisterClassObject */
395typedef enum tagREGCLS
396{
403
406WINAPI
408 _In_ REFCLSID rclsid,
409 _In_ DWORD dwClsContext,
410 _In_opt_ COSERVERINFO *pServerInfo,
411 _In_ REFIID iid,
413
416WINAPI
418 _In_ REFCLSID rclsid,
420 _In_ DWORD dwClsContext,
422 _Out_ LPDWORD lpdwRegister);
423
426WINAPI
428 _In_ DWORD dwRegister);
429
432WINAPI
435 _Out_ CLSID *pclsid);
436
439WINAPI
442 _In_ REFCLSID rclsid);
443
449
450/* marshalling */
451
454WINAPI
456 _In_opt_ LPUNKNOWN punkOuter,
457 _Outptr_ LPUNKNOWN *ppunkMarshal);
458
461WINAPI
463 _In_ LPSTREAM pStm,
464 _In_ REFIID iid,
466
469WINAPI
474 _In_ DWORD dwDestContext,
475 _In_opt_ LPVOID pvDestContext,
476 _In_ DWORD mshlflags);
477
480WINAPI
484 _In_ DWORD dwDestContext,
485 _In_opt_ LPVOID pvDestContext,
486 _In_ DWORD mshlflags,
487 _Outptr_ LPMARSHAL *ppMarshal);
488
490
493WINAPI
495 _In_ LPSTREAM pStm,
498 _In_ DWORD dwDestContext,
499 _In_opt_ LPVOID pvDestContext,
500 _In_ DWORD mshlflags);
501
504WINAPI
508 _Outptr_ LPSTREAM *ppStm);
509
511
514WINAPI
516 _In_ LPUNKNOWN lpUnk,
518
520
523WINAPI
525 _In_ LPSTREAM pStm,
528
531WINAPI
534 _In_ BOOL fLock,
535 _In_ BOOL fLastUnlockReleases);
536
538
541WINAPI
543 _In_opt_ void *reserved
544);
545
548WINAPI
550 _In_opt_ void *reserved
551);
552
553/* security */
554
557WINAPI
560 _In_ LONG cAuthSvc,
561 _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
562 _In_opt_ void *pReserved1,
563 _In_ DWORD dwAuthnLevel,
564 _In_ DWORD dwImpLevel,
565 _In_opt_ void *pReserved2,
566 _In_ DWORD dwCapabilities,
567 _In_opt_ void *pReserved3);
568
571WINAPI
574 _Outptr_ void **ppInterface);
575
578WINAPI
580 _In_opt_ IUnknown *pContext,
581 _Outptr_ IUnknown **ppOldContext);
582
585WINAPI
587 _Out_ DWORD *pcAuthSvc,
588 _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
589
592WINAPI
594 _In_ IUnknown *pProxy,
595 _Out_opt_ DWORD *pwAuthnSvc,
596 _Out_opt_ DWORD *pAuthzSvc,
597 _Outptr_opt_ OLECHAR **pServerPrincName,
598 _Out_opt_ DWORD *pAuthnLevel,
599 _Out_opt_ DWORD *pImpLevel,
601 _Out_opt_ DWORD *pCapabilities);
602
605WINAPI
607 _In_ IUnknown *pProxy,
608 _In_ DWORD dwAuthnSvc,
609 _In_ DWORD dwAuthzSvc,
610 _In_opt_ OLECHAR *pServerPrincName,
611 _In_ DWORD dwAuthnLevel,
612 _In_ DWORD dwImpLevel,
614 _In_ DWORD dwCapabilities);
615
619 _In_ IUnknown *pProxy,
620 _Outptr_ IUnknown **ppCopy);
621
623
626WINAPI
628 _Out_opt_ DWORD *pAuthnSvc,
629 _Out_opt_ DWORD *pAuthzSvc,
630 _Outptr_opt_ OLECHAR **pServerPrincName,
631 _Out_opt_ DWORD *pAuthnLevel,
632 _Out_opt_ DWORD *pImpLevel,
634 _Inout_opt_ DWORD *pCapabilities);
635
637
638/* misc */
639
642WINAPI
644 _In_ REFCLSID clsidOld,
645 _Out_ LPCLSID pClsidNew);
646
649WINAPI
651 _In_ REFCLSID clsidOld,
652 _In_ REFCLSID clsidNew);
653
655WINAPI
659
662WINAPI
666
669WINAPI
671 _In_ IInitializeSpy *spy,
673
676WINAPI
679
682
683BOOL
684WINAPI
686 _In_ WORD nDosDate,
687 _In_ WORD nDosTime,
688 _Out_ FILETIME *lpFileTime);
689
690BOOL
691WINAPI
693 _In_ FILETIME *lpFileTime,
694 _Out_ WORD *lpDosDate,
695 _Out_ WORD *lpDosTime);
696
698
701WINAPI
703 _In_opt_ LPMESSAGEFILTER lpMessageFilter,
705
707WINAPI
709 _In_ REFGUID ExtensionGuid,
710 _In_ IChannelHook *pChannelHook);
711
712typedef enum tagCOWAIT_FLAGS
713{
714 COWAIT_DEFAULT = 0x00000000,
715 COWAIT_WAITALL = 0x00000001,
716 COWAIT_ALERTABLE = 0x00000002,
717 COWAIT_INPUTAVAILABLE = 0x00000004
719
722WINAPI
725 _In_ DWORD dwTimeout,
726 _In_ ULONG cHandles,
727 _In_reads_(cHandles) LPHANDLE pHandles,
728 _Out_ LPDWORD lpdwindex);
729
730/*****************************************************************************
731 * GUID API
732 */
733
736WINAPI
738 _In_ REFCLSID id,
740
743WINAPI
745 _In_ LPCOLESTR,
746 _Out_ LPCLSID);
747
750WINAPI
752 _In_ LPCOLESTR progid,
754
757WINAPI
760 _Outptr_ LPOLESTR *lplpszProgID);
761
763INT
764WINAPI
766 _In_ REFGUID id,
767 _Out_writes_to_(cmax, return) LPOLESTR str,
768 _In_ INT cmax);
769
772WINAPI
774 _In_ LPCOLESTR lpsz,
775 _Out_ LPIID lpiid);
776
777/*****************************************************************************
778 * COM Server dll - exports
779 */
780
783WINAPI
785 _In_ REFCLSID rclsid,
788
790
791/* shouldn't be here, but is nice for type checking */
792#ifdef __WINESRC__
795#endif
796
797
798/*****************************************************************************
799 * Data Object
800 */
801
803WINAPI
805 _Outptr_ LPDATAADVISEHOLDER *ppDAHolder);
806
808WINAPI
810 _In_opt_ LPUNKNOWN pUnkOuter,
811 _In_ REFCLSID rclsid,
812 _In_ REFIID iid,
813 _Out_ LPVOID *ppv);
814
815/*****************************************************************************
816 * Moniker API
817 */
818
821WINAPI
823 _In_ LPMONIKER pmk,
824 _In_ DWORD grfOpt,
825 _In_ REFIID iidResult,
826 _Outptr_ LPVOID *ppvResult);
827
830WINAPI
832 _In_ LPCWSTR pszName,
833 _In_opt_ BIND_OPTS *pBindOptions,
835 _Outptr_ void **ppv);
836
838
841WINAPI
844 _Outptr_ LPBC *ppbc);
845
848WINAPI
850 _In_ REFCLSID rclsid,
851 _Outptr_ LPMONIKER *ppmk);
852
855WINAPI
857 _In_ LPCOLESTR lpszPathName,
858 _Outptr_ LPMONIKER *ppmk);
859
862WINAPI
864 _In_opt_ LPMONIKER pmkFirst,
865 _In_opt_ LPMONIKER pmkRest,
866 _Outptr_ LPMONIKER *ppmkComposite);
867
870WINAPI
872 _In_ LPCOLESTR lpszDelim,
873 _In_ LPCOLESTR lpszItem,
874 _Outptr_ LPMONIKER *ppmk);
875
878WINAPI
881 _Outptr_ LPMONIKER *ppmk);
882
885WINAPI
888 _Outptr_ LPMONIKER *ppmk);
889
892WINAPI
894 _In_ LPCOLESTR filePathName,
895 _Out_ CLSID *pclsid);
896
899WINAPI
903
906WINAPI
908 _In_ LPBC pbc,
909 _In_ LPCOLESTR szUserName,
910 _Out_ ULONG *pchEaten,
911 _Outptr_ LPMONIKER *ppmk);
912
915WINAPI
917 _In_ IMoniker *pmkThis,
918 _In_ IMoniker *pmkOther,
919 _Outptr_ IMoniker **ppmkCommon);
920
923WINAPI
925 _In_ LPMONIKER pmkSrc,
926 _In_ LPMONIKER pmkDest,
927 _Outptr_ LPMONIKER *ppmkRelPath,
929
930/*****************************************************************************
931 * Storage API
932 */
933#define STGM_DIRECT 0x00000000
934#define STGM_TRANSACTED 0x00010000
935#define STGM_SIMPLE 0x08000000
936#define STGM_READ 0x00000000
937#define STGM_WRITE 0x00000001
938#define STGM_READWRITE 0x00000002
939#define STGM_SHARE_DENY_NONE 0x00000040
940#define STGM_SHARE_DENY_READ 0x00000030
941#define STGM_SHARE_DENY_WRITE 0x00000020
942#define STGM_SHARE_EXCLUSIVE 0x00000010
943#define STGM_PRIORITY 0x00040000
944#define STGM_DELETEONRELEASE 0x04000000
945#define STGM_CREATE 0x00001000
946#define STGM_CONVERT 0x00020000
947#define STGM_FAILIFTHERE 0x00000000
948#define STGM_NOSCRATCH 0x00100000
949#define STGM_NOSNAPSHOT 0x00200000
950#define STGM_DIRECT_SWMR 0x00400000
951
952#define STGFMT_STORAGE 0
953#define STGFMT_FILE 3
954#define STGFMT_ANY 4
955#define STGFMT_DOCFILE 5
956
957typedef struct tagSTGOPTIONS
958{
964
967WINAPI
969 _In_ REFIID rclsid,
970 _Outptr_ LPOLESTR *lplpsz);
971
974WINAPI
976 _In_opt_ _Null_terminated_ LPCOLESTR pwcsName,
977 _In_ DWORD grfMode,
979 _Outptr_ IStorage **ppstgOpen);
980
983WINAPI
986 _In_ DWORD,
987 _In_ DWORD,
988 _In_ DWORD,
990 _In_opt_ void*,
991 _In_ REFIID,
992 _Outptr_ void**);
993
996WINAPI
998 _In_ _Null_terminated_ LPCOLESTR fn);
999
1001HRESULT
1002WINAPI
1004 _In_ ILockBytes *plkbyt);
1005
1007HRESULT
1008WINAPI
1010 _In_opt_ _Null_terminated_ const OLECHAR *pwcsName,
1011 _In_opt_ IStorage *pstgPriority,
1012 _In_ DWORD grfMode,
1013 _In_opt_z_ SNB snbExclude,
1015 _Outptr_ IStorage **ppstgOpen);
1016
1018HRESULT
1019WINAPI
1021 _In_ _Null_terminated_ const WCHAR *pwcwName,
1022 _In_ DWORD grfMode,
1023 _In_ DWORD stgfmt,
1024 _In_ DWORD grfAttrs,
1025 _Inout_opt_ STGOPTIONS *pStgOptions,
1026 _In_opt_ void *reserved,
1028 _Outptr_ void **ppObjectOpen);
1029
1031HRESULT
1032WINAPI
1034 _In_ ILockBytes *plkbyt,
1035 _In_ DWORD grfMode,
1037 _Outptr_ IStorage **ppstgOpen);
1038
1040HRESULT
1041WINAPI
1043 _In_ ILockBytes *plkbyt,
1044 _In_opt_ IStorage *pstgPriority,
1045 _In_ DWORD grfMode,
1046 _In_opt_z_ SNB snbExclude,
1048 _Outptr_ IStorage **ppstgOpen);
1049
1051HRESULT
1052WINAPI
1054 _In_ _Null_terminated_ OLECHAR const *lpszName,
1055 _In_opt_ FILETIME const *pctime,
1056 _In_opt_ FILETIME const *patime,
1057 _In_opt_ FILETIME const *pmtime);
1058
1059#ifdef __cplusplus
1060}
1061#endif
1062
1063#ifndef __WINESRC__
1064# include <urlmon.h>
1065#endif
1066#include <propidl.h>
1067
1068#ifndef __WINESRC__
1069
1070#define FARSTRUCT
1071#define HUGEP
1072
1073#define WINOLEAPI STDAPI
1074#define WINOLEAPI_(type) STDAPI_(type)
1075
1076#endif /* __WINESRC__ */
1077
1078#endif /* _OBJBASE_H_ */
HMODULE hLibrary
Definition: odbccp32.c:12
static LPVOID LPUNKNOWN
Definition: dinput.c:53
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
WCHAR OLECHAR
Definition: compat.h:2292
#define __WINE_ALLOC_SIZE(...)
Definition: corecrt.h:328
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30
r reserved
Definition: btrfs.c:3006
#define __drv_freesMem(kind)
Definition: driverspecs.h:272
#define __drv_allocatesMem(kind)
Definition: driverspecs.h:257
#define progid(str)
Definition: exdisp.idl:31
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
Definition: glfuncs.h:210
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static IN DWORD IN LPVOID lpvReserved
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
void *WINAPI CoTaskMemRealloc(void *ptr, SIZE_T size)
Definition: malloc.c:397
#define DECLARE_HANDLE(name)
Definition: mimeole.idl:23
static PVOID ptr
Definition: dispmode.c:27
static REFIID LPVOID * ppInterface
Definition: metahost.c:40
static APTTYPEQUALIFIER * qualifier
Definition: compobj.c:77
static BSTR *static LPOLESTR
Definition: varformat.c:44
#define _Ret_opt_
Definition: ms_sal.h:1000
HRESULT WINAPI DllRegisterServer(void)
Definition: msctf.cpp:586
HRESULT WINAPI DllUnregisterServer(void)
Definition: msctf.cpp:594
const CLSID * clsid
Definition: msctf.cpp:50
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Out_opt_
Definition: no_sal2.h:214
#define _Post_readable_size_(s)
Definition: no_sal2.h:536
#define _Inout_updates_(s)
Definition: no_sal2.h:182
#define _At_(t, a)
Definition: no_sal2.h:40
#define _Check_return_
Definition: no_sal2.h:60
#define _In_opt_z_
Definition: no_sal2.h:218
#define _Outptr_opt_
Definition: no_sal2.h:264
#define _Outptr_
Definition: no_sal2.h:262
#define _Outptr_result_buffer_(s)
Definition: no_sal2.h:286
#define _Post_writable_byte_size_(s)
Definition: no_sal2.h:542
#define _Outptr_opt_result_maybenull_
Definition: no_sal2.h:268
#define _Null_terminated_
Definition: no_sal2.h:76
#define _Post_invalid_
Definition: no_sal2.h:524
#define _Inout_opt_
Definition: no_sal2.h:216
#define _Out_
Definition: no_sal2.h:160
#define _In_reads_opt_(s)
Definition: no_sal2.h:222
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define _Reserved_
Definition: no_sal2.h:504
#define _Out_writes_to_(s, c)
Definition: no_sal2.h:188
#define _When_(c, a)
Definition: no_sal2.h:38
_Check_return_ HRESULT WINAPI CoGetTreatAsClass(_In_ REFCLSID clsidOld, _Out_ LPCLSID pClsidNew)
_Check_return_ HRESULT WINAPI CoGetMalloc(_In_ DWORD dwMemContext, _Outptr_ LPMALLOC *lpMalloc)
_Check_return_ HRESULT WINAPI CoCreateInstanceEx(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsContext, _In_opt_ COSERVERINFO *pServerInfo, _In_ ULONG cmq, _Inout_updates_(cmq) MULTI_QI *pResults)
_Check_return_ HRESULT WINAPI CoGetInterfaceAndReleaseStream(_In_ LPSTREAM pStm, _In_ REFIID iid, _Outptr_ LPVOID *ppv)
DWORD WINAPI CoGetCurrentProcess(void)
Definition: combase.c:2739
_Check_return_ HRESULT WINAPI CLSIDFromString(_In_ LPCOLESTR, _Out_ LPCLSID)
ULONG WINAPI CoAddRefServerProcess(void)
Definition: combase.c:3151
BOOL WINAPI CoDosDateTimeToFileTime(_In_ WORD nDosDate, _In_ WORD nDosTime, _Out_ FILETIME *lpFileTime)
_Check_return_ HRESULT WINAPI CoGetStandardMarshal(_In_ REFIID riid, _In_ LPUNKNOWN pUnk, _In_ DWORD dwDestContext, _In_opt_ LPVOID pvDestContext, _In_ DWORD mshlflags, _Outptr_ LPMARSHAL *ppMarshal)
_Check_return_ HRESULT WINAPI CoCreateFreeThreadedMarshaler(_In_opt_ LPUNKNOWN punkOuter, _Outptr_ LPUNKNOWN *ppunkMarshal)
HRESULT WINAPI DllCanUnloadNow(void) DECLSPEC_HIDDEN
Definition: msctf.cpp:558
HRESULT WINAPI CoRevokeMallocSpy(void)
Definition: malloc.c:431
_Check_return_ HRESULT WINAPI CoRegisterMessageFilter(_In_opt_ LPMESSAGEFILTER lpMessageFilter, _Outptr_opt_result_maybenull_ LPMESSAGEFILTER *lplpMessageFilter)
HRESULT WINAPI CoIncrementMTAUsage(_Out_ CO_MTA_USAGE_COOKIE *cookie)
tagREGCLS
Definition: objbase.h:396
@ REGCLS_SUSPENDED
Definition: objbase.h:400
@ REGCLS_MULTI_SEPARATE
Definition: objbase.h:399
@ REGCLS_MULTIPLEUSE
Definition: objbase.h:398
@ REGCLS_SINGLEUSE
Definition: objbase.h:397
@ REGCLS_SURROGATE
Definition: objbase.h:401
void WINAPI CoFreeUnusedLibraries(void)
Definition: combase.c:1936
_Check_return_ HRESULT WINAPI CoRevokeInitializeSpy(_In_ ULARGE_INTEGER cookie)
void WINAPI CoUninitialize(void)
Definition: combase.c:2842
HRESULT WINAPI CoGetCurrentLogicalThreadId(_Out_ GUID *id)
_Check_return_ HRESULT WINAPI CreateBindCtx(_In_ DWORD reserved, _Outptr_ LPBC *ppbc)
_Check_return_ HRESULT WINAPI StgSetTimes(_In_ _Null_terminated_ OLECHAR const *lpszName, _In_opt_ FILETIME const *pctime, _In_opt_ FILETIME const *patime, _In_opt_ FILETIME const *pmtime)
_Check_return_ HRESULT WINAPI StgIsStorageILockBytes(_In_ ILockBytes *plkbyt)
_Check_return_ HRESULT WINAPI CLSIDFromProgID(_In_ LPCOLESTR progid, _Out_ LPCLSID riid)
_Check_return_ HRESULT WINAPI CoInitialize(_In_opt_ LPVOID lpReserved)
_Check_return_ HRESULT WINAPI CoMarshalInterface(_In_ LPSTREAM pStm, _In_ REFIID riid, _In_ LPUNKNOWN pUnk, _In_ DWORD dwDestContext, _In_opt_ LPVOID pvDestContext, _In_ DWORD mshlflags)
_Check_return_ HRESULT WINAPI StgCreateStorageEx(_In_opt_ _Null_terminated_ const WCHAR *, _In_ DWORD, _In_ DWORD, _In_ DWORD, _Inout_opt_ STGOPTIONS *, _In_opt_ void *, _In_ REFIID, _Outptr_ void **)
_Check_return_ HRESULT WINAPI StgOpenStorageOnILockBytes(_In_ ILockBytes *plkbyt, _In_opt_ IStorage *pstgPriority, _In_ DWORD grfMode, _In_opt_z_ SNB snbExclude, _Reserved_ DWORD reserved, _Outptr_ IStorage **ppstgOpen)
DWORD WINAPI CoBuildVersion(void)
Definition: compobj.c:509
HRESULT WINAPI CreateDataCache(_In_opt_ LPUNKNOWN pUnkOuter, _In_ REFCLSID rclsid, _In_ REFIID iid, _Out_ LPVOID *ppv)
enum tagREGCLS REGCLS
_Check_return_ HRESULT WINAPI BindMoniker(_In_ LPMONIKER pmk, _In_ DWORD grfOpt, _In_ REFIID iidResult, _Outptr_ LPVOID *ppvResult)
BOOL WINAPI CoIsHandlerConnected(_In_ LPUNKNOWN pUnk)
_Check_return_ HRESULT WINAPI CoGetMarshalSizeMax(_Out_ ULONG *pulSize, _In_ REFIID riid, _In_ LPUNKNOWN pUnk, _In_ DWORD dwDestContext, _In_opt_ LPVOID pvDestContext, _In_ DWORD mshlflags)
_Check_return_ HRESULT WINAPI CreateItemMoniker(_In_ LPCOLESTR lpszDelim, _In_ LPCOLESTR lpszItem, _Outptr_ LPMONIKER *ppmk)
HINSTANCE WINAPI CoLoadLibrary(_In_ LPOLESTR lpszLibName, _In_ BOOL bAutoFree)
_Check_return_ HRESULT WINAPI CoUnmarshalInterface(_In_ LPSTREAM pStm, _In_ REFIID riid, _Outptr_ LPVOID *ppv)
_Check_return_ HRESULT WINAPI CoSuspendClassObjects(void)
Definition: combase.c:3342
_Check_return_ HRESULT WINAPI CoReleaseMarshalData(_In_ LPSTREAM pStm)
_Check_return_ HRESULT WINAPI StgIsStorageFile(_In_ _Null_terminated_ LPCOLESTR fn)
HRESULT WINAPI CoDecrementMTAUsage(_In_ CO_MTA_USAGE_COOKIE cookie)
HRESULT WINAPI CoUnmarshalHresult(_In_ LPSTREAM pstm, _Out_ HRESULT *phresult)
_Check_return_ HRESULT WINAPI CoCopyProxy(_In_ IUnknown *pProxy, _Outptr_ IUnknown **ppCopy)
_Check_return_ HRESULT WINAPI CoRegisterSurrogate(_In_ LPSURROGATE pSurrogate)
_Check_return_ HRESULT WINAPI StgCreateDocfileOnILockBytes(_In_ ILockBytes *plkbyt, _In_ DWORD grfMode, _In_ DWORD reserved, _Outptr_ IStorage **ppstgOpen)
_Check_return_ HRESULT WINAPI CoGetInstanceFromIStorage(_In_opt_ COSERVERINFO *pServerInfo, _In_opt_ CLSID *pClsid, _In_opt_ IUnknown *punkOuter, _In_ DWORD dwClsCtx, _In_ IStorage *pstg, _In_ DWORD dwCount, _Inout_updates_(dwCount) MULTI_QI *pResults)
HRESULT WINAPI CoGetApartmentType(_Out_ APTTYPE *type, _Out_ APTTYPEQUALIFIER *qualifier)
_Check_return_ HRESULT WINAPI CoQueryClientBlanket(_Out_opt_ DWORD *pAuthnSvc, _Out_opt_ DWORD *pAuthzSvc, _Outptr_opt_ OLECHAR **pServerPrincName, _Out_opt_ DWORD *pAuthnLevel, _Out_opt_ DWORD *pImpLevel, _Outptr_opt_ RPC_AUTHZ_HANDLE *pPrivs, _Inout_opt_ DWORD *pCapabilities)
void WINAPI CoFreeAllLibraries(void)
Definition: compobj.c:624
_Check_return_ HRESULT WINAPI GetRunningObjectTable(_In_ DWORD reserved, _Outptr_ LPRUNNINGOBJECTTABLE *pprot)
_Check_return_ HRESULT WINAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID *ppv) DECLSPEC_HIDDEN
enum tagCOINIT COINIT
_Check_return_ HRESULT WINAPI MkParseDisplayName(_In_ LPBC pbc, _In_ LPCOLESTR szUserName, _Out_ ULONG *pchEaten, _Outptr_ LPMONIKER *ppmk)
_Check_return_ HRESULT WINAPI CoImpersonateClient(void)
Definition: combase.c:1123
_Check_return_ HRESULT WINAPI StgOpenStorageEx(_In_ _Null_terminated_ const WCHAR *pwcwName, _In_ DWORD grfMode, _In_ DWORD stgfmt, _In_ DWORD grfAttrs, _Inout_opt_ STGOPTIONS *pStgOptions, _In_opt_ void *reserved, _In_ REFIID riid, _Outptr_ void **ppObjectOpen)
void WINAPI CoTaskMemFree(_In_opt_ __drv_freesMem(Mem) _Post_invalid_ LPVOID ptr)
_Check_return_ HRESULT WINAPI CoGetObjectContext(_In_ REFIID riid, _Outptr_ LPVOID *ppv)
HRESULT WINAPI CreateDataAdviseHolder(_Outptr_ LPDATAADVISEHOLDER *ppDAHolder)
tagCOWAIT_FLAGS
Definition: objbase.h:713
@ COWAIT_ALERTABLE
Definition: objbase.h:716
@ COWAIT_INPUTAVAILABLE
Definition: objbase.h:717
@ COWAIT_DEFAULT
Definition: objbase.h:714
@ COWAIT_WAITALL
Definition: objbase.h:715
_Check_return_ HRESULT WINAPI CoGetPSClsid(_In_ REFIID riid, _Out_ CLSID *pclsid)
HRESULT WINAPI CoAllowSetForegroundWindow(_In_ IUnknown *pUnk, _In_opt_ LPVOID lpvReserved)
_Check_return_ HRESULT WINAPI CoRegisterPSClsid(_In_ REFIID riid, _In_ REFCLSID rclsid)
_Check_return_ HRESULT WINAPI CoInitializeSecurity(_In_opt_ PSECURITY_DESCRIPTOR pSecDesc, _In_ LONG cAuthSvc, _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE *asAuthSvc, _In_opt_ void *pReserved1, _In_ DWORD dwAuthnLevel, _In_ DWORD dwImpLevel, _In_opt_ void *pReserved2, _In_ DWORD dwCapabilities, _In_opt_ void *pReserved3)
_Check_return_ HRESULT WINAPI CoGetClassObject(_In_ REFCLSID rclsid, _In_ DWORD dwClsContext, _In_opt_ COSERVERINFO *pServerInfo, _In_ REFIID iid, _Outptr_ LPVOID *ppv)
void WINAPI CoFreeLibrary(_In_ HINSTANCE hLibrary)
_Check_return_ HRESULT WINAPI CreateClassMoniker(_In_ REFCLSID rclsid, _Outptr_ LPMONIKER *ppmk)
_Check_return_ HRESULT WINAPI CoRegisterClassObject(_In_ REFCLSID rclsid, _In_ LPUNKNOWN pUnk, _In_ DWORD dwClsContext, _In_ DWORD flags, _Out_ LPDWORD lpdwRegister)
_Check_return_ HRESULT WINAPI CoGetContextToken(_Out_ ULONG_PTR *token)
BOOL WINAPI CoIsOle1Class(_In_ REFCLSID rclsid)
BOOL WINAPI CoFileTimeToDosDateTime(_In_ FILETIME *lpFileTime, _Out_ WORD *lpDosDate, _Out_ WORD *lpDosTime)
tagCOINIT
Definition: objbase.h:278
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:279
@ COINIT_DISABLE_OLE1DDE
Definition: objbase.h:281
@ COINIT_SPEED_OVER_MEMORY
Definition: objbase.h:282
@ COINIT_MULTITHREADED
Definition: objbase.h:280
_Check_return_ HRESULT WINAPI StringFromCLSID(_In_ REFCLSID id, _Outptr_ LPOLESTR *)
_Check_return_ HRESULT WINAPI CoSwitchCallContext(_In_opt_ IUnknown *pContext, _Outptr_ IUnknown **ppOldContext)
_Check_return_ HRESULT WINAPI StgOpenStorage(_In_opt_ _Null_terminated_ const OLECHAR *pwcsName, _In_opt_ IStorage *pstgPriority, _In_ DWORD grfMode, _In_opt_z_ SNB snbExclude, _In_ DWORD reserved, _Outptr_ IStorage **ppstgOpen)
_Check_return_ HRESULT WINAPI CoTreatAsClass(_In_ REFCLSID clsidOld, _In_ REFCLSID clsidNew)
_Check_return_ HRESULT WINAPI ProgIDFromCLSID(_In_ REFCLSID clsid, _Outptr_ LPOLESTR *lplpszProgID)
void WINAPI CoFreeUnusedLibrariesEx(_In_ DWORD dwUnloadDelay, _In_ DWORD dwReserved)
_Check_return_ HRESULT WINAPI CoGetCallContext(_In_ REFIID riid, _Outptr_ void **ppInterface)
_Check_return_ HRESULT WINAPI CoLockObjectExternal(_In_ LPUNKNOWN pUnk, _In_ BOOL fLock, _In_ BOOL fLastUnlockReleases)
struct tagSTGOPTIONS STGOPTIONS
_Check_return_ HRESULT WINAPI CreateObjrefMoniker(_In_opt_ LPUNKNOWN punk, _Outptr_ LPMONIKER *ppmk)
_Check_return_ HRESULT WINAPI CoQueryAuthenticationServices(_Out_ DWORD *pcAuthSvc, _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE **asAuthSvc)
HRESULT WINAPI CoRegisterMallocSpy(_In_ LPMALLOCSPY pMallocSpy)
_Check_return_ HRESULT WINAPI CoRevokeClassObject(_In_ DWORD dwRegister)
_Check_return_ HRESULT WINAPI CoMarshalInterThreadInterfaceInStream(_In_ REFIID riid, _In_ LPUNKNOWN pUnk, _Outptr_ LPSTREAM *ppStm)
_Check_return_ HRESULT WINAPI CoInitializeEx(_In_opt_ LPVOID lpReserved, _In_ DWORD dwCoInit)
_Check_return_ HRESULT WINAPI CoSetProxyBlanket(_In_ IUnknown *pProxy, _In_ DWORD dwAuthnSvc, _In_ DWORD dwAuthzSvc, _In_opt_ OLECHAR *pServerPrincName, _In_ DWORD dwAuthnLevel, _In_ DWORD dwImpLevel, _In_opt_ RPC_AUTH_IDENTITY_HANDLE pAuthInfo, _In_ DWORD dwCapabilities)
HRESULT WINAPI CoRegisterChannelHook(_In_ REFGUID ExtensionGuid, _In_ IChannelHook *pChannelHook)
_Check_return_ HRESULT WINAPI CoGetInstanceFromFile(_In_opt_ COSERVERINFO *pServerInfo, _In_opt_ CLSID *pClsid, _In_opt_ IUnknown *punkOuter, _In_ DWORD dwClsCtx, _In_ DWORD grfMode, _In_ _Null_terminated_ OLECHAR *pwszName, _In_ DWORD dwCount, _Inout_updates_(dwCount) MULTI_QI *pResults)
HRESULT WINAPI CoMarshalHresult(_In_ LPSTREAM pstm, _In_ HRESULT hresult)
_Check_return_ HRESULT WINAPI CoEnableCallCancellation(_In_opt_ void *reserved)
_Check_return_ HRESULT WINAPI CoCreateGuid(_Out_ GUID *pguid)
_Check_return_ HRESULT WINAPI StgCreateDocfile(_In_opt_ _Null_terminated_ LPCOLESTR pwcsName, _In_ DWORD grfMode, _Reserved_ DWORD reserved, _Outptr_ IStorage **ppstgOpen)
ULONG WINAPI CoReleaseServerProcess(void)
Definition: combase.c:3169
_Check_return_ HRESULT WINAPI CoGetObject(_In_ LPCWSTR pszName, _In_opt_ BIND_OPTS *pBindOptions, _In_ REFIID riid, _Outptr_ void **ppv)
_Check_return_ HRESULT WINAPI CreateGenericComposite(_In_opt_ LPMONIKER pmkFirst, _In_opt_ LPMONIKER pmkRest, _Outptr_ LPMONIKER *ppmkComposite)
_Check_return_ HRESULT WINAPI MonikerCommonPrefixWith(_In_ IMoniker *pmkThis, _In_ IMoniker *pmkOther, _Outptr_ IMoniker **ppmkCommon)
_Check_return_ HRESULT WINAPI GetClassFile(_In_ LPCOLESTR filePathName, _Out_ CLSID *pclsid)
_Check_return_ HRESULT WINAPI CreateAntiMoniker(_Outptr_ LPMONIKER *ppmk)
_Check_return_ HRESULT WINAPI MonikerRelativePathTo(_In_ LPMONIKER pmkSrc, _In_ LPMONIKER pmkDest, _Outptr_ LPMONIKER *ppmkRelPath, _In_ BOOL dwReserved)
enum tagCOWAIT_FLAGS COWAIT_FLAGS
_Check_return_ HRESULT WINAPI CoQueryProxyBlanket(_In_ IUnknown *pProxy, _Out_opt_ DWORD *pwAuthnSvc, _Out_opt_ DWORD *pAuthzSvc, _Outptr_opt_ OLECHAR **pServerPrincName, _Out_opt_ DWORD *pAuthnLevel, _Out_opt_ DWORD *pImpLevel, _Out_opt_ RPC_AUTH_IDENTITY_HANDLE *pAuthInfo, _Out_opt_ DWORD *pCapabilities)
_Check_return_ HRESULT WINAPI CreateFileMoniker(_In_ LPCOLESTR lpszPathName, _Outptr_ LPMONIKER *ppmk)
_Check_return_ INT WINAPI StringFromGUID2(_In_ REFGUID id, _Out_writes_to_(cmax, return) LPOLESTR str, _In_ INT cmax)
HRESULT WINAPI CoFileTimeNow(_Out_ FILETIME *lpFileTime)
_Check_return_ HRESULT WINAPI CoRegisterInitializeSpy(_In_ IInitializeSpy *spy, _Out_ ULARGE_INTEGER *cookie)
_Check_return_ HRESULT WINAPI CoDisableCallCancellation(_In_opt_ void *reserved)
_Check_return_ HRESULT WINAPI StringFromIID(_In_ REFIID rclsid, _Outptr_ LPOLESTR *lplpsz)
_Check_return_ HRESULT WINAPI CoDisconnectObject(_In_ LPUNKNOWN lpUnk, _In_ DWORD reserved)
_Check_return_ HRESULT WINAPI IIDFromString(_In_ LPCOLESTR lpsz, _Out_ LPIID lpiid)
_Check_return_ HRESULT WINAPI CreatePointerMoniker(_In_opt_ LPUNKNOWN punk, _Outptr_ LPMONIKER *ppmk)
_Check_return_ HRESULT WINAPI CoCreateInstance(_In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsContext, _In_ REFIID iid, _Outptr_ _At_(*ppv, _Post_readable_size_(_Inexpressible_(varies))) LPVOID *ppv)
_Check_return_ HRESULT WINAPI CoResumeClassObjects(void)
Definition: combase.c:3352
_Check_return_ HRESULT WINAPI CoRevertToSelf(void)
Definition: combase.c:1143
_Check_return_ HRESULT WINAPI CoWaitForMultipleHandles(_In_ DWORD dwFlags, _In_ DWORD dwTimeout, _In_ ULONG cHandles, _In_reads_(cHandles) LPHANDLE pHandles, _Out_ LPDWORD lpdwindex)
interface IMoniker * LPMONIKER
Definition: objfwd.h:9
interface IBindCtx * LPBC
Definition: objfwd.h:18
interface IMarshal * LPMARSHAL
Definition: objfwd.h:11
interface IMessageFilter * LPMESSAGEFILTER
Definition: objfwd.h:14
interface IDataAdviseHolder * LPDATAADVISEHOLDER
Definition: objfwd.h:22
interface IMalloc * LPMALLOC
Definition: objfwd.h:12
interface IMallocSpy * LPMALLOCSPY
Definition: objfwd.h:13
interface IRunningObjectTable * LPRUNNINGOBJECTTABLE
Definition: objfwd.h:17
interface IStream * LPSTREAM
Definition: objfwd.h:10
enum _APTTYPEQUALIFIER APTTYPEQUALIFIER
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
#define REFIID
Definition: guiddef.h:118
#define REFCLSID
Definition: guiddef.h:117
_In_opt_ IUnknown * punk
Definition: shlwapi.h:158
const WCHAR * str
Definition: scsiwmi.h:51
Definition: cookie.c:34
USHORT reserved
Definition: objbase.h:960
const WCHAR * pwcsTemplateFile
Definition: objbase.h:962
ULONG ulSectorSize
Definition: objbase.h:961
USHORT usVersion
Definition: objbase.h:959
const uint16_t * LPCWSTR
Definition: typedefs.h:57
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t * LPDWORD
Definition: typedefs.h:59
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
_Check_return_ _Out_ PULONG pulSize
Definition: winddi.h:2120
#define WINAPI
Definition: msvc.h:6
_In_ DWORD _In_ int _In_ int _In_opt_ LPNLSVERSIONINFO _In_opt_ LPVOID lpReserved
Definition: winnls.h:1268