ReactOS  0.4.14-dev-98-gb0d4763
sfc.c
Go to the documentation of this file.
1 /*
2  * System File Checker (Windows File Protection)
3  *
4  * Copyright 2008 Pierre Schweitzer
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20 
21 #include "precomp.h"
22 
24 
26 {
27  switch (fdwReason)
28  {
29  case DLL_PROCESS_ATTACH:
30  {
31  DisableThreadLibraryCalls(hinstDLL);
32  hLibModule = hinstDLL;
33  break;
34  }
35  case DLL_PROCESS_DETACH:
36  {
37  break;
38  }
39  }
40 
41  return TRUE;
42 }
43 
45 {
47 }
48 
50 {
52 }
53 
55 {
57  PSRSRPA pSRSRPA;
58  BOOL bStatus = FALSE;
59  LPCWSTR lpLibFileName = L"srclient.dll";
60  LPCSTR lpProcName = "SRSetRestorePointA";
61 
62  hModule = LoadLibraryW(lpLibFileName);
63  if (hModule)
64  {
65  pSRSRPA = (PSRSRPA)GetProcAddress(hModule, lpProcName);
66  if (pSRSRPA)
67  {
68  bStatus = pSRSRPA(pRestorePtSpec, pSMgrStatus);
69  }
70  else
71  {
72  if (pSMgrStatus)
73  {
74  pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
75  }
76  }
78  }
79  else
80  {
81  if (pSMgrStatus)
82  {
83  pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
84  }
85  }
86 
87  return bStatus;
88 }
89 
91 {
93  PSRSRPW pSRSRPW;
94  BOOL bStatus = FALSE;
95  LPCWSTR lpLibFileName = L"srclient.dll";
96  LPCSTR lpProcName = "SRSetRestorePointW";
97 
98  hModule = LoadLibraryW(lpLibFileName);
99  if (hModule)
100  {
101  pSRSRPW = (PSRSRPW)GetProcAddress(hModule, lpProcName);
102  if (pSRSRPW)
103  {
104  bStatus = pSRSRPW(pRestorePtSpec, pSMgrStatus);
105  }
106  else
107  {
108  if (pSMgrStatus)
109  {
110  pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
111  }
112  }
114  }
115  else
116  {
117  if (pSMgrStatus)
118  {
119  pSMgrStatus->nStatus = ERROR_CALL_NOT_IMPLEMENTED;
120  }
121  }
122 
123  return bStatus;
124 }
125 
127 {
129  return FALSE;
130 }
BOOL WINAPI SRSetRestorePointW(PRESTOREPOINTINFOW pRestorePtSpec, PSTATEMGRSTATUS pSMgrStatus)
Definition: sfc.c:90
BOOL(WINAPI * PSRSRPA)(PRESTOREPOINTINFOA, PSTATEMGRSTATUS)
Definition: precomp.h:13
HINSTANCE hLibModule
Definition: sfc.c:23
#define TRUE
Definition: types.h:120
BOOL WINAPI SfpVerifyFile(LPCSTR pszFileName, LPSTR pszError, DWORD dwErrSize)
Definition: sfc.c:126
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
BOOL(WINAPI * PSRSRPW)(PRESTOREPOINTINFOW, PSTATEMGRSTATUS)
Definition: precomp.h:14
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
char * LPSTR
Definition: xmlstorage.h:182
static IN DWORD IN LPVOID lpvReserved
unsigned int BOOL
Definition: ntddk_ex.h:94
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:41
#define LoadLibraryW(x)
Definition: compat.h:404
const char * LPCSTR
Definition: xmlstorage.h:183
#define DLL_PROCESS_DETACH
Definition: compat.h:119
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
Definition: sfc.c:25
#define FreeLibrary(x)
Definition: compat.h:405
#define WINAPI
Definition: msvc.h:8
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
static const WCHAR L[]
Definition: oid.c:1250
BOOL WINAPI SRSetRestorePointA(PRESTOREPOINTINFOA pRestorePtSpec, PSTATEMGRSTATUS pSMgrStatus)
Definition: sfc.c:54
DWORD WINAPI sfc_9()
Definition: sfc.c:49
DWORD WINAPI sfc_8()
Definition: sfc.c:44
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:92
#define GetProcAddress(x, y)
Definition: compat.h:410
HMODULE hModule
Definition: animate.c:44