#include #include #include "globals.h" #include "sfp.h" // globals SFPINSTALLCATALOG g_pfSfpInstallCatalog = NULL; SFPDELETECATALOG g_pfSfpDeleteCatalog = NULL; SFPDUPLICATECATALOG g_pfSfpDuplicateCatalog = NULL; // static variables static HINSTANCE s_hSfcDll = NULL; BOOL LoadSfcDLL() { BOOL bRet = FALSE; if ((s_hSfcDll = LoadLibrary("sfc.dll")) != NULL) { // ordinal 8 is SfpInstallCatalog, and // ordinal 9 is SfpDeleteCatalog g_pfSfpInstallCatalog = (SFPINSTALLCATALOG) GetProcAddress(s_hSfcDll, MAKEINTRESOURCE(8)); g_pfSfpDeleteCatalog = (SFPDELETECATALOG) GetProcAddress(s_hSfcDll, MAKEINTRESOURCE(9)); g_pfSfpDuplicateCatalog = (SFPDUPLICATECATALOG) GetProcAddress(s_hSfcDll, "SfpDuplicateCatalog"); if (g_pfSfpInstallCatalog != NULL && g_pfSfpDeleteCatalog != NULL && g_pfSfpDuplicateCatalog != NULL) { bRet = TRUE; } } else { DWORD dwRet = GetLastError(); AdvWriteToLog("LoadSfcDLL: LoadLibrary of sfc.dll failed with %1!lu!\r\n", dwRet); } return bRet; } VOID UnloadSfcDLL() { if (s_hSfcDll != NULL) { FreeLibrary(s_hSfcDll); s_hSfcDll = NULL; } }