windows-nt/Source/XPSP1/NT/ds/security/services/ca/include/csresstr.h
2020-09-26 16:20:57 +08:00

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