Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// moninf.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "moninf.h"
#include "moninfDlg.h"
#include "mon.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CMoninfApp
BEGIN_MESSAGE_MAP(CMoninfApp, CWinApp) //{{AFX_MSG_MAP(CMoninfApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp) END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMoninfApp construction
CMoninfApp::CMoninfApp() { // TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CMoninfApp object
CMoninfApp theApp;
/////////////////////////////////////////////////////////////////////////////
// Private Functions
void ReadMonitorInfs(LPCSTR);
/////////////////////////////////////////////////////////////////////////////
// CMoninfApp initialization
BOOL CMoninfApp::InitInstance() { gSumInf.Initialize(REPORT_FILE_NAME); ReadMonitorInfs(SRC_INF_PATH);
gSumInf.CheckDupSections(); gSumInf.CheckDupMonIDs(); gSumInf.CheckDupAlias(); gSumInf.DumpMonitorInf(DEST_INF_PATH, FILE_BREAK_SIZE);
return FALSE; }
void ReadMonitorInfs(LPCSTR srcDir) { CString fileName; fileName = CString(srcDir) + "\\*.*";
CFileFind finder;
if (finder.FindFile(fileName)) { BOOL bWorking = TRUE; while (bWorking) { bWorking = finder.FindNextFile();
if (finder.IsDots()) continue;
if (finder.IsDirectory()) { ReadMonitorInfs((LPCSTR)finder.GetFilePath()); continue; }
//////////////////////////////////////////////
// Check if it's INF file
CString fName = finder.GetFileName(); if (stricmp(fName.Right(4), ".inf") != 0) continue; CMonitorInf *pMonitorInf = new(CMonitorInf); if (pMonitorInf == NULL) continue;
//////////////////////////////////////////////
// Check if it's INF file
ReadOneMonitorInf(finder.GetFilePath(), pMonitorInf);
for (int i = 0; i < pMonitorInf->ManufacturerArray.GetSize(); i++) gSumInf.AddOneManufacturer((CManufacturer*)pMonitorInf->ManufacturerArray[i]);
pMonitorInf->ManufacturerArray.RemoveAll();
delete pMonitorInf; } } }
VOID ReadOneMonitorInf(LPCSTR fileName, CMonitorInf *pMonitorInf) { lstrcpy(gszInputFileName, fileName); fprintf(gSumInf.m_fpReport, "Handling %s\n", gszInputFileName);
CFile InfFile(fileName, CFile::modeRead);
DWORD len = InfFile.GetLength(); if (len > MAX_INFFILE_SIZE || len <= 20) return; pMonitorInf->pReadFileBuf = (LPSTR)malloc(len+1024); if (pMonitorInf->pReadFileBuf == NULL) return; if (InfFile.Read(pMonitorInf->pReadFileBuf, len) < len) { free(pMonitorInf->pReadFileBuf); return; }
TokenizeInf((LPSTR)pMonitorInf->pReadFileBuf, pMonitorInf); pMonitorInf->ParseInf();
free(pMonitorInf->pReadFileBuf); pMonitorInf->pReadFileBuf = NULL; }
|