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

📄 readwritetest.cpp

📁 在某一目录下创建文件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "WinCE_Bench_II.h"
#include "WinCE_Bench_IIDlg.h"
#include <stdio.h>

//#define _F_LIBRARY_C
//#define ONE_TIME

 DWORD CWinCE_Bench_IIDlg::WriteThread1(LPVOID lpParam)
{
//	CWinCE_Bench_IIDlg *pDlg=(CWinCE_Bench_IIDlg *)lpParam;
//	pDlg->WriteReadTest();
	return 0;
}

DWORD CWinCE_Bench_IIDlg::ContinueReadThread(LPVOID lpParam)
{
	CWinCE_Bench_IIDlg *pDlg=(CWinCE_Bench_IIDlg *)lpParam;
	pDlg->ContinueReadTest();
	return 0;
}
DWORD CWinCE_Bench_IIDlg::RandomReadThread(LPVOID lpParam)
{
	CWinCE_Bench_IIDlg *pDlg=(CWinCE_Bench_IIDlg *)lpParam;
	pDlg->RandomReadTest();
	return 0;
}

void CWinCE_Bench_IIDlg::StartTest() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	HANDLE hThread;
	DWORD dwThreadID;
	hThread=CreateThread(NULL,0,WriteThread1,this,0,&dwThreadID);
	if(hThread)
		SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL);

}

#ifndef ONE_TIME
void CWinCE_Bench_IIDlg::WriteTest()
{

	HANDLE hWrite;
	DWORD t2,t1,err,pBytesReturned,nCount,i,buffersize;
	CString msg,strName;
	PBYTE buffer;
	DWORD nloop,Totalsize,nwritetime;
	CComboBox *lpcFileSize,*lpcBufferSize,*lpcFolder;
	static TCHAR strTemp[10],strfoldername[50];
	CStatic *lpcWrite ;
	char strfilename[50];

	unsigned long nbuffersize,nfilesize;
	lpcWrite=(CStatic*)GetDlgItem(IDC_WRITE);
	//lpcFolder=(CComboBox*)GetDlgItem(IDC_FOLDER);
	lpcBufferSize=(CComboBox*)GetDlgItem(IDC_TOTALSIZE);
	lpcFileSize=(CComboBox*)GetDlgItem(IDC_FILESIZE);
	lpcFolder=&m_folder;
	int j=m_folder.GetCurSel();
	
	lpcFolder->GetLBText(lpcFolder->GetCurSel(),strfoldername);
	lpcBufferSize->GetLBText(lpcBufferSize->GetCurSel(),strTemp);
	nbuffersize=_wtoi(strTemp);
	lpcFileSize->GetLBText(lpcFileSize->GetCurSel(),strTemp);
	nfilesize=_wtoi(strTemp);
	if (nfilesize==0)
		nfilesize=1;
	if (nbuffersize==0)
		nbuffersize=32;
	buffersize=nfilesize*1024;
	nloop=nbuffersize*1024/nfilesize;
	Totalsize=nloop*buffersize;
	//GetDlgItemText(IDC_NAME,strName);
	SetDlgItemText(IDC_WRITE,L"");
	SetDlgItemText(IDC_READ,L"");
	//msg.Format(L"Totalsize=%d Buffersize=%d",Totalsize,buffersize);
	//SetStatus(msg);
	buffer=(PBYTE) LocalAlloc(LPTR,buffersize);
	strName.Format(TEXT("%s"),strfoldername);
	wsprintf(strfoldername,L"\\%s\\testfile",strName);
	DeleteFile(strfoldername);
	
#if 0
	WideCharToMultiByte(CP_ACP,
		0,
		strfoldername,
		_tcslen(strfoldername),
		strfilename,
		sizeof(strfilename),
		NULL,NULL);

	FILE *file=fopen(strfilename,"w+");
	//if()
	if(file == NULL)
	{
		msg.Format(L"CreateWrite Failure!...");
		AfxMessageBox(msg);
		return;
	}
#endif
    hWrite=CreateFile(strfoldername,GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
	if (hWrite==INVALID_HANDLE_VALUE )
	{
		msg.Format(L"CreateWrite Failure!...");
//		SetStatus(msg);
		AfxMessageBox(msg);
		goto EXIT;
	}
//	memset(buffer,0x55,buffersize);
	for(i=0;i<buffersize;i++){
		*(buffer+i)=(BYTE)i;
	}

	t1=GetTickCount();

	for (i=0;i<nloop;i++)
	{
		if( !WriteFile(hWrite,buffer,buffersize,&pBytesReturned,NULL)){
			msg.Format(L"WriteFile Failure!...");
	//		SetStatus(msg);
			AfxMessageBox(msg);
			goto EXIT;
		}
    }

	t2=GetTickCount();
	nwritetime=t2 - t1;

//	msg.Format(L"%d KB/S",(Totalsize/nreadtime)*1000/1024);
//	SetDlgItemText(IDC_READ,msg);
	msg.Format(L"%d KB/S",(Totalsize/nwritetime)*1000/1024);
	SetDlgItemText(IDC_WRITE,msg);
	RETAILMSG( 1, (TEXT("File size:%dMB, Buffer size:%dKB/S \r\n"),nbuffersize,nfilesize));
	RETAILMSG( 1, (TEXT("Continue write average speed: %dKB/S \r\n"),(Totalsize/nwritetime)*1000/1024));

EXIT:
	CloseHandle(hWrite);

	if(buffer){
		LocalFree(buffer);
	}


}
void CWinCE_Bench_IIDlg::ContinueRead()
{
	HANDLE hThread;
	DWORD dwThreadID;
	hThread=CreateThread(NULL,0,ContinueReadThread,this,0,&dwThreadID);
	if(hThread)
		SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL);
}
void CWinCE_Bench_IIDlg::RandomRead()
{
	HANDLE hThread;
	DWORD dwThreadID;
	hThread=CreateThread(NULL,0,RandomReadThread,this,0,&dwThreadID);
	if(hThread)
		SetThreadPriority(hThread,THREAD_PRIORITY_NORMAL);
}
void CWinCE_Bench_IIDlg::ContinueReadTest()
{
	UINT64 liTotalCounter=0;
	LARGE_INTEGER liCounterStart={0,0};
	LARGE_INTEGER liCounterEnd={0,0};
	DWORD dwSpeed=0;

	HANDLE hRead;
	DWORD t1,t2,err,pBytesReturned,nCount,i,buffersize;
	CString msg,strName;
	PBYTE buffer;
	DWORD nloop,Totalsize,nreadtime;
	CComboBox *lpcFileSize,*lpcBufferSize,*lpcFolder;
	static TCHAR strTemp[10],strfoldername[50];
	CStatic *lpcWrite ;
	char strfilename[50];

	unsigned long nbuffersize,nfilesize;
	lpcWrite=(CStatic*)GetDlgItem(IDC_WRITE);
	//lpcFolder=(CComboBox*)GetDlgItem(IDC_FOLDER);
	lpcBufferSize=(CComboBox*)GetDlgItem(IDC_TOTALSIZE);
	lpcFileSize=(CComboBox*)GetDlgItem(IDC_FILESIZE);
	lpcFolder=&m_folder;
	int j=m_folder.GetCurSel();
	
	lpcFolder->GetLBText(lpcFolder->GetCurSel(),strfoldername);
	lpcBufferSize->GetLBText(lpcBufferSize->GetCurSel(),strTemp);
	nbuffersize=_wtoi(strTemp);
	lpcFileSize->GetLBText(lpcFileSize->GetCurSel(),strTemp);
	nfilesize=_wtoi(strTemp);
	if (nfilesize==0)
		nfilesize=1;
	if (nbuffersize==0)
		nbuffersize=32;
	buffersize=nfilesize*1024;
	nloop=nbuffersize*1024/nfilesize;
	Totalsize=nloop*buffersize;
	//GetDlgItemText(IDC_NAME,strName);
	SetDlgItemText(IDC_WRITE,L"");
	SetDlgItemText(IDC_READ,L"");
	//msg.Format(L"Totalsize=%d Buffersize=%d",Totalsize,buffersize);
	//SetStatus(msg);
	buffer=(PBYTE) LocalAlloc(LPTR,buffersize);
	strName.Format(TEXT("%s"),strfoldername);
	wsprintf(strfoldername,L"\\%s\\testfile",strName);
	//DeleteFile(strfoldername);
	
    hRead=CreateFile(strfoldername,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING,NULL);
	if (hRead==INVALID_HANDLE_VALUE )
	{
		msg.Format(L"CreateWrite Failure!...");
//		SetStatus(msg);
		AfxMessageBox(msg);
		goto EXIT;
	}

	t1=GetTickCount();

	for (i=0;i<nloop;i++)
	{
		if( !ReadFile(hRead,buffer,buffersize,&pBytesReturned,NULL)){
			msg.Format(L"ReadFile Failure!...");
	//		SetStatus(msg);
			AfxMessageBox(msg);
			goto EXIT;
		}
    }

	t2=GetTickCount();

	for(i=0;i<buffersize;i++){
		if(*(buffer+i) != (BYTE)i){
			msg.Format(L"last read not equal Failure!...");
	//		SetStatus(msg);
			AfxMessageBox(msg);
			goto EXIT;
		}
	}
	nreadtime=t2 - t1;

	msg.Format(L"%d KB/S",(Totalsize/nreadtime)*1000/1024);
	SetDlgItemText(IDC_READ,msg);
//	RETAILMSG( 1, (TEXT("File size:%dMB, Read buffer size:%dKB/S \r\n"),nbuffersize,nfilesize));
	RETAILMSG( 1, (TEXT("Continue read average speed: %dKB/S \r\n"),(Totalsize/nreadtime)*1000/1024));
//	msg.Format(L"%d KB/S",(Totalsize/nwritetime)*1000/1024);
//	SetDlgItemText(IDC_WRITE,msg);

EXIT:
	CloseHandle(hRead);
	if(buffer){
		LocalFree(buffer);
	}
}
void CWinCE_Bench_IIDlg::RandomReadTest()
{
	UINT64 liTotalCounter=0;
	LARGE_INTEGER liCounterStart={0,0};
	LARGE_INTEGER liCounterEnd={0,0};
	UINT64 dwSpeed=0;
	UINT64 TotalSpeed=0;

	HANDLE hRead;
	DWORD err,pBytesReturned,nCount,i,buffersize;
	CString msg,strName;
	PBYTE buffer;
	DWORD nloop,Totalsize,nreadtime,nwritetime;
	CComboBox *lpcFileSize,*lpcBufferSize,*lpcFolder;
	static TCHAR strTemp[10],strfoldername[50];
	CStatic *lpcWrite ;
	char strfilename[50];

	unsigned long nbuffersize,nfilesize;
	lpcWrite=(CStatic*)GetDlgItem(IDC_WRITE);
	//lpcFolder=(CComboBox*)GetDlgItem(IDC_FOLDER);
	lpcBufferSize=(CComboBox*)GetDlgItem(IDC_TOTALSIZE);
	lpcFileSize=(CComboBox*)GetDlgItem(IDC_FILESIZE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -