mirror of
https://github.com/reactos/reactos.git
synced 2025-05-15 07:17:23 +00:00
Primary implementation of sfc.dll. To have it "fully" working, sfc_os.dll is will be needed.
It does nothing more. Don't shout, Fireball agreed for commit ;). svn path=/trunk/; revision=35813
This commit is contained in:
parent
48d386505a
commit
d44a0a0009
8 changed files with 239 additions and 0 deletions
|
@ -148,6 +148,7 @@
|
||||||
<property name="BASEADDRESS_RASDLG" value="0x768d0000" />
|
<property name="BASEADDRESS_RASDLG" value="0x768d0000" />
|
||||||
<property name="BASEADDRESS_GDIPLUS" value="0x76a00000" />
|
<property name="BASEADDRESS_GDIPLUS" value="0x76a00000" />
|
||||||
<property name="BASEADDRESS_ATL" value="0x76a80000" />
|
<property name="BASEADDRESS_ATL" value="0x76a80000" />
|
||||||
|
<property name="BASEADDRESS_SFC" value="0x76b50000" />
|
||||||
<property name="BASEADDRESS_WINTRUST" value="0x76c30000" />
|
<property name="BASEADDRESS_WINTRUST" value="0x76c30000" />
|
||||||
<property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" />
|
<property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" />
|
||||||
<property name="BASEADDRESS_CLUSAPI" value="0x76d10000" />
|
<property name="BASEADDRESS_CLUSAPI" value="0x76d10000" />
|
||||||
|
|
|
@ -320,6 +320,7 @@ dll\win32\security\security.dll 1
|
||||||
dll\win32\sensapi\sensapi.dll 1
|
dll\win32\sensapi\sensapi.dll 1
|
||||||
dll\win32\serialui\serialui.dll 1
|
dll\win32\serialui\serialui.dll 1
|
||||||
dll\win32\setupapi\setupapi.dll 1
|
dll\win32\setupapi\setupapi.dll 1
|
||||||
|
dll\win32\sfc\sfc.dll 1
|
||||||
dll\win32\shdocvw\shdocvw.dll 1
|
dll\win32\shdocvw\shdocvw.dll 1
|
||||||
dll\win32\shell32\shell32.dll 1
|
dll\win32\shell32\shell32.dll 1
|
||||||
dll\win32\shfolder\shfolder.dll 1
|
dll\win32\shfolder\shfolder.dll 1
|
||||||
|
|
14
reactos/dll/win32/sfc/precomp.h
Normal file
14
reactos/dll/win32/sfc/precomp.h
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#ifndef _PRECOMP_H__
|
||||||
|
#define _PRECOMP_H__
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <sfc.h>
|
||||||
|
#include <srrestoreptapi.h>
|
||||||
|
|
||||||
|
DWORD WINAPI sfc_8();
|
||||||
|
DWORD WINAPI sfc_9();
|
||||||
|
|
||||||
|
typedef BOOL (WINAPI *PSRSRPA)(PRESTOREPOINTINFOA, PSTATEMGRSTATUS);
|
||||||
|
typedef BOOL (WINAPI *PSRSRPW)(PRESTOREPOINTINFOW, PSTATEMGRSTATUS);
|
||||||
|
|
||||||
|
#endif
|
130
reactos/dll/win32/sfc/sfc.c
Normal file
130
reactos/dll/win32/sfc/sfc.c
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
/*
|
||||||
|
* System File Checker (Windows File Protection)
|
||||||
|
*
|
||||||
|
* Copyright 2008 Pierre Schweitzer
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "precomp.h"
|
||||||
|
|
||||||
|
HINSTANCE hLibModule;
|
||||||
|
|
||||||
|
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
switch (fdwReason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
{
|
||||||
|
DisableThreadLibraryCalls(hinstDLL);
|
||||||
|
hLibModule = hinstDLL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI sfc_8()
|
||||||
|
{
|
||||||
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD WINAPI sfc_9()
|
||||||
|
{
|
||||||
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI SRSetRestorePointA(PRESTOREPOINTINFOA pRestorePtSpec, PSTATEMGRSTATUS pSMgrStatus)
|
||||||
|
{
|
||||||
|
HMODULE hModule;
|
||||||
|
PSRSRPA pSRSRPA;
|
||||||
|
BOOL bStatus = FALSE;
|
||||||
|
LPCWSTR lpLibFileName = L"srclient.dll";
|
||||||
|
LPCSTR lpProcName = "SRSetRestorePointA";
|
||||||
|
|
||||||
|
hModule = LoadLibraryW(lpLibFileName);
|
||||||
|
if (hModule)
|
||||||
|
{
|
||||||
|
pSRSRPA = (PSRSRPA)GetProcAddress(hModule, lpProcName);
|
||||||
|
if (pSRSRPA)
|
||||||
|
{
|
||||||
|
bStatus = pSRSRPA(pRestorePtSpec, pSMgrStatus);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pSMgrStatus)
|
||||||
|
{
|
||||||
|
pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FreeLibrary(hModule);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pSMgrStatus)
|
||||||
|
{
|
||||||
|
pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return bStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI SRSetRestorePointW(PRESTOREPOINTINFOW pRestorePtSpec, PSTATEMGRSTATUS pSMgrStatus)
|
||||||
|
{
|
||||||
|
HMODULE hModule;
|
||||||
|
PSRSRPW pSRSRPW;
|
||||||
|
BOOL bStatus = FALSE;
|
||||||
|
LPCWSTR lpLibFileName = L"srclient.dll";
|
||||||
|
LPCSTR lpProcName = "SRSetRestorePointW";
|
||||||
|
|
||||||
|
hModule = LoadLibraryW(lpLibFileName);
|
||||||
|
if (hModule)
|
||||||
|
{
|
||||||
|
pSRSRPW = (PSRSRPW)GetProcAddress(hModule, lpProcName);
|
||||||
|
if (pSRSRPW)
|
||||||
|
{
|
||||||
|
bStatus = pSRSRPW(pRestorePtSpec, pSMgrStatus);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pSMgrStatus)
|
||||||
|
{
|
||||||
|
pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FreeLibrary(hModule);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pSMgrStatus)
|
||||||
|
{
|
||||||
|
pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return bStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI SfpVerifyFile(LPCSTR pszFileName, LPSTR pszError, DWORD dwErrSize)
|
||||||
|
{
|
||||||
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||||
|
return FALSE;
|
||||||
|
}
|
8
reactos/dll/win32/sfc/sfc.rbuild
Normal file
8
reactos/dll/win32/sfc/sfc.rbuild
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<module name="sfc" type="win32dll" baseaddress="${BASEADDRESS_SFC}" installbase="system32" installname="sfc.dll" allowwarnings="yes">
|
||||||
|
<importlibrary definition="sfc.spec.def" />
|
||||||
|
<include base="sfc">.</include>
|
||||||
|
<library>kernel32</library>
|
||||||
|
<file>sfc.c</file>
|
||||||
|
<file>sfc.spec</file>
|
||||||
|
<pch>precomp.h</pch>
|
||||||
|
</module>
|
18
reactos/dll/win32/sfc/sfc.spec
Normal file
18
reactos/dll/win32/sfc/sfc.spec
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
@ stub sfc_1
|
||||||
|
@ stub sfc_2
|
||||||
|
@ stub sfc_3
|
||||||
|
@ stub sfc_4
|
||||||
|
@ stub sfc_5
|
||||||
|
@ stub sfc_6
|
||||||
|
@ stub sfc_7
|
||||||
|
@ stdcall sfc_8 ()
|
||||||
|
@ stdcall sfc_9 ()
|
||||||
|
@ stdcall SRSetRestorePoint (ptr ptr) SRSetRestorePointA
|
||||||
|
@ stdcall SRSetRestorePointA (ptr ptr)
|
||||||
|
@ stdcall SRSetRestorePointW (ptr ptr)
|
||||||
|
@ stub SfcGetNextProtectedFile
|
||||||
|
@ stub SfcIsFileProtected
|
||||||
|
@ stub SfcWLEventLogoff
|
||||||
|
@ stub SfcWLEventLogon
|
||||||
|
@ stdcall SfpVerifyFile (ptr ptr long)
|
||||||
|
@ stdcall start (long long ptr) DllMain
|
|
@ -295,6 +295,9 @@
|
||||||
<directory name="setupapi">
|
<directory name="setupapi">
|
||||||
<xi:include href="setupapi/setupapi.rbuild" />
|
<xi:include href="setupapi/setupapi.rbuild" />
|
||||||
</directory>
|
</directory>
|
||||||
|
<directory name="sfc">
|
||||||
|
<xi:include href="sfc/sfc.rbuild" />
|
||||||
|
</directory>
|
||||||
<directory name="shdocvw">
|
<directory name="shdocvw">
|
||||||
<xi:include href="shdocvw/shdocvw.rbuild" />
|
<xi:include href="shdocvw/shdocvw.rbuild" />
|
||||||
</directory>
|
</directory>
|
||||||
|
|
64
reactos/include/psdk/srrestoreptapi.h
Normal file
64
reactos/include/psdk/srrestoreptapi.h
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* Definitions for the System File Checker (Windows File Protection)
|
||||||
|
*
|
||||||
|
* Copyright 2008 Pierre Schweitzer
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SRRESTOREPTAPI_H
|
||||||
|
#define _SRRESTOREPTAPI_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Defines */
|
||||||
|
|
||||||
|
#define MAX_DESC 64
|
||||||
|
#define MAX_DESC_W 256
|
||||||
|
|
||||||
|
/* Types */
|
||||||
|
|
||||||
|
typedef struct _RESTOREPTINFOA {
|
||||||
|
DWORD dwEventType;
|
||||||
|
DWORD dwRestorePtType;
|
||||||
|
INT64 llSequenceNumber;
|
||||||
|
CHAR szDescription[MAX_DESC];
|
||||||
|
} RESTOREPOINTINFOA, *PRESTOREPOINTINFOA;
|
||||||
|
|
||||||
|
typedef struct _RESTOREPTINFOW {
|
||||||
|
DWORD dwEventType;
|
||||||
|
DWORD dwRestorePtType;
|
||||||
|
INT64 llSequenceNumber;
|
||||||
|
WCHAR szDescription[MAX_DESC_W];
|
||||||
|
} RESTOREPOINTINFOW, *PRESTOREPOINTINFOW;
|
||||||
|
|
||||||
|
typedef struct _SMGRSTATUS {
|
||||||
|
DWORD nStatus;
|
||||||
|
INT64 llSequenceNumber;
|
||||||
|
} STATEMGRSTATUS, *PSTATEMGRSTATUS;
|
||||||
|
|
||||||
|
/* Functions */
|
||||||
|
|
||||||
|
BOOL WINAPI SRSetRestorePointA(PRESTOREPOINTINFOA, PSTATEMGRSTATUS);
|
||||||
|
BOOL WINAPI SRSetRestorePointW(PRESTOREPOINTINFOW, PSTATEMGRSTATUS);
|
||||||
|
DWORD WINAPI SRRemoveRestorePoint(DWORD);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue