чето занятся нехрен, набросал неск строк, прога проверяет скорость записи на диск. в идеале конечно следует открывать в сыром режиме и писать в свободное место, но и так пойдет. Code: // diskspeed.cpp : Defines the entry point for the application. // #include <stdio.h> #include <windows.h> DWORD g_written; ////////////////////////////////////////////////////////////////////////// DWORD WINAPI TestThread(LPVOID lpHandle) { char buffer[4096]; DWORD dwt; for(int i = 0; i < sizeof(buffer); i++) buffer[i] = i & 0xff; while(1) { if(!WriteFile((HANDLE)lpHandle, buffer, sizeof(buffer), &dwt, NULL)) { MessageBox(NULL, _TEXT("IO error"), _TEXT("FAIL"), MB_ICONWARNING); break; } g_written += dwt; } ExitThread(0); } ////////////////////////////////////////////////////////////////////////// int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HANDLE eThread; HANDLE hTestF = CreateFile(_TEXT("rnd.bin"), GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL); if(INVALID_HANDLE_VALUE == hTestF) { MessageBox(NULL, _TEXT("Error creating test file!"), _TEXT("Error!"), MB_ICONSTOP); return -1; } MessageBox(NULL, _TEXT("Hit ok to test write speed!"), _TEXT("..."), MB_ICONINFORMATION); DWORD ticks = GetTickCount(); g_written = 0; eThread = CreateThread(NULL, 0, TestThread, (LPVOID)hTestF, 0, NULL); if(WaitForSingleObject(eThread, 1000) == WAIT_TIMEOUT) { char report[128]; DWORD fsize; //SuspendThread(eThread); TerminateThread(eThread, 0); ticks = GetTickCount() - ticks; fsize = GetFileSize(hTestF, NULL); CloseHandle(hTestF); DeleteFile(_TEXT("rnd.bin")); sprintf(report, "Average write speed is %4.3f MiB/sec; test time %d ms", ((float)(fsize))/1024/1024, ticks); MessageBoxA(NULL, report, "Benchmark completed", MB_ICONINFORMATION); } else // non-timeout break, means that something comes wrong { CloseHandle(hTestF); DeleteFile(_TEXT("rnd.bin")); MessageBox(NULL, _TEXT("Error during benchmarking"), _TEXT("Benchmark failed"), MB_ICONSTOP); } return 0; }
в чём вы такое пишите вообще. Что за макрос такой? Ещё мэйн - int APIENTRY _tWinMain Почему бы просто не написать int main? Студия не согласилась компилировать этот _tWinMain.... Ну а так норм, забавная прожка
вообще эти макросы для юникода-анси совместимости. и прожект этот со студии. кстати у меня на сата2 выдает 450 мебибайт, что есть 3.6гигабита, хотя сата2 имеет потолок в 3 и еще - можно закомментить TerminateThread и раскомментить SuspendThread -сути это не изменит, но мозгоебли добавит немало))
У меня на SSD просто диск C. А что у тебя за студия такая, с такими макросами? Например у меня Microsoft Visual Studio 2010 и там нет макроса _TEXT, но есть просто TEXT
ssd? так там во всю уже сата 3 вроде как, которая 6 гигабит... TEXT определен в winnt.h а _TEXT в tchar.h 2010 студия обычная