2 * Copyright (C) 2000 Ulrich Czekalla
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.
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.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef COM_NO_WINDOWS_H
26 #ifndef __WINE_URLMON_H
27 #define __WINE_URLMON_H
34 #endif /* defined(__cplusplus) */
36 DEFINE_GUID(IID_IBinding
, 0x79EAC9C0, 0xBAF9, 0x11CE,
37 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
38 typedef struct IBinding IBinding
,*LPBINDING
;
40 DEFINE_GUID(IID_IBindStatusCallback
, 0x79EAC9C1, 0xBAF9, 0x11CE,
41 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);
42 typedef struct IBindStatusCallback IBindStatusCallback
,*LPBINDSTATUSCALLBACK
;
44 DEFINE_GUID(IID_IBindHost
, 0XFC4801A1, 0X2BA9, 0X11CF,
45 0XA2, 0X29, 0X00, 0XAA, 0X00, 0X3D, 0X73, 0X52);
46 typedef struct IBindHost IBindHost
,*LPBINDHOST
;
48 DEFINE_GUID(IID_IWinInetInfo
, 0x79EAC9D6, 0xBAFA, 0x11CE,
49 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0X0B);
50 typedef struct IWinInetInfo IWinInetInfo
,*LPWININETINFO
;
52 DEFINE_GUID(IID_IWinInetHttpInfo
, 0x79EAC9D8, 0xBAFA, 0x11CE,
53 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0X0B);
54 typedef struct IWinInetHttpInfo IWinInetHttpInfo
,*LPWININETHTTPINFO
;
57 BINDF_ASYNCHRONOUS
= 0x00000001,
58 BINDF_ASYNCSTORAGE
= 0x00000002,
59 BINDF_NOPROGRESSIVERENDERING
= 0x00000004,
60 BINDF_OFFLINEOPERATION
= 0x00000008,
61 BINDF_GETNEWESTVERSION
= 0x00000010,
62 BINDF_NOWRITECACHE
= 0x00000020,
63 BINDF_NEEDFILE
= 0x00000040,
64 BINDF_PULLDATA
= 0x00000080,
65 BINDF_IGNORESECURITYPROBLEM
= 0x00000100,
66 BINDF_RESYNCHRONIZE
= 0x00000200,
67 BINDF_HYPERLINK
= 0x00000400,
68 BINDF_NO_UI
= 0x00000800,
69 BINDF_SILENTOPERATION
= 0x00001000,
70 BINDF_PRAGMA_NO_CACHE
= 0x00002000,
71 BINDF_GETCLASSOBJECT
= 0x00004000,
72 BINDF_RESERVED_1
= 0x00008000,
73 BINDF_FREE_THREADED
= 0x00010000,
74 BINDF_DIRECT_READ
= 0x00020000,
75 BINDF_FORMS_SUBMIT
= 0x00040000,
76 BINDF_GETFROMCACHE_IF_NET_FAIL
= 0x00080000,
77 BINDF_FROMURLMON
= 0x00100000,
78 BINDF_FWD_BACK
= 0x00200000,
79 BINDF_PREFERDEFAULTHANDLER
= 0x00400000,
80 BINDF_RESERVED_3
= 0x00800000
83 typedef struct _tagBINDINFO
{
94 SECURITY_ATTRIBUTES securityAttributes
;
101 BSCF_FIRSTDATANOTIFICATION
= 0x01,
102 BSCF_INTERMEDIATEDATANOTIFICATION
= 0x02,
103 BSCF_LASTDATANOTIFICATION
= 0x04,
104 BSCF_DATAFULLYAVAILABLE
= 0x08,
105 BSCF_AVAILABLEDATASIZEUNKNOWN
= 0x10
108 typedef enum BINDSTATUS
{
109 BINDSTATUS_FINDINGRESOURCE
,
110 BINDSTATUS_CONNECTING
,
111 BINDSTATUS_REDIRECTING
,
112 BINDSTATUS_BEGINDOWNLOADDATA
,
113 BINDSTATUS_DOWNLOADINGDATA
,
114 BINDSTATUS_ENDDOWNLOADDATA
,
115 BINDSTATUS_BEGINDOWNLOADCOMPONENTS
,
116 BINDSTATUS_INSTALLINGCOMPONENTS
,
117 BINDSTATUS_ENDDOWNLOADCOMPONENTS
,
118 BINDSTATUS_USINGCACHEDCOPY
,
119 BINDSTATUS_SENDINGREQUEST
,
120 BINDSTATUS_CLASSIDAVAILABLE
,
121 BINDSTATUS_MIMETYPEAVAILABLE
,
122 BINDSTATUS_CACHEFILENAMEAVAILABLE
,
123 BINDSTATUS_BEGINSYNCOPERATION
,
124 BINDSTATUS_ENDSYNCOPERATION
,
125 BINDSTATUS_BEGINUPLOADDATA
,
126 BINDSTATUS_UPLOADINGDATA
,
127 BINDSTATUS_ENDUPLOADINGDATA
,
128 BINDSTATUS_PROTOCOLCLASSID
,
130 BINDSTATUS_VERFIEDMIMETYPEAVAILABLE
,
131 BINDSTATUS_CLASSINSTALLLOCATION
,
133 BINDSTATUS_LOADINGMIMEHANDLER
,
134 BINDSTATUS_CONTENTDISPOSITIONATTACH
,
135 BINDSTATUS_FILTERREPORTMIMETYPE
,
136 BINDSTATUS_CLSIDCANINSTANTIATE
,
137 BINDSTATUS_IUNKNOWNAVAILABLE
,
138 BINDSTATUS_DIRECTBIND
,
139 BINDSTATUS_RAWMIMETYPE
,
140 BINDSTATUS_PROXYDETECTING
,
141 BINDSTATUS_ACCEPTRANGES
144 #define MK_S_ASYNCHRONOUS 0x000401E8
145 #define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS
147 #define INET_E_ERROR_FIRST 0x800C0002L
148 #define INET_E_INVALID_URL 0x800C0002L
149 #define INET_E_NO_SESSION 0x800C0003L
150 #define INET_E_CANNOT_CONNECT 0x800C0004L
151 #define INET_E_RESOURCE_NOT_FOUND 0x800C0005L
152 #define INET_E_OBJECT_NOT_FOUND 0x800C0006L
153 #define INET_E_DATA_NOT_AVAILABLE 0x800C0007L
154 #define INET_E_DOWNLOAD_FAILURE 0x800C0008L
155 #define INET_E_AUTHENTICATION_REQUIRED 0x800C0009L
156 #define INET_E_NO_VALID_MEDIA 0x800C000AL
157 #define INET_E_CONNECTION_TIMEOUT 0x800C000BL
158 #define INET_E_INVALID_REQUEST 0x800C000CL
159 #define INET_E_UNKNOWN_PROTOCOL 0x800C000DL
160 #define INET_E_SECURITY_PROBLEM 0x800C000EL
161 #define INET_E_CANNOT_LOAD_DATA 0x800C000FL
162 #define INET_E_CANNOT_INSTANTIATE_OBJECT 0x800C0010L
163 #define INET_E_QUERYOPTION_UNKNOWN 0x800C0013L
164 #define INET_E_REDIRECT_FAILED 0x800C0014L
165 #define INET_E_REDIRECT_TO_DIR 0x800C0015L
166 #define INET_E_CANNOT_LOCK_REQUEST 0x800C0016L
167 #define INET_E_ERROR_LAST INET_E_REDIRECT_TO_DIR
170 /*****************************************************************************
173 #define INTERFACE IBinding
174 #define IBinding_METHODS \
176 STDMETHOD(Abort)(THIS) PURE; \
177 STDMETHOD(Suspend)(THIS) PURE; \
178 STDMETHOD(Resume)(THIS) PURE; \
179 STDMETHOD(SetPriority)(THIS_ LONG nPriority) PURE; \
180 STDMETHOD(GetPriority)(THIS_ LONG *pnPriority) PURE; \
181 STDMETHOD(GetBindResult)(THIS_ CLSID *pclsidProtocol, DWORD *pdwResult, LPOLESTR *pszResult, DWORD *pdwReserved) PURE;
182 ICOM_DEFINE(IBinding
,IUnknown
)
186 /*** IUnknown methods ***/
187 #define IBinding_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
188 #define IBinding_AddRef(p) (p)->lpVtbl->AddRef(p)
189 #define IBinding_Release(p) (p)->lpVtbl->Release(p)
190 /*** IBinding methods ***/
191 #define IBinding_Abort(p) (p)->lpVtbl->Abort(p)
192 #define IBinding_Suspend(p) (p)->lpVtbl->Suspend(p)
193 #define IBinding_Resume(p) (p)->lpVtbl->Resume(p)
194 #define IBinding_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
195 #define IBinding_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a)
196 #define IBinding_GetBindResult(p,a,b,c,d) (p)->lpVtbl->GetBindResult(p,a,b,c,d)
199 /*****************************************************************************
200 * IBindStatusCallback interface
202 #define INTERFACE IBindStatusCallback
203 #define IBindStatusCallback_METHODS \
205 STDMETHOD(OnStartBinding)(THIS_ DWORD dwReserved, IBinding *pib) PURE; \
206 STDMETHOD(GetPriority)(THIS_ LONG *pnPriority) PURE; \
207 STDMETHOD(OnLowResource)(THIS) PURE; \
208 STDMETHOD(OnProgress)(THIS_ ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) PURE; \
209 STDMETHOD(OnStopBinding)(THIS_ HRESULT hresult, LPCWSTR szError) PURE; \
210 STDMETHOD(GetBindInfo)(THIS_ DWORD *grfBINDF, BINDINFO *pbindinfo) PURE; \
211 STDMETHOD(OnDataAvailable)(THIS_ DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) PURE; \
212 STDMETHOD(OnObjectAvailable)(THIS_ REFIID iid, IUnknown *punk) PURE;
213 ICOM_DEFINE(IBindStatusCallback
,IUnknown
)
217 /*** IUnknown methods ***/
218 #define IBindStatusCallback_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
219 #define IBindStatusCallback_AddRef(p) (p)->lpVtbl->AddRef(p)
220 #define IBindStatusCallback_Release(p) (p)->lpVtbl->Release(p)
221 /*** IBindStatusCallback methods ***/
222 #define IBindStatusCallback_OnStartBinding(p,a,b) (p)->lpVtbl->OnStartBinding(p,a,b)
223 #define IBindStatusCallback_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a)
224 #define IBindStatusCallback_OnLowResource(p) (p)->lpVtbl->OnLowResource(p)
225 #define IBindStatusCallback_OnProgress(p,a,b,c,d) (p)->lpVtbl->OnProgress(p,a,b,c,d)
226 #define IBindStatusCallback_OnStopBinding(p,a,b) (p)->lpVtbl->OnStopBinding(p,a,b)
227 #define IBindStatusCallback_GetBindInfo(p,a,b) (p)->lpVtbl->GetBindInfo(p,a,b)
228 #define IBindStatusCallback_OnDataAvailable(p,a,b,c,d) (p)->lpVtbl->OnDataAvailable(p,a,b,c,d)
229 #define IBindStatusCallback_OnObjectAvailable(p,a,b) (p)->lpVtbl->OnObjectAvailable(p,a,b)
232 /*****************************************************************************
233 * IBindHost interface
235 #define INTERFACE IBindHost
236 #define IBindHost_METHODS \
238 STDMETHOD(CreateMoniker)(THIS_ LPOLESTR szName, IBindCtx *pBC, IMoniker **ppmk, DWORD dwReserved) PURE; \
239 STDMETHOD(MonikerBindToStorage)(THIS_ IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC, REFIID riid, LPVOID *ppvObj) PURE; \
240 STDMETHOD(MonikerBindToObject)(THIS_ IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC, REFIID riid, LPVOID *ppvObj) PURE;
241 ICOM_DEFINE(IBindHost
,IUnknown
)
245 /*** IUnknown methods ***/
246 #define IBindHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
247 #define IBindHost_AddRef(p) (p)->lpVtbl->AddRef(p)
248 #define IBindHost_Release(p) (p)->lpVtbl->Release(p)
249 /*** IBindHost methods ***/
250 #define IBindHost_CreateMoniker(p,a,b,c,d) (p)->lpVtbl->CreateMoniker(p,a,b,c,d)
251 #define IBindHost_MonikerBindToStorage(p,a,b,c,d,e) (p)->lpVtbl->MonikerBindToStorage(p,a,b,c,d,e)
252 #define IBindHost_MonikerBindToObject(p,a,b,c,d,e) (p)->lpVtbl->MonikerBindToObject(p,a,b,c,d,e)
255 /*** IUnknown methods ***/
256 typedef enum _tagQUERYOPTION
{
257 QUERY_EXPIRATION_DATE
= 1,
258 QUERY_TIME_OF_LAST_CHANGE
,
259 QUERY_CONTENT_ENCODING
,
266 QUERY_IS_INSTALLEDENTRY
,
267 QUERY_IS_CACHED_OR_MAPPED
,
273 /*****************************************************************************
274 * IWinInetInfo interface
276 #define INTERFACE IWinInetInfo
277 #define IWinInetInfo_METHODS \
279 STDMETHOD(QueryOption)(THIS_ DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf) PURE;
280 ICOM_DEFINE(IWinInetInfo
,IUnknown
)
284 /*** IUnknown methods ***/
285 #define IWinInetInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
286 #define IWinInetInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
287 #define IWinInetInfo_Release(p) (p)->lpVtbl->Release(p)
288 /*** IWinInetInfo methods ***/
289 #define IWinInetInfo_QueryOption(p,a,b,c) (p)->lpVtbl->QueryOption(p,a,b,c)
292 /*****************************************************************************
293 * IWinInetHttpInfo interface
295 #define INTERFACE IWinInetHttpInfo
296 #define IWinInetHttpInfo_METHODS \
297 IWinInetInfo_METHODS \
298 STDMETHOD(QueryInfo)(THIS_ DWORD dwOption, LPVOID pBuffer, DWORD *pcbBuf, DWORD *pdwFlags, DWORD *pdwReserved) PURE;
299 ICOM_DEFINE(IWinInetHttpInfo
,IWinInetInfo
)
303 /*** IUnknown methods ***/
304 #define IWinInetHttpInfo_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
305 #define IWinInetHttpInfo_AddRef(p) (p)->lpVtbl->AddRef(p)
306 #define IWinInetHttpInfo_Release(p) (p)->lpVtbl->Release(p)
307 /*** IWinInetHttpInfo methods ***/
308 #define IWinInetHttpInfo_QueryInfo(p,a,b,c,d,e) (p)->lpVtbl->QueryInfo(p,a,b,c,d,e)
311 HRESULT WINAPI
CreateURLMoniker(IMoniker
*pmkContext
, LPCWSTR szURL
, IMoniker
**ppmk
);
312 HRESULT WINAPI
RegisterBindStatusCallback(IBindCtx
*pbc
, IBindStatusCallback
*pbsc
, IBindStatusCallback
**ppbsc
, DWORD dwReserved
);
313 HRESULT WINAPI
CompareSecurityIds(BYTE
*,DWORD
,BYTE
*,DWORD
,DWORD
);
317 #endif /* defined(__cplusplus) */
319 #endif /* __WINE_URLMON_H */