Implemented dummy stub for SHChangeNotifyUpdateEntryList and
functional CIDLData_CreateFromIDArray.

diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
index 976b2f7..ca28b66 100644
--- a/dlls/shell32/shellord.c
+++ b/dlls/shell32/shellord.c
@@ -19,8 +19,10 @@
 #include "shlobj.h"
 #include "shell32_main.h"
 #include "undocshell.h"
+#include "pidl.h"
 
 DEFAULT_DEBUG_CHANNEL(shell);
+DECLARE_DEBUG_CHANNEL(pidl);
 
 /*************************************************************************
  * ParseFieldA					[internal]
@@ -1441,3 +1443,37 @@
  	FIXME("(%08lx)stub\n", a);
 	return 0;
 }
+
+/*************************************************************************
+ *      CIDLData_CreateFromIDArray	[SHELL32.83]
+ *
+ *  Create IDataObject from PIDLs??
+ */
+HRESULT WINAPI CIDLData_CreateFromIDArray(
+	LPCITEMIDLIST pidlFolder,
+	DWORD cpidlFiles,
+	LPCITEMIDLIST *lppidlFiles,
+	LPDATAOBJECT *ppdataObject)
+{
+    INT i;
+    HWND hwnd = 0;   /*FIXME: who should be hwnd of owner? set to desktop */
+    BOOL boldpidl;
+
+    if (TRACE_ON(shell)) {
+	TRACE("(%p, %ld, %p, %p)\n", pidlFolder, cpidlFiles,
+	      lppidlFiles, ppdataObject);
+	boldpidl = TRACE_ON(pidl);
+	__SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_shell, FALSE);
+	__SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_pidl, TRUE);
+	pdump (pidlFolder);
+	for (i=0; i<cpidlFiles; i++){
+	    pdump (lppidlFiles[i]);
+	}
+	__SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_shell, TRUE);
+	__SET_DEBUGGING(__DBCL_TRACE, __wine_dbch_pidl, boldpidl);
+    }
+    *ppdataObject = IDataObject_Constructor( hwnd, pidlFolder,
+					     lppidlFiles, cpidlFiles);
+    if (*ppdataObject) return S_OK;
+    return E_OUTOFMEMORY;
+}