Wie bereits beschrieben wird die Datei nicht mit Inhalt gefüllt, sondern nur erzeugt - danach wird die Größe manipuliert. Hier ein kurzer Auszug aus dem Quellcode, der zeitgt, wie dies gemacht wird.
hFile = CreateFile(argv[1], GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, NULL, NULL);
Mit dieser Zeile wird die Datei erzeugt. argv[1] ist der erste übergebene Parameter, der als Dateiname dient. Der Dateihandle wird in hFile gespeichert.
SetFilePointerEx(hFile, liPosition, NULL, FILE_BEGIN);
Hier wird der FilePointer umgesetzt. Zu einem Dateihandle gibt es diesen Zeiger, der angibt, an welcher Position der nächste Lese-/Schreibvorgang vorgenommen wird. Bei einer neu erstellten Datei ist diese Position zunächst der Anfang der Datei. Mit dem Funktionsaufruf wird die Position nun um liPosition Bytes versetzt. Diese Angabe entspricht der Größe der neuen Datei. Streng genommen befindet sich der Zeiger nun an einer ungültigen Position, da die Datei ja zurzeit noch gar keine Daten enthält und daher eine Größe von 0 hat.
SetEndOfFile(hFile);
Diese Funktion setzt nun das Ende der Datei neu. Hier wird der Dateizeiger berücksichtigt. Das Setzen der Größe passiert einfach, indem dem Dateisystem gesagt wird, wo die Datei von nun an endet. Es ist dabei möglich die Datei zu vergrößern oder auch zu verkleinern. Die Daten, die neu zur Datei hinzukommen oder aber abgeschnitten werden, werden hierbei nicht weiter beachtet. Unsere Datei hat nun jedenfalls die gewünschte Größe.