📄 page2.cpp
字号:
// Page2.cpp : implementation file
//
#include "stdafx.h"
#include "SDisk.h"
#include "Page2.h"
#include "SDiskDlg.h"
#include "SDUsbMassStorage.h"
#include "GUIDs.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPage2 property page
IMPLEMENT_DYNCREATE(CPage2, CPropertyPage)
CPage2::CPage2() : CPropertyPage(CPage2::IDD)
{
//{{AFX_DATA_INIT(CPage2)
m_PassWord = _T("");
//}}AFX_DATA_INIT
}
CPage2::~CPage2()
{
}
void CPage2::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPage2)
DDX_Control(pDX, IDC_EDIT1, m_PWEdit);
DDX_Text(pDX, IDC_EDIT1, m_PassWord);
DDV_MaxChars(pDX, m_PassWord, 8);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPage2, CPropertyPage)
//{{AFX_MSG_MAP(CPage2)
ON_BN_CLICKED(IDC_DEFAULT_PW, OnDefaultPw)
ON_BN_CLICKED(IDLOGOUT, OnLogout)
ON_WM_SHOWWINDOW()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPage2 message handlers
void CPage2::OnCancel()
{
// TODO: Add extra cleanup here
//CPropertyPage::OnCancel();
CSDiskDlg *pSDiskDlg = (CSDiskDlg*)theApp.m_pMainWnd;
pSDiskDlg->OnCancel();
}
void CPage2::OnDefaultPw()
{
// TODO: Add your control notification handler code here
BOOL bResult=false;
UCHAR bMassBuf[MAX_INQUIRY_BUFFER_LENGTH + 32];
DWORD nLen;
PUCHAR pBuf;
CSDiskDlg *pSDiskDlg = (CSDiskDlg*)theApp.m_pMainWnd;
char DeviceStr[256];
UpdateData(1);
if (!GetDeviceName(pSDiskDlg->m_strUSBDevs.GetBuffer(256)))
{
MessageBox("Device disconnection!","Warning",MB_OK);
return;
}
int i=MessageBox("Do you want to reset the password to default value?",NULL,MB_YESNO);
if(i==6)
{
//(GetDlgItem(IDC_DefaultPWInfo))->EnableWindow(0);
//CDialog.OnCancel();
pBuf=(PUCHAR)bMassBuf;
strcpy(DeviceStr,(char*)pSDiskDlg->m_strUSBDevs.GetBuffer(256));
bResult = MassStorageIO(DeviceStr,
SD_BACKUP,
pBuf,
pBuf,
SCSITRANSLEN8, // size of buffer
&nLen, // number of bytes write
NULL,
MASSTIMEOUT
);
if (bResult){
while(DisconnectDevice((LPGUID)&USBSTORAGE_GUID));//
MessageBox("Set default password succeeded!","Hint",MB_OK);
}
else
MessageBox("Set default password failed!","Warning",MB_OK);
}
UpdateData(0);
}
BOOL CPage2::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPage2::OnLogout()
{
// TODO: Add your control notification handler code here
BOOL bResult=false;
UCHAR bMassBuf[MAX_INQUIRY_BUFFER_LENGTH + 32];
DWORD nLen;
PUCHAR pBuf;
CSDiskDlg *pSDiskDlg = (CSDiskDlg*)theApp.m_pMainWnd;
char DeviceStr[256];
UpdateData(1);
if (!GetDeviceName(pSDiskDlg->m_strUSBDevs.GetBuffer(256)))
{
MessageBox("Device disconnection!","Warning",MB_OK);
return;
}
if(pSDiskDlg->m_strUSBDevs != pSDiskDlg->m_EnterPassDevs)
{
MessageBox("Please Insert Disk!","Warning",MB_OK);
return;
}
//strcpy((char*)bMassBuf,m_PassWord.GetBuffer(256));
pBuf=(PUCHAR)bMassBuf;
strcpy(DeviceStr,(char*)pSDiskDlg->m_strUSBDevs.GetBuffer(256));
bResult = MassStorageIO(DeviceStr,
SD_LOGOUT,
pBuf,
pBuf,
SCSITRANSLEN8, // size of buffer
&nLen, // number of bytes write
NULL,
MASSTIMEOUT
);
if (bResult)
{
pSDiskDlg->m_EnterPassDevs = "";
pSDiskDlg->m_EnterPassed = false;
/* if (MassStorageIO(DeviceStr,
SD_DISCONNECT,
NULL,
pBuf,
SCSITRANSLEN8, // size of buffer
&nLen, // number of bytes write
NULL,
MASSTIMEOUT)
)*/{
//while(DisconnectDevice((LPGUID)&USBSTORAGE_GUID));//LOG OUT时,直接断开
MessageBox("Logout succeeded!","Hint",MB_OK);
(CButton*)GetDlgItem(IDLOGOUT)->EnableWindow(FALSE);
(CButton*)GetDlgItem(IDOK)->EnableWindow(TRUE);
m_PassWord = "";
UpdateData(0);
((CSDiskDlg *)AfxGetMainWnd())->m_page1.m_OK2.EnableWindow(TRUE);
return;
}
}
// else
// MessageBox("Logout failed!","Hint",MB_OK);
/* CSecurityDiskDlg *pSDiskDlg = (CSecurityDiskDlg*)theApp.m_pMainWnd;
if (DisconnectDevice((LPGUID)&USBSTORAGE_GUID) != 0)
return;*/
pSDiskDlg->DestroyWindow();
}
void CPage2::OnShowWindow(BOOL bShow, UINT nStatus)
{
CPropertyPage::OnShowWindow(bShow, nStatus);
CWnd* wnd1 = (CEdit*)GetDlgItem(IDC_EDIT1)->SetFocus();
m_PWEdit.SetFocus();
// TODO: Add your message handler code here
}
void CPage2::OnOK()
{
// TODO: Add extra validation here
int i;
BOOL bResult=false;
UCHAR bMassBuf[MAX_INQUIRY_BUFFER_LENGTH + 32];
DWORD nLen;
PUCHAR pBuf;
CSDiskDlg *pSDiskDlg = (CSDiskDlg*)theApp.m_pMainWnd;
SCSIRETURN MassReturn;
char DeviceStr[256];
UpdateData(1);
if (m_PassWord.GetLength()<PWLENGTH)
{
MessageBox("Password format error!","Warning",MB_OK);
return;
}
if (!GetDeviceName(pSDiskDlg->m_strUSBDevs.GetBuffer(256)))
{
MessageBox("Device disconnection!","Warning",MB_OK);
return;
}
pSDiskDlg->m_EnterPassDevs = "";
pSDiskDlg->m_EnterPassed = false;
strcpy((char*)bMassBuf,m_PassWord.GetBuffer(256));
pBuf=(PUCHAR)bMassBuf;
strcpy(DeviceStr,(char*)pSDiskDlg->m_strUSBDevs.GetBuffer(256));
bResult = MassStorageIO(DeviceStr,
SD_INPUTPASSWORD,
pBuf,
pBuf,
SCSITRANSLEN8, // size of buffer
&nLen, // number of bytes write
NULL,
MASSTIMEOUT
);
//ReLogin for 2 times if return error
for (i=0;i<2 && !bResult;i++)
{
strcpy((char*)bMassBuf,m_PassWord.GetBuffer(256));
pBuf=(PUCHAR)bMassBuf;
bResult = MassStorageIO(DeviceStr,
SD_INPUTPASSWORD,
pBuf,
pBuf,
SCSITRANSLEN8, // size of buffer
&nLen, // number of bytes write
NULL,
MASSTIMEOUT
);
}
if (bResult)
{
MassReturn = *(SCSIRETURN*)pBuf;
for (i=0;i<PWLENGTH;i++)
if (MassReturn.Data[i] != RIGHTPASSWORD.Data[i])
break;
if (i>PWLENGTH-1)
{
Sleep(100);
pSDiskDlg->m_EnterPassDevs = pSDiskDlg->m_strUSBDevs;
pSDiskDlg->m_EnterPassed = true;
pSDiskDlg->m_PassWord = m_PassWord;
/* if (MassStorageIO(pSDiskDlg->m_strUSBDevs.GetBuffer(256),
SD_DISCONNECT,
NULL,
pBuf,
SCSITRANSLEN8, // size of buffer
&nLen, // number of bytes write
NULL,
MASSTIMEOUT)
)*/ //delete by derek 2006.10.11
//while(DisconnectDevice((LPGUID)&USBSTORAGE_GUID));//
StateChange(DICS_STOP);
MessageBox("Login succeeded!","Hint",MB_OK);
//Sleep(3000);
(CButton*)GetDlgItem(IDLOGOUT)->EnableWindow(TRUE);
(CButton*)GetDlgItem(IDOK)->EnableWindow(FALSE);
}
else
{
m_PassWord = "";
MessageBox("Password error!","Warning",MB_OK);
LoginTimes ++;
UpdateData(0);
if (LoginTimes >=3)
{
pSDiskDlg->DestroyWindow();
}
}
}
else
{
MessageBox("Login failed!","Hint",MB_OK);
LoginTimes ++;
if (LoginTimes >=3)
{
pSDiskDlg->DestroyWindow();
}
}
//CPropertyPage::OnOK();
// CPropertyPage::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -