82 TRACE(
"(%p)->(IID_IInternetProtocolRoot %p)\n",
This,
ppv);
83 *
ppv = &
This->IInternetProtocol_iface;
86 *
ppv = &
This->IInternetProtocol_iface;
88 TRACE(
"(%p)->(IID_IInternetProtocolInfo %p)\n",
This,
ppv);
89 *
ppv = &
This->IInternetProtocolInfo_iface;
134 return IUnknown_QueryInterface(
This->outer,
riid,
ppv);
140 return IUnknown_AddRef(
This->outer);
146 return IUnknown_Release(
This->outer);
151 static const WCHAR its_schema[] = {
'i',
't',
's',
':'};
152 static const WCHAR msits_schema[] = {
'm',
's',
'-',
'i',
't',
's',
':'};
153 static const WCHAR mk_schema[] = {
'm',
'k',
':',
'@',
'M',
'S',
'I',
'T',
'S',
't',
'o',
'r',
'e',
':'};
176 if(!(*
out++ = *
in++))
199 if(
in[1] !=
'.' || (
in[2] &&
in[2] !=
'/'))
216 IInternetProtocolSink_ReportResult(
sink,
hres, 0,
NULL);
241 return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
243 memset(&bindinfo, 0,
sizeof(bindinfo));
244 bindinfo.cbSize =
sizeof(BINDINFO);
245 hres = IInternetBindInfo_GetBindInfo(pOIBindInfo, &
bindf, &bindinfo);
247 WARN(
"GetBindInfo failed: %08x\n",
hres);
258 WARN(
"UrlUnescape failed: %08x\n",
hres);
265 WARN(
"invalid url\n");
273 WARN(
"Could not open chm file\n");
281 if(*object_name !=
'/' && *object_name !=
'\\') {
287 if(object_name[
len-1] ==
'/')
288 object_name[--
len] = 0;
290 for(
p=object_name; *
p;
p++) {
299 memset(&chm_object, 0,
sizeof(chm_object));
302 WARN(
"Could not resolve chm object\n");
308 IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_SENDINGREQUEST,
315 IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_MIMETYPEAVAILABLE,
mime);
320 This->chm_file = chm_file;
321 This->chm_object = chm_object;
323 hres = IInternetProtocolSink_ReportData(pOIProtSink,
324 BSCF_FIRSTDATANOTIFICATION|BSCF_DATAFULLYAVAILABLE,
327 WARN(
"ReportData failed: %08x\n",
hres);
332 hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_BEGINDOWNLOADDATA,
NULL);
340 FIXME(
"(%p)->(%p)\n",
This, pProtocolData);
380 TRACE(
"(%p)->(%p %u %p)\n",
This, pv,
cb, pcbRead);
383 return INET_E_DATA_NOT_AVAILABLE;
386 This->offset += *pcbRead;
395 FIXME(
"(%p)->(%d %d %p)\n",
This, dlibMove.
u.LowPart, dwOrigin, plibNewPosition);
437 return IInternetProtocol_QueryInterface(&
This->IInternetProtocol_iface,
riid,
ppv);
443 return IInternetProtocol_AddRef(&
This->IInternetProtocol_iface);
449 return IInternetProtocol_Release(&
This->IInternetProtocol_iface);
459 dwParseFlags, pwzResult, cchResult, pcchResult,
dwReserved);
461 switch(ParseAction) {
462 case PARSE_CANONICALIZE:
463 FIXME(
"PARSE_CANONICALIZE\n");
465 case PARSE_SECURITY_URL:
466 FIXME(
"PARSE_SECURITY_URL\n");
469 return INET_E_DEFAULT_ACTION;
486 debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult,
495 return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
497 if(
wcschr(pwzRelativeUrl,
':'))
500 if(pwzRelativeUrl[0] ==
'#') {
502 }
else if(pwzRelativeUrl[0] !=
'/') {
510 rel_len =
lstrlenW(pwzRelativeUrl)+1;
512 *pcchResult = rel_len + (base_end-pwzBaseUrl);
514 if(*pcchResult > cchResult)
517 memcpy(pwzResult, pwzBaseUrl, (base_end-pwzBaseUrl)*
sizeof(
WCHAR));
518 lstrcpyW(pwzResult + (base_end-pwzBaseUrl), pwzRelativeUrl);
567 ret->outer = outer ? outer : &
ret->IUnknown_inner;
569 *
ppv = &
ret->IUnknown_inner;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
LONGINT64 chm_retrieve_object(struct chmFile *h, struct chmUnitInfo *ui, unsigned char *buf, LONGUINT64 addr, LONGINT64 len)
int chm_resolve_object(struct chmFile *h, const WCHAR *objPath, struct chmUnitInfo *ui)
struct chmFile * chm_openW(const WCHAR *filename)
void chm_close(struct chmFile *h)
#define CHM_RESOLVE_SUCCESS
#define HeapFree(x, y, z)
static const WCHAR separator[]
static MimeHtmlProtocol * impl_from_IInternetProtocol(IInternetProtocol *iface)
static MimeHtmlProtocol * impl_from_IUnknown(IUnknown *iface)
static HRESULT report_result(MimeHtmlProtocol *protocol, HRESULT result)
static MimeHtmlProtocol * impl_from_IInternetProtocolInfo(IInternetProtocolInfo *iface)
static HRESULT WINAPI ITSProtocol_Read(IInternetProtocol *iface, void *pv, ULONG cb, ULONG *pcbRead)
HRESULT ITSProtocol_create(IUnknown *outer, void **ppv)
static HRESULT WINAPI ITSProtocol_Resume(IInternetProtocol *iface)
static HRESULT WINAPI ITSProtocol_UnlockRequest(IInternetProtocol *iface)
static HRESULT WINAPI ITSProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
static const IInternetProtocolInfoVtbl ITSProtocolInfoVtbl
static HRESULT WINAPI ITSInternetProtocol_QueryInterface(IInternetProtocol *iface, REFIID riid, void **ppv)
static const IUnknownVtbl ITSProtocolUnkVtbl
static void release_chm(ITSProtocol *This)
static HRESULT WINAPI ITSProtocol_LockRequest(IInternetProtocol *iface, DWORD dwOptions)
static const IInternetProtocolVtbl ITSProtocolVtbl
static HRESULT WINAPI ITSProtocol_Suspend(IInternetProtocol *iface)
static void remove_dot_segments(WCHAR *path)
static ULONG WINAPI ITSProtocol_Release(IUnknown *iface)
static HRESULT WINAPI ITSProtocol_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static ULONG WINAPI ITSProtocol_AddRef(IUnknown *iface)
static HRESULT WINAPI ITSProtocol_Abort(IInternetProtocol *iface, HRESULT hrReason, DWORD dwOptions)
static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface, LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved)
static LPCWSTR skip_schema(LPCWSTR url)
static HRESULT WINAPI ITSProtocol_Terminate(IInternetProtocol *iface, DWORD dwOptions)
static ULONG WINAPI ITSProtocolInfo_Release(IInternetProtocolInfo *iface)
static ULONG WINAPI ITSInternetProtocol_AddRef(IInternetProtocol *iface)
static HRESULT WINAPI ITSProtocolInfo_QueryInterface(IInternetProtocolInfo *iface, REFIID riid, void **ppv)
static HRESULT WINAPI ITSProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved)
static HRESULT WINAPI ITSProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwCompareFlags)
static HRESULT WINAPI ITSProtocol_Seek(IInternetProtocol *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
static ULONG WINAPI ITSInternetProtocol_Release(IInternetProtocol *iface)
static HRESULT WINAPI ITSProtocolInfo_QueryInfo(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, QUERYOPTION QueryOption, DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD *pcbBuf, DWORD dwReserved)
static ULONG WINAPI ITSProtocolInfo_AddRef(IInternetProtocolInfo *iface)
static HRESULT WINAPI ITSProtocol_Continue(IInternetProtocol *iface, PROTOCOLDATA *pProtocolData)
HRESULT WINAPI UrlUnescapeW(LPWSTR pszUrl, LPWSTR pszUnescaped, LPDWORD pcchUnescaped, DWORD dwFlags)
GLsizei GLenum GLboolean sink
VOID WINAPI CoTaskMemFree(LPVOID ptr)
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
static void ITSS_LockModule(void)
static void ITSS_UnlockModule(void)
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 HMODULE MODULEINFO DWORD cb
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define IsEqualGUID(rguid1, rguid2)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define URL_UNESCAPE_INPLACE
IInternetProtocolInfo IInternetProtocolInfo_iface
struct chmFile * chm_file
IInternetProtocol IInternetProtocol_iface
WCHAR path[CHM_MAX_PATHLEN+1]
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2307 u
void WINAPI ReleaseBindInfo(BINDINFO *pbindinfo)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
#define STG_E_INVALIDNAME
#define STG_E_FILENOTFOUND