118 lines
2.4 KiB
C
118 lines
2.4 KiB
C
//+--------------------------------------------------------------------------
|
|
//
|
|
// 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
|