⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page2.cpp

📁 上位机磁盘mass storage传输应用
💻 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 + -