📄 cdrdlg.cpp
字号:
}
//----------------------------------------------------------------------------
void CCDRDlg::OnToc()
{
AfxMessageBox(m_bus.TOC());
}
//----------------------------------------------------------------------------
void CCDRDlg::OnBusScan()
{
m_bus.SCSIBusScan(info,0xff,false);
}
//----------------------------------------------------------------------------
void CCDRDlg::OnInquiry()
{
AfxMessageBox(m_bus.SCSIInquiry());
AfxMessageBox(m_bus.SCSICapabilities ());
}
//----------------------------------------------------------------------------
void CCDRDlg::OnRead()
{
UpdateData();
BYTE *buffer=new BYTE[m_length*2448];
int readCount=(int)ceil((double)m_length/0x10);
for(int i=0;i<readCount;i++){
if(!m_bus.SCSIRead(buffer+i*0x10*(m_header?block_size+8:block_size),
m_offset+i*0x10,m_length-i*0x10<0x10?m_length-i*0x10:0x10,
m_header!=0)){
delete buffer;
return;
}
}
//m_edit.m_baseAddress=m_offset*2048;
m_edit.SetData(buffer,m_length*(m_header?block_size+8:block_size));
FILE* file=fopen("new.txt","wb");
fwrite(buffer,block_size,m_length,file);
fclose(file);
delete buffer;
m_offset+=m_length;
CString s;
s.Format("%X",m_offset);
m_str_offset=s;
UpdateData(false);
}
//----------------------------------------------------------------------------
void CCDRDlg::OnWriteParameters()
{
AfxMessageBox(m_bus.WriteParameters());
}
//----------------------------------------------------------------------------
void CCDRDlg::OnBrowse()
{
static char BASED_CODE szFilter[] = "All Files (*.*)|*.*||";
CFileDialog dlg(true,NULL,NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT,
szFilter,NULL);
if(dlg.DoModal()==IDOK ){
m_fileName.Empty();
m_fileList.DeleteAllItems ();
POSITION pos=dlg.GetStartPosition();
while(pos) {
CString name=dlg.GetNextPathName(pos);
m_fileName+=name+"\r\n";
m_fileList.InsertItem(0,name);
}
UpdateData(false);
m_upload=true;
}
}
//----------------------------------------------------------------------------
void CCDRDlg::OnWriteFiles()
{
m_fileName.Empty();
for(int i=0;i<m_fileList.GetItemCount();i++){
m_fileName+=m_fileList.GetItemText(i,0)+"\r\n";
}
if(m_fileName.IsEmpty()) return;
m_bus.setLBA(m_offset);
AfxMessageBox(m_bus.WriteFiles(m_fileName)?"Write Successful!":"Write Failed!");
CString s;
s.Format("%X",m_offset=m_bus.getLBA());
m_str_offset=s;
UpdateData(false);
}
//----------------------------------------------------------------------------
void CCDRDlg::OnWriteAsTemplate()
{
m_fileName.TrimRight();
m_bus.setLBA(m_offset);
FILE* file=fopen(m_fileName,"rb");
if(file==NULL){
AfxMessageBox("Failed to open input file.");
return;
}
fseek(file,0,SEEK_END);
unsigned int len=ftell(file);
BYTE* buffer=new BYTE[len];
fseek(file,0,SEEK_SET);
ASSERT(fread(buffer,1,len,file)==len);
m_edit.SetData(buffer,len);
fclose(file);
m_bus.WritePacket(buffer,m_offset,len/2048)?
AfxMessageBox("Write Successful."):
AfxMessageBox("Write Failure.");
delete buffer;
CString s;
s.Format("%X",m_offset=m_bus.getLBA());
m_str_offset=s;
UpdateData(false);
}
//----------------------------------------------------------------------------
void CCDRDlg::OnFormatDisc()
{
track_info ti;
m_bus.ReadTrackInfo(m_track,&ti);
if(!(ti.blank&&SCSI2::toInt32(ti.next_writtable_addr)==0)){
AfxMessageBox("Disk is not blank.");
return;
}
CLabelDlg dlg;
dlg.m_hint="Please input disc label";
if(dlg.DoModal()==IDOK){
AfxMessageBox(m_bus.FormatDisc(LPCSTR(dlg.m_label))?
"Disk Formatting Successful!":
"Disk Formatting Failed!");
CString s;
s.Format("%X",m_offset=m_bus.getLBA());
m_str_offset=s;
UpdateData(false);
}
}
//----------------------------------------------------------------------------
void CCDRDlg::OnCloseSession()
{
m_bus.setLBA(m_offset);
AfxMessageBox(m_bus.CloseSession()?
"CloseSession Successful!":
"CloseSession Failed!");
CString s;
s.Format("%X",m_offset=m_bus.getLBA());
m_str_offset=s;
UpdateData(false);
}
//----------------------------------------------------------------------------
void CCDRDlg::OnReadTrackInfo()
{
UpdateData();
AfxMessageBox(m_bus.ReadTrackInfo(m_track));
}
//----------------------------------------------------------------------------
void CCDRDlg::OnReadDiskInfo()
{
AfxMessageBox(m_bus.ReadDiskInfo());
}
//----------------------------------------------------------------------------
void CCDRDlg::OnReserveTrack()
{
AfxMessageBox(m_bus.ReserveTrack(0x168)?"Track Reserved Successful!":"Track Reservation Failure.");
}
//----------------------------------------------------------------------------
void CCDRDlg::OnSetMode2()
{
AfxMessageBox(m_bus.SetWriteParameters(0,10,5,0x20)?
"Mode Set Successful!":
"Mode Set Failed!");
}
//----------------------------------------------------------------------------
void CCDRDlg::OnSetMode1()
{
AfxMessageBox(m_bus.SetWriteParameters(1,10,4,0x20)?
"Mode Set Successful!":
"Mode Set Failed!");
}
//----------------------------------------------------------------------------
void CCDRDlg::OnSelectchangeCombo1()
{
CString curSel;
m_driveCtrl.GetLBText(m_driveCtrl.GetCurSel(),curSel);
for(int i=0;i<m_driveCtrl.GetCount();i++)
if(info[i].m_name==curSel) break;
m_HA=info[i].m_HA;
m_ID=info[i].m_ID;
m_LUN=info[i].m_LUN;
m_bus.SCSISelectDevice(m_HA,m_ID,m_LUN);
UpdateData(false);
}
//----------------------------------------------------------------------------
void CCDRDlg::OnContent()
{
m_fileName=m_bus.ListFiles();
m_fileList.DeleteAllItems();
bool flag=false;
int end=0;
CString s=m_fileName;
while(!s.IsEmpty()){
end=s.FindOneOf(",;\t\r\n");
CString singleFileName;
if(end==-1) {
end=s.GetLength();
singleFileName=s.Mid(0,end);
s.Empty();
continue;
}
else{
singleFileName=s.Mid(0,end);
s=s.Mid(end+1);
s.TrimLeft();
}
singleFileName.TrimRight();
m_fileList.InsertItem(0,singleFileName);
}
UpdateData(false);
m_upload=false;
}
//----------------------------------------------------------------------------
void CCDRDlg::OnSave()
{
int total=m_fileList.GetSelectedCount();
if(total<1){
AfxMessageBox("Please Select the file(s) to save");
return;
}
CLabelDlg dlg;
dlg.m_hint="Please input directory to save files";
if(dlg.DoModal()==IDOK){
CString dir=dlg.m_label;
//while(dir.Right(1)=="\\") dir=dir.Left(dir.GetLength()-1);
CFileFind finder;
if(!PathFileExists(dir)&&
!CreateDirectory(dir,NULL)){
AfxMessageBox("Failed to create directory:\r\n"+dir);
}
int count=0;
int* index=new int[total];
POSITION pos = m_fileList.GetFirstSelectedItemPosition();
while (pos) index[count++] = m_fileList.GetNextSelectedItem(pos);
count=0;
for(int i=0;i<total;i++){
if(m_bus.SaveFileAs(index[i],dir+"\\"+m_fileList.GetItemText(index[i],0)))
count++;
}
CString s;
s.Format("%d files are saved successfuly",count);
AfxMessageBox(s);
m_fileList.SetSelectionMark(-1);
}
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -