ReactOS 0.4.16-dev-927-g467dec4
winlist.cpp File Reference
#include "objects.h"
#include <wine/debug.h>
Include dependency graph for winlist.cpp:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (shdocvw)
 
static HRESULT InitVariantFromBuffer (_Out_ LPVARIANTARG pvarg, _In_ LPCVOID pv, _In_ SIZE_T cb)
 
static HRESULT InitVariantFromIDList (_Out_ LPVARIANTARG pvarg, _In_ LPCITEMIDLIST pidl)
 
static HRESULT VariantClearLazy (_Inout_ LPVARIANTARG pvarg)
 
EXTERN_C BOOL WINAPI WinList_Init (VOID)
 
EXTERN_C VOID WINAPI WinList_Terminate (VOID)
 
EXTERN_C IShellWindows *WINAPI WinList_GetShellWindows (_In_ BOOL bCreate)
 
EXTERN_C HRESULT WINAPI WinList_NotifyNewLocation (_In_ IShellWindows *pShellWindows, _In_ LONG lCookie, _In_ LPCITEMIDLIST pidl)
 
EXTERN_C HRESULT WINAPI WinList_FindFolderWindow (_In_ LPCITEMIDLIST pidl, _In_ DWORD dwUnused, _Out_opt_ PLONG phwnd, _Out_opt_ IWebBrowserApp **ppWebBrowserApp)
 
EXTERN_C HRESULT WINAPI WinList_RegisterPending (_In_ DWORD dwThreadId, _In_ LPCITEMIDLIST pidl, _In_ DWORD dwUnused, _Out_ PLONG plCookie)
 
EXTERN_C HRESULT WINAPI WinList_Revoke (_In_ LONG lCookie)
 

Variables

static VARIANT s_vaEmpty = { VT_EMPTY }
 

Function Documentation

◆ InitVariantFromBuffer()

static HRESULT InitVariantFromBuffer ( _Out_ LPVARIANTARG  pvarg,
_In_ LPCVOID  pv,
_In_ SIZE_T  cb 
)
static

Definition at line 16 of file winlist.cpp.

20{
21 VariantInit(pvarg);
22
24 if (!pArray)
25 {
26 ERR("!pArray\n");
27 return E_OUTOFMEMORY;
28 }
29
30 V_ARRAY(pvarg) = pArray;
31 V_VT(pvarg) = VT_ARRAY | VT_UI1;
32 CopyMemory(pArray->pvData, pv, cb);
33 return S_OK;
34}
#define ERR(fmt,...)
Definition: precomp.h:57
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
@ VT_ARRAY
Definition: compat.h:2341
@ VT_UI1
Definition: compat.h:2311
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
#define S_OK
Definition: intsafe.h:52
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_VT(A)
Definition: oleauto.h:211
PVOID pvData
Definition: compat.h:2359
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:568
#define CopyMemory
Definition: winbase.h:1741

Referenced by InitVariantFromIDList().

◆ InitVariantFromIDList()

static HRESULT InitVariantFromIDList ( _Out_ LPVARIANTARG  pvarg,
_In_ LPCITEMIDLIST  pidl 
)
static

Definition at line 37 of file winlist.cpp.

40{
41 return InitVariantFromBuffer(pvarg, pidl, ILGetSize(pidl));
42}
#define ILGetSize
Definition: shellclasses.h:638
static HRESULT InitVariantFromBuffer(_Out_ LPVARIANTARG pvarg, _In_ LPCVOID pv, _In_ SIZE_T cb)
Definition: winlist.cpp:16

Referenced by WinList_FindFolderWindow(), WinList_NotifyNewLocation(), and WinList_RegisterPending().

◆ VariantClearLazy()

static HRESULT VariantClearLazy ( _Inout_ LPVARIANTARG  pvarg)
static

Definition at line 45 of file winlist.cpp.

46{
47 switch (V_VT(pvarg))
48 {
49 case VT_EMPTY:
50 case VT_BOOL:
51 case VT_I4:
52 case VT_UI4:
53 break;
54 case VT_UNKNOWN:
55 if (V_UNKNOWN(pvarg))
56 V_UNKNOWN(pvarg)->Release();
57 break;
58 case VT_DISPATCH:
59 if (V_DISPATCH(pvarg))
60 V_DISPATCH(pvarg)->Release();
61 break;
62 case VT_SAFEARRAY:
64 break;
65 default:
66 return VariantClear(pvarg);
67 }
68 V_VT(pvarg) = VT_EMPTY;
69 return S_OK;
70}
@ VT_UNKNOWN
Definition: compat.h:2308
@ VT_SAFEARRAY
Definition: compat.h:2321
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_UI4
Definition: compat.h:2313
@ VT_EMPTY
Definition: compat.h:2295
@ VT_DISPATCH
Definition: compat.h:2304
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
Definition: safearray.c:1347
#define V_UNKNOWN(A)
Definition: oleauto.h:281
#define V_DISPATCH(A)
Definition: oleauto.h:239
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648

Referenced by WinList_FindFolderWindow(), WinList_NotifyNewLocation(), and WinList_RegisterPending().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( shdocvw  )

◆ WinList_FindFolderWindow()

EXTERN_C HRESULT WINAPI WinList_FindFolderWindow ( _In_ LPCITEMIDLIST  pidl,
_In_ DWORD  dwUnused,
_Out_opt_ PLONG  phwnd,
_Out_opt_ IWebBrowserApp **  ppWebBrowserApp 
)

Definition at line 151 of file winlist.cpp.

156{
157 UNREFERENCED_PARAMETER(dwUnused);
158
159 TRACE("(%p, %ld, %p, %p)\n", pidl, dwUnused, phwnd, ppWebBrowserApp);
160
161 if (ppWebBrowserApp)
162 *ppWebBrowserApp = NULL;
163
164 if (phwnd)
165 *phwnd = 0;
166
167 if (!pidl)
168 {
169 ERR("!pidl\n");
170 return E_UNEXPECTED;
171 }
172
173 CComPtr<IShellWindows> pShellWindows(WinList_GetShellWindows(ppWebBrowserApp != NULL));
174 if (!pShellWindows)
175 {
176 ERR("!pShellWindows\n");
177 return E_UNEXPECTED;
178 }
179
180 VARIANTARG varg;
181 HRESULT hr = InitVariantFromIDList(&varg, pidl);
183 return hr;
184
185 CComPtr<IDispatch> pDispatch;
186 const INT options = SWFO_INCLUDEPENDING | (ppWebBrowserApp ? SWFO_NEEDDISPATCH : 0);
187 hr = pShellWindows->FindWindowSW(&varg, &s_vaEmpty, SWC_BROWSER, phwnd, options, &pDispatch);
188 if (pDispatch && ppWebBrowserApp)
189 hr = pDispatch->QueryInterface(IID_PPV_ARG(IWebBrowserApp, ppWebBrowserApp));
190
191 VariantClearLazy(&varg);
192 return hr;
193}
#define NULL
Definition: types.h:112
#define FAILED_UNEXPECTEDLY(hr)
Definition: precomp.h:121
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
@ SWFO_NEEDDISPATCH
Definition: exdisp.idl:556
@ SWFO_INCLUDEPENDING
Definition: exdisp.idl:557
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:325
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
int32_t INT
Definition: typedefs.h:58
#define E_UNEXPECTED
Definition: winerror.h:2456
static HRESULT InitVariantFromIDList(_Out_ LPVARIANTARG pvarg, _In_ LPCITEMIDLIST pidl)
Definition: winlist.cpp:37
static HRESULT VariantClearLazy(_Inout_ LPVARIANTARG pvarg)
Definition: winlist.cpp:45
EXTERN_C IShellWindows *WINAPI WinList_GetShellWindows(_In_ BOOL bCreate)
Definition: winlist.cpp:105
static VARIANT s_vaEmpty
Definition: winlist.cpp:13
#define IID_PPV_ARG(Itype, ppType)

◆ WinList_GetShellWindows()

EXTERN_C IShellWindows *WINAPI WinList_GetShellWindows ( _In_ BOOL  bCreate)

Definition at line 105 of file winlist.cpp.

107{
108 FIXME("(%d)\n", bCreate);
109 return NULL;
110}
#define FIXME(fmt,...)
Definition: precomp.h:53
_In_ int _In_ BOOL bCreate
Definition: shlobj.h:1528

Referenced by WinList_FindFolderWindow(), WinList_RegisterPending(), and WinList_Revoke().

◆ WinList_Init()

EXTERN_C BOOL WINAPI WinList_Init ( VOID  )

Definition at line 79 of file winlist.cpp.

80{
81 FIXME("()\n");
82 return FALSE;
83}
#define FALSE
Definition: types.h:117

◆ WinList_NotifyNewLocation()

EXTERN_C HRESULT WINAPI WinList_NotifyNewLocation ( _In_ IShellWindows *  pShellWindows,
_In_ LONG  lCookie,
_In_ LPCITEMIDLIST  pidl 
)

Definition at line 120 of file winlist.cpp.

124{
125 TRACE("(%p, %ld, %p)\n", pShellWindows, lCookie, pidl);
126
127 if (!pidl)
128 {
129 ERR("!pidl\n");
130 return E_UNEXPECTED;
131 }
132
133 VARIANTARG varg;
134 HRESULT hr = InitVariantFromIDList(&varg, pidl);
136 return hr;
137
138 hr = pShellWindows->OnNavigate(lCookie, &varg);
139 VariantClearLazy(&varg);
140 return hr;
141}

◆ WinList_RegisterPending()

EXTERN_C HRESULT WINAPI WinList_RegisterPending ( _In_ DWORD  dwThreadId,
_In_ LPCITEMIDLIST  pidl,
_In_ DWORD  dwUnused,
_Out_ PLONG  plCookie 
)

Definition at line 203 of file winlist.cpp.

208{
209 TRACE("(%ld, %p, %ld, %p)\n", dwThreadId, pidl, dwUnused, plCookie);
210
211 if (!pidl)
212 {
213 ERR("!pidl\n");
214 return E_UNEXPECTED;
215 }
216
217 CComPtr<IShellWindows> pShellWindows(WinList_GetShellWindows(FALSE));
218 if (!pShellWindows)
219 {
220 ERR("!pShellWindows\n");
221 return E_UNEXPECTED;
222 }
223
224 VARIANTARG varg;
225 HRESULT hr = InitVariantFromIDList(&varg, pidl);
227 return hr;
228
229 hr = pShellWindows->RegisterPending(dwThreadId, &varg, &s_vaEmpty, SWC_BROWSER, plCookie);
230 VariantClearLazy(&varg);
231 return hr;
232}
DWORD dwThreadId
Definition: fdebug.c:31

◆ WinList_Revoke()

EXTERN_C HRESULT WINAPI WinList_Revoke ( _In_ LONG  lCookie)

Definition at line 242 of file winlist.cpp.

244{
245 TRACE("(%ld)\n", lCookie);
246
247 CComPtr<IShellWindows> pShellWindows(WinList_GetShellWindows(TRUE));
248 if (!pShellWindows)
249 {
250 ERR("!pShellWindows\n");
251 return E_FAIL;
252 }
253
254 return pShellWindows->Revoke(lCookie);
255}
#define E_FAIL
Definition: ddrawi.h:102
#define TRUE
Definition: types.h:120

◆ WinList_Terminate()

EXTERN_C VOID WINAPI WinList_Terminate ( VOID  )

Definition at line 92 of file winlist.cpp.

93{
94 FIXME("()\n");
95}

Variable Documentation

◆ s_vaEmpty

VARIANT s_vaEmpty = { VT_EMPTY }
static

Definition at line 13 of file winlist.cpp.

Referenced by WinList_FindFolderWindow(), and WinList_RegisterPending().