ReactOS  0.4.14-dev-337-gf981a68
hlink.idl File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

interface  IHlink
 
interface  IHlinkSite
 
interface  IEnumHLITEM
 
struct  IEnumHLITEM::tagHLITEM
 
interface  IHlinkBrowseContext
 
struct  IHlinkBrowseContext::_tagHLTBINFO
 
struct  IHlinkBrowseContext::_tagHLBWINFO
 
interface  IHlinkTarget
 
interface  IHlinkFrame
 
interface  IExtensionServices
 

Typedefs

typedef enum _HLSR_NOREDEF10 HLSR
 

Enumerations

enum  _HLSR_NOREDEF10 { HLSR_HOME, HLSR_SEARCHPAGE, HLSR_HISTORYFOLDER }
 

Functions

HRESULT WINAPI HlinkCreateFromMoniker (IMoniker *, LPCWSTR, LPCWSTR, IHlinkSite *, DWORD, IUnknown *, REFIID, void **)
 
HRESULT WINAPI HlinkCreateFromString (LPCWSTR, LPCWSTR, LPCWSTR, IHlinkSite *, DWORD, IUnknown *, REFIID, void **)
 
HRESULT WINAPI HlinkCreateFromData (IDataObject *, IHlinkSite *, DWORD dwSiteData, IUnknown *, REFIID, void **)
 
HRESULT WINAPI HlinkCreateExtensionServices (LPCWSTR, HWND, LPCWSTR, LPCWSTR, IUnknown *, REFIID, void **)
 
HRESULT WINAPI HlinkQueryCreateFromData (IDataObject *)
 
HRESULT WINAPI HlinkClone (IHlink *, REFIID, IHlinkSite *, DWORD, void **)
 
HRESULT WINAPI HlinkCreateBrowseContext (IUnknown *, REFIID, void **)
 
HRESULT WINAPI HlinkNavigateToStringReference (LPCWSTR, LPCWSTR, IHlinkSite *, DWORD, IHlinkFrame *, DWORD, LPBC, IBindStatusCallback *, IHlinkBrowseContext *)
 
HRESULT WINAPI HlinkNavigate (IHlink *, IHlinkFrame *, DWORD, LPBC, IBindStatusCallback *, IHlinkBrowseContext *)
 
HRESULT WINAPI HlinkOnNavigate (IHlinkFrame *, IHlinkBrowseContext *, DWORD, IMoniker *, LPCWSTR, LPCWSTR, ULONG *)
 
HRESULT WINAPI HlinkIsShortcut (LPCWSTR)
 
HRESULT WINAPI HlinkTranslateURL (LPCWSTR, DWORD, LPWSTR *)
 
HRESULT WINAPI HlinkParseDisplayName (LPBC, LPCWSTR, BOOL, ULONG *, IMoniker **)
 
HRESULT WINAPI HlinkResolveMonikerForData (LPMONIKER, DWORD, LPBC, ULONG, FORMATETC *, IBindStatusCallback *, LPMONIKER)
 
HRESULT WINAPI HlinkUpdateStackItem (IHlinkFrame *, IHlinkBrowseContext *, ULONG, IMoniker *, LPCWSTR, LPCWSTR)
 
HRESULT WINAPI HlinkSetSpecialReference (ULONG uReference, LPCWSTR pwzReference)
 
HRESULT WINAPI HlinkGetSpecialReference (ULONG uReference, LPWSTR *ppwzReference)
 

Typedef Documentation

◆ HLSR

Enumeration Type Documentation

◆ _HLSR_NOREDEF10

Enumerator
HLSR_HOME 
HLSR_SEARCHPAGE 
HLSR_HISTORYFOLDER 

Definition at line 42 of file hlink.idl.

42  {
43  HLSR_HOME,
46 } HLSR;

Function Documentation

◆ HlinkClone()

HRESULT WINAPI HlinkClone ( IHlink ,
REFIID  ,
IHlinkSite ,
DWORD  ,
void **   
)

Definition at line 457 of file hlink_main.c.

459 {
460  IMoniker *mk, *clone_mk = NULL;
461  WCHAR *loc, *name = NULL;
462  HRESULT hres;
463 
464  if(!hlink || !riid || !obj)
465  return E_INVALIDARG;
466 
467  *obj = NULL;
468 
469  hres = IHlink_GetMonikerReference(hlink, HLINKGETREF_DEFAULT, &mk, &loc);
470  if(FAILED(hres))
471  return hres;
472 
473  if(mk) {
474  IStream *strm;
475  LARGE_INTEGER lgint;
476 
477  hres = CreateStreamOnHGlobal(NULL, TRUE, &strm);
478  if(FAILED(hres)) {
479  IMoniker_Release(mk);
480  goto cleanup;
481  }
482 
483  hres = OleSaveToStream((IPersistStream*)mk, strm);
484  if(FAILED(hres)) {
485  IStream_Release(strm);
486  IMoniker_Release(mk);
487  goto cleanup;
488  }
489  IMoniker_Release(mk);
490 
491  lgint.QuadPart = 0;
492  hres = IStream_Seek(strm, lgint, STREAM_SEEK_SET, NULL);
493  if(FAILED(hres)) {
494  IStream_Release(strm);
495  goto cleanup;
496  }
497 
498  hres = OleLoadFromStream(strm, &IID_IMoniker, (void**)&clone_mk);
499  IStream_Release(strm);
500  if(FAILED(hres))
501  goto cleanup;
502  }
503 
504  hres = IHlink_GetFriendlyName(hlink, HLFNAMEF_DEFAULT, &name);
505  if(FAILED(hres))
506  goto cleanup;
507 
508  hres = HlinkCreateFromMoniker(clone_mk, loc, name, hls, site_data, NULL,
509  &IID_IHlink, obj);
510 
511 cleanup:
512  if(clone_mk)
513  IMoniker_Release(clone_mk);
514  CoTaskMemFree(loc);
516  return hres;
517 }
#define TRUE
Definition: types.h:120
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
REFIID riid
Definition: precomp.h:44
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI OleSaveToStream(IPersistStream *pPStm, IStream *pStm)
Definition: storage32.c:9164
Definition: name.c:36
char * cleanup(char *str)
Definition: wpickclick.c:99
HRESULT WINAPI OleLoadFromStream(IStream *pStm, REFIID iidInterface, void **ppvObj)
Definition: storage32.c:9129
LONGLONG QuadPart
Definition: typedefs.h:112

Referenced by test_HlinkClone().

◆ HlinkCreateBrowseContext()

HRESULT WINAPI HlinkCreateBrowseContext ( IUnknown ,
REFIID  ,
void **   
)

Definition at line 175 of file hlink_main.c.

176 {
177  TRACE("%p %s %p\n", piunkOuter, debugstr_guid(riid), ppvObj);
178  return CoCreateInstance(&CLSID_StdHlinkBrowseContext, piunkOuter, CLSCTX_INPROC_SERVER, riid, ppvObj);
179 }
REFIID riid
Definition: precomp.h:44
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325

Referenced by test_BrowseWindowInfo(), test_GetObject(), and test_SetInitialHlink().

◆ HlinkCreateExtensionServices()

HRESULT WINAPI HlinkCreateExtensionServices ( LPCWSTR  ,
HWND  ,
LPCWSTR  ,
LPCWSTR  ,
IUnknown ,
REFIID  ,
void **   
)

Definition at line 300 of file extserv.c.

303 {
305  HRESULT hres = S_OK;
306 
307  TRACE("%s %p %s %s %p %s %p\n",debugstr_w(pwzAdditionalHeaders),
308  phwnd, debugstr_w(pszUsername), debugstr_w(pszPassword),
309  punkOuter, debugstr_guid(riid), ppv);
310 
311  ret = heap_alloc(sizeof(*ret));
312 
313  ret->IUnknown_inner.lpVtbl = &ExtServUnkVtbl;
314  ret->IAuthenticate_iface.lpVtbl = &AuthenticateVtbl;
315  ret->IHttpNegotiate_iface.lpVtbl = &HttpNegotiateVtbl;
316  ret->IExtensionServices_iface.lpVtbl = &ExtServVtbl;
317  ret->ref = 1;
318  ret->headers = NULL;
319  ret->hwnd = NULL;
320  ret->username = NULL;
321  ret->password = NULL;
322 
323  ExtServ_ImplSetAuthenticateData(ret, phwnd, pszUsername, pszPassword);
324  ExtServ_ImplSetAdditionalHeaders(ret, pwzAdditionalHeaders);
325 
326  if(!punkOuter) {
327  ret->outer_unk = &ret->IUnknown_inner;
328  hres = IUnknown_QueryInterface(&ret->IUnknown_inner, riid, ppv);
329  IUnknown_Release(&ret->IUnknown_inner);
330  }else if(IsEqualGUID(&IID_IUnknown, riid)) {
331  ret->outer_unk = punkOuter;
332  *ppv = &ret->IUnknown_inner;
333  }else {
334  IUnknown_Release(&ret->IUnknown_inner);
335  hres = E_INVALIDARG;
336  }
337 
338  return hres;
339 }
static const IHttpNegotiateVtbl HttpNegotiateVtbl
Definition: extserv.c:204
static const IAuthenticateVtbl AuthenticateVtbl
Definition: extserv.c:147
static const IUnknownVtbl ExtServUnkVtbl
Definition: extserv.c:101
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
#define debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
static HRESULT ExtServ_ImplSetAdditionalHeaders(ExtensionService *This, LPCWSTR pwzAdditionalHeaders)
Definition: extserv.c:235
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
static HRESULT ExtServ_ImplSetAuthenticateData(ExtensionService *This, HWND phwnd, LPCWSTR pwzUsername, LPCWSTR pwzPassword)
Definition: extserv.c:268
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
int ret
static const IExtensionServicesVtbl ExtServVtbl
Definition: extserv.c:289
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112

Referenced by test_HlinkCreateExtensionServices().

◆ HlinkCreateFromData()

HRESULT WINAPI HlinkCreateFromData ( IDataObject ,
IHlinkSite ,
DWORD  dwSiteData,
IUnknown ,
REFIID  ,
void **   
)

Definition at line 225 of file hlink_main.c.

228 {
229  FIXME("%p, %p, %d, %p, %s, %p\n", piDataObj, pihlsite, dwSiteData,
230  piunkOuter, debugstr_guid(riid), ppvObj);
231  *ppvObj = NULL;
232  return E_NOTIMPL;
233 }
REFIID riid
Definition: precomp.h:44
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ HlinkCreateFromMoniker()

HRESULT WINAPI HlinkCreateFromMoniker ( IMoniker ,
LPCWSTR  ,
LPCWSTR  ,
IHlinkSite ,
DWORD  ,
IUnknown ,
REFIID  ,
void **   
)

Definition at line 71 of file hlink_main.c.

74 {
75  IHlink *hl = NULL;
76  HRESULT r;
77 
78  TRACE("%p %s %s %p %i %p %s %p\n", pimkTrgt, debugstr_w(pwzLocation),
79  debugstr_w(pwzFriendlyName), pihlsite, dwSiteData, piunkOuter,
80  debugstr_guid(riid), ppvObj);
81 
82  r = CoCreateInstance(&CLSID_StdHlink, piunkOuter, CLSCTX_INPROC_SERVER, riid, (LPVOID*)&hl);
83  if (FAILED(r))
84  return r;
85 
86  IHlink_SetMonikerReference(hl, HLINKSETF_LOCATION | HLINKSETF_TARGET, pimkTrgt, pwzLocation);
87 
88  if (pwzFriendlyName)
89  IHlink_SetFriendlyName(hl, pwzFriendlyName);
90  if (pihlsite)
91  IHlink_SetHlinkSite(hl, pihlsite, dwSiteData);
92 
93  *ppvObj = hl;
94 
95  TRACE("Returning %i\n",r);
96 
97  return r;
98 }
REFIID riid
Definition: precomp.h:44
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325

Referenced by HlinkClone(), IHlinkBC_SetInitialHlink(), IHlinkBC_UpdateHlink(), test_Hlink_Navigate(), test_HlinkClone(), test_HlinkGetSetMonikerReference(), test_HlinkGetSetStringReference(), and test_HlinkSite().

◆ HlinkCreateFromString()

HRESULT WINAPI HlinkCreateFromString ( LPCWSTR  ,
LPCWSTR  ,
LPCWSTR  ,
IHlinkSite ,
DWORD  ,
IUnknown ,
REFIID  ,
void **   
)

Definition at line 103 of file hlink_main.c.

106 {
107  IHlink *hl = NULL;
108  HRESULT r;
109  WCHAR *hash, *tgt;
110  const WCHAR *loc;
111 
112  TRACE("%s %s %s %p %i %p %s %p\n", debugstr_w(pwzTarget),
113  debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName), pihlsite,
114  dwSiteData, piunkOuter, debugstr_guid(riid), ppvObj);
115 
116  r = CoCreateInstance(&CLSID_StdHlink, piunkOuter, CLSCTX_INPROC_SERVER, riid, (LPVOID*)&hl);
117  if (FAILED(r))
118  return r;
119 
120  if (pwzTarget)
121  {
122  hash = wcschr(pwzTarget, '#');
123  if (hash)
124  {
125  if (hash == pwzTarget)
126  tgt = NULL;
127  else
128  {
129  int tgt_len = hash - pwzTarget;
130  tgt = heap_alloc((tgt_len + 1) * sizeof(WCHAR));
131  if (!tgt)
132  return E_OUTOFMEMORY;
133  memcpy(tgt, pwzTarget, tgt_len * sizeof(WCHAR));
134  tgt[tgt_len] = 0;
135  }
136  if (!pwzLocation)
137  loc = hash + 1;
138  else
139  loc = pwzLocation;
140  }
141  else
142  {
143  tgt = hlink_strdupW(pwzTarget);
144  if (!tgt)
145  return E_OUTOFMEMORY;
146  loc = pwzLocation;
147  }
148  }
149  else
150  {
151  tgt = NULL;
152  loc = pwzLocation;
153  }
154 
155  IHlink_SetStringReference(hl, HLINKSETF_TARGET | HLINKSETF_LOCATION, tgt, loc);
156 
157  heap_free(tgt);
158 
159  if (pwzFriendlyName)
160  IHlink_SetFriendlyName(hl, pwzFriendlyName);
161 
162  if (pihlsite)
163  IHlink_SetHlinkSite(hl, pihlsite, dwSiteData);
164 
165  TRACE("Returning %i\n",r);
166  *ppvObj = hl;
167 
168  return r;
169 }
REFIID riid
Definition: precomp.h:44
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
int hash
Definition: main.c:58
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
Definition: _hash_fun.h:40
static BOOL heap_free(void *mem)
Definition: appwiz.h:75

Referenced by HlinkNavigateToStringReference(), test_HashLink(), test_HlinkClone(), test_HlinkMoniker(), test_HlinkSite(), test_persist(), and test_reference().

◆ HlinkGetSpecialReference()

HRESULT WINAPI HlinkGetSpecialReference ( ULONG  uReference,
LPWSTR ppwzReference 
)

Definition at line 293 of file hlink_main.c.

294 {
295  DWORD res, type, size = 100;
296  LPCWSTR value_name;
297  WCHAR *buf;
298  HKEY hkey;
299 
300  static const WCHAR start_pageW[] = {'S','t','a','r','t',' ','P','a','g','e',0};
301  static const WCHAR search_pageW[] = {'S','e','a','r','c','h',' ','P','a','g','e',0};
302 
303  static const WCHAR ie_main_keyW[] =
304  {'S','o','f','t','w','a','r','e',
305  '\\','M','i','c','r','o','s','o','f','t','\\',
306  'I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r',
307  '\\','M','a','i','n',0};
308 
309  TRACE("(%u %p)\n", uReference, ppwzReference);
310 
311  *ppwzReference = NULL;
312 
313  switch(uReference) {
314  case HLSR_HOME:
315  value_name = start_pageW;
316  break;
317  case HLSR_SEARCHPAGE:
318  value_name = search_pageW;
319  break;
320  case HLSR_HISTORYFOLDER:
321  return E_NOTIMPL;
322  default:
323  return E_INVALIDARG;
324  }
325 
326  res = RegOpenKeyW(HKEY_CURRENT_USER, ie_main_keyW, &hkey);
327  if(res != ERROR_SUCCESS) {
328  WARN("Could not open key: %u\n", res);
329  return HRESULT_FROM_WIN32(res);
330  }
331 
333  res = RegQueryValueExW(hkey, value_name, NULL, &type, (PBYTE)buf, &size);
335  if(res == ERROR_MORE_DATA)
336  res = RegQueryValueExW(hkey, value_name, NULL, &type, (PBYTE)buf, &size);
337  RegCloseKey(hkey);
338  if(res != ERROR_SUCCESS) {
339  WARN("Could not query value %s: %u\n", debugstr_w(value_name), res);
341  return HRESULT_FROM_WIN32(res);
342  }
343 
344  *ppwzReference = buf;
345  return S_OK;
346 }
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
#define ERROR_SUCCESS
Definition: deptool.c:10
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define WARN(fmt,...)
Definition: debug.h:111
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3296
#define debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
GLsizeiptr size
Definition: glext.h:5919
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4116
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define S_OK
Definition: intsafe.h:59
#define E_NOTIMPL
Definition: ddrawi.h:99
GLuint res
Definition: glext.h:9613
LPVOID WINAPI CoTaskMemRealloc(LPVOID pvOld, SIZE_T size)
Definition: ifs.c:438
BYTE * PBYTE
Definition: pedump.c:66
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:404

Referenced by test_special_reference().

◆ HlinkIsShortcut()

HRESULT WINAPI HlinkIsShortcut ( LPCWSTR  )

Definition at line 272 of file hlink_main.c.

273 {
274  int len;
275 
276  static const WCHAR url_ext[] = {'.','u','r','l',0};
277 
278  TRACE("(%s)\n", debugstr_w(pwzFileName));
279 
280  if(!pwzFileName)
281  return E_INVALIDARG;
282 
283  len = lstrlenW(pwzFileName)-4;
284  if(len < 0)
285  return S_FALSE;
286 
287  return wcsicmp(pwzFileName+len, url_ext) ? S_FALSE : S_OK;
288 }
#define lstrlenW
Definition: compat.h:415
#define debugstr_w
Definition: kernel32.h:32
#define S_FALSE
Definition: winerror.h:2357
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
GLenum GLsizei len
Definition: glext.h:6722
#define wcsicmp
Definition: string.h:1152
#define S_OK
Definition: intsafe.h:59

Referenced by test_HlinkIsShortcut().

◆ HlinkNavigate()

HRESULT WINAPI HlinkNavigate ( IHlink ,
IHlinkFrame ,
DWORD  ,
LPBC  ,
IBindStatusCallback ,
IHlinkBrowseContext  
)

Definition at line 184 of file hlink_main.c.

187 {
188  HRESULT r = S_OK;
189 
190  TRACE("%p %p %i %p %p %p\n", phl, phlFrame, grfHLNF, pbc, pbsc, phlbc);
191 
192  if (phlFrame)
193  r = IHlinkFrame_Navigate(phlFrame, grfHLNF, pbc, pbsc, phl);
194  else if (phl)
195  r = IHlink_Navigate(phl, grfHLNF, pbc, pbsc, phlbc);
196 
197  return r;
198 }
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59

Referenced by HlinkNavigateToStringReference().

◆ HlinkNavigateToStringReference()

HRESULT WINAPI HlinkNavigateToStringReference ( LPCWSTR  ,
LPCWSTR  ,
IHlinkSite ,
DWORD  ,
IHlinkFrame ,
DWORD  ,
LPBC  ,
IBindStatusCallback ,
IHlinkBrowseContext  
)

Definition at line 247 of file hlink_main.c.

251 {
252  HRESULT r;
253  IHlink *hlink = NULL;
254 
255  TRACE("%s %s %p %08x %p %08x %p %p %p\n",
256  debugstr_w(pwzTarget), debugstr_w(pwzLocation), pihlsite,
257  dwSiteData, pihlframe, grfHLNF, pibc, pibsc, pihlbc);
258 
259  r = HlinkCreateFromString( pwzTarget, pwzLocation, NULL, pihlsite,
260  dwSiteData, NULL, &IID_IHlink, (LPVOID*) &hlink );
261  if (SUCCEEDED(r)) {
262  r = HlinkNavigate(hlink, pihlframe, grfHLNF, pibc, pibsc, pihlbc);
263  IHlink_Release(hlink);
264  }
265 
266  return r;
267 }
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by test_Hlink_Navigate().

◆ HlinkOnNavigate()

HRESULT WINAPI HlinkOnNavigate ( IHlinkFrame ,
IHlinkBrowseContext ,
DWORD  ,
IMoniker ,
LPCWSTR  ,
LPCWSTR  ,
ULONG  
)

Definition at line 203 of file hlink_main.c.

206 {
207  HRESULT r;
208 
209  TRACE("%p %p %i %p %s %s %p\n",phlFrame, phlbc, grfHLNF, pmkTarget,
210  debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName), puHLID);
211 
212  r = IHlinkBrowseContext_OnNavigateHlink(phlbc, grfHLNF, pmkTarget,
213  pwzLocation, pwzFriendlyName, puHLID);
214 
215  if (phlFrame)
216  r = IHlinkFrame_OnNavigate(phlFrame,grfHLNF,pmkTarget, pwzLocation,
217  pwzFriendlyName, 0);
218 
219  return r;
220 }
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77

◆ HlinkParseDisplayName()

HRESULT WINAPI HlinkParseDisplayName ( LPBC  ,
LPCWSTR  ,
BOOL  ,
ULONG ,
IMoniker **   
)

Definition at line 380 of file hlink_main.c.

382 {
383  static const WCHAR file_colonW[] = {'f','i','l','e',':'};
384  ULONG eaten = 0;
385  HRESULT hres;
386 
387  TRACE("(%p %s %x %p %p)\n", pibc, debugstr_w(pwzDisplayName), fNoForceAbs, pcchEaten, ppimk);
388 
389  if(fNoForceAbs)
390  FIXME("Unsupported fNoForceAbs\n");
391 
392  if(!_wcsnicmp(pwzDisplayName, file_colonW, ARRAY_SIZE(file_colonW))) {
393  pwzDisplayName += ARRAY_SIZE(file_colonW);
394  eaten += ARRAY_SIZE(file_colonW);
395 
396  while(*pwzDisplayName == '/') {
397  pwzDisplayName++;
398  eaten++;
399  }
400  }else {
401  hres = MkParseDisplayNameEx(pibc, pwzDisplayName, pcchEaten, ppimk);
402  if(SUCCEEDED(hres))
403  return hres;
404 
405  hres = MkParseDisplayName(pibc, pwzDisplayName, pcchEaten, ppimk);
406  if(SUCCEEDED(hres))
407  return hres;
408  }
409 
410  hres = CreateFileMoniker(pwzDisplayName, ppimk);
411  if(SUCCEEDED(hres))
412  *pcchEaten = eaten + lstrlenW(pwzDisplayName);
413 
414  return hres;
415 }
_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 lstrlenW
Definition: compat.h:415
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
HRESULT WINAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk)
Definition: umon.c:795
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk)
Definition: filemoniker.c:1414
#define ARRAY_SIZE(a)
Definition: main.h:24
HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szDisplayName, LPDWORD pchEaten, LPMONIKER *ppmk)
Definition: moniker.c:1129
unsigned int ULONG
Definition: retypes.h:1
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by test_HlinkParseDisplayName().

◆ HlinkQueryCreateFromData()

HRESULT WINAPI HlinkQueryCreateFromData ( IDataObject )

Definition at line 238 of file hlink_main.c.

239 {
240  FIXME("%p\n", piDataObj);
241  return E_NOTIMPL;
242 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ HlinkResolveMonikerForData()

HRESULT WINAPI HlinkResolveMonikerForData ( LPMONIKER  ,
DWORD  ,
LPBC  ,
ULONG  ,
FORMATETC *  ,
IBindStatusCallback ,
LPMONIKER   
)

Definition at line 420 of file hlink_main.c.

422 {
423  LPOLESTR name = NULL;
424  IBindCtx *bctx;
425  DWORD mksys = 0;
426  void *obj = NULL;
427  HRESULT hres;
428 
429  TRACE("(%p %x %p %d %p %p %p)\n", pimkReference, reserved, pibc, cFmtetc, rgFmtetc, pibsc, pimkBase);
430 
431  if(cFmtetc || rgFmtetc || pimkBase)
432  FIXME("Unsupported args\n");
433 
434  hres = RegisterBindStatusCallback(pibc, pibsc, NULL /* FIXME */, 0);
435  if(FAILED(hres))
436  return hres;
437 
438  hres = IMoniker_IsSystemMoniker(pimkReference, &mksys);
439  if(SUCCEEDED(hres) && mksys != MKSYS_URLMONIKER)
440  WARN("sysmk = %x\n", mksys);
441 
442  /* FIXME: What is it for? */
443  CreateBindCtx(0, &bctx);
444  hres = IMoniker_GetDisplayName(pimkReference, bctx, NULL, &name);
445  IBindCtx_Release(bctx);
446  if(SUCCEEDED(hres)) {
447  TRACE("got display name %s\n", debugstr_w(name));
449  }
450 
451  return IMoniker_BindToStorage(pimkReference, pibc, NULL, &IID_IUnknown, &obj);
452 }
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:420
#define WARN(fmt,...)
Definition: debug.h:111
static LPOLESTR
Definition: stg_prop.c:27
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
r reserved
Definition: btrfs.c:2865
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI RegisterBindStatusCallback(IBindCtx *pbc, IBindStatusCallback *pbsc, IBindStatusCallback **ppbscPrevious, DWORD dwReserved)
Definition: bindctx.c:615
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
Definition: bindctx.c:556
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
unsigned long DWORD
Definition: ntddk_ex.h:95
Definition: name.c:36
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by test_HlinkResolveMonikerForData().

◆ HlinkSetSpecialReference()

HRESULT WINAPI HlinkSetSpecialReference ( ULONG  uReference,
LPCWSTR  pwzReference 
)

◆ HlinkTranslateURL()

HRESULT WINAPI HlinkTranslateURL ( LPCWSTR  ,
DWORD  ,
LPWSTR  
)

Definition at line 351 of file hlink_main.c.

352 {
353  FIXME("(%s %08x %p)\n", debugstr_w(pwzURL), grfFlags, ppwzTranslatedURL);
354  return E_NOTIMPL;
355 }
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ HlinkUpdateStackItem()

HRESULT WINAPI HlinkUpdateStackItem ( IHlinkFrame ,
IHlinkBrowseContext ,
ULONG  ,
IMoniker ,
LPCWSTR  ,
LPCWSTR   
)

Definition at line 360 of file hlink_main.c.

362 {
363  HRESULT hr;
364 
365  TRACE("(%p %p 0x%x %p %s %s)\n", frame, bc, hlid, target, debugstr_w(location), debugstr_w(friendly_name));
366 
367  if (!frame && !bc) return E_INVALIDARG;
368 
369  if (frame)
370  hr = IHlinkFrame_UpdateHlink(frame, hlid, target, location, friendly_name);
371  else
372  hr = IHlinkBrowseContext_UpdateHlink(bc, hlid, target, location, friendly_name);
373 
374  return hr;
375 }
HRESULT hr
Definition: shlfolder.c:183
LPBATCH_CONTEXT bc
Definition: batch.c:66
#define debugstr_w
Definition: kernel32.h:32
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static const WCHAR friendly_name[]
Definition: devenum.c:40
GLenum target
Definition: glext.h:7315

Referenced by test_HlinkUpdateStackItem().