// // Function prototypes // LPSTR CombinePaths( IN LPCSTR ParentPath, IN LPCSTR ChildPath, OUT LPSTR TargetPath ); BOOL MyGetFileVersion( IN LPCSTR FileName, OUT DWORDLONG *Version ); BOOL ConvertVersionStringToQuad( IN LPCSTR lpFileVersion, OUT DWORDLONG *FileVersion ); BOOL InitializeLog( BOOL WipeLogFile, LPCSTR NameOfLogFile ); VOID TerminateLog( VOID ); BOOL LogItem( IN DWORD Description, IN LPCSTR LogString ); BOOL ValidateFileSignature( IN HCATADMIN hCatAdmin, IN HANDLE RealFileHandle, IN PCWSTR BaseFileName, IN PCWSTR CompleteFileName ); VOID PrintStringToConsole( IN LPCSTR StringToPrint ); VOID LogHeader( VOID ); BOOL ParseArgs( IN int argc, IN char **argv ); BOOL ListNonMatchingHotfixes( VOID ); VOID _cdecl main( int,char ** ); // // more prototypes // typedef BOOL (WINAPI *PCRYPTCATADMINACQUIRECONTEXT)( OUT HCATADMIN *phCatAdmin, IN const GUID *pgSubsystem, IN DWORD dwFlags ); typedef BOOL (WINAPI *PCRYPTCATADMINRELEASECONTEXT)( IN HCATADMIN hCatAdmin, IN DWORD dwFlags ); typedef BOOL (WINAPI *PCRYPTCATADMINCALCHASHFROMFILEHANDLE)( IN HANDLE hFile, IN OUT DWORD *pcbHash, OUT OPTIONAL BYTE *pbHash, IN DWORD dwFlags ); typedef HCATINFO (WINAPI *PCRYPTCATADMINENUMCATALOGFROMHASH)( IN HCATADMIN hCatAdmin, IN BYTE *pbHash, IN DWORD cbHash, IN DWORD dwFlags, IN OUT HCATINFO *phPrevCatInfo ); typedef LONG (WINAPI *PWINVERIFYTRUST)( HWND hwnd, GUID *pgActionID, LPVOID pWVTData ); typedef BOOL (WINAPI *PCRYPTCATCATALOGINFOFROMCONTEXT)( IN HCATINFO hCatInfo, IN OUT CATALOG_INFO *psCatInfo, IN DWORD dwFlags ); typedef BOOL (WINAPI *PCRYPTCATADMINRELEASECATALOGCONTEXT)( IN HCATADMIN hCatAdmin, IN HCATINFO hCatInfo, IN DWORD dwFlags ); typedef PWSTR (WINAPI *PMULTIBYTETOUNICODE)( IN PCSTR String, IN UINT Code ); extern PCRYPTCATADMINACQUIRECONTEXT pCryptCATAdminAcquireContext; extern PCRYPTCATADMINRELEASECONTEXT pCryptCATAdminReleaseContext; extern PCRYPTCATADMINCALCHASHFROMFILEHANDLE pCryptCATAdminCalcHashFromFileHandle; extern PCRYPTCATADMINENUMCATALOGFROMHASH pCryptCATAdminEnumCatalogFromHash; extern PCRYPTCATCATALOGINFOFROMCONTEXT pCryptCATCatalogInfoFromContext; extern PCRYPTCATADMINRELEASECATALOGCONTEXT pCryptCATAdminReleaseCatalogContext; extern PWINVERIFYTRUST pWinVerifyTrust; // // Strings // #define STR_NO_SYSDIR 0xff00 #define STR_INVALID_OS_VER 0xff01 #define STR_USAGE 0xff02 #define STR_LOGFILE_INIT_FAILED 0xff03 #define STR_FILES_MISSING 0xff04 #define STR_HOTFIX_CURRENT 0xff05 #define STR_GETCOMPUTERNAME_FAILED 0xff06 // available 0xff07 #define STR_REPORT_DATE 0xff08 #define STR_SP_LEVEL 0xff09 #define STR_HOTFIXES_ID 0xff0a #define STR_NO_HOTFIXES_FOUND 0xff0b #define STR_NO_MATCHING_SIG 0xff0c #define STR_REINSTALL_HOTFIX 0xff0d #define STR_NO_SP_INSTALLED 0xff0e // available 0xff0f #define STR_VALIDATION_REPORT_W2K 0xff10 #define STR_VALIDATION_REPORT_XP 0xff11