稀疏文件的问题
halod 2004-01-05 10:23:18 建立一个稀疏文件,CreateFileMapping()设为1M,写入一个字符,为什么磁盘空间的占用还是1M,源程序如下:
#define _WIN32_WINNT 0x0500
#define dwStreamMaxSize (1*1024*1024)
#include <windows.h>
#include <Winioctl.h>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
HANDLE hfile=CreateFile("E://mmfsparse.dat",GENERIC_READ
|GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hfile==INVALID_HANDLE_VALUE){
cout<<"cannot CREATE file"<<endl;
CloseHandle(hfile);
getchar();
return false;
}
DWORD dw;
DeviceIoControl(hfile,FSCTL_SET_SPARSE,NULL,0,NULL,0,&dw,NULL);
HANDLE hfilemap=CreateFileMapping(hfile,NULL,PAGE_READWRITE,
0,dwStreamMaxSize,NULL);
PVOID hvfile=MapViewOfFile(hfilemap,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);
((PBYTE)hvfile)[1*1024]='a';
UnmapViewOfFile(hvfile);
CloseHandle(hfilemap);
CloseHandle(hfile);
getchar();
return 1;
}