WinCEは、約1000個のファイルを連続して作成した後、ファイルの作成に失敗しました.これはなぜですか???

2062 ワード

今日は問題をテストしたいのですが、多くのファイルが必要です.したがって、次のコードを使用して、1つのディレクトリに複数のファイルを生成します.
char cTstFilename[MAX_PATH];
FILE *file = NULL;

for(i = 0;i < 1000;i++)
// for(i = 0;i < 1005;i++)
{
	sprintf(cTstFilename,"\\Nand2\\Music\\Filename%04d.mp3",i);
	file = fopen(cTstFilename,"w");
	if(NULL != file)
	{
		fwrite(cTstFilename,1,strlen(cTstFilename),file);
		fclose(file);
	}
	else
	{
		RETAILMSG(1,(L"create file failed with error code; %d\r
",GetLastError())); } }

初めて、1000個のファイルを生成したい.使用中にファイル数999を見たときは、あまりにも気になりました.
その後,1005個のファイルを生成しようとしたが,生成されたファイルの個数が999のままであることが判明し,このときになってやっと問題が感じられた.
この問題を発見する前に、elseブランチの文:RETAILMSG(1,(L"create file failed with error code;%dr",GetLastError();
elseブランチは、文が作成されたファイルの数が所望の数に達していないことを発見したときに増加します.追加すると、次のような出力が表示されます.
create file failed with error code; 112
「エラー検索」ツールを使用すると、112の意味はディスク容量が不足していることがわかります.
しかし、WinCEリソース管理により、このパーティションスペースは十分であることがわかります.このパーティションの他のディレクトリでファイルをコピー/作成できますが、Nand 2ディレクトリでファイルを再作成することはできません.
WinCEの次のディレクトリには999個のファイルしか作成できませんか?
1000番目のファイルの作成に失敗したためです.エラー:112(ディスク容量不足).ディスク容量が十分であることを確認します. 
このテストのみを行うと、WinCEを確認できるディレクトリのうち、最大999ファイルしかありません.このディレクトリにサブディレクトリを作成し、サブディレクトリにファイルを作成できます.しかし、1回のテストだけで十分ですか?
最後に、1つのディレクトリで上記のコードを繰り返し実行できることを確認します(ファイル名を変更してください).すなわち,1つのディレクトリで作成できるファイルは999個だけでなく,数千個でもよい.
sprintf(cTstFilename,"\\Nand2\\Music\\0Filename%04d.mp3",i);//0Filename0000.mp3
sprintf(cTstFilename,"\\Nand2\\Music\\2Filename%04d.mp3",i);//2Filename0000.mp3
どちらでもいいです.
ただし:
sprintf(cTstFilename,"\\Nand2\\Music\\Filename%05d.mp3",i);//Filename00000.mp3
いいえ、ファイルを作成できません.これはなぜですか.わからなかった.
この問題は、作成ディレクトリを:Tempに変更すると、すべてのファイルを生成でき、作成に失敗する問題は発生しません.だから初歩的にNandの駆動に問題があると判断して、WinCEシステムに問題があるのではありません.
2014年6月12日更新:疑わしいWinCE Nandドライバについて、以下の他の案を検証したい.また、ファイルの作成が早すぎるため、Nand操作が作成されたのではないでしょうか.次の2つのテストが行われました.
(1)WinCE 6を使用する.0のPNDでテストしても、同じ現象です.PNDのスキームは、MStar 2521;
(2)ファイル作成後にそれぞれ30ミリ秒と100ミリ秒遅延することも同様である.