Hi Joris, pFromFile and pToFile are treated oddly. Pass them as WCHAR pointers to file_operation_on_data, not as pointers to WCHAR pointers. The implementation of file_operation_on_data does not behave the same way as the code it replaced. You want something like: +static int file_operation_on_data(WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW *nFileOp, LPWSTR pFromFile,LPWSTR pToFile) +{ + LPWSTR lpFileName = wfd->cAlternateFileName; + if (!lpFileName[0]) + lpFileName = wfd->cFileName; + if (IsDotDir(lpFileName) || + (IsAttribDir(wfd->dwFileAttributes) && (nFileOp->fFlags & FOF_FILESONLY))) + { + return 0; /* next name in pTempFrom(dir) */ + } + SHFileStrCpyCatW(&pToFile[1], lpFileName, NULL); + SHFileStrCpyCatW(&pFromFile[1], lpFileName, NULL); + return SHFileOperationW (nFileOp); +} One other difference that jumps out at me: - lpFileOp->fAnyOperationsAborted = nFileOp.fAnyOperationsAborted; + /*lpFileOp->fAnyOperationsAborted = nFileOp.fAnyOperationsAborted;*/ Why this change? --Juan __________________________________ Do you Yahoo!? Yahoo! Mail - Find what you need with new enhanced search. http://info.mail.yahoo.com/mail_250