📄 readwritetest.cpp
字号:
#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 + -