static HRESULT WINAPI FileMonikerCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) { FileMonikerImpl* newFileMoniker; HRESULT hr; static const WCHAR wszEmpty[] = { 0 }; TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); *ppv = NULL; if (pUnk) return CLASS_E_NOAGGREGATION; newFileMoniker = HeapAlloc(GetProcessHeap(), 0, sizeof(FileMonikerImpl)); if (!newFileMoniker) return E_OUTOFMEMORY; hr = FileMonikerImpl_Construct(newFileMoniker, wszEmpty); if (SUCCEEDED(hr)) hr = IMoniker_QueryInterface(&newFileMoniker->IMoniker_iface, riid, ppv); if (FAILED(hr)) HeapFree(GetProcessHeap(),0,newFileMoniker); return hr; }
/****************************************************************************** * CreateFileMoniker (OLE32.@) ******************************************************************************/ HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk) { FileMonikerImpl* newFileMoniker; HRESULT hr; TRACE("(%s,%p)\n",debugstr_w(lpszPathName),ppmk); if (!ppmk) return E_POINTER; if(!lpszPathName) return MK_E_SYNTAX; *ppmk=NULL; newFileMoniker = HeapAlloc(GetProcessHeap(), 0, sizeof(FileMonikerImpl)); if (!newFileMoniker) return E_OUTOFMEMORY; hr = FileMonikerImpl_Construct(newFileMoniker,lpszPathName); if (SUCCEEDED(hr)) hr = IMoniker_QueryInterface(&newFileMoniker->IMoniker_iface,&IID_IMoniker,(void**)ppmk); else HeapFree(GetProcessHeap(),0,newFileMoniker); return hr; }
void set_current_mon(HTMLOuterWindow *This, IMoniker *mon, DWORD flags) { IUriContainer *uri_container; IUri *uri = NULL; HRESULT hres; if(This->mon) { if(This->doc_obj && !(flags & (BINDING_REPLACE|BINDING_REFRESH))) { if(This == This->doc_obj->basedoc.window) notify_travellog_update(This->doc_obj); else TRACE("Skipping travellog update for frame navigation.\n"); } IMoniker_Release(This->mon); This->mon = NULL; } This->load_flags = flags; if(!mon) return; IMoniker_AddRef(mon); This->mon = mon; hres = IMoniker_QueryInterface(mon, &IID_IUriContainer, (void**)&uri_container); if(SUCCEEDED(hres)) { hres = IUriContainer_GetIUri(uri_container, &uri); IUriContainer_Release(uri_container); if(hres != S_OK) { WARN("GetIUri failed: %08x\n", hres); uri = NULL; } } if(!uri) { WCHAR *url; hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url); if(SUCCEEDED(hres)) { hres = create_uri(url, 0, &uri); if(FAILED(hres)) { WARN("CrateUri failed: %08x\n", hres); set_current_uri(This, NULL); This->url = SysAllocString(url); CoTaskMemFree(url); return; } CoTaskMemFree(url); }else { WARN("GetDisplayName failed: %08x\n", hres); } } set_current_uri(This, uri); if(uri) IUri_Release(uri); set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT); }
/******************************************************************************* * ClassMonikerIROTData_QueryInterface *******************************************************************************/ static HRESULT WINAPI ClassMonikerROTData_QueryInterface(IROTData *iface,REFIID riid,VOID** ppvObject) { ClassMoniker *This = impl_from_IROTData(iface); TRACE("(%p, %s, %p)\n", iface, debugstr_guid(riid), ppvObject); return IMoniker_QueryInterface(&This->IMoniker_iface, riid, ppvObject); }
void set_current_mon(HTMLOuterWindow *This, IMoniker *mon) { IUriContainer *uri_container; IUri *uri = NULL; HRESULT hres; if(This->mon) { if(This->doc_obj) notify_travellog_update(This->doc_obj); IMoniker_Release(This->mon); This->mon = NULL; } if(!mon) return; IMoniker_AddRef(mon); This->mon = mon; hres = IMoniker_QueryInterface(mon, &IID_IUriContainer, (void**)&uri_container); if(SUCCEEDED(hres)) { hres = IUriContainer_GetIUri(uri_container, &uri); IUriContainer_Release(uri_container); if(hres != S_OK) { WARN("GetIUri failed: %08x\n", hres); uri = NULL; } } if(!uri) { WCHAR *url; hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url); if(SUCCEEDED(hres)) { hres = CreateUri(url, 0, 0, &uri); if(FAILED(hres)) { WARN("CrateUri failed: %08x\n", hres); set_current_uri(This, NULL); This->url = SysAllocString(url); CoTaskMemFree(url); return; } CoTaskMemFree(url); }else { WARN("GetDisplayName failed: %08x\n", hres); } } set_current_uri(This, uri); if(uri) IUri_Release(uri); set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT); }
/*********************************************************************** * IsAsyncMoniker (URLMON.@) */ HRESULT WINAPI IsAsyncMoniker(IMoniker *pmk) { IUnknown *am; TRACE("(%p)\n", pmk); if(!pmk) return E_INVALIDARG; if(SUCCEEDED(IMoniker_QueryInterface(pmk, &IID_IAsyncMoniker, (void**)&am))) { IUnknown_Release(am); return S_OK; } return S_FALSE; }
/*********************************************************************** * CreateURLMonikerEx2 (URLMON.@) */ HRESULT WINAPI CreateURLMonikerEx2(IMoniker *pmkContext, IUri *pUri, IMoniker **ppmk, DWORD dwFlags) { IUri *context_uri = NULL, *uri; IUriContainer *uri_container; URLMoniker *ret; HRESULT hres; TRACE("(%p %p %p %x)\n", pmkContext, pUri, ppmk, dwFlags); if (ppmk) *ppmk = NULL; if (!pUri || !ppmk) return E_INVALIDARG; if(dwFlags >= ARRAY_SIZE(create_flags_map)) { FIXME("Unsupported flags %x\n", dwFlags); return E_INVALIDARG; } if(pmkContext) { hres = IMoniker_QueryInterface(pmkContext, &IID_IUriContainer, (void**)&uri_container); if(SUCCEEDED(hres)) { hres = IUriContainer_GetIUri(uri_container, &context_uri); if(FAILED(hres)) context_uri = NULL; IUriContainer_Release(uri_container); } } if(context_uri) { hres = CoInternetCombineIUri(context_uri, pUri, combine_flags_map[dwFlags], &uri, 0); IUri_Release(context_uri); if(FAILED(hres)) return hres; }else { uri = pUri; IUri_AddRef(uri); } hres = create_moniker(uri, &ret); IUri_Release(uri); if(FAILED(hres)) return hres; *ppmk = &ret->IMoniker_iface; return S_OK; }
/*********************************************************************** * CreateURLMonikerEx (URLMON.@) * * Create a url moniker. * * PARAMS * pmkContext [I] Context * szURL [I] Url to create the moniker for * ppmk [O] Destination for created moniker. * dwFlags [I] Flags. * * RETURNS * Success: S_OK. ppmk contains the created IMoniker object. * Failure: MK_E_SYNTAX if szURL is not a valid url, or * E_OUTOFMEMORY if memory allocation fails. */ HRESULT WINAPI CreateURLMonikerEx(IMoniker *pmkContext, LPCWSTR szURL, IMoniker **ppmk, DWORD dwFlags) { IUri *uri, *base_uri = NULL; URLMoniker *obj; HRESULT hres; TRACE("(%p, %s, %p, %08x)\n", pmkContext, debugstr_w(szURL), ppmk, dwFlags); if (ppmk) *ppmk = NULL; if (!szURL || !ppmk) return E_INVALIDARG; if(dwFlags >= ARRAY_SIZE(create_flags_map)) { FIXME("Unsupported flags %x\n", dwFlags); return E_INVALIDARG; } if(pmkContext) { IUriContainer *uri_container; hres = IMoniker_QueryInterface(pmkContext, &IID_IUriContainer, (void**)&uri_container); if(SUCCEEDED(hres)) { hres = IUriContainer_GetIUri(uri_container, &base_uri); IUriContainer_Release(uri_container); if(FAILED(hres)) return hres; } } if(base_uri) { hres = CoInternetCombineUrlEx(base_uri, szURL, combine_flags_map[dwFlags], &uri, 0); IUri_Release(base_uri); }else { hres = CreateUri(szURL, Uri_CREATE_ALLOW_RELATIVE|Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME|create_flags_map[dwFlags], 0, &uri); } if(FAILED(hres)) return hres; hres = create_moniker(uri, &obj); IUri_Release(uri); if(FAILED(hres)) return hres; *ppmk = &obj->IMoniker_iface; return S_OK; }
static HRESULT WINAPI IPersistStream_fnGetSizeMax(IPersistStream* iface, ULARGE_INTEGER* pcbSize) { HRESULT r; HlinkImpl *This = impl_from_IPersistStream(iface); IMoniker *moniker; TRACE("(%p) Moniker(%p)\n", This, This->Moniker); pcbSize->QuadPart = sizeof(DWORD)*2; if (This->TargetFrameName) pcbSize->QuadPart += size_hlink_string(This->TargetFrameName); if (This->FriendlyName) pcbSize->QuadPart += size_hlink_string(This->FriendlyName); r = __GetMoniker(This, &moniker, HLINKGETREF_DEFAULT); if (FAILED(r)) return r; r = E_FAIL; if (moniker) { IPersistStream* monstream = NULL; IMoniker_QueryInterface(moniker, &IID_IPersistStream, (LPVOID*)&monstream); if (monstream) { ULARGE_INTEGER mon_size; r = IPersistStream_GetSizeMax(monstream, &mon_size); pcbSize->QuadPart += mon_size.QuadPart; IPersistStream_Release(monstream); } IMoniker_Release(moniker); } if (This->Location) pcbSize->QuadPart += size_hlink_string(This->Location); return r; }
static HRESULT WINAPI ClassMonikerCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) { HRESULT hr; IMoniker *pmk; TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); *ppv = NULL; if (pUnk) return CLASS_E_NOAGGREGATION; hr = CreateClassMoniker(&CLSID_NULL, &pmk); if (FAILED(hr)) return hr; hr = IMoniker_QueryInterface(pmk, riid, ppv); IMoniker_Release(pmk); return hr; }
static HRESULT WINAPI PointerMonikerCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pUnk, REFIID riid, LPVOID *ppv) { IMoniker *pMoniker; HRESULT hr; TRACE("(%p, %s, %p)\n", pUnk, debugstr_guid(riid), ppv); *ppv = NULL; if (pUnk) return CLASS_E_NOAGGREGATION; hr = CreatePointerMoniker(NULL, &pMoniker); if (FAILED(hr)) return hr; hr = IMoniker_QueryInterface(pMoniker, riid, ppv); if (FAILED(hr)) IMoniker_Release(pMoniker); return hr; }
static HRESULT WINAPI IPersistStream_fnSave(IPersistStream* iface, IStream* pStm, BOOL fClearDirty) { HRESULT r; HlinkImpl *This = impl_from_IPersistStream(iface); DWORD hdr[2]; IMoniker *moniker; TRACE("(%p) Moniker(%p)\n", This, This->Moniker); r = __GetMoniker(This, &moniker, HLINKGETREF_DEFAULT); if (FAILED(r)) return r; r = E_FAIL; hdr[0] = HLINK_SAVE_MAGIC; hdr[1] = 0; if (moniker) hdr[1] |= HLINK_SAVE_MONIKER_PRESENT; if (This->absolute) hdr[1] |= HLINK_SAVE_MONIKER_IS_ABSOLUTE; if (This->Location) hdr[1] |= HLINK_SAVE_LOCATION_PRESENT; if (This->FriendlyName) hdr[1] |= HLINK_SAVE_FRIENDLY_PRESENT | 4 /* FIXME */; if (This->TargetFrameName) hdr[1] |= HLINK_SAVE_TARGET_FRAME_PRESENT; IStream_Write(pStm, hdr, sizeof(hdr), NULL); if (This->TargetFrameName) { r = write_hlink_string(pStm, This->TargetFrameName); if (FAILED(r)) goto end; } if (This->FriendlyName) { r = write_hlink_string(pStm, This->FriendlyName); if (FAILED(r)) goto end; } if (moniker) { IPersistStream* monstream; monstream = NULL; IMoniker_QueryInterface(moniker, &IID_IPersistStream, (LPVOID*)&monstream); if (monstream) { r = OleSaveToStream(monstream, pStm); IPersistStream_Release(monstream); } if (FAILED(r)) goto end; } if (This->Location) { r = write_hlink_string(pStm, This->Location); if (FAILED(r)) goto end; } end: if (moniker) IMoniker_Release(moniker); TRACE("Save Result 0x%x\n", r); return r; }
static HRESULT WINAPI UriContainer_QueryInterface(IUriContainer *iface, REFIID riid, void **ppv) { URLMoniker *This = impl_from_IUriContainer(iface); return IMoniker_QueryInterface(&This->IMoniker_iface, riid, ppv); }