ReactOS 0.4.15-dev-7788-g1ad9096
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 <wtypes.h>
251#include <unknwn.h>
252#include <objidl.h>
253
254#include <guiddef.h>
255#ifndef INITGUID
256#include <cguid.h>
257#endif
258
259#ifdef __cplusplus
260extern "C" {
261#endif
262
263#ifndef NONAMELESSSTRUCT
264#define LISet32(li, v) ((li).HighPart = (v) < 0 ? -1 : 0, (li).LowPart = (v))
265#define ULISet32(li, v) ((li).HighPart = 0, (li).LowPart = (v))
266#else
267#define LISet32(li, v) ((li).u.HighPart = (v) < 0 ? -1 : 0, (li).u.LowPart = (v))
268#define ULISet32(li, v) ((li).u.HighPart = 0, (li).u.LowPart = (v))
269#endif
270
271/*****************************************************************************
272 * Standard API
273 */
275
276typedef enum tagCOINIT
277{
278 COINIT_APARTMENTTHREADED = 0x2, /* Apartment model */
279 COINIT_MULTITHREADED = 0x0, /* OLE calls objects on any thread */
280 COINIT_DISABLE_OLE1DDE = 0x4, /* Don't use DDE for Ole1 support */
281 COINIT_SPEED_OVER_MEMORY = 0x8 /* Trade memory for speed */
283
285
288WINAPI
290 _In_opt_ LPVOID lpReserved,
292
293void WINAPI CoUninitialize(void);
297
299void WINAPI CoFreeAllLibraries(void);
302
303void
304WINAPI
306 _In_ DWORD dwUnloadDelay,
308
311WINAPI
313 _In_ REFCLSID rclsid,
314 _In_opt_ LPUNKNOWN pUnkOuter,
315 _In_ DWORD dwClsContext,
316 _In_ REFIID iid,
317 _Outptr_ _At_(*ppv, _Post_readable_size_(_Inexpressible_(varies))) LPVOID *ppv);
318
321WINAPI
323 _In_ REFCLSID rclsid,
324 _In_opt_ LPUNKNOWN pUnkOuter,
325 _In_ DWORD dwClsContext,
326 _In_opt_ COSERVERINFO *pServerInfo,
327 _In_ ULONG cmq,
328 _Inout_updates_(cmq) MULTI_QI *pResults);
329
332WINAPI
334 _In_opt_ COSERVERINFO *pServerInfo,
335 _In_opt_ CLSID *pClsid,
336 _In_opt_ IUnknown *punkOuter,
337 _In_ DWORD dwClsCtx,
338 _In_ DWORD grfMode,
340 _In_ DWORD dwCount,
341 _Inout_updates_(dwCount) MULTI_QI *pResults);
342
345WINAPI
347 _In_opt_ COSERVERINFO *pServerInfo,
348 _In_opt_ CLSID *pClsid,
349 _In_opt_ IUnknown *punkOuter,
350 _In_ DWORD dwClsCtx,
351 _In_ IStorage *pstg,
352 _In_ DWORD dwCount,
353 _Inout_updates_(dwCount) MULTI_QI *pResults);
354
357WINAPI
359 _In_ DWORD dwMemContext,
360 _Outptr_ LPMALLOC *lpMalloc);
361
366LPVOID
367WINAPI
369
370void
371WINAPI
374
378LPVOID
379WINAPI
383
386
388
389/* class registration flags; passed to CoRegisterClassObject */
390typedef enum tagREGCLS
391{
398
401WINAPI
403 _In_ REFCLSID rclsid,
404 _In_ DWORD dwClsContext,
405 _In_opt_ COSERVERINFO *pServerInfo,
406 _In_ REFIID iid,
408
411WINAPI
413 _In_ REFCLSID rclsid,
415 _In_ DWORD dwClsContext,
417 _Out_ LPDWORD lpdwRegister);
418
421WINAPI
423 _In_ DWORD dwRegister);
424
427WINAPI
430 _Out_ CLSID *pclsid);
431
434WINAPI
437 _In_ REFCLSID rclsid);
438
444
445/* marshalling */
446
449WINAPI
451 _In_opt_ LPUNKNOWN punkOuter,
452 _Outptr_ LPUNKNOWN *ppunkMarshal);
453
456WINAPI
458 _In_ LPSTREAM pStm,
459 _In_ REFIID iid,
461
464WINAPI
469 _In_ DWORD dwDestContext,
470 _In_opt_ LPVOID pvDestContext,
471 _In_ DWORD mshlflags);
472
475WINAPI
479 _In_ DWORD dwDestContext,
480 _In_opt_ LPVOID pvDestContext,
481 _In_ DWORD mshlflags,
482 _Outptr_ LPMARSHAL *ppMarshal);
483
485
488WINAPI
490 _In_ LPSTREAM pStm,
493 _In_ DWORD dwDestContext,
494 _In_opt_ LPVOID pvDestContext,
495 _In_ DWORD mshlflags);
496
499WINAPI
503 _Outptr_ LPSTREAM *ppStm);
504
506
509WINAPI
511 _In_ LPUNKNOWN lpUnk,
513
515
518WINAPI
520 _In_ LPSTREAM pStm,
523
526WINAPI
529 _In_ BOOL fLock,
530 _In_ BOOL fLastUnlockReleases);
531
533
534/* security */
535
538WINAPI
541 _In_ LONG cAuthSvc,
542 _In_reads_opt_(cAuthSvc) SOLE_AUTHENTICATION_SERVICE *asAuthSvc,
543 _In_opt_ void *pReserved1,
544 _In_ DWORD dwAuthnLevel,
545 _In_ DWORD dwImpLevel,
546 _In_opt_ void *pReserved2,
547 _In_ DWORD dwCapabilities,
548 _In_opt_ void *pReserved3);
549
552WINAPI
555 _Outptr_ void **ppInterface);
556
559WINAPI
561 _In_opt_ IUnknown *pContext,
562 _Outptr_ IUnknown **ppOldContext);
563
566WINAPI
568 _Out_ DWORD *pcAuthSvc,
569 _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
570
573WINAPI
575 _In_ IUnknown *pProxy,
576 _Out_opt_ DWORD *pwAuthnSvc,
577 _Out_opt_ DWORD *pAuthzSvc,
578 _Outptr_opt_ OLECHAR **pServerPrincName,
579 _Out_opt_ DWORD *pAuthnLevel,
580 _Out_opt_ DWORD *pImpLevel,
582 _Out_opt_ DWORD *pCapabilities);
583
586WINAPI
588 _In_ IUnknown *pProxy,
589 _In_ DWORD dwAuthnSvc,
590 _In_ DWORD dwAuthzSvc,
591 _In_opt_ OLECHAR *pServerPrincName,
592 _In_ DWORD dwAuthnLevel,
593 _In_ DWORD dwImpLevel,
595 _In_ DWORD dwCapabilities);
596
600 _In_ IUnknown *pProxy,
601 _Outptr_ IUnknown **ppCopy);
602
604
607WINAPI
609 _Out_opt_ DWORD *pAuthnSvc,
610 _Out_opt_ DWORD *pAuthzSvc,
611 _Outptr_opt_ OLECHAR **pServerPrincName,
612 _Out_opt_ DWORD *pAuthnLevel,
613 _Out_opt_ DWORD *pImpLevel,
615 _Inout_opt_ DWORD *pCapabilities);
616
618
619/* misc */
620
623WINAPI
625 _In_ REFCLSID clsidOld,
627
630WINAPI
632 _In_ REFCLSID clsidOld,
633 _In_ REFCLSID clsidNew);
634
636WINAPI
640
643WINAPI
647
650WINAPI
652 _In_ IInitializeSpy *spy,
654
657WINAPI
660
663
664BOOL
665WINAPI
667 _In_ WORD nDosDate,
668 _In_ WORD nDosTime,
669 _Out_ FILETIME *lpFileTime);
670
671BOOL
672WINAPI
674 _In_ FILETIME *lpFileTime,
675 _Out_ WORD *lpDosDate,
676 _Out_ WORD *lpDosTime);
677
679
682WINAPI
684 _In_opt_ LPMESSAGEFILTER lpMessageFilter,
686
688WINAPI
690 _In_ REFGUID ExtensionGuid,
691 _In_ IChannelHook *pChannelHook);
692
693typedef enum tagCOWAIT_FLAGS
694{
695 COWAIT_DEFAULT = 0x00000000,
696 COWAIT_WAITALL = 0x00000001,
697 COWAIT_ALERTABLE = 0x00000002,
698 COWAIT_INPUTAVAILABLE = 0x00000004
700
703WINAPI
707 _In_ ULONG cHandles,
708 _In_reads_(cHandles) LPHANDLE pHandles,
709 _Out_ LPDWORD lpdwindex);
710
711/*****************************************************************************
712 * GUID API
713 */
714
717WINAPI
719 _In_ REFCLSID id,
721
724WINAPI
726 _In_ LPCOLESTR,
727 _Out_ LPCLSID);
728
731WINAPI
733 _In_ LPCOLESTR progid,
735
738WINAPI
741 _Outptr_ LPOLESTR *lplpszProgID);
742
744INT
745WINAPI
747 _In_ REFGUID id,
748 _Out_writes_to_(cmax, return) LPOLESTR str,
749 _In_ INT cmax);
750
753WINAPI
755 _In_ LPCOLESTR lpsz,
756 _Out_ LPIID lpiid);
757
758/*****************************************************************************
759 * COM Server dll - exports
760 */
761
764WINAPI
766 _In_ REFCLSID rclsid,
769
771
772/* shouldn't be here, but is nice for type checking */
773#ifdef __WINESRC__
776#endif
777
778
779/*****************************************************************************
780 * Data Object
781 */
782
784WINAPI
786 _Outptr_ LPDATAADVISEHOLDER *ppDAHolder);
787
789WINAPI
791 _In_opt_ LPUNKNOWN pUnkOuter,
792 _In_ REFCLSID rclsid,
793 _In_ REFIID iid,
794 _Out_ LPVOID *ppv);
795
796/*****************************************************************************
797 * Moniker API
798 */
799
802WINAPI
804 _In_ LPMONIKER pmk,
805 _In_ DWORD grfOpt,
806 _In_ REFIID iidResult,
807 _Outptr_ LPVOID *ppvResult);
808
811WINAPI
813 _In_ LPCWSTR pszName,
814 _In_opt_ BIND_OPTS *pBindOptions,
816 _Outptr_ void **ppv);
817
819
822WINAPI
825 _Outptr_ LPBC *ppbc);
826
829WINAPI
831 _In_ REFCLSID rclsid,
832 _Outptr_ LPMONIKER *ppmk);
833
836WINAPI
838 _In_ LPCOLESTR lpszPathName,
839 _Outptr_ LPMONIKER *ppmk);
840
843WINAPI
845 _In_opt_ LPMONIKER pmkFirst,
846 _In_opt_ LPMONIKER pmkRest,
847 _Outptr_ LPMONIKER *ppmkComposite);
848
851WINAPI
853 _In_ LPCOLESTR lpszDelim,
854 _In_ LPCOLESTR lpszItem,
855 _Outptr_ LPMONIKER *ppmk);
856
859WINAPI
861 _In_opt_ LPUNKNOWN punk,
862 _Outptr_ LPMONIKER *ppmk);
863
866WINAPI
868 _In_opt_ LPUNKNOWN punk,
869 _Outptr_ LPMONIKER *ppmk);
870
873WINAPI
875 _In_ LPCOLESTR filePathName,
876 _Out_ CLSID *pclsid);
877
880WINAPI
884
887WINAPI
889 _In_ LPBC pbc,
890 _In_ LPCOLESTR szUserName,
891 _Out_ ULONG *pchEaten,
892 _Outptr_ LPMONIKER *ppmk);
893
896WINAPI
898 _In_ IMoniker *pmkThis,
899 _In_ IMoniker *pmkOther,
900 _Outptr_ IMoniker **ppmkCommon);
901
904WINAPI
906 _In_ LPMONIKER pmkSrc,
907 _In_ LPMONIKER pmkDest,
908 _Outptr_ LPMONIKER *ppmkRelPath,
910
911/*****************************************************************************
912 * Storage API
913 */
914#define STGM_DIRECT 0x00000000
915#define STGM_TRANSACTED 0x00010000
916#define STGM_SIMPLE 0x08000000
917#define STGM_READ 0x00000000
918#define STGM_WRITE 0x00000001
919#define STGM_READWRITE 0x00000002
920#define STGM_SHARE_DENY_NONE 0x00000040
921#define STGM_SHARE_DENY_READ 0x00000030
922#define STGM_SHARE_DENY_WRITE 0x00000020
923#define STGM_SHARE_EXCLUSIVE 0x00000010
924#define STGM_PRIORITY 0x00040000
925#define STGM_DELETEONRELEASE 0x04000000
926#define STGM_CREATE 0x00001000
927#define STGM_CONVERT 0x00020000
928#define STGM_FAILIFTHERE 0x00000000
929#define STGM_NOSCRATCH 0x00100000
930#define STGM_NOSNAPSHOT 0x00200000
931#define STGM_DIRECT_SWMR 0x00400000
932
933#define STGFMT_STORAGE 0
934#define STGFMT_FILE 3
935#define STGFMT_ANY 4
936#define STGFMT_DOCFILE 5
937
938typedef struct tagSTGOPTIONS
939{
945
948WINAPI
950 _In_ REFIID rclsid,
951 _Outptr_ LPOLESTR *lplpsz);
952
955WINAPI
957 _In_opt_ _Null_terminated_ LPCOLESTR pwcsName,
958 _In_ DWORD grfMode,
960 _Outptr_ IStorage **ppstgOpen);
961
964WINAPI
967 _In_ DWORD,
968 _In_ DWORD,
969 _In_ DWORD,
971 _In_opt_ void*,
972 _In_ REFIID,
973 _Outptr_ void**);
974
977WINAPI
979 _In_ _Null_terminated_ LPCOLESTR fn);
980
983WINAPI
985 _In_ ILockBytes *plkbyt);
986
989WINAPI
991 _In_opt_ _Null_terminated_ const OLECHAR *pwcsName,
992 _In_opt_ IStorage *pstgPriority,
993 _In_ DWORD grfMode,
994 _In_opt_z_ SNB snbExclude,
996 _Outptr_ IStorage **ppstgOpen);
997
1000WINAPI
1002 _In_ _Null_terminated_ const WCHAR *pwcwName,
1003 _In_ DWORD grfMode,
1004 _In_ DWORD stgfmt,
1005 _In_ DWORD grfAttrs,
1006 _Inout_opt_ STGOPTIONS *pStgOptions,
1007 _In_opt_ void *reserved,
1009 _Outptr_ void **ppObjectOpen);
1010
1012HRESULT
1013WINAPI
1015 _In_ ILockBytes *plkbyt,
1016 _In_ DWORD grfMode,
1018 _Outptr_ IStorage **ppstgOpen);
1019
1021HRESULT
1022WINAPI
1024 _In_ ILockBytes *plkbyt,
1025 _In_opt_ IStorage *pstgPriority,
1026 _In_ DWORD grfMode,
1027 _In_opt_z_ SNB snbExclude,
1029 _Outptr_ IStorage **ppstgOpen);
1030
1032HRESULT
1033WINAPI
1035 _In_ _Null_terminated_ OLECHAR const *lpszName,
1036 _In_opt_ FILETIME const *pctime,
1037 _In_opt_ FILETIME const *patime,
1038 _In_opt_ FILETIME const *pmtime);
1039
1040#ifdef __cplusplus
1041}
1042#endif
1043
1044#ifndef __WINESRC__
1045# include <urlmon.h>
1046#endif
1047#include <propidl.h>
1048
1049#ifndef __WINESRC__
1050
1051#define FARSTRUCT
1052#define HUGEP
1053
1054#define WINOLEAPI STDAPI
1055#define WINOLEAPI_(type) STDAPI_(type)
1056
1057#endif /* __WINESRC__ */
1058
1059#endif /* _OBJBASE_H_ */
STDAPI DllRegisterServer(void)
Definition: misc.cpp:180
STDAPI DllUnregisterServer(void)
Definition: misc.cpp:196
HMODULE hLibrary
Definition: odbccp32.c:12
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
WCHAR OLECHAR
Definition: compat.h:2292
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 int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
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
LPVOID WINAPI CoTaskMemRealloc(LPVOID pvOld, SIZE_T size)
Definition: ifs.c:460
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static IN DWORD IN LPVOID lpvReserved
static PVOID ptr
Definition: dispmode.c:27
static REFIID LPVOID * ppInterface
Definition: metahost.c:34
static DWORD dwCoInit
Definition: compobj.c:73
static APTTYPEQUALIFIER * qualifier
Definition: compobj.c:79
static LPCLSID pClsidNew
Definition: compobj.c:76
static LPOLESTR
Definition: stg_prop.c:27
#define _Out_opt_
Definition: ms_sal.h:346
#define _Ret_opt_
Definition: ms_sal.h:1000
#define _Inout_updates_(size)
Definition: ms_sal.h:387
#define _Check_return_
Definition: ms_sal.h:557
#define _In_opt_z_
Definition: ms_sal.h:314
#define _Outptr_opt_
Definition: ms_sal.h:429
#define _Outptr_
Definition: ms_sal.h:427
#define _Outptr_opt_result_maybenull_
Definition: ms_sal.h:430
#define _Null_terminated_
Definition: ms_sal.h:640
#define _Post_invalid_
Definition: ms_sal.h:695
#define _At_(target, annos)
Definition: ms_sal.h:244
#define _Inout_opt_
Definition: ms_sal.h:379
#define _Out_
Definition: ms_sal.h:345
#define _In_reads_opt_(size)
Definition: ms_sal.h:320
#define _When_(expr, annos)
Definition: ms_sal.h:254
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
#define _Post_writable_byte_size_(size)
Definition: ms_sal.h:652
#define _Post_readable_size_(size)
Definition: ms_sal.h:649
#define _Outptr_result_buffer_(size)
Definition: ms_sal.h:456
#define _Reserved_
Definition: ms_sal.h:295
#define _Out_writes_to_(size, count)
Definition: ms_sal.h:355
#define _In_reads_(size)
Definition: ms_sal.h:319
REFCLSID clsid
Definition: msctf.c:82
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:95
static LPUNKNOWN
Definition: ndr_ole.c:49
_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: compobj.c:4004
_Check_return_ HRESULT WINAPI CLSIDFromString(_In_ LPCOLESTR, _Out_ LPCLSID)
ULONG WINAPI CoAddRefServerProcess(void)
Definition: compobj.c:4162
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: shsvcs.c:33
HRESULT WINAPI CoRevokeMallocSpy(void)
Definition: ifs.c:522
_Check_return_ HRESULT WINAPI CoRegisterMessageFilter(_In_opt_ LPMESSAGEFILTER lpMessageFilter, _Outptr_opt_result_maybenull_ LPMESSAGEFILTER *lplpMessageFilter)
tagREGCLS
Definition: objbase.h:391
@ REGCLS_SUSPENDED
Definition: objbase.h:395
@ REGCLS_MULTI_SEPARATE
Definition: objbase.h:394
@ REGCLS_MULTIPLEUSE
Definition: objbase.h:393
@ REGCLS_SINGLEUSE
Definition: objbase.h:392
@ REGCLS_SURROGATE
Definition: objbase.h:396
void WINAPI CoFreeUnusedLibraries(void)
Definition: compobj.c:3701
_Check_return_ HRESULT WINAPI CoRevokeInitializeSpy(_In_ ULARGE_INTEGER cookie)
void WINAPI CoUninitialize(void)
Definition: compobj.c:2067
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:1774
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: compobj.c:4144
_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:3655
_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: compobj.c:4494
_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:694
@ COWAIT_ALERTABLE
Definition: objbase.h:697
@ COWAIT_INPUTAVAILABLE
Definition: objbase.h:698
@ COWAIT_DEFAULT
Definition: objbase.h:695
@ COWAIT_WAITALL
Definition: objbase.h:696
_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:277
@ COINIT_APARTMENTTHREADED
Definition: objbase.h:278
@ COINIT_DISABLE_OLE1DDE
Definition: objbase.h:280
@ COINIT_SPEED_OVER_MEMORY
Definition: objbase.h:281
@ COINIT_MULTITHREADED
Definition: objbase.h:279
_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 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: compobj.c:4193
_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 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: compobj.c:3288
_Check_return_ HRESULT WINAPI CoRevertToSelf(void)
Definition: compobj.c:4527
_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
const WCHAR * str
Definition: scsiwmi.h:51
Definition: cookie.c:34
USHORT reserved
Definition: objbase.h:941
const WCHAR * pwcsTemplateFile
Definition: objbase.h:943
ULONG ulSectorSize
Definition: objbase.h:942
USHORT usVersion
Definition: objbase.h:940
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
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
Definition: wincrypt.h:6081
_Check_return_ _Out_ PULONG pulSize
Definition: winddi.h:2120
#define WINAPI
Definition: msvc.h:6
#define __WINE_ALLOC_SIZE(x)
Definition: winnt_old.h:84
__wchar_t WCHAR
Definition: xmlstorage.h:180
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185