NT4/private/oleutest/perform/common/bminput.cxx
2020-09-30 17:12:29 +02:00

268 lines
6.8 KiB
C++

//+------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1993.
//
// File: bminput.cxx
//
// Contents: input class for benchmark config
//
// Classes: CTestinput
//
// Functions:
//
// History: 14-July-93 t-martig Created
// 07-July-94 t-vadims Added GetConfigInt and changed
// GetIterations to use it.
//
//--------------------------------------------------------------------------
#include <benchmrk.hxx>
#include <bminput.hxx>
//+-------------------------------------------------------------------
//
// Member: CTestInput,public
//
// Synopsis: constructor for test input class
//
//+-------------------------------------------------------------------
CTestInput::CTestInput (LPTSTR lpszFileName)
{
lstrcpy (m_szFileName, lpszFileName);
}
//+-------------------------------------------------------------------
//
// Member: GetConfigString,public
//
// Synopsis: returns profile string from specified section and
// parameter.
//
//+-------------------------------------------------------------------
LPTSTR CTestInput::GetConfigString (LPTSTR lpszSection, LPTSTR lpszEntry,
LPTSTR lpszDefault, LPTSTR lpszDest,
DWORD dwLen)
{
GetPrivateProfileString (lpszSection, lpszEntry, lpszDefault,
lpszDest, dwLen, m_szFileName);
return lpszDest;
}
//+-------------------------------------------------------------------
//
// Member: GetConfigInt,public
//
// Synopsis: returns profile integer from specified section and
// parameter.
//
//+-------------------------------------------------------------------
DWORD CTestInput::GetConfigInt (LPTSTR lpszSection, LPTSTR lpszEntry,
DWORD dwDefault)
{
return GetPrivateProfileInt (lpszSection, lpszEntry,
dwDefault, m_szFileName);
}
//+-------------------------------------------------------------------
//
// Member: GetClassCtx,public
//
// Synopsis: Gets the custom class activation context from .ini
// file (entry name = "ClsCtx")
//
// Parameters: [lpszTestName] Section under which "ClsCtx"
// is listed
//
// Returns: CLSCTX_... mode according to entry:
//
// "InProc" CLSCTX_INPROC_SERVER
// "Local" CLSCTX_LOCAL_SERVER,
// "Handler" CLSCTX_INPROC_HANDLER
// any other CLSCTX_INPROC_SERVER
//
// History: 12-July-93 t-martig Created
//
//--------------------------------------------------------------------
DWORD CTestInput::GetClassCtx (LPTSTR lpszTestName)
{
TCHAR szMode[50];
int i;
GetConfigString (lpszTestName, TEXT("ClsCtx"), TEXT("InProc"),
szMode, sizeof(szMode)/sizeof(TCHAR));
i = 0;
while (saModeNames[i])
{
if (lstrcmpi (saModeNames[i], szMode) == 0)
return dwaModes[i];
i++;
}
return dwaModes[0];
}
//+-------------------------------------------------------------------
//
// Member: GetOleInitFlag,public
//
// Synopsis: Gets OleInitialize flag
//
// Parameters:
//
// History: 13-August-93 t-martig Created
//
//--------------------------------------------------------------------
DWORD CTestInput::GetOleInitFlag(void)
{
TCHAR szInitFlag[60];
GetPrivateProfileString (TEXT("Driver"), TEXT("InitFlag"),
TEXT("COINIT_APARTMENTTHREADED"),
szInitFlag, sizeof(szInitFlag)/sizeof(TCHAR),
m_szFileName);
#ifdef THREADING_SUPPORT
if (lstrlen(szInitFlag)==0)
return COINIT_APARTMENTTHREADED;
if (!lstrcmpi(szInitFlag, TEXT("COINIT_MULTITHREADED")))
return COINIT_MULTITHREADED;
else
#endif
return 2; // COINIT_APARTMENTTHREADED;
}
//+-------------------------------------------------------------------
//
// Member: GetInfoLevelFlag,public
//
// Synopsis: Gets InfoLevel flag
//
// Parameters:
//
// History: 13-August-93 t-martig Created
//
//--------------------------------------------------------------------
DWORD CTestInput::GetInfoLevelFlag(void)
{
TCHAR szInfoFlag[60];
GetPrivateProfileString (TEXT("Driver"), TEXT("InfoLevel"),
TEXT("BASE"),
szInfoFlag, sizeof(szInfoFlag)/sizeof(TCHAR),
m_szFileName);
if (lstrlen(szInfoFlag)==0)
return 0;
if (!lstrcmpi(szInfoFlag, TEXT("FULL")))
return 1;
else
return 0;
}
//+-------------------------------------------------------------------
//
// Member: GetGUID,public
//
// Synopsis: Gets GUID from .ini file
//
// Parameters: [pClsID] Address where to put class ID
// [lpszTestName] Section
// [lpszEntry] Entry name
//
// History: 13-August-93 t-martig Created
//
//--------------------------------------------------------------------
SCODE CTestInput::GetGUID (CLSID *pClsID, LPTSTR lpszTestName,
LPTSTR lpszEntry)
{
TCHAR szClsID[60];
LPOLESTR lpszClsID;
GetConfigString (lpszTestName, lpszEntry, TEXT(""),
szClsID, sizeof(szClsID)/sizeof(TCHAR));
if (lstrlen(szClsID)==0)
return E_FAIL;
#ifdef UNICODE
lpszClsID = szClsID;
#else
OLECHAR szTmp[60];
MultiByteToWideChar(CP_ACP, 0, szClsID, -1, szTmp, 60);
lpszClsID = szTmp;
#endif
return CLSIDFromString(lpszClsID, pClsID);
}
//+-------------------------------------------------------------------
//
// Member: GetClassID,public
//
// Synopsis: Gets the custom class ID from .ini file
// (entry name = "ClsID")
//
// Parameters: [pClsID] Address where to put class ID
// [lpszTestName] Section under which "ClsID"
// is listed
//
// History: 13-July-93 t-martig Created
//
//--------------------------------------------------------------------
SCODE CTestInput::GetClassID (CLSID *pClsID, LPTSTR lpszTestName)
{
return GetGUID(pClsID, lpszTestName, TEXT("ClsID"));
}
//+-------------------------------------------------------------------
//
// Member: GetIterations, public
//
// Synopsis: returns the iteration count for the test. if out of
// range, it returns either 1 or TEST_MAX_ITERATIONS.
//
// History: 07-July-94 t-vadims Modified to use new GetConfigInt function.
//
//+-------------------------------------------------------------------
DWORD CTestInput::GetIterations (LPTSTR lpszTestName, int iIterDefault)
{
int iIterations;
iIterations = GetConfigInt (lpszTestName, TEXT("Iterations"), iIterDefault);
if (iIterations > TEST_MAX_ITERATIONS)
iIterations = TEST_MAX_ITERATIONS;
return (iIterations > 0) ? iIterations : 1;
}
//+-------------------------------------------------------------------
//
// Member: GetRealIterations, public
//
// Synopsis: returns the iteration count for the test. Does not
// range check.
//
// History: 07-July-94 t-vadims Modified to use new GetConfigInt function.
//
//+-------------------------------------------------------------------
DWORD CTestInput::GetRealIterations (LPTSTR lpszTestName, int iIterDefault)
{
int iIterations;
iIterations = GetConfigInt (lpszTestName, TEXT("Iterations"), iIterDefault);
return (iIterations > 0) ? iIterations : 1;
}