Author: fireball
Date: Tue Oct  7 06:23:36 2008
New Revision: 36676
URL: 
http://svn.reactos.org/svn/reactos?rev=36676&view=rev
Log:
Daniel Zimmerman <netzimme(a)aim.com>
- Sync the sfc_os.dll with Wine and implement SfcIsFileProtected and
SfcIsKeyProtected. The installer will work better with this two function.
See issue #3719 for more details.
Modified:
    trunk/reactos/dll/win32/sfc_os/sfc_os.c
    trunk/reactos/dll/win32/sfc_os/sfc_os.spec
Modified: trunk/reactos/dll/win32/sfc_os/sfc_os.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sfc_os/sfc_os.c?…
==============================================================================
--- trunk/reactos/dll/win32/sfc_os/sfc_os.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/sfc_os/sfc_os.c [iso-8859-1] Tue Oct  7 06:23:36 2008
@@ -19,6 +19,7 @@
  */
 #include "precomp.h"
+#include "debug.h"
 HINSTANCE hLibModule;
@@ -40,3 +41,81 @@
     return TRUE;
 }
+
+
+/******************************************************************
+ *              SfcIsFileProtected     [sfc_os.@]
+ *
+ * Check, if the given File is protected by the System
+ *
+ * PARAMS
+ *  RpcHandle    [I] This must be NULL
+ *  ProtFileName [I] Filename with Path to check
+ *
+ * RETURNS
+ *  Failure: FALSE with GetLastError() != ERROR_FILE_NOT_FOUND
+ *  Success: TRUE, when the File is Protected
+ *           FALSE with GetLastError() == ERROR_FILE_NOT_FOUND,
+ *           when the File is not Protected
+ *
+ *
+ * BUGS
+ *  We return always the Result for: "File is not Protected"
+ *
+ */
+BOOL WINAPI SfcIsFileProtected(HANDLE RpcHandle, LPCWSTR ProtFileName)
+{
+    static BOOL reported = FALSE;
+
+    if (reported) {
+        DPRINT("(%p, %S) stub\n", RpcHandle, ProtFileName);
+    }
+    else
+    {
+        DPRINT1("(%p, %S) stub\n", RpcHandle, ProtFileName);
+        reported = TRUE;
+    }
+
+    SetLastError(ERROR_FILE_NOT_FOUND);
+    return FALSE;
+}
+
+/******************************************************************
+ *              SfcIsKeyProtected     [sfc_os.@]
+ *
+ * Check, if the given Registry Key is protected by the System
+ *
+ * PARAMS
+ *  hKey          [I] Handle to the root registry key
+ *  lpSubKey      [I] Name of the subkey to check
+ *  samDesired    [I] The Registry View to Examine (32 or 64 bit)
+ *
+ * RETURNS
+ *  Failure: FALSE with GetLastError() != ERROR_FILE_NOT_FOUND
+ *  Success: TRUE, when the Key is Protected
+ *           FALSE with GetLastError() == ERROR_FILE_NOT_FOUND,
+ *           when the Key is not Protected
+ *
+ */
+BOOL WINAPI SfcIsKeyProtected(HKEY hKey, LPCWSTR lpSubKey, REGSAM samDesired)
+{
+    static BOOL reported = FALSE;
+
+    if (reported) {
+        DPRINT("(%p, %S) stub\n", hKey, lpSubKey);
+    }
+    else
+    {
+        DPRINT1("(%p, %S) stub\n", hKey, lpSubKey);
+        reported = TRUE;
+    }
+
+    if( !hKey ) {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
+
+    SetLastError(ERROR_FILE_NOT_FOUND);
+    return FALSE;
+}
+
Modified: trunk/reactos/dll/win32/sfc_os/sfc_os.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sfc_os/sfc_os.sp…
==============================================================================
--- trunk/reactos/dll/win32/sfc_os/sfc_os.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/sfc_os/sfc_os.spec [iso-8859-1] Tue Oct  7 06:23:36 2008
@@ -6,6 +6,7 @@
 @ stub sfc_os_6
 @ stub sfc_os_7
 @ stub SfcGetNextProtectedFile
-@ stub SfcIsFileProtected
+@ stdcall SfcIsFileProtected(ptr wstr)
+@ stdcall SfcIsKeyProtected(long wstr long)
 @ stub SfcWLEventLogoff
-@ stub SfcWLEventLogon
+@ stub SfcWLEventLogon