268 lines
6.8 KiB
C++
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;
|
|
}
|