ReactOS 0.4.17-dev-523-gf6fcb59
CShellItemArray.cpp File Reference
#include "precomp.h"
Include dependency graph for CShellItemArray.cpp:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (shell)
 
HRESULT CreateShellItemArrayFromItems (_In_reads_(cidl) IShellItem **items, _In_ UINT cidl, _In_ REFIID riid, _Out_ void **ppv)
 
EXTERN_C HRESULT WINAPI SHCreateShellItemArray (_In_opt_ PCIDLIST_ABSOLUTE pidlParent, _In_opt_ IShellFolder *psf, _In_ UINT cidl, _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY ppidl, _Out_ IShellItemArray **ppsiItemArray)
 
EXTERN_C HRESULT WINAPI SHCreateShellItemArrayFromIDLists (_In_ UINT cidl, _In_reads_(cidl) PCIDLIST_ABSOLUTE_ARRAY pidlArray, _Out_ IShellItemArray **ppsiItemArray)
 
EXTERN_C HRESULT WINAPI SHCreateShellItemArrayFromShellItem (_In_ IShellItem *psi, _In_ REFIID riid, _Out_ void **ppv)
 
EXTERN_C HRESULT WINAPI SHCreateShellItemArrayFromDataObject (_In_ IDataObject *pdo, _In_ REFIID riid, _Out_ void **ppv)
 

Function Documentation

◆ CreateShellItemArrayFromItems()

HRESULT CreateShellItemArrayFromItems ( _In_reads_(cidl) IShellItem **  items,
_In_ UINT  cidl,
_In_ REFIID  riid,
_Out_ void **  ppv 
)

Definition at line 218 of file CShellItemArray.cpp.

219{
220 return ShellObjectCreatorInit<CSimpleShellItemArray>(items, cidl, riid, ppv);
221}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static TCHAR * items[]
Definition: page1.c:45

Referenced by SHCreateShellItemArray(), SHCreateShellItemArrayFromIDLists(), and SHCreateShellItemArrayFromShellItem().

◆ SHCreateShellItemArray()

EXTERN_C HRESULT WINAPI SHCreateShellItemArray ( _In_opt_ PCIDLIST_ABSOLUTE  pidlParent,
_In_opt_ IShellFolder psf,
_In_ UINT  cidl,
_In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY  ppidl,
_Out_ IShellItemArray **  ppsiItemArray 
)

Definition at line 227 of file CShellItemArray.cpp.

233{
235 HRESULT hr = E_FAIL;
236
237 TRACE("(%p,%p,%u,%p,%p)\n", pidlParent, psf, cidl, ppidl, ppsiItemArray);
238
239 if (!ppsiItemArray)
240 return E_POINTER;
241 *ppsiItemArray = NULL;
242
243 if (!pidlParent && !psf)
244 return E_POINTER;
245
246 if (!ppidl)
247 return E_INVALIDARG;
248
249 array.Allocate(cidl);
250 if (!array)
251 return E_OUTOFMEMORY;
252
253 for (UINT i = 0; i < cidl; ++i)
254 array[i] = NULL;
255
256 for (UINT i = 0; i < cidl; ++i)
257 {
258 hr = SHCreateShellItem(pidlParent, psf, ppidl[i], &array[i]);
260 break;
261 }
262
263 if (SUCCEEDED(hr))
264 {
265 hr = CreateShellItemArrayFromItems(array, cidl, IID_PPV_ARG(IShellItemArray, ppsiItemArray));
266 }
267
268 for (UINT i = 0; i < cidl; ++i)
269 {
270 if (array[i])
271 array[i]->Release();
272 }
273
274 return hr;
275}
HRESULT CreateShellItemArrayFromItems(_In_reads_(cidl) IShellItem **items, _In_ UINT cidl, _In_ REFIID riid, _Out_ void **ppv)
HRESULT WINAPI SHCreateShellItem(PCIDLIST_ABSOLUTE pidlParent, IShellFolder *psfParent, PCUITEMID_CHILD pidl, IShellItem **ppsi)
Definition: CShellItem.cpp:261
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:33
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: sysinfo.c:13
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define TRACE(s)
Definition: solgame.cpp:4
Definition: undname.c:54
#define E_POINTER
Definition: winerror.h:3480
#define IID_PPV_ARG(Itype, ppType)

Referenced by init_function_pointers(), and on_default_action().

◆ SHCreateShellItemArrayFromDataObject()

EXTERN_C HRESULT WINAPI SHCreateShellItemArrayFromDataObject ( _In_ IDataObject pdo,
_In_ REFIID  riid,
_Out_ void **  ppv 
)

Definition at line 350 of file CShellItemArray.cpp.

351{
352 return ShellObjectCreatorInit<CShellItemArray>(pdo, riid, ppv);
353}

Referenced by CCopyAsPathMenu::DoCopyAsPath(), ICommDlgBrowser3_fnOnStateChange(), init_function_pointers(), and InvokeIExecuteCommandWithDataObject().

◆ SHCreateShellItemArrayFromIDLists()

EXTERN_C HRESULT WINAPI SHCreateShellItemArrayFromIDLists ( _In_ UINT  cidl,
_In_reads_(cidl) PCIDLIST_ABSOLUTE_ARRAY  pidlArray,
_Out_ IShellItemArray **  ppsiItemArray 
)

Definition at line 281 of file CShellItemArray.cpp.

285{
287 HRESULT hr;
288
289 TRACE("(%u,%p,%p)\n", cidl, pidlArray, ppsiItemArray);
290
291 if (!ppsiItemArray)
292 return E_POINTER;
293 *ppsiItemArray = NULL;
294
295 if (cidl == 0 || !pidlArray)
296 return E_INVALIDARG;
297
298 array.Allocate(cidl);
299 if (!array)
300 return E_OUTOFMEMORY;
301
302 for (UINT i = 0; i < cidl; ++i)
303 array[i] = NULL;
304
305 for (UINT i = 0; i < cidl; ++i)
306 {
307 hr = SHCreateShellItem(NULL, NULL, pidlArray[i], &array[i]);
309 break;
310 }
311
312 if (SUCCEEDED(hr))
313 {
314 hr = CreateShellItemArrayFromItems(array, cidl, IID_PPV_ARG(IShellItemArray, ppsiItemArray));
315 }
316
317 for (UINT i = 0; i < cidl; ++i)
318 {
319 if (array[i])
320 array[i]->Release();
321 }
322
323 return hr;
324}

Referenced by init_function_pointers().

◆ SHCreateShellItemArrayFromShellItem()

EXTERN_C HRESULT WINAPI SHCreateShellItemArrayFromShellItem ( _In_ IShellItem psi,
_In_ REFIID  riid,
_Out_ void **  ppv 
)

Definition at line 330 of file CShellItemArray.cpp.

331{
332 IShellItem *items[1] = { psi };
333
334 TRACE("(%p,%s,%p)\n", psi, debugstr_guid(&riid), ppv);
335
336 if (!ppv)
337 return E_POINTER;
338 *ppv = NULL;
339
340 if (!psi)
341 return E_INVALIDARG;
342
344}
#define debugstr_guid
Definition: kernel32.h:35

Referenced by init_function_pointers().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( shell  )