Added mappings for a few messages.
[wine] / dlls / urlmon / umon.c
1 /*
2  * UrlMon
3  *
4  * Copyright 1999 Corel Corporation
5  *
6  * Ulrich Czekalla
7  *
8  */
9
10 #include "windef.h"
11 #include "objbase.h"
12 #include "debugtools.h"
13
14 #include "urlmon.h"
15
16 DEFAULT_DEBUG_CHANNEL(urlmon);
17
18 /* native urlmon.dll uses this key, too */
19 static WCHAR BSCBHolder[] = { '_','B','S','C','B','_','H','o','l','d','e','r','_',0 };
20
21 /***********************************************************************
22  *           CreateURLMoniker (URLMON.@)
23  *
24  * Create a url moniker
25  *
26  * RETURNS
27  *    S_OK              success
28  *    E_OUTOFMEMORY     out of memory 
29  *    MK_E_SYNTAX       not a valid url
30  *
31  */
32 HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPWSTR szURL, IMoniker **ppmk)
33 {
34    TRACE("\n");
35
36    if (NULL != pmkContext)
37         FIXME("Non-null pmkContext not implemented\n");
38
39    return CreateFileMoniker(szURL, ppmk);
40 }
41
42 /***********************************************************************
43  *           RegisterBindStatusCallback (URLMON.@)
44  *
45  * Register a bind status callback
46  *
47  * RETURNS
48  *    S_OK              success
49  *    E_INVALIDARG  invalid argument(s)
50  *    E_OUTOFMEMORY     out of memory 
51  *
52  */
53 HRESULT WINAPI RegisterBindStatusCallback(
54     IBindCtx *pbc,
55     IBindStatusCallback *pbsc,
56     IBindStatusCallback **ppbscPrevious,
57     DWORD dwReserved)
58 {
59     IBindStatusCallback *prev;
60
61         TRACE("(%p,%p,%p,%lu)\n", pbc, pbsc, ppbscPrevious, dwReserved);
62
63     if (pbc == NULL || pbsc == NULL)
64         return E_INVALIDARG;
65
66     if (SUCCEEDED(IBindCtx_GetObjectParam(pbc, BSCBHolder, (IUnknown **)&prev)))
67     {
68         IBindCtx_RevokeObjectParam(pbc, BSCBHolder);
69         if (ppbscPrevious)
70             *ppbscPrevious = prev;
71         else
72             IBindStatusCallback_Release(prev);
73     }
74     
75         return IBindCtx_RegisterObjectParam(pbc, BSCBHolder, (IUnknown *)pbsc);
76 }
77
78 /***********************************************************************
79  *           RevokeBindStatusCallback (URLMON.@)
80  *
81  * Unregister a bind status callback
82  *
83  * RETURNS
84  *    S_OK              success
85  *    E_INVALIDARG  invalid argument(s)
86  *    E_FAIL pbsc wasn't registered with pbc
87  *
88  */
89 HRESULT WINAPI RevokeBindStatusCallback(
90     IBindCtx *pbc,
91     IBindStatusCallback *pbsc)
92 {
93     IBindStatusCallback *callback;
94     HRESULT hr = E_FAIL;
95
96         TRACE("(%p,%p)\n", pbc, pbsc);
97
98     if (pbc == NULL || pbsc == NULL)
99         return E_INVALIDARG;
100
101     if (SUCCEEDED(IBindCtx_GetObjectParam(pbc, BSCBHolder, (IUnknown **)&callback)))
102     {
103         if (callback == pbsc)
104         {
105             IBindCtx_RevokeObjectParam(pbc, BSCBHolder);
106             hr = S_OK;
107         }
108         IBindStatusCallback_Release(pbsc);
109     }
110
111     return hr;
112 }
113