31#define BUFFER_SIZE 2048
32#define MIME_TEST_SIZE 255
34#define WM_MK_CONTINUE (WM_USER+101)
35#define WM_MK_RELEASE (WM_USER+102)
47 if(!
This->task_queue_head)
56 This->continue_call++;
58 This->continue_call--;
70 IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
76 if(!--
data->notif_hwnd_cnt) {
93 L"URL Moniker Notification Window",
NULL
127 L"URL Moniker Notification Window", 0, 0, 0, 0, 0,
HWND_MESSAGE,
149 if(!--
data->notif_hwnd_cnt) {
164 if(
This->task_queue_tail) {
169 do_post = !
This->continue_call;
175 IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
195 hres = IInternetProtocol_QueryInterface(
mime_filter, &IID_IInternetProtocolSink, (
void**)&
This->protocol_sink_handler);
197 This->protocol_sink_handler = &
This->default_protocol_handler.IInternetProtocolSink_iface;
204 filter_data.
pProtocol = &
This->default_protocol_handler.IInternetProtocol_iface;
205 hres = IInternetProtocol_Start(
mime_filter,
This->mime, &
This->default_protocol_handler.IInternetProtocolSink_iface,
206 &
This->IInternetBindInfo_iface, PI_FILTER_MODE|PI_FORCE_ASYNC,
209 IInternetProtocolSink_Release(
This->protocol_sink_handler);
210 IInternetProtocol_Release(
This->protocol_handler);
211 This->protocol_sink_handler = &
This->default_protocol_handler.IInternetProtocolSink_iface;
212 This->protocol_handler = &
This->default_protocol_handler.IInternetProtocol_iface;
217 IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_LOADINGMIMEHANDLER,
NULL);
230 if(
This->protocol_handler==&
This->default_protocol_handler.IInternetProtocol_iface
237 FIXME(
"MIME filter failed: %08lx\n",
hres);
240 if(
This->reported_mime || verified || !(
This->pi & PI_MIMEVERIFICATION)) {
242 IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_MIMETYPEAVAILABLE,
mime);
258 *
ppv = &
This->IInternetProtocolEx_iface;
260 TRACE(
"(%p)->(IID_IInternetProtocolRoot %p)\n",
This,
ppv);
261 *
ppv = &
This->IInternetProtocolEx_iface;
264 *
ppv = &
This->IInternetProtocolEx_iface;
266 TRACE(
"(%p)->(IID_IInternetProtocolEx %p)\n",
This,
ppv);
267 *
ppv = &
This->IInternetProtocolEx_iface;
270 *
ppv = &
This->IInternetBindInfo_iface;
273 *
ppv = &
This->IInternetPriority_iface;
278 *
ppv = &
This->IServiceProvider_iface;
280 TRACE(
"(%p)->(IID_IInternetProtocolSink %p)\n",
This,
ppv);
281 *
ppv = &
This->IInternetProtocolSink_iface;
282 }
else if(
This->protocol_unk) {
309 IInternetProtocol_Release(
This->protocol);
312 if(
This->protocol_handler &&
This->protocol_handler != &
This->default_protocol_handler.IInternetProtocol_iface) {
313 IInternetProtocol_Release(
This->protocol_handler);
314 This->protocol_handler = &
This->default_protocol_handler.IInternetProtocol_iface;
316 if(
This->protocol_sink_handler &&
317 This->protocol_sink_handler != &
This->default_protocol_handler.IInternetProtocolSink_iface) {
318 IInternetProtocolSink_Release(
This->protocol_sink_handler);
319 This->protocol_sink_handler = &
This->default_protocol_handler.IInternetProtocolSink_iface;
321 if(
This->protocol_unk) {
322 IUnknown_Release(
This->protocol_unk);
336 if(
This->redirect_callback)
337 IBindCallbackRedirect_Release(
This->redirect_callback);
339 IInternetBindInfo_Release(
This->bind_info);
341 IUri_Release(
This->uri);
348 This->section.DebugInfo->Spare[0] = 0;
375 hres = IInternetProtocolEx_StartEx(&
This->IInternetProtocolEx_iface,
uri, pOIProtSink,
386 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
388 return IInternetProtocol_Continue(
This->protocol_handler, pProtocolData);
398 return IInternetProtocol_Abort(
This->protocol_handler, hrReason,
dwOptions);
407 return IInternetProtocol_Terminate(
This->protocol_handler,
dwOptions);
429 TRACE(
"(%p)->(%p %lu %p)\n",
This, pv,
cb, pcbRead);
433 return IInternetProtocol_Read(
This->protocol_handler, pv,
cb, pcbRead);
440 FIXME(
"(%p)->(%ld %ld %p)\n",
This, dlibMove.
u.LowPart, dwOrigin, plibNewPosition);
450 return IInternetProtocol_LockRequest(
This->protocol_handler,
dwOptions);
459 return IInternetProtocol_UnlockRequest(
This->protocol_handler);
476 TRACE(
"(%p)->(%p %p %p %08lx %p)\n",
This, pUri, pOIProtSink, pOIBindInfo, grfPI,
dwReserved);
478 if(!pUri || !pOIProtSink || !pOIBindInfo)
485 IUri_Release(
This->uri);
490 hres = IInternetProtocolSink_QueryInterface(pOIProtSink, &IID_IServiceProvider,
495 &IID_IInternetProtocol, (
void**)&
protocol);
509 hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetProtocol, (
void**)&
protocol);
511 This->protocol_unk = protocol_unk;
513 IUnknown_Release(protocol_unk);
516 hres = IClassFactory_CreateInstance(
cf,
NULL, &IID_IInternetProtocol, (
void**)&
protocol);
518 IClassFactory_Release(
cf);
524 IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_PROTOCOLCLASSID, clsid_str);
527 This->protocol_unk = protocol_unk;
535 hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetPriority, (
void**)&
priority);
537 IInternetPriority_SetPriority(
priority,
This->priority);
538 IInternetPriority_Release(
priority);
541 hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetProtocolEx, (
void**)&protocolex);
543 hres = IInternetProtocolEx_StartEx(protocolex, pUri, &
This->IInternetProtocolSink_iface,
544 &
This->IInternetBindInfo_iface, 0,
NULL);
545 IInternetProtocolEx_Release(protocolex);
547 hres = IUri_GetDisplayUri(pUri, &
This->display_uri);
552 &
This->IInternetBindInfo_iface, 0, 0);
566 IInternetProtocolSink_AddRef(
sink);
569 IInternetProtocolSink_Release(prev_sink);
613 *
ppv = &
This->default_protocol_handler.IInternetProtocol_iface;
615 TRACE(
"(%p)->(IID_IInternetProtocolRoot %p)\n",
This,
ppv);
616 *
ppv = &
This->default_protocol_handler.IInternetProtocol_iface;
619 *
ppv = &
This->default_protocol_handler.IInternetProtocol_iface;
621 TRACE(
"(%p)->(IID_IInternetProtocolSink %p)\n",
This,
ppv);
622 *
ppv = &
This->default_protocol_handler.IInternetProtocolSink_iface;
626 IInternetProtocol_AddRef(iface);
637 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
643 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
650 ERR(
"Should not be called\n");
660 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
663 if(!
This->protocol) {
664 if(!
This->protocol_unk)
666 hres = IUnknown_QueryInterface(
This->protocol_unk, &IID_IInternetProtocol, (
void**)&
protocol);
675 IInternetProtocol_Release(
protocol);
686 if(
This->protocol && !
This->reported_result)
687 return IInternetProtocol_Abort(
This->protocol, hrReason,
dwOptions);
698 if(!
This->reported_result)
702 IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
705 IInternetProtocol_Terminate(
This->protocol, 0);
707 if (
This->protocol_unk) {
708 IInternetProtocol_Release(
This->protocol);
715 if(
This->bind_info) {
716 IInternetBindInfo_Release(
This->bind_info);
720 if(
This->redirect_callback) {
721 IBindCallbackRedirect_Release(
This->redirect_callback);
725 IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
750 TRACE(
"(%p)->(%p %lu %p)\n",
This, pv,
cb, pcbRead);
771 if(!
This->protocol &&
This->protocol_unk) {
772 hres = IUnknown_QueryInterface(
This->protocol_unk, &IID_IInternetProtocol,
781 This->continue_call++;
784 This->continue_call--;
788 IInternetProtocol_Release(
protocol);
799 FIXME(
"(%p)->(%ld %ld %p)\n",
This, dlibMove.
u.LowPart, dwOrigin, plibNewPosition);
809 return IInternetProtocol_LockRequest(
This->protocol,
dwOptions);
819 return IInternetProtocol_UnlockRequest(
This->protocol);
848 return IInternetProtocol_QueryInterface(&
This->default_protocol_handler.IInternetProtocol_iface,
855 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
861 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
865 PROTOCOLDATA *pProtocolData)
869 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
871 if(!
This->protocol_sink) {
872 IInternetProtocol_Continue(
This->protocol_handler, pProtocolData);
876 return IInternetProtocolSink_Switch(
This->protocol_sink, pProtocolData);
886 if(!
This->protocol_sink)
890 case BINDSTATUS_FINDINGRESOURCE:
891 case BINDSTATUS_CONNECTING:
892 case BINDSTATUS_REDIRECTING:
893 case BINDSTATUS_SENDINGREQUEST:
894 case BINDSTATUS_CACHEFILENAMEAVAILABLE:
895 case BINDSTATUS_DIRECTBIND:
896 case BINDSTATUS_ACCEPTRANGES:
897 case BINDSTATUS_DECODING:
898 IInternetProtocolSink_ReportProgress(
This->protocol_sink,
status_code, status_text);
901 case BINDSTATUS_BEGINDOWNLOADDATA:
902 IInternetProtocolSink_ReportData(
This->protocol_sink,
This->bscf,
This->progress,
This->progress_max);
905 case BINDSTATUS_MIMETYPEAVAILABLE:
909 case BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE:
925 if((
This->pi & PI_MIMEVERIFICATION) && !
This->reported_mime) {
957 bscf = BSCF_FIRSTDATANOTIFICATION;
959 bscf |= BSCF_LASTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE;
961 if(!
This->reported_mime) {
964 hres = IUri_GetRawUri(
This->uri, &raw_uri);
978 if(
This->protocol_sink)
979 IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_MIMETYPEAVAILABLE,
This->mime);
983 if(!
This->protocol_sink)
986 return IInternetProtocolSink_ReportData(
This->protocol_sink, bscf,
This->progress,
This->progress_max);
999 This->progress_max = progress_max;
1001 if(!
This->protocol_sink)
1005 This->continue_call++;
1010 This->continue_call--;
1020 if(
This->redirect_callback) {
1022 IBindCallbackRedirect_Redirect(
This->redirect_callback,
url, &cancel);
1027 if(
This->protocol_sink) {
1028 hres = IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_REDIRECTING,
url);
1033 IInternetProtocol_Terminate(
This->protocol, 0);
1036 return IInternetProtocolEx_Start(&
This->IInternetProtocolEx_iface,
url,
This->protocol_sink,
This->bind_info,
This->pi, 0);
1048 if(hrResult ==
S_OK)
1053 if(
This->protocol_sink)
1054 return IInternetProtocolSink_ReportResult(
This->protocol_sink, hrResult, dwError, szResult);
1077 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1083 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1089 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1093 DWORD *grfBINDF, BINDINFO *pbindinfo)
1098 TRACE(
"(%p)->(%p %p)\n",
This, grfBINDF, pbindinfo);
1100 hres = IInternetBindInfo_GetBindInfo(
This->bind_info, grfBINDF, pbindinfo);
1102 WARN(
"GetBindInfo failed: %08lx\n",
hres);
1106 if((pbindinfo->dwOptions & BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS) && !
This->redirect_callback) {
1109 hres = IInternetProtocolSink_QueryInterface(
This->protocol_sink, &IID_IServiceProvider, (
void**)&
service_provider);
1111 hres = IServiceProvider_QueryService(
service_provider, &IID_IBindCallbackRedirect, &IID_IBindCallbackRedirect,
1112 (
void**)&
This->redirect_callback);
1117 *grfBINDF |= BINDF_FROMURLMON;
1126 TRACE(
"(%p)->(%ld %p %ld %p)\n",
This, ulStringType, ppwzStr, cEl, pcElFetched);
1128 return IInternetBindInfo_GetBindString(
This->bind_info, ulStringType, ppwzStr, cEl, pcElFetched);
1148 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1154 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1160 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1167 TRACE(
"(%p)->(%ld)\n",
This, nPriority);
1169 This->priority = nPriority;
1177 TRACE(
"(%p)->(%p)\n",
This, pnPriority);
1179 *pnPriority =
This->priority;
1201 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1207 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1213 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1225 IInternetProtocol_Continue(
bind->protocol_handler,
task->data);
1231 PROTOCOLDATA *pProtocolData)
1236 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
1238 TRACE(
"flags %lx state %lx data %p cb %lu\n", pProtocolData->grfFlags, pProtocolData->dwState,
1239 pProtocolData->pData, pProtocolData->cbData);
1244 memcpy(
data, pProtocolData,
sizeof(PROTOCOLDATA));
1246 if((
This->pi&PI_APARTMENTTHREADED && pProtocolData->grfFlags&PI_FORCE_ASYNC)
1263 return IInternetProtocolSink_Switch(
This->protocol_sink_handler,
data);
1277 IInternetProtocolSink_ReportProgress(
This->protocol_sink_handler,
task->status_code,
task->status_text);
1291 IInternetProtocolSink_ReportProgress(
This->protocol_sink_handler, ulStatusCode, szStatusText);
1297 task->status_code = ulStatusCode;
1317 IInternetProtocolSink_ReportData(
This->protocol_sink_handler,
1328 TRACE(
"(%p)->(%lx %lu %lu)\n",
This, grfBSCF, ulProgress, ulProgressMax);
1330 if(!
This->protocol_sink)
1340 task->bscf = grfBSCF;
1341 task->progress = ulProgress;
1342 task->progress_max = ulProgressMax;
1348 return IInternetProtocolSink_ReportData(
This->protocol_sink_handler,
1349 grfBSCF, ulProgress, ulProgressMax);
1364 IInternetProtocolSink_ReportResult(
This->protocol_sink_handler,
task->hres,
task->err,
task->str);
1377 if(!
This->protocol_sink)
1388 task->hres = hrResult;
1389 task->err = dwError;
1396 return IInternetProtocolSink_ReportResult(
This->protocol_sink_handler, hrResult, dwError, szResult);
1418 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1424 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1430 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1440 if(!
This->service_provider)
1443 return IServiceProvider_QueryService(
This->service_provider, guidService,
riid,
ppv);
1469 ret->protocol_handler = &
ret->default_protocol_handler.IInternetProtocol_iface;
1470 ret->protocol_sink_handler = &
ret->default_protocol_handler.IInternetProtocolSink_iface;
1472 ret->section.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": BindProtocol.section");
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static ULONG WINAPI ProtocolHandler_AddRef(IInternetProtocol *iface)
static ULONG WINAPI ProtocolHandler_Release(IInternetProtocol *iface)
static HRESULT WINAPI BindProtocol_LockRequest(IInternetProtocolEx *iface, DWORD dwOptions)
static HRESULT WINAPI BPServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
static BindProtocol * impl_from_IInternetBindInfo(IInternetBindInfo *iface)
static HRESULT WINAPI BindProtocol_Start(IInternetProtocolEx *iface, LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved)
static HRESULT WINAPI BindProtocol_Continue(IInternetProtocolEx *iface, PROTOCOLDATA *pProtocolData)
static HRESULT WINAPI BindProtocol_Read(IInternetProtocolEx *iface, void *pv, ULONG cb, ULONG *pcbRead)
static HRESULT WINAPI ProtocolHandler_UnlockRequest(IInternetProtocol *iface)
static HRESULT WINAPI InternetPriority_QueryInterface(IInternetPriority *iface, REFIID riid, void **ppv)
static const IInternetProtocolVtbl InternetProtocolHandlerVtbl
static HRESULT handle_mime_filter(BindProtocol *This, IInternetProtocol *mime_filter)
static ULONG WINAPI ProtocolSinkHandler_AddRef(IInternetProtocolSink *iface)
static const IInternetBindInfoVtbl InternetBindInfoVtbl
static HRESULT WINAPI BindProtocol_Terminate(IInternetProtocolEx *iface, DWORD dwOptions)
static BOOL WINAPI register_notif_wnd_class(INIT_ONCE *once, void *param, void **context)
static HRESULT WINAPI BindProtocol_Resume(IInternetProtocolEx *iface)
static HRESULT WINAPI InternetPriority_SetPriority(IInternetPriority *iface, LONG nPriority)
static ULONG WINAPI BindInfo_Release(IInternetBindInfo *iface)
void unregister_notif_wnd_class(void)
static HRESULT WINAPI BPInternetProtocolSink_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppv)
static BindProtocol * impl_from_IInternetPriority(IInternetPriority *iface)
static void mime_available(BindProtocol *This, LPCWSTR mime, BOOL verified)
static HRESULT WINAPI InternetPriority_GetPriority(IInternetPriority *iface, LONG *pnPriority)
static HRESULT WINAPI ProtocolSinkHandler_ReportData(IInternetProtocolSink *iface, DWORD bscf, ULONG progress, ULONG progress_max)
static HRESULT WINAPI BindProtocol_StartEx(IInternetProtocolEx *iface, IUri *pUri, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE *dwReserved)
static void release_protocol_handler(BindProtocol *This)
static void push_task(BindProtocol *This, task_header_t *task, task_proc_t proc)
static ULONG WINAPI InternetPriority_Release(IInternetPriority *iface)
static HRESULT report_data(BindProtocol *This)
static HRESULT WINAPI ProtocolSinkHandler_ReportProgress(IInternetProtocolSink *iface, ULONG status_code, LPCWSTR status_text)
static ULONG WINAPI BPServiceProvider_AddRef(IServiceProvider *iface)
static BindProtocol * impl_from_IInternetProtocolSink(IInternetProtocolSink *iface)
static HRESULT WINAPI ProtocolSinkHandler_Switch(IInternetProtocolSink *iface, PROTOCOLDATA *pProtocolData)
static HRESULT handle_redirect(BindProtocol *This, const WCHAR *url)
static BindProtocol * impl_from_IInternetProtocolSinkHandler(IInternetProtocolSink *iface)
static void report_result_proc(BindProtocol *This, task_header_t *t)
static void switch_proc(BindProtocol *bind, task_header_t *t)
static HRESULT WINAPI ProtocolHandler_Start(IInternetProtocol *iface, LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved)
HRESULT create_binding_protocol(BindProtocol **protocol)
static HRESULT WINAPI BPInternetProtocolSink_ReportResult(IInternetProtocolSink *iface, HRESULT hrResult, DWORD dwError, LPCWSTR szResult)
static HRESULT WINAPI ProtocolHandler_Abort(IInternetProtocol *iface, HRESULT hrReason, DWORD dwOptions)
static HRESULT WINAPI ProtocolHandler_LockRequest(IInternetProtocol *iface, DWORD dwOptions)
static HRESULT WINAPI ProtocolHandler_Terminate(IInternetProtocol *iface, DWORD dwOptions)
static HRESULT WINAPI BindProtocol_Abort(IInternetProtocolEx *iface, HRESULT hrReason, DWORD dwOptions)
static BindProtocol * impl_from_IServiceProvider(IServiceProvider *iface)
static HRESULT WINAPI BPInternetProtocolSink_Switch(IInternetProtocolSink *iface, PROTOCOLDATA *pProtocolData)
static HRESULT WINAPI BindInfo_QueryInterface(IInternetBindInfo *iface, REFIID riid, void **ppv)
static const IInternetProtocolSinkVtbl InternetProtocolSinkVtbl
static HRESULT WINAPI BindProtocol_Suspend(IInternetProtocolEx *iface)
static HRESULT WINAPI BindProtocol_Seek(IInternetProtocolEx *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
static HRESULT WINAPI BindInfo_GetBindInfo(IInternetBindInfo *iface, DWORD *grfBINDF, BINDINFO *pbindinfo)
static const IInternetProtocolExVtbl BindProtocolVtbl
static HRESULT WINAPI ProtocolHandler_QueryInterface(IInternetProtocol *iface, REFIID riid, void **ppv)
static void process_tasks(BindProtocol *This)
static HRESULT WINAPI BindProtocol_UnlockRequest(IInternetProtocolEx *iface)
static HRESULT WINAPI BPServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
void(* task_proc_t)(BindProtocol *, task_header_t *)
static void report_data_proc(BindProtocol *This, task_header_t *t)
static BindProtocol * impl_from_IInternetProtocol(IInternetProtocol *iface)
static HRESULT WINAPI ProtocolHandler_Seek(IInternetProtocol *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
static ULONG WINAPI BindProtocol_Release(IInternetProtocolEx *iface)
static void on_progress_proc(BindProtocol *This, task_header_t *t)
static LRESULT WINAPI notif_wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
void set_binding_sink(BindProtocol *This, IInternetProtocolSink *sink, IInternetBindInfo *bind_info)
static ULONG WINAPI ProtocolSinkHandler_Release(IInternetProtocolSink *iface)
static HRESULT WINAPI ProtocolSinkHandler_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppvObject)
void release_notif_hwnd(HWND hwnd)
static ATOM notif_wnd_class
static ULONG WINAPI BPInternetProtocolSink_Release(IInternetProtocolSink *iface)
static BindProtocol * impl_from_IInternetProtocolEx(IInternetProtocolEx *iface)
HWND get_notif_hwnd(void)
static HRESULT WINAPI ProtocolHandler_Suspend(IInternetProtocol *iface)
static HRESULT WINAPI BPInternetProtocolSink_ReportProgress(IInternetProtocolSink *iface, ULONG ulStatusCode, LPCWSTR szStatusText)
static const IInternetPriorityVtbl InternetPriorityVtbl
static ULONG WINAPI BPInternetProtocolSink_AddRef(IInternetProtocolSink *iface)
static ULONG WINAPI InternetPriority_AddRef(IInternetPriority *iface)
static HRESULT WINAPI ProtocolHandler_Continue(IInternetProtocol *iface, PROTOCOLDATA *pProtocolData)
static HRESULT WINAPI ProtocolSinkHandler_ReportResult(IInternetProtocolSink *iface, HRESULT hrResult, DWORD dwError, LPCWSTR szResult)
static const IServiceProviderVtbl ServiceProviderVtbl
static HRESULT WINAPI BindInfo_GetBindString(IInternetBindInfo *iface, ULONG ulStringType, LPOLESTR *ppwzStr, ULONG cEl, ULONG *pcElFetched)
static const IInternetProtocolSinkVtbl InternetProtocolSinkHandlerVtbl
static ULONG WINAPI BindInfo_AddRef(IInternetBindInfo *iface)
static HRESULT WINAPI BPInternetProtocolSink_ReportData(IInternetProtocolSink *iface, DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax)
static BOOL is_apartment_thread(BindProtocol *This)
static BOOL do_direct_notif(BindProtocol *This)
static HRESULT WINAPI ProtocolHandler_Resume(IInternetProtocol *iface)
static HRESULT WINAPI BindProtocol_QueryInterface(IInternetProtocolEx *iface, REFIID riid, void **ppv)
static ULONG WINAPI BPServiceProvider_Release(IServiceProvider *iface)
static ULONG WINAPI BindProtocol_AddRef(IInternetProtocolEx *iface)
static HRESULT WINAPI ProtocolHandler_Read(IInternetProtocol *iface, void *pv, ULONG cb, ULONG *pcbRead)
HRESULT WINAPI StringFromCLSID(REFCLSID clsid, LPOLESTR *str)
void WINAPI CoTaskMemFree(void *ptr)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
static wchar_t * wcsdup(const wchar_t *str)
IInternetProtocol * get_mime_filter(LPCWSTR mime)
HRESULT get_protocol_handler(IUri *uri, CLSID *clsid, IClassFactory **ret)
HRESULT WINAPI CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI)
#define InterlockedExchangePointer(Target, Value)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum GLboolean sink
HRESULT WINAPI FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR *ppwzMimeOut, DWORD dwReserved)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static IServiceProvider service_provider
static IInternetBindInfo bind_info
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define IsEqualGUID(rguid1, rguid2)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
IInternetProtocol IInternetProtocol_iface
IInternetProtocolSink IInternetProtocolSink_iface
IInternetProtocol * pProtocol
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2527 u
struct _tagPROTOCOLFILTERDATA PROTOCOLFILTERDATA
tls_data_t * get_tls_data(void)
const char * debugstr_bindstatus(ULONG status)
static void URLMON_LockModule(void)
static void URLMON_UnlockModule(void)
DWORD WINAPI GetCurrentThreadId(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define INIT_ONCE_STATIC_INIT
#define CLASS_E_NOAGGREGATION
#define INET_E_REDIRECT_FAILED
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
#define MAKEINTRESOURCEW(i)
BOOL WINAPI DestroyWindow(_In_ HWND)