10/09/17 20:46:02 w3AZeoMq
/* 【物理セクタサイズ&ズレ量判定ツール】
400MBくらいのファイル400MB.DATを事前に作成しておきます。
実行結果に*が表示されたら物理4KBです。
0 1934 -0.942850 *
1 37565 0.110060
2 39016 0.152938
3 38049 0.124363
4 38391 0.134469
5 38283 0.131278
6 40607 0.199953
7 36879 0.089789
↑半分くらい使ったWD20EARS 00S8B1 80.0の場合 */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int main(void){
char b[512*8];
int i,j,t[8];
float a=0,d;
memset(b,0,sizeof b);
for(i=0;i<8;i++){
DWORD r,s=GetTickCount();
HANDLE h=CreateFile("400MB.DAT",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS|FILE_FLAG_NO_BUFFERING,NULL);
for(j=0;j<1000;j++){
SetFilePointer(h,512*(rand()%100000*8+i),NULL,FILE_BEGIN);
WriteFile(h,b,sizeof b,&r,NULL);
}
CloseHandle(h);
t[i]=GetTickCount()-s;
a+=t[i];
}
a/=8;
for(i=0;i<8;i++){
d=(t[i]-a)/a;
printf("%d\t%d\t%f\t%c\n",i,t[i],d,d<-0.5?'*':' ');
}
return 0;
}