sfc_os!SfcValidateCatalogs函数分析之syssetup.inf中的[ProductCatalogsToInstall]
第一部分:
BOOL
SfcValidateCatalogs(
VOID
)
{
Count = SetupGetLineCount( hInf, L"ProductCatalogsToInstall");
if (Count == 0) {
DebugPrint(
LVL_MINIMAL,
L"failed to retreive catalogs via syssetup.inf, validate using critical catalog list");
goto minimal_catalog_validation;
}
for (i = 0; i < Count; i++) {
INFCONTEXT InfContext;
WCHAR CatalogName[MAX_PATH];
BOOL SuccessfullyValidatedOrRestoredACatalog = FALSE;
if(SetupGetLineByIndex(
hInf,
L"ProductCatalogsToInstall",
i,
&InfContext) &&
(SetupGetStringField(
&InfContext,
1,
CatalogName,
sizeof(CatalogName)/sizeof(WCHAR),
NULL))) {
CatInfo.cbStruct = sizeof(CATALOG_INFO);
pCryptCATAdminResolveCatalogPath(
hCatAdmin,
CatalogName,
&CatInfo,
0 );
if (!SfcValidateSingleCatalog( CatInfo.wszCatalogFile )) {
if (!SfcRestoreSingleCatalog(
CatalogName,
CatInfo.wszCatalogFile )) {
第二部分:syssetup.inf部分内容
[ProductCatalogsToInstall]
NT5INF.CAT, 1
NT5.CAT
NTPRINT.CAT
NT5IIS.CAT
FP5.CAT
IMS.CAT
INS.CAT
WMSocm.CAT
IASNT4.CAT
MSTSWEB.CAT
OEMBIOS.CAT
FXSCAT.CAT
sasetup.CAT
adminpak.CAT
admt.cat
UDDI.CAT
[ProductCatalogsToUninstall]