Traducida de [Enlace externo eliminado para invitados]
{****************************************************
FakeSizeAllocation On Disk
Author: Metal_Kingdom
Original M3: foro.udtools.net/showthread.php?19017
URL: udtools.net
Pourpose: Create a 1GB File to Disk Without Allocation (Check File Property to See)
Coded in Delphi XE7
Usage: FakeSize('X:\FileIn.xxx', 'X:\FileOut.xxx');
****************************************************}
Function FakeSize(FileIn, FileOut: string): Boolean;
var
Origen : THandle;
Destino : THandle;
FSize : DWORD;
Buffer : PChar;
bReturned : DWORD;
const
lDistanceToMove = 1073741824;
begin
if FileExists(FileIn) then
begin
Result := True;
Origen := FileOpen(FileIn, fmOpenRead);
FSize := GetFileSize(Origen, nil);
Destino := FileCreate(FileOut);
GetMem(Buffer, FSize);
FileRead(Origen, Buffer^, FSize);
FileWrite(Destino, Buffer^, FSize);
if not DeviceIoControl(Destino, FSCTL_SET_SPARSE, nil, 0, nil, 0, bReturned, nil) then
Result:= False;
SetFilePointer(Destino, lDistanceToMove, nil, 0);
SetEndOfFile(Destino);
FileClose(Destino);
FileClose(Origen);
end
else
begin
Result := False;
end;
end;