📄 rangerparameterfile.cpp
字号:
#include "stdafx.h"
#include "RangerParameterFile.h"
// CRangerParameterFile
// ===========================================================================================================================================
CRangerParameterFile::CRangerParameterFile():m_bOpen(FALSE)
{
}
CRangerParameterFile::~CRangerParameterFile()
{
}
BOOL CRangerParameterFile::Create(LPCSTR lpszFileName)
{
if (m_bOpen) return FALSE;
m_bOpen = FALSE;
if (!CFile::Open(lpszFileName,CFile::modeReadWrite|CFile::modeCreate))
return FALSE;
// if the file is not created, create it again.
m_RangerParameterInfo.init();
Write((void*)&m_RangerParameterInfo.headinfo,sizeof(RANGERPARAMETERINFOHEDER));
m_bOpen = TRUE;
return TRUE;
}
BOOL CRangerParameterFile::Open(LPCSTR lpszFileName)
{
if (m_bOpen) return FALSE;
m_bOpen = FALSE;
if (!CFile::Open(lpszFileName,CFile::modeReadWrite))
return FALSE;
// check header information
Read(&m_RangerParameterInfo.headinfo,sizeof(RANGERPARAMETERINFOHEDER));
if (m_RangerParameterInfo.headinfo.bRangerParameterBeginMask[0] != 'R'||
m_RangerParameterInfo.headinfo.bRangerParameterBeginMask[1] != 'B'||
m_RangerParameterInfo.headinfo.bRangerParameterEndMask[0] != 'R'||
m_RangerParameterInfo.headinfo.bRangerParameterEndMask[1] != 'E')
return FALSE;
m_bOpen = TRUE;
return TRUE;
}
BOOL CRangerParameterFile::ToFiles(LPCSTR lpszJobOptionFile,LPCSTR lpszDriverOptionFile,LPCSTR lpszOtherOptionFile)
{
if (!m_bOpen) return FALSE;
// job option
DeleteFile(lpszJobOptionFile);
CFile f1;
f1.Open(lpszJobOptionFile,CFile::modeReadWrite|CFile::modeCreate);
if (m_RangerParameterInfo.headinfo.dwJobOptionLength > 0)
{
Seek(m_RangerParameterInfo.headinfo.dwJobOptionOffset + m_RangerParameterInfo.headinfo.dwHeaderSize,0);
LPBYTE lpBuffer = new BYTE[m_RangerParameterInfo.headinfo.dwJobOptionLength];
Read((void*)lpBuffer,m_RangerParameterInfo.headinfo.dwJobOptionLength);
f1.Write((void*)lpBuffer,m_RangerParameterInfo.headinfo.dwJobOptionLength);
delete[] lpBuffer;
}
f1.Close();
// Driver Option
DeleteFile(lpszDriverOptionFile);
CFile f2;
f2.Open(lpszDriverOptionFile,CFile::modeReadWrite|CFile::modeCreate);
if (m_RangerParameterInfo.headinfo.dwDriverOptionLength > 0)
{
Seek(m_RangerParameterInfo.headinfo.dwDriverOptionOffset+m_RangerParameterInfo.headinfo.dwHeaderSize,0);
LPBYTE lpBuffer = new BYTE[m_RangerParameterInfo.headinfo.dwDriverOptionLength];
Read((void*)lpBuffer,m_RangerParameterInfo.headinfo.dwDriverOptionLength);
f2.Write((void*)lpBuffer,m_RangerParameterInfo.headinfo.dwDriverOptionLength);
delete[] lpBuffer;
}
f2.Close();
// Other Option
DeleteFile(lpszOtherOptionFile);
CFile f3;
f3.Open(lpszOtherOptionFile,CFile::modeReadWrite|CFile::modeCreate);
if (m_RangerParameterInfo.headinfo.dwOtherOptionLength > 0)
{
Seek(m_RangerParameterInfo.headinfo.dwOtherOptionOffset + m_RangerParameterInfo.headinfo.dwHeaderSize,0);
LPBYTE lpBuffer = new BYTE[m_RangerParameterInfo.headinfo.dwOtherOptionLength];
Read((void*)lpBuffer,m_RangerParameterInfo.headinfo.dwOtherOptionLength);
f3.Write((void*)lpBuffer,m_RangerParameterInfo.headinfo.dwOtherOptionLength);
delete[] lpBuffer;
}
f3.Close();
}
BOOL CRangerParameterFile::FromJobOption(LPCSTR lpszJobOptionFile)
{
if (!m_bOpen) return FALSE;
CFile f;
f.Open(lpszJobOptionFile,CFile::modeRead);
long lSize = f.GetLength();
LPBYTE lpBuffer = new BYTE[lSize];
f.Read(lpBuffer,lSize);
long endPos = SeekToEnd();
// Write Data
Write((void*)lpBuffer,lSize);
// Update Head Information
m_RangerParameterInfo.headinfo.dwJobOptionOffset = endPos - m_RangerParameterInfo.headinfo.dwHeaderSize;
m_RangerParameterInfo.headinfo.dwJobOptionLength = lSize;
SeekToBegin();
Write((void*)&m_RangerParameterInfo.headinfo,sizeof(RANGERPARAMETERINFOHEDER));
delete[] lpBuffer;
f.Close();
}
BOOL CRangerParameterFile::FromDriverOption(LPCSTR lpszDriverOptionFile)
{
if (!m_bOpen) return FALSE;
CFile f;
f.Open(lpszDriverOptionFile,CFile::modeRead);
long lSize = f.GetLength();
LPBYTE lpBuffer = new BYTE[lSize];
f.Read(lpBuffer,lSize);
long endPos = SeekToEnd();
// Write Data
Write((void*)lpBuffer,lSize);
// Update Head Information
m_RangerParameterInfo.headinfo.dwDriverOptionOffset = endPos - m_RangerParameterInfo.headinfo.dwHeaderSize;
m_RangerParameterInfo.headinfo.dwDriverOptionLength = lSize;
SeekToBegin();
Write((void*)&m_RangerParameterInfo.headinfo,sizeof(RANGERPARAMETERINFOHEDER));
delete[] lpBuffer;
f.Close();
}
BOOL CRangerParameterFile::FromOtherOption(LPCSTR lpszOtherOptionFile)
{
if (!m_bOpen) return FALSE;
CFile f;
f.Open(lpszOtherOptionFile,CFile::modeRead);
long lSize = f.GetLength();
LPBYTE lpBuffer = new BYTE[lSize];
f.Read(lpBuffer,lSize);
long endPos = SeekToEnd();
// Write Data
Write((void*)lpBuffer,lSize);
// Update Head Information
m_RangerParameterInfo.headinfo.dwOtherOptionOffset = endPos - m_RangerParameterInfo.headinfo.dwHeaderSize;
m_RangerParameterInfo.headinfo.dwOtherOptionLength = lSize;
SeekToBegin();
Write((void*)&m_RangerParameterInfo.headinfo,sizeof(RANGERPARAMETERINFOHEDER));
delete[] lpBuffer;
f.Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -