|
|
//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: csresstr.h
//
// Contents: Cert Server resource verification support
//
//---------------------------------------------------------------------------
// Build a local resstr.h, include this include file in one compiland, and
// invoke myVerifyResourceStrings() to verify all resources are present.
#if DBG
#define myVerifyResourceStrings(h) _myVerifyResourceStrings(h)
#else
#define myVerifyResourceStrings(h) S_OK
#endif
#if DBG
typedef struct _RESSTRING { WCHAR const *pwszSymbol; DWORD IdString; } RESSTRING;
#define RESSTR(id) { L#id, id }
RESSTRING g_aResString[] = { #include "resstr.h"
{ NULL, 0 } };
//+------------------------------------------------------------------------
// Function: _myVerifyResourceStrings
//
// Synopsis: Load and verify all resource strings are present
//
//-------------------------------------------------------------------------
HRESULT _myVerifyResourceStrings( HINSTANCE hInstance) { HRESULT hr = S_OK; BOOL fDump; int i; int cFail; CAutoLPWSTR wszStrBuf; WCHAR const *pwsz;
wszStrBuf = (LPWSTR)LocalAlloc(LMEM_FIXED, 2048); _JumpIfAllocFailed(wszStrBuf, error);
fDump = NULL != getenv("CertSrv_DumpStrings");
cFail = 0; for (i = 0; NULL != g_aResString[i].pwszSymbol; i++) { if (!LoadString( hInstance, g_aResString[i].IdString, wszStrBuf, sizeof(wszStrBuf)/sizeof(WCHAR))) { hr = myHLastError(); if (S_OK == hr) { hr = HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); } _PrintErrorStr(hr, "LoadString", g_aResString[i].pwszSymbol); cFail++; wcscpy(wszStrBuf, L"-- MISSING"); } if (fDump) { DBGPRINT(( DBG_SS_CERTLIB, "Resource(%ws: %ws)\n", g_aResString[i].pwszSymbol, wszStrBuf)); } } if (!GetModuleFileName(hInstance, wszStrBuf, ARRAYSIZE(wszStrBuf))) { HRESULT hr2 = myHLastError();
_PrintError(hr2, "GetModuleFileName"); wcscpy(wszStrBuf, L"UNKNOWN MODULE"); } if (0 == cFail) { if (fDump) { DBGPRINT(( DBG_SS_CERTLIB, "%ws: Resource strings all present\n", wszStrBuf)); } } else { DBGPRINT(( DBG_SS_ERROR, "%ws: %u Resource strings missing\n", wszStrBuf, cFail)); }
error: return(hr); } #endif // DBG
|