OSDN Git Service

Correct mistyped __MINGW_NOTHROW macro.
[mingw/mingw-org-wsl.git] / include / objbase.h
1 /**
2  * @file objbase.h
3  * Copyright 2012, 2013 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _OBJBASE_H
25 #define _OBJBASE_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 /* Include here to prevent circular dependencies if windows.h
30    not already included */
31 #include <rpc.h>
32 #include <rpcndr.h>
33
34 #include <stdlib.h>
35 #pragma pack(push,8)
36 #include <basetyps.h>
37
38 #define WINOLEAPI STDAPI
39 #define WINOLEAPI_(type) STDAPI_(type)
40 #define FARSTRUCT
41 #define HUGEP
42 #define LISet32(li,v) ((li).HighPart=(v)<0?-1:0,(li).LowPart=(v))
43 #define ULISet32(li,v) ((li).HighPart=0,(li).LowPart=(v))
44 #define CLSCTX_ALL (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER)
45 #define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
46 #define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
47 #define MARSHALINTERFACE_MIN 500
48 #define CWCSTORAGENAME 32
49 #define STGM_DIRECT 0
50 #define STGM_TRANSACTED 0x10000L
51 #define STGM_SIMPLE 0x8000000L
52 #define STGM_READ 0
53 #define STGM_WRITE 1
54 #define STGM_READWRITE 2
55 #define STGM_SHARE_DENY_NONE 0x40
56 #define STGM_SHARE_DENY_READ 0x30
57 #define STGM_SHARE_DENY_WRITE 0x20
58 #define STGM_SHARE_EXCLUSIVE 0x10
59 #define STGM_PRIORITY 0x40000L
60 #define STGM_DELETEONRELEASE 0x4000000
61 #define STGM_NOSCRATCH 0x100000
62 #define STGM_CREATE 0x1000
63 #define STGM_CONVERT 0x20000
64 #define STGM_NOSNAPSHOT 0x200000
65 #define STGM_FAILIFTHERE 0
66 #define CWCSTORAGENAME 32
67 #define ASYNC_MODE_COMPATIBILITY        1
68 #define ASYNC_MODE_DEFAULT      0
69 #define STGTY_REPEAT    256
70 #define STG_TOEND       0xFFFFFFFF
71 #define STG_LAYOUT_SEQUENTIAL   0
72 #define STG_LAYOUT_INTERLEAVED  1
73 #define COM_RIGHTS_EXECUTE 1
74 #define COM_RIGHTS_SAFE_FOR_SCRIPTING 2
75 #define STGOPTIONS_VERSION 2
76 typedef enum tagSTGFMT {
77         STGFMT_STORAGE = 0, 
78         STGFMT_FILE = 3, 
79         STGFMT_ANY = 4, 
80         STGFMT_DOCFILE = 5
81 } STGFMT;
82 typedef struct tagSTGOPTIONS {
83         USHORT usVersion;
84         USHORT reserved;
85         ULONG ulSectorSize;
86         const WCHAR *pwcsTemplateFile;
87 } STGOPTIONS;
88 typedef enum tagREGCLS {
89         REGCLS_SINGLEUSE = 0,
90         REGCLS_MULTIPLEUSE = 1,
91         REGCLS_MULTI_SEPARATE = 2
92 } REGCLS;
93 #include <wtypes.h>
94 #include <unknwn.h>
95 #include <objidl.h>
96
97 #ifdef __cplusplus
98 inline BOOL IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
99         { return !memcmp(&rguid1, &rguid2, sizeof(GUID)); }
100 inline BOOL operator==(const GUID& guidOne, const GUID& guidOther)
101         { return !memcmp(&guidOne,&guidOther,sizeof(GUID)); }
102 inline BOOL operator!=(const GUID& g1, const GUID& g2)
103         { return !(g1 == g2); }
104 #else
105 #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
106 #endif
107
108 #define IsEqualIID(id1,id2) IsEqualGUID(id1,id2)
109 #define IsEqualCLSID(id1,id2) IsEqualGUID(id1,id2)
110 #include <cguid.h>
111
112 typedef enum tagCOINIT {
113         COINIT_APARTMENTTHREADED        = 0x2,
114         COINIT_MULTITHREADED            = 0x0,
115         COINIT_DISABLE_OLE1DDE          = 0x4,
116         COINIT_SPEED_OVER_MEMORY        = 0x8
117 } COINIT;
118 typedef enum tagSTDMSHLFLAGS {
119     SMEXF_SERVER  = 0x01,
120     SMEXF_HANDLER = 0x02
121 } STDMSHLFLAGS;
122
123 WINOLEAPI_(DWORD) CoBuildVersion(void);
124 WINOLEAPI CoInitialize(PVOID);
125 WINOLEAPI CoInitializeEx(LPVOID,DWORD);
126 WINOLEAPI_(void) CoUninitialize(void);
127 WINOLEAPI CoGetMalloc(DWORD,LPMALLOC*);
128 WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
129 WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY);
130 WINOLEAPI CoRevokeMallocSpy(void);
131 WINOLEAPI CoCreateStandardMalloc(DWORD,IMalloc**);
132
133 #ifdef DBG
134 WINOLEAPI_(ULONG) DebugCoGetRpcFault(void);
135 WINOLEAPI_(void) DebugCoSetRpcFault(ULONG);
136 #endif
137
138 WINOLEAPI CoGetClassObject(REFCLSID,DWORD,COSERVERINFO*,REFIID,PVOID*);
139 WINOLEAPI CoRegisterClassObject(REFCLSID,LPUNKNOWN,DWORD,DWORD,PDWORD);
140 WINOLEAPI CoRevokeClassObject(DWORD);
141 WINOLEAPI CoGetMarshalSizeMax(ULONG*,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD);
142 WINOLEAPI CoMarshalInterface(LPSTREAM,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD);
143 WINOLEAPI CoUnmarshalInterface(LPSTREAM,REFIID,PVOID*);
144 WINOLEAPI CoMarshalHresult(LPSTREAM,HRESULT);
145 WINOLEAPI CoUnmarshalHresult(LPSTREAM,HRESULT*);
146 WINOLEAPI CoReleaseMarshalData(LPSTREAM);
147 WINOLEAPI CoDisconnectObject(LPUNKNOWN,DWORD);
148 WINOLEAPI CoLockObjectExternal(LPUNKNOWN,BOOL,BOOL);
149 WINOLEAPI CoGetStandardMarshal(REFIID,LPUNKNOWN,DWORD,PVOID,DWORD,LPMARSHAL*);
150 WINOLEAPI CoGetStdMarshalEx(LPUNKNOWN,DWORD,LPUNKNOWN*);
151 WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN);
152 WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN);
153 WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID,LPUNKNOWN,LPSTREAM*);
154 WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM,REFIID,PVOID*);
155 WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN,LPUNKNOWN*);
156 WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR,BOOL);
157 WINOLEAPI_(void) CoFreeLibrary(HINSTANCE);
158 WINOLEAPI_(void) CoFreeAllLibraries(void);
159 WINOLEAPI_(void) CoFreeUnusedLibraries(void);
160 WINOLEAPI CoCreateInstance(REFCLSID,LPUNKNOWN,DWORD,REFIID,PVOID*);
161 WINOLEAPI CoCreateInstanceEx(REFCLSID,IUnknown*,DWORD,COSERVERINFO*,DWORD,MULTI_QI*);
162 WINOLEAPI StringFromCLSID(REFCLSID,LPOLESTR*);
163 WINOLEAPI CLSIDFromString(LPOLESTR,LPCLSID);
164 WINOLEAPI StringFromIID(REFIID,LPOLESTR*);
165 WINOLEAPI IIDFromString(LPOLESTR,LPIID);
166 WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID);
167 WINOLEAPI ProgIDFromCLSID(REFCLSID,LPOLESTR*);
168 WINOLEAPI CLSIDFromProgID(LPCOLESTR,LPCLSID);
169 WINOLEAPI_(int) StringFromGUID2(REFGUID,LPOLESTR,int);
170 WINOLEAPI CoCreateGuid(GUID*);
171 WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(FILETIME*,LPWORD,LPWORD);
172 WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(WORD,WORD,FILETIME*);
173 WINOLEAPI CoFileTimeNow(FILETIME*);
174 WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER,LPMESSAGEFILTER*);
175 WINOLEAPI CoGetTreatAsClass(REFCLSID,LPCLSID);
176 WINOLEAPI CoTreatAsClass(REFCLSID,REFCLSID);
177 typedef HRESULT (STDAPICALLTYPE *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,PVOID*);
178 typedef HRESULT (STDAPICALLTYPE *LPFNCANUNLOADNOW)(void);
179 STDAPI DllGetClassObject(REFCLSID,REFIID,PVOID*);
180 STDAPI DllCanUnloadNow(void);
181 WINOLEAPI_(PVOID) CoTaskMemAlloc(ULONG);
182 WINOLEAPI_(PVOID) CoTaskMemRealloc(PVOID,ULONG);
183 WINOLEAPI_(void) CoTaskMemFree(PVOID);
184 WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
185 WINOLEAPI CreateDataCache(LPUNKNOWN,REFCLSID,REFIID,PVOID*);
186 WINOLEAPI StgCreateDocfile(const OLECHAR*,DWORD,DWORD,IStorage**);
187 WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes*,DWORD,DWORD,IStorage**);
188 WINOLEAPI StgOpenStorage(const OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**);
189 WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes*,IStorage*,DWORD,SNB,DWORD,IStorage**);
190 WINOLEAPI StgIsStorageFile(const OLECHAR*);
191 WINOLEAPI StgIsStorageILockBytes(ILockBytes*);
192 WINOLEAPI StgSetTimes(OLECHAR const*,FILETIME const*,FILETIME const*,FILETIME const*);
193 WINOLEAPI StgCreateStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
194 WINOLEAPI StgOpenStorageEx(const WCHAR*,DWORD,DWORD,DWORD,STGOPTIONS*,void*,REFIID,void**);
195 WINOLEAPI BindMoniker(LPMONIKER,DWORD,REFIID,PVOID*);
196 WINOLEAPI CoGetObject(LPCWSTR,BIND_OPTS*,REFIID,void**);
197 WINOLEAPI MkParseDisplayName(LPBC,LPCOLESTR,ULONG*,LPMONIKER*);
198 WINOLEAPI MonikerRelativePathTo(LPMONIKER,LPMONIKER,LPMONIKER*,BOOL);
199 WINOLEAPI MonikerCommonPrefixWith(LPMONIKER,LPMONIKER,LPMONIKER*);
200 WINOLEAPI CreateBindCtx(DWORD,LPBC*);
201 WINOLEAPI CreateGenericComposite(LPMONIKER,LPMONIKER,LPMONIKER*);
202 WINOLEAPI GetClassFile (LPCOLESTR,CLSID*);
203 WINOLEAPI CreateFileMoniker(LPCOLESTR,LPMONIKER*);
204 WINOLEAPI CreateItemMoniker(LPCOLESTR,LPCOLESTR,LPMONIKER*);
205 WINOLEAPI CreateAntiMoniker(LPMONIKER*);
206 WINOLEAPI CreatePointerMoniker(LPUNKNOWN,LPMONIKER*);
207 WINOLEAPI GetRunningObjectTable(DWORD,LPRUNNINGOBJECTTABLE*);
208 WINOLEAPI CoInitializeSecurity(PSECURITY_DESCRIPTOR,LONG,SOLE_AUTHENTICATION_SERVICE*, void*,DWORD,DWORD,void*,DWORD,void*);
209 WINOLEAPI CoGetCallContext(REFIID,void**);
210 WINOLEAPI CoQueryProxyBlanket(IUnknown*, DWORD*,DWORD*,OLECHAR**,DWORD*,DWORD*,RPC_AUTH_IDENTITY_HANDLE*,DWORD*);
211 WINOLEAPI CoSetProxyBlanket(IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE, DWORD);
212 WINOLEAPI CoCopyProxy(IUnknown*,IUnknown**);
213 WINOLEAPI CoQueryClientBlanket(DWORD*,DWORD*,OLECHAR**, DWORD*,DWORD*,RPC_AUTHZ_HANDLE*,DWORD*);
214 WINOLEAPI CoImpersonateClient(void);
215 WINOLEAPI CoRevertToSelf(void);
216 WINOLEAPI CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**);
217 WINOLEAPI CoSwitchCallContext(IUnknown*,IUnknown**);
218 WINOLEAPI CoGetInstanceFromFile(COSERVERINFO*, CLSID*,IUnknown*,DWORD,DWORD,OLECHAR*,DWORD,MULTI_QI*);
219 WINOLEAPI CoGetInstanceFromIStorage(COSERVERINFO*,CLSID*, IUnknown*,DWORD,struct IStorage*, DWORD,MULTI_QI*);
220 WINOLEAPI_(ULONG) CoAddRefServerProcess(void);
221 WINOLEAPI_(ULONG) CoReleaseServerProcess(void);
222 WINOLEAPI CoResumeClassObjects(void);
223 WINOLEAPI CoSuspendClassObjects(void);
224 WINOLEAPI CoGetPSClsid(REFIID,CLSID*);
225 WINOLEAPI CoRegisterPSClsid(REFIID,REFCLSID);
226
227 #pragma pack(pop)
228
229 #endif