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)
44 task =
This->task_queue_head;
46 This->task_queue_head = task->next;
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) {
87 {
'U',
'R',
'L',
' ',
'M',
'o',
'n',
'i',
'k',
'e',
'r',
' ',
88 'N',
'o',
't',
'i',
'f',
'i',
'c',
'a',
't',
'i',
'o',
'n',
' ',
'W',
'i',
'n',
'd',
'o',
'w',0};
153 if(!--
data->notif_hwnd_cnt) {
168 if(
This->task_queue_tail) {
169 This->task_queue_tail->next = task;
170 This->task_queue_tail = task;
172 This->task_queue_tail =
This->task_queue_head = task;
173 do_post = !
This->continue_call;
179 IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
199 hres = IInternetProtocol_QueryInterface(
mime_filter, &IID_IInternetProtocolSink, (
void**)&
This->protocol_sink_handler);
201 This->protocol_sink_handler = &
This->default_protocol_handler.IInternetProtocolSink_iface;
208 filter_data.
pProtocol = &
This->default_protocol_handler.IInternetProtocol_iface;
209 hres = IInternetProtocol_Start(
mime_filter,
This->mime, &
This->default_protocol_handler.IInternetProtocolSink_iface,
210 &
This->IInternetBindInfo_iface, PI_FILTER_MODE|PI_FORCE_ASYNC,
213 IInternetProtocolSink_Release(
This->protocol_sink_handler);
214 IInternetProtocol_Release(
This->protocol_handler);
215 This->protocol_sink_handler = &
This->default_protocol_handler.IInternetProtocolSink_iface;
216 This->protocol_handler = &
This->default_protocol_handler.IInternetProtocol_iface;
221 IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_LOADINGMIMEHANDLER,
NULL);
234 if(
This->protocol_handler==&
This->default_protocol_handler.IInternetProtocol_iface
241 FIXME(
"MIME filter failed: %08x\n",
hres);
244 if(
This->reported_mime || verified || !(
This->pi & PI_MIMEVERIFICATION)) {
246 IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_MIMETYPEAVAILABLE,
mime);
262 *
ppv = &
This->IInternetProtocolEx_iface;
264 TRACE(
"(%p)->(IID_IInternetProtocolRoot %p)\n",
This,
ppv);
265 *
ppv = &
This->IInternetProtocolEx_iface;
268 *
ppv = &
This->IInternetProtocolEx_iface;
270 TRACE(
"(%p)->(IID_IInternetProtocolEx %p)\n",
This,
ppv);
271 *
ppv = &
This->IInternetProtocolEx_iface;
274 *
ppv = &
This->IInternetBindInfo_iface;
277 *
ppv = &
This->IInternetPriority_iface;
282 *
ppv = &
This->IServiceProvider_iface;
284 TRACE(
"(%p)->(IID_IInternetProtocolSink %p)\n",
This,
ppv);
285 *
ppv = &
This->IInternetProtocolSink_iface;
286 }
else if(
This->protocol_unk) {
313 IInternetProtocol_Release(
This->protocol);
316 if(
This->protocol_handler &&
This->protocol_handler != &
This->default_protocol_handler.IInternetProtocol_iface) {
317 IInternetProtocol_Release(
This->protocol_handler);
318 This->protocol_handler = &
This->default_protocol_handler.IInternetProtocol_iface;
320 if(
This->protocol_sink_handler &&
321 This->protocol_sink_handler != &
This->default_protocol_handler.IInternetProtocolSink_iface) {
322 IInternetProtocolSink_Release(
This->protocol_sink_handler);
323 This->protocol_sink_handler = &
This->default_protocol_handler.IInternetProtocolSink_iface;
325 if(
This->protocol_unk) {
326 IUnknown_Release(
This->protocol_unk);
340 if(
This->redirect_callback)
341 IBindCallbackRedirect_Release(
This->redirect_callback);
343 IInternetBindInfo_Release(
This->bind_info);
345 IUri_Release(
This->uri);
352 This->section.DebugInfo->Spare[0] = 0;
379 hres = IInternetProtocolEx_StartEx(&
This->IInternetProtocolEx_iface,
uri, pOIProtSink,
390 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
392 return IInternetProtocol_Continue(
This->protocol_handler, pProtocolData);
402 return IInternetProtocol_Abort(
This->protocol_handler, hrReason,
dwOptions);
411 return IInternetProtocol_Terminate(
This->protocol_handler,
dwOptions);
433 TRACE(
"(%p)->(%p %u %p)\n",
This, pv,
cb, pcbRead);
437 return IInternetProtocol_Read(
This->protocol_handler, pv,
cb, pcbRead);
444 FIXME(
"(%p)->(%d %d %p)\n",
This, dlibMove.
u.LowPart, dwOrigin, plibNewPosition);
454 return IInternetProtocol_LockRequest(
This->protocol_handler,
dwOptions);
463 return IInternetProtocol_UnlockRequest(
This->protocol_handler);
480 TRACE(
"(%p)->(%p %p %p %08x %p)\n",
This, pUri, pOIProtSink, pOIBindInfo, grfPI,
dwReserved);
482 if(!pUri || !pOIProtSink || !pOIBindInfo)
489 IUri_Release(
This->uri);
494 hres = IInternetProtocolSink_QueryInterface(pOIProtSink, &IID_IServiceProvider,
499 &IID_IInternetProtocol, (
void**)&
protocol);
513 hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetProtocol, (
void**)&
protocol);
515 This->protocol_unk = protocol_unk;
517 IUnknown_Release(protocol_unk);
520 hres = IClassFactory_CreateInstance(
cf,
NULL, &IID_IInternetProtocol, (
void**)&
protocol);
522 IClassFactory_Release(
cf);
528 IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_PROTOCOLCLASSID, clsid_str);
531 This->protocol_unk = protocol_unk;
539 hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetPriority, (
void**)&
priority);
541 IInternetPriority_SetPriority(
priority,
This->priority);
542 IInternetPriority_Release(
priority);
545 hres = IUnknown_QueryInterface(protocol_unk, &IID_IInternetProtocolEx, (
void**)&protocolex);
547 hres = IInternetProtocolEx_StartEx(protocolex, pUri, &
This->IInternetProtocolSink_iface,
548 &
This->IInternetBindInfo_iface, 0,
NULL);
549 IInternetProtocolEx_Release(protocolex);
551 hres = IUri_GetDisplayUri(pUri, &
This->display_uri);
556 &
This->IInternetBindInfo_iface, 0, 0);
570 IInternetProtocolSink_AddRef(
sink);
573 IInternetProtocolSink_Release(prev_sink);
617 *
ppv = &
This->default_protocol_handler.IInternetProtocol_iface;
619 TRACE(
"(%p)->(IID_IInternetProtocolRoot %p)\n",
This,
ppv);
620 *
ppv = &
This->default_protocol_handler.IInternetProtocol_iface;
623 *
ppv = &
This->default_protocol_handler.IInternetProtocol_iface;
625 TRACE(
"(%p)->(IID_IInternetProtocolSink %p)\n",
This,
ppv);
626 *
ppv = &
This->default_protocol_handler.IInternetProtocolSink_iface;
630 IInternetProtocol_AddRef(iface);
641 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
647 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
654 ERR(
"Should not be called\n");
664 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
667 if(!
This->protocol) {
668 if(!
This->protocol_unk)
670 hres = IUnknown_QueryInterface(
This->protocol_unk, &IID_IInternetProtocol, (
void**)&
protocol);
679 IInternetProtocol_Release(
protocol);
690 if(
This->protocol && !
This->reported_result)
691 return IInternetProtocol_Abort(
This->protocol, hrReason,
dwOptions);
702 if(!
This->reported_result)
706 IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
709 IInternetProtocol_Terminate(
This->protocol, 0);
711 if (
This->protocol_unk) {
712 IInternetProtocol_Release(
This->protocol);
719 if(
This->bind_info) {
720 IInternetBindInfo_Release(
This->bind_info);
724 if(
This->redirect_callback) {
725 IBindCallbackRedirect_Release(
This->redirect_callback);
729 IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
754 TRACE(
"(%p)->(%p %u %p)\n",
This, pv,
cb, pcbRead);
775 if(!
This->protocol &&
This->protocol_unk) {
776 hres = IUnknown_QueryInterface(
This->protocol_unk, &IID_IInternetProtocol,
785 This->continue_call++;
788 This->continue_call--;
792 IInternetProtocol_Release(
protocol);
803 FIXME(
"(%p)->(%d %d %p)\n",
This, dlibMove.
u.LowPart, dwOrigin, plibNewPosition);
813 return IInternetProtocol_LockRequest(
This->protocol,
dwOptions);
822 return IInternetProtocol_UnlockRequest(
This->protocol);
850 return IInternetProtocol_QueryInterface(&
This->default_protocol_handler.IInternetProtocol_iface,
857 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
863 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
867 PROTOCOLDATA *pProtocolData)
871 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
873 if(!
This->protocol_sink) {
874 IInternetProtocol_Continue(
This->protocol_handler, pProtocolData);
878 return IInternetProtocolSink_Switch(
This->protocol_sink, pProtocolData);
888 if(!
This->protocol_sink)
892 case BINDSTATUS_FINDINGRESOURCE:
893 case BINDSTATUS_CONNECTING:
894 case BINDSTATUS_REDIRECTING:
895 case BINDSTATUS_SENDINGREQUEST:
896 case BINDSTATUS_CACHEFILENAMEAVAILABLE:
897 case BINDSTATUS_DIRECTBIND:
898 case BINDSTATUS_ACCEPTRANGES:
899 case BINDSTATUS_DECODING:
900 IInternetProtocolSink_ReportProgress(
This->protocol_sink,
status_code, status_text);
903 case BINDSTATUS_BEGINDOWNLOADDATA:
904 IInternetProtocolSink_ReportData(
This->protocol_sink,
This->bscf,
This->progress,
This->progress_max);
907 case BINDSTATUS_MIMETYPEAVAILABLE:
911 case BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE:
931 This->progress_max = progress_max;
933 if(!
This->protocol_sink)
936 if((
This->pi & PI_MIMEVERIFICATION) && !
This->reported_mime) {
945 This->continue_call++;
949 This->continue_call--;
973 bscf = BSCF_FIRSTDATANOTIFICATION;
975 bscf |= BSCF_LASTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE;
977 if(!
This->reported_mime) {
980 hres = IUri_GetRawUri(
This->uri, &raw_uri);
994 if(
This->protocol_sink)
995 IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_MIMETYPEAVAILABLE,
This->mime);
999 if(!
This->protocol_sink)
1002 return IInternetProtocolSink_ReportData(
This->protocol_sink, bscf,
progress, progress_max);
1009 if(
This->redirect_callback) {
1011 IBindCallbackRedirect_Redirect(
This->redirect_callback,
url, &cancel);
1013 return INET_E_REDIRECT_FAILED;
1016 if(
This->protocol_sink) {
1017 hres = IInternetProtocolSink_ReportProgress(
This->protocol_sink, BINDSTATUS_REDIRECTING,
url);
1022 IInternetProtocol_Terminate(
This->protocol, 0);
1025 return IInternetProtocolEx_Start(&
This->IInternetProtocolEx_iface,
url,
This->protocol_sink,
This->bind_info,
This->pi, 0);
1035 if(hrResult == INET_E_REDIRECT_FAILED) {
1037 if(hrResult ==
S_OK)
1042 if(
This->protocol_sink)
1043 return IInternetProtocolSink_ReportResult(
This->protocol_sink, hrResult, dwError, szResult);
1066 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1072 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1078 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1082 DWORD *grfBINDF, BINDINFO *pbindinfo)
1087 TRACE(
"(%p)->(%p %p)\n",
This, grfBINDF, pbindinfo);
1089 hres = IInternetBindInfo_GetBindInfo(
This->bind_info, grfBINDF, pbindinfo);
1091 WARN(
"GetBindInfo failed: %08x\n",
hres);
1095 if((pbindinfo->dwOptions & BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS) && !
This->redirect_callback) {
1098 hres = IInternetProtocolSink_QueryInterface(
This->protocol_sink, &IID_IServiceProvider, (
void**)&
service_provider);
1100 hres = IServiceProvider_QueryService(
service_provider, &IID_IBindCallbackRedirect, &IID_IBindCallbackRedirect,
1101 (
void**)&
This->redirect_callback);
1106 *grfBINDF |= BINDF_FROMURLMON;
1115 TRACE(
"(%p)->(%d %p %d %p)\n",
This, ulStringType, ppwzStr, cEl, pcElFetched);
1117 return IInternetBindInfo_GetBindString(
This->bind_info, ulStringType, ppwzStr, cEl, pcElFetched);
1137 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1143 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1149 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1158 This->priority = nPriority;
1166 TRACE(
"(%p)->(%p)\n",
This, pnPriority);
1168 *pnPriority =
This->priority;
1190 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1196 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1202 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1214 IInternetProtocol_Continue(
bind->protocol_handler, task->
data);
1220 PROTOCOLDATA *pProtocolData)
1225 TRACE(
"(%p)->(%p)\n",
This, pProtocolData);
1227 TRACE(
"flags %x state %x data %p cb %u\n", pProtocolData->grfFlags, pProtocolData->dwState,
1228 pProtocolData->pData, pProtocolData->cbData);
1233 memcpy(
data, pProtocolData,
sizeof(PROTOCOLDATA));
1235 if((
This->pi&PI_APARTMENTTHREADED && pProtocolData->grfFlags&PI_FORCE_ASYNC)
1252 return IInternetProtocolSink_Switch(
This->protocol_sink_handler,
data);
1280 IInternetProtocolSink_ReportProgress(
This->protocol_sink_handler, ulStatusCode, szStatusText);
1306 IInternetProtocolSink_ReportData(
This->protocol_sink_handler,
1317 TRACE(
"(%p)->(%x %u %u)\n",
This, grfBSCF, ulProgress, ulProgressMax);
1319 if(!
This->protocol_sink)
1329 task->
bscf = grfBSCF;
1337 return IInternetProtocolSink_ReportData(
This->protocol_sink_handler,
1338 grfBSCF, ulProgress, ulProgressMax);
1353 IInternetProtocolSink_ReportResult(
This->protocol_sink_handler, task->
hres, task->
err, task->
str);
1366 if(!
This->protocol_sink)
1377 task->
hres = hrResult;
1378 task->
err = dwError;
1385 return IInternetProtocolSink_ReportResult(
This->protocol_sink_handler, hrResult, dwError, szResult);
1407 return IInternetProtocolEx_QueryInterface(&
This->IInternetProtocolEx_iface,
riid,
ppv);
1413 return IInternetProtocolEx_AddRef(&
This->IInternetProtocolEx_iface);
1419 return IInternetProtocolEx_Release(&
This->IInternetProtocolEx_iface);
1429 if(!
This->service_provider)
1432 return IServiceProvider_QueryService(
This->service_provider, guidService,
riid,
ppv);
1458 ret->protocol_handler = &
ret->default_protocol_handler.IInternetProtocol_iface;
1459 ret->protocol_sink_handler = &
ret->default_protocol_handler.IInternetProtocolSink_iface;
1461 ret->section.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": BindProtocol.section");
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
#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 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 const WCHAR wszURLMonikerNotificationWindow[]
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)
static WCHAR * heap_strdupW(const WCHAR *str)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
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
VOID WINAPI CoTaskMemFree(LPVOID ptr)
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
static HMODULE MODULEINFO DWORD cb
_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
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2307 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
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define CLASS_E_NOAGGREGATION
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)