Implement DelayedMove and FileExists.
Modified: trunk/reactos/include/wine/setupapi.h
Modified: trunk/reactos/lib/setupapi/misc.c
Modified: trunk/reactos/lib/setupapi/setupapi.spec

Modified: trunk/reactos/include/wine/setupapi.h
--- trunk/reactos/include/wine/setupapi.h	2005-02-04 03:21:46 UTC (rev 13402)
+++ trunk/reactos/include/wine/setupapi.h	2005-02-04 12:27:34 UTC (rev 13403)
@@ -666,9 +666,11 @@
 
 
 LONG     WINAPI AddTagToGroupOrderList(PCWSTR lpGroupName, DWORD dwUnknown2, DWORD dwUnknown3);
+BOOL     WINAPI DelayedMove(PCWSTR lpExistingFileName, PCWSTR lpNewFileName);
 BOOL     WINAPI DoesUserHavePrivilege(PCWSTR lpPrivilegeName);
 PWSTR    WINAPI DuplicateString(PCWSTR lpSrc);
 BOOL     WINAPI EnablePrivilege(PCWSTR lpPrivilegeName, BOOL bEnable);
+BOOL     WINAPI FileExists(PCWSTR lpFileName, PWIN32_FIND_DATAW lpFileFindData);
 void     WINAPI InstallHinfSectionA( HWND hwnd, HINSTANCE handle, PCSTR cmdline, INT show );
 void     WINAPI InstallHinfSectionW( HWND hwnd, HINSTANCE handle, PCWSTR cmdline, INT show );
 #define         InstallHinfSection WINELIB_NAME_AW(InstallHinfSection)

Modified: trunk/reactos/lib/setupapi/misc.c
--- trunk/reactos/lib/setupapi/misc.c	2005-02-04 03:21:46 UTC (rev 13402)
+++ trunk/reactos/lib/setupapi/misc.c	2005-02-04 12:27:34 UTC (rev 13403)
@@ -30,6 +30,9 @@
 #include "wine/unicode.h"
 #include "wine/debug.h"
 
+#include "setupapi_private.h"
+
+
 WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
 
 
@@ -458,3 +461,43 @@
 
     return bResult;
 }
+
+
+BOOL WINAPI DelayedMove(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName)
+{
+    if (OsVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT)
+    {
+        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+        return FALSE;
+    }
+
+    return MoveFileExW(lpExistingFileName, lpNewFileName,
+                       MOVEFILE_REPLACE_EXISTING | MOVEFILE_DELAY_UNTIL_REBOOT);
+}
+
+
+BOOL WINAPI FileExists(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFileFindData)
+{
+    WIN32_FIND_DATAW FindData;
+    HANDLE hFind;
+    UINT uErrorMode;
+    DWORD dwError;
+
+    uErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
+
+    hFind = FindFirstFileW(lpFileName, &FindData);
+    if (hFind == INVALID_HANDLE_VALUE)
+    {
+        dwError = GetLastError();
+        SetErrorMode(uErrorMode);
+        SetLastError(dwError);
+        return FALSE;
+    }
+
+    FindClose(hFind);
+
+    if (lpFileFindData)
+        memcpy(lpFileFindData, &FindData, sizeof(WIN32_FIND_DATAW));
+
+    return TRUE;
+}

Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/lib/setupapi/setupapi.spec	2005-02-04 03:21:46 UTC (rev 13402)
+++ trunk/reactos/lib/setupapi/setupapi.spec	2005-02-04 12:27:34 UTC (rev 13403)
@@ -194,14 +194,14 @@
 @ stub CaptureStringArg
 @ stub CenterWindowRelativeToParent
 @ stub ConcatenatePaths
-@ stub DelayedMove
+@ stdcall DelayedMove(wstr wstr)
 @ stub DelimStringToMultiSz
 @ stub DestroyTextFileReadBuffer
 @ stdcall DoesUserHavePrivilege(wstr)
 @ stdcall DuplicateString(wstr)
 @ stdcall EnablePrivilege(wstr long)
 @ stub ExtensionPropSheetPageProc
-@ stub FileExists
+@ stdcall FileExists(wstr ptr)
 @ stub FreeStringArray
 @ stub GetCurrentDriverSigningPolicy
 @ stub GetNewInfName