今回のはあまり真面目な内容ではないので、ほとんど役に立たないと思います。役に立つ情報を探してる方にとっては読むだけ時間の無駄なのでご注意ください。
タイトルにもあるとおり、スパースファイルは取り扱いを間違えると大変な目に会います。とりあえずスパースファイルの説明を。(知ってたらこの段落は飛ばしてください。)Win2000で使われているNTFSのディスク上ではスパースファイルという見かけ上だけサイズの大きなファイル(今回の例では全ビット0)を作ることが可能です。この利点は分からないのですが、もしかしたらプログラムの動作テストのために使えるのかもしれません。で、見かけ上が大きいだけなので実際のドライブサイズを超えるファイルを作ることもできます。例えばこんなファイル(ファイルサイズ15.9TB??)が作れます。
こういう見慣れない大きなサイズを見ると、限界まで試してみたくなるのがプログラマのサガ(私だけだったりして(^^;;)ってもので、こんなコードを書いてみました。っていうか、ほとんどmsdn news May/June 2000から写したものですが。
for(int i=0;i<100;i++){
AnsiString s = "S:\\mnt\\LargeFile" + IntToHex(i,8) + ".dat";
HANDLE h = CreateFile(s.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
DWORD dw;
DeviceIoControl(h, FSCTL_SET_SPARSE, NULL, 0, NULL, 0, &dw, NULL);
LONG lDist = 4095;
SetFilePointer(h, 0, &lDist, FILE_BEGIN);
SetEndOfFile(h);
CloseHandle(h);
}