1 /**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7 * Source: $(DRUNTIMESRC core/sys/windows/_objbase.d)
8 */
9 module core.sys.windows.objbase;
10 version (Windows):
11 nothrow:
12 pragma(lib, "ole32");
13
14 import core.sys.windows.cguid, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.wtypes;
15 import core.sys.windows.basetyps, core.sys.windows.objfwd, core.sys.windows.rpcdce, core.sys.windows.winbase,
16 core.sys.windows.windef;
17
18 // DAC: Not needed for D?
19 //MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v))
20 //MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v))
21
22 enum CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER;
23 enum CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER;
24 enum CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER;
25 enum MARSHALINTERFACE_MIN=500;
26 enum CWCSTORAGENAME=32;
27
28 enum STGM_DIRECT = 0;
29 enum STGM_TRANSACTED = 0x10000L;
30 enum STGM_SIMPLE = 0x8000000L;
31 enum STGM_READ = 0;
32 enum STGM_WRITE = 1;
33 enum STGM_READWRITE = 2;
34 enum STGM_SHARE_DENY_NONE = 0x40;
35 enum STGM_SHARE_DENY_READ = 0x30;
36 enum STGM_SHARE_DENY_WRITE = 0x20;
37 enum STGM_SHARE_EXCLUSIVE = 0x10;
38 enum STGM_PRIORITY = 0x40000L;
39 enum STGM_DELETEONRELEASE = 0x4000000;
40 enum STGM_NOSCRATCH = 0x100000;
41 enum STGM_CREATE = 0x1000;
42 enum STGM_CONVERT = 0x20000;
43 enum STGM_NOSNAPSHOT = 0x200000;
44 enum STGM_FAILIFTHERE = 0;
45
46 enum ASYNC_MODE_COMPATIBILITY = 1;
47 enum ASYNC_MODE_DEFAULT = 0;
48
49 enum STGTY_REPEAT = 256;
50 enum STG_TOEND = 0xFFFFFFFF;
51 enum STG_LAYOUT_SEQUENTIAL = 0;
52 enum STG_LAYOUT_INTERLEAVED = 1;
53
54 enum COM_RIGHTS_EXECUTE = 1;
55 enum COM_RIGHTS_SAFE_FOR_SCRIPTING = 2;
56
57 enum STGOPTIONS_VERSION = 2;
58
59 enum STGFMT {
60 STGFMT_STORAGE = 0,
61 STGFMT_FILE = 3,
62 STGFMT_ANY = 4,
63 STGFMT_DOCFILE = 5
64 }
65
66 struct STGOPTIONS {
67 USHORT usVersion;
68 USHORT reserved;
69 ULONG ulSectorSize;
70 const(WCHAR)* pwcsTemplateFile;
71 }
72
73 enum REGCLS {
74 REGCLS_SINGLEUSE = 0,
75 REGCLS_MULTIPLEUSE = 1,
76 REGCLS_MULTI_SEPARATE = 2
77 }
78
79 /*
80 BOOL IsEqualGUID(GUID rguid1, GUID rguid2) {
81 return rguid1 == rguid2;
82 }
83 */
84
85 extern (Windows) BOOL IsEqualGUID(
86 REFGUID rguid1,
87 REFGUID rguid2
88 );
89
90 alias IsEqualGUID IsEqualIID;
91 alias IsEqualGUID IsEqualCLSID;
92
93 enum COINIT {
94 COINIT_APARTMENTTHREADED = 2,
95 COINIT_MULTITHREADED = 0,
96 COINIT_DISABLE_OLE1DDE = 4,
97 COINIT_SPEED_OVER_MEMORY = 8
98 }
99
100 enum STDMSHLFLAGS {
101 SMEXF_SERVER = 1,
102 SMEXF_HANDLER
103 }
104
105 extern(Windows) {
106 alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT;
107 alias HRESULT function() LPFNCANUNLOADNOW;
108
109 DWORD CoBuildVersion();
110 HRESULT CoInitialize(PVOID);
111 HRESULT CoInitializeEx(LPVOID, DWORD);
112 void CoUninitialize();
113 HRESULT CoGetMalloc(DWORD, LPMALLOC*);
114 DWORD CoGetCurrentProcess();
115 HRESULT CoRegisterMallocSpy(LPMALLOCSPY);
116 HRESULT CoRevokeMallocSpy();
117 HRESULT CoCreateStandardMalloc(DWORD, IMalloc*);
118 //#ifdef DBG
119 ULONG DebugCoGetRpcFault();
120 void DebugCoSetRpcFault(ULONG);
121 //#endif
122 HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*);
123 HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD);
124 HRESULT CoRevokeClassObject(DWORD);
125 HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD);
126 HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD);
127 HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*);
128 HRESULT CoMarshalHresult(LPSTREAM, HRESULT);
129 HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*);
130 HRESULT CoReleaseMarshalData(LPSTREAM);
131 HRESULT CoDisconnectObject(LPUNKNOWN, DWORD);
132 HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL);
133 HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*);
134 HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*);
135 BOOL CoIsHandlerConnected(LPUNKNOWN);
136 BOOL CoHasStrongExternalConnections(LPUNKNOWN);
137 HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*);
138 HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*);
139 HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*);
140 HINSTANCE CoLoadLibrary(LPOLESTR, BOOL);
141 void CoFreeLibrary(HINSTANCE);
142 void CoFreeAllLibraries();
143 void CoFreeUnusedLibraries();
144 HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*);
145 HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
146 HRESULT StringFromCLSID(REFCLSID, LPOLESTR*);
147 HRESULT CLSIDFromString(LPOLESTR, LPCLSID);
148 HRESULT StringFromIID(REFIID, LPOLESTR*);
149 HRESULT IIDFromString(LPOLESTR, LPIID);
150 BOOL CoIsOle1Class(REFCLSID);
151 HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*);
152 HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID);
153 int StringFromGUID2(REFGUID, LPOLESTR, int);
154 HRESULT CoCreateGuid(GUID*);
155 BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD);
156 BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*);
157 HRESULT CoFileTimeNow(FILETIME*);
158 HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*);
159 HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID);
160 HRESULT CoTreatAsClass(REFCLSID, REFCLSID);
161 HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*);
162 HRESULT DllCanUnloadNow();
163 PVOID CoTaskMemAlloc(SIZE_T);
164 PVOID CoTaskMemRealloc(PVOID, SIZE_T);
165 void CoTaskMemFree(PVOID);
166 HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
167 HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*);
168 HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*);
169 HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*);
170 HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*);
171 HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*);
172 HRESULT StgIsStorageFile(const(OLECHAR)*);
173 HRESULT StgIsStorageILockBytes(ILockBytes);
174 HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *);
175 HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**);
176 HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**);
177 HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*);
178 HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**);
179 HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*);
180 HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL);
181 HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*);
182 HRESULT CreateBindCtx(DWORD, LPBC*);
183 HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*);
184 HRESULT GetClassFile (LPCOLESTR, CLSID*);
185 HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*);
186 HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*);
187 HRESULT CreateAntiMoniker(LPMONIKER*);
188 HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*);
189 HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*);
190 HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*);
191 HRESULT CoGetCallContext(REFIID, void**);
192 HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*);
193 HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD);
194 HRESULT CoCopyProxy(IUnknown*, IUnknown**);
195 HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*);
196 HRESULT CoImpersonateClient();
197 HRESULT CoRevertToSelf();
198 HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**);
199 HRESULT CoSwitchCallContext(IUnknown*, IUnknown**);
200 HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*);
201 HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*);
202 ULONG CoAddRefServerProcess();
203 ULONG CoReleaseServerProcess();
204 HRESULT CoResumeClassObjects();
205 HRESULT CoSuspendClassObjects();
206 HRESULT CoGetPSClsid(REFIID, CLSID*);
207 HRESULT CoRegisterPSClsid(REFIID, REFCLSID);
208 }