ReactOS 0.4.16-dev-2332-g4cba65d
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);
300
302void WINAPI CoFreeAllLibraries(void);
305
306void
307WINAPI
309 _In_ DWORD dwUnloadDelay,
311
314WINAPI
316 _In_ REFCLSID rclsid,
317 _In_opt_ LPUNKNOWN pUnkOuter,
318 _In_ DWORD dwClsContext,
319 _In_ REFIID iid,
320 _Outptr_ _At_(*ppv, _Post_readable_size_(_Inexpressible_(varies))) LPVOID *ppv);
321
324WINAPI
326 _In_ REFCLSID rclsid,
327 _In_opt_ LPUNKNOWN pUnkOuter,
328 _In_ DWORD dwClsContext,
329 _In_opt_ COSERVERINFO *pServerInfo,
330 _In_ ULONG cmq,
331 _Inout_updates_(cmq) MULTI_QI *pResults);
332
335WINAPI
337 _In_opt_ COSERVERINFO *pServerInfo,
338 _In_opt_ CLSID *pClsid,
339 _In_opt_ IUnknown *punkOuter,
340 _In_ DWORD dwClsCtx,
341 _In_ DWORD grfMode,
343 _In_ DWORD dwCount,
344 _Inout_updates_(dwCount) MULTI_QI *pResults);
345
348WINAPI
350 _In_opt_ COSERVERINFO *pServerInfo,
351 _In_opt_ CLSID *pClsid,
352 _In_opt_ IUnknown *punkOuter,
353 _In_ DWORD dwClsCtx,
354 _In_ IStorage *pstg,
355 _In_ DWORD dwCount,
356 _Inout_updates_(dwCount) MULTI_QI *pResults);
357
360WINAPI
362 _In_ DWORD dwMemContext,
363 _Outptr_ LPMALLOC *lpMalloc);
364
369LPVOID
370WINAPI
372
373void
374WINAPI
377
381LPVOID
382WINAPI
386
389
391
392/* class registration flags; passed to CoRegisterClassObject */
393typedef enum tagREGCLS
394{
401
404WINAPI
406 _In_ REFCLSID rclsid,
407 _In_ DWORD dwClsContext,
408 _In_opt_ COSERVERINFO *pServerInfo,
409 _In_ REFIID iid,
411
414WINAPI
416 _In_ REFCLSID rclsid,
418 _In_ DWORD dwClsContext,
420 _Out_ LPDWORD lpdwRegister);
421
424WINAPI
426 _In_ DWORD dwRegister);
427
430WINAPI
433 _Out_ CLSID *pclsid);
434
437WINAPI
440 _In_ REFCLSID rclsid);
441
447
448/* marshalling */
449
452WINAPI
454 _In_opt_ LPUNKNOWN punkOuter,
455 _Outptr_ LPUNKNOWN *ppunkMarshal);
456
459WINAPI
461 _In_ LPSTREAM pStm,
462 _In_ REFIID iid,
464
467WINAPI
472 _In_ DWORD dwDestContext,
473 _In_opt_ LPVOID pvDestContext,
474 _In_ DWORD mshlflags);
475
478WINAPI
482 _In_ DWORD dwDestContext,
483 _In_opt_ LPVOID pvDestContext,
484 _In_ DWORD mshlflags,
485 _Outptr_ LPMARSHAL *ppMarshal);
486
488
491WINAPI
493 _In_ LPSTREAM pStm,
496 _In_ DWORD dwDestContext,
497 _In_opt_ LPVOID pvDestContext,
498 _In_ DWORD mshlflags);
499
502WINAPI
506 _Outptr_ LPSTREAM *ppStm);
507
509
512WINAPI
514 _In_ LPUNKNOWN lpUnk,
516
518
521WINAPI
523 _In_ LPSTREAM pStm,
526
529WINAPI
532 _In_ BOOL fLock,
533 _In_ BOOL fLastUnlockReleases);
534
536
539WINAPI
541 _In_opt_ void *reserved
542);
543
546WINAPI
548 _In_opt_ void *reserved
549);
550
551/* security */
552
555WINAPI
558 _In_ LONG cAuthSvc,
559 _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
560 _In_opt_ void *pReserved1,
561 _In_ DWORD dwAuthnLevel,
562 _In_ DWORD dwImpLevel,
563 _In_opt_ void *pReserved2,
564 _In_ DWORD dwCapabilities,
565 _In_opt_ void *pReserved3);
566
569WINAPI
572 _Outptr_ void **ppInterface);
573
576WINAPI
578 _In_opt_ IUnknown *pContext,
579 _Outptr_ IUnknown **ppOldContext);
580
583WINAPI
585 _Out_ DWORD *pcAuthSvc,
586 _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
587
590WINAPI
592 _In_ IUnknown *pProxy,
593 _Out_opt_ DWORD *pwAuthnSvc,
594 _Out_opt_ DWORD *pAuthzSvc,
595 _Outptr_opt_ OLECHAR **pServerPrincName,
596 _Out_opt_ DWORD *pAuthnLevel,
597 _Out_opt_ DWORD *pImpLevel,
599 _Out_opt_ DWORD *pCapabilities);
600
603WINAPI
605 _In_ IUnknown *pProxy,
606 _In_ DWORD dwAuthnSvc,
607 _In_ DWORD dwAuthzSvc,
608 _In_opt_ OLECHAR *pServerPrincName,
609 _In_ DWORD dwAuthnLevel,
610 _In_ DWORD dwImpLevel,
612 _In_ DWORD dwCapabilities);
613
617 _In_ IUnknown *pProxy,
618 _Outptr_ IUnknown **ppCopy);
619
621
624WINAPI
626 _Out_opt_ DWORD *pAuthnSvc,
627 _Out_opt_ DWORD *pAuthzSvc,
628 _Outptr_opt_ OLECHAR **pServerPrincName,
629 _Out_opt_ DWORD *pAuthnLevel,
630 _Out_opt_ DWORD *pImpLevel,
632 _Inout_opt_ DWORD *pCapabilities);
633
635
636/* misc */
637
640WINAPI
642 _In_ REFCLSID clsidOld,
643 _Out_ LPCLSID pClsidNew);
644
647WINAPI
649 _In_ REFCLSID clsidOld,
650 _In_ REFCLSID clsidNew);
651
653WINAPI
657
660WINAPI
664
667WINAPI
669 _In_ IInitializeSpy *spy,
671
674WINAPI
677
680
681BOOL
682WINAPI
684 _In_ WORD nDosDate,
685 _In_ WORD nDosTime,
686 _Out_ FILETIME *lpFileTime);
687
688BOOL
689WINAPI
691 _In_ FILETIME *lpFileTime,
692 _Out_ WORD *lpDosDate,
693 _Out_ WORD *lpDosTime);
694
696
699WINAPI
701 _In_opt_ LPMESSAGEFILTER lpMessageFilter,
703
705WINAPI
707 _In_ REFGUID ExtensionGuid,
708 _In_ IChannelHook *pChannelHook);
709
710typedef enum tagCOWAIT_FLAGS
711{
712 COWAIT_DEFAULT = 0x00000000,
713 COWAIT_WAITALL = 0x00000001,
714 COWAIT_ALERTABLE = 0x00000002,
715 COWAIT_INPUTAVAILABLE = 0x00000004
717
720WINAPI
723 _In_ DWORD dwTimeout,
724 _In_ ULONG cHandles,
725 _In_reads_(cHandles) LPHANDLE pHandles,
726 _Out_ LPDWORD lpdwindex);
727
728/*****************************************************************************
729 * GUID API
730 */
731
734WINAPI
736 _In_ REFCLSID id,
738
741WINAPI
743 _In_ LPCOLESTR,
744 _Out_ LPCLSID);
745
748WINAPI
750 _In_ LPCOLESTR progid,
752
755WINAPI
758 _Outptr_ LPOLESTR *lplpszProgID);
759
761INT
762WINAPI
764 _In_ REFGUID id,
765 _Out_writes_to_(cmax, return) LPOLESTR str,
766 _In_ INT cmax);
767
770WINAPI
772 _In_ LPCOLESTR lpsz,
773 _Out_ LPIID lpiid);
774
775/*****************************************************************************
776 * COM Server dll - exports
777 */
778
781WINAPI
783 _In_ REFCLSID rclsid,
786
788
789/* shouldn't be here, but is nice for type checking */
790#ifdef __WINESRC__
793#endif
794
795
796/*****************************************************************************
797 * Data Object
798 */
799
801WINAPI
803 _Outptr_ LPDATAADVISEHOLDER *ppDAHolder);
804
806WINAPI
808 _In_opt_ LPUNKNOWN pUnkOuter,
809 _In_ REFCLSID rclsid,
810 _In_ REFIID iid,
811 _Out_ LPVOID *ppv);
812
813/*****************************************************************************
814 * Moniker API
815 */
816
819WINAPI
821 _In_ LPMONIKER pmk,
822 _In_ DWORD grfOpt,
823 _In_ REFIID iidResult,
824 _Outptr_ LPVOID *ppvResult);
825
828WINAPI
830 _In_ LPCWSTR pszName,
831 _In_opt_ BIND_OPTS *pBindOptions,
833 _Outptr_ void **ppv);
834
836
839WINAPI
842 _Outptr_ LPBC *ppbc);
843
846WINAPI
848 _In_ REFCLSID rclsid,
849 _Outptr_ LPMONIKER *ppmk);
850
853WINAPI
855 _In_ LPCOLESTR lpszPathName,
856 _Outptr_ LPMONIKER *ppmk);
857
860WINAPI
862 _In_opt_ LPMONIKER pmkFirst,
863 _In_opt_ LPMONIKER pmkRest,
864 _Outptr_ LPMONIKER *ppmkComposite);
865
868WINAPI
870 _In_ LPCOLESTR lpszDelim,
871 _In_ LPCOLESTR lpszItem,
872 _Outptr_ LPMONIKER *ppmk);
873
876WINAPI
879 _Outptr_ LPMONIKER *ppmk);
880
883WINAPI
886 _Outptr_ LPMONIKER *ppmk);
887
890WINAPI
892 _In_ LPCOLESTR filePathName,
893 _Out_ CLSID *pclsid);
894
897WINAPI
901
904WINAPI
906 _In_ LPBC pbc,
907 _In_ LPCOLESTR szUserName,
908 _Out_ ULONG *pchEaten,
909 _Outptr_ LPMONIKER *ppmk);
910
913WINAPI
915 _In_ IMoniker *pmkThis,
916 _In_ IMoniker *pmkOther,
917 _Outptr_ IMoniker **ppmkCommon);
918
921WINAPI
923 _In_ LPMONIKER pmkSrc,
924 _In_ LPMONIKER pmkDest,
925 _Outptr_ LPMONIKER *ppmkRelPath,
927
928/*****************************************************************************
929 * Storage API
930 */
931#define STGM_DIRECT 0x00000000
932#define STGM_TRANSACTED 0x00010000
933#define STGM_SIMPLE 0x08000000
934#define STGM_READ 0x00000000
935#define STGM_WRITE 0x00000001
936#define STGM_READWRITE 0x00000002
937#define STGM_SHARE_DENY_NONE 0x00000040
938#define STGM_SHARE_DENY_READ 0x00000030
939#define STGM_SHARE_DENY_WRITE 0x00000020
940#define STGM_SHARE_EXCLUSIVE 0x00000010
941#define STGM_PRIORITY 0x00040000
942#define STGM_DELETEONRELEASE 0x04000000
943#define STGM_CREATE 0x00001000
944#define STGM_CONVERT 0x00020000
945#define STGM_FAILIFTHERE 0x00000000
946#define STGM_NOSCRATCH 0x00100000
947#define STGM_NOSNAPSHOT 0x00200000
948#define STGM_DIRECT_SWMR 0x00400000
949
950#define STGFMT_STORAGE 0
951#define STGFMT_FILE 3
952#define STGFMT_ANY 4
953#define STGFMT_DOCFILE 5
954
955typedef struct tagSTGOPTIONS
956{
962
965WINAPI
967 _In_ REFIID rclsid,
968 _Outptr_ LPOLESTR *lplpsz);
969
972WINAPI
974 _In_opt_ _Null_terminated_ LPCOLESTR pwcsName,
975 _In_ DWORD grfMode,
977 _Outptr_ IStorage **ppstgOpen);
978
981WINAPI
984 _In_ DWORD,
985 _In_ DWORD,
986 _In_ DWORD,
988 _In_opt_ void*,
989 _In_ REFIID,
990 _Outptr_ void**);
991
994WINAPI
996 _In_ _Null_terminated_ LPCOLESTR fn);
997
1000WINAPI
1002 _In_ ILockBytes *plkbyt);
1003
1005HRESULT
1006WINAPI
1008 _In_opt_ _Null_terminated_ const OLECHAR *pwcsName,
1009 _In_opt_ IStorage *pstgPriority,
1010 _In_ DWORD grfMode,
1011 _In_opt_z_ SNB snbExclude,
1013 _Outptr_ IStorage **ppstgOpen);
1014
1016HRESULT
1017WINAPI
1019 _In_ _Null_terminated_ const WCHAR *pwcwName,
1020 _In_ DWORD grfMode,
1021 _In_ DWORD stgfmt,
1022 _In_ DWORD grfAttrs,
1023 _Inout_opt_ STGOPTIONS *pStgOptions,
1024 _In_opt_ void *reserved,
1026 _Outptr_ void **ppObjectOpen);
1027
1029HRESULT
1030WINAPI
1032 _In_ ILockBytes *plkbyt,
1033 _In_ DWORD grfMode,
1035 _Outptr_ IStorage **ppstgOpen);
1036
1038HRESULT
1039WINAPI
1041 _In_ ILockBytes *plkbyt,
1042 _In_opt_ IStorage *pstgPriority,
1043 _In_ DWORD grfMode,
1044 _In_opt_z_ SNB snbExclude,
1046 _Outptr_ IStorage **ppstgOpen);
1047
1049HRESULT
1050WINAPI
1052 _In_ _Null_terminated_ OLECHAR const *lpszName,
1053 _In_opt_ FILETIME const *pctime,
1054 _In_opt_ FILETIME const *patime,
1055 _In_opt_ FILETIME const *pmtime);
1056
1057#ifdef __cplusplus
1058}
1059#endif
1060
1061#ifndef __WINESRC__
1062# include <urlmon.h>
1063#endif
1064#include <propidl.h>
1065
1066#ifndef __WINESRC__
1067
1068#define FARSTRUCT
1069#define HUGEP
1070
1071#define WINOLEAPI STDAPI
1072#define WINOLEAPI_(type) STDAPI_(type)
1073
1074#endif /* __WINESRC__ */
1075
1076#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)
tagREGCLS
Definition: objbase.h:394
@ REGCLS_SUSPENDED
Definition: objbase.h:398
@ REGCLS_MULTI_SEPARATE
Definition: objbase.h:397
@ REGCLS_MULTIPLEUSE
Definition: objbase.h:396
@ REGCLS_SINGLEUSE
Definition: objbase.h:395
@ REGCLS_SURROGATE
Definition: objbase.h:399
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 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:711
@ COWAIT_ALERTABLE
Definition: objbase.h:714
@ COWAIT_INPUTAVAILABLE
Definition: objbase.h:715
@ COWAIT_DEFAULT
Definition: objbase.h:712
@ COWAIT_WAITALL
Definition: objbase.h:713
_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
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:958
const WCHAR * pwcsTemplateFile
Definition: objbase.h:960
ULONG ulSectorSize
Definition: objbase.h:959
USHORT usVersion
Definition: objbase.h:957
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
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
__wchar_t WCHAR
Definition: xmlstorage.h:180