Freigeben über


FSCTL_SET_ZERO_DATA IOCTL (winioctl.h)

Füllt einen angegebenen Bereich einer Datei mit Nullen (0) aus. Wenn die Datei spärlich oder komprimiert ist, kann das NTFS-Dateisystem den Speicherplatz in der Datei umsortieren. Dadurch wird der Bytebereich auf Nullen (0) festgelegt, ohne die Dateigröße zu erweitern.

Um diesen Vorgang auszuführen, rufen Sie die Funktion DeviceIoControl mit den folgenden Parametern auf.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to a file
  FSCTL_SET_ZERO_DATA,              // dwIoControlCode
  (LPVOID) lpInBuffer,              // input buffer
  (DWORD) nInBufferSize,            // size of input buffer
  NULL,                             // lpOutBuffer
  0,                                // nOutBufferSize
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

Hinweise

Die Auswirkungen von überlappenden E/A-Vorgängen auf diesen Vorgang finden Sie im Abschnitt Hinweise des Themas DeviceIoControl .

Wenn Sie die WriteFile-Funktion verwenden, um Nullen (0) in eine Sparsedatei zu schreiben, weist das Dateisystem Speicherplatz für die daten zu, die Sie schreiben. Wenn Sie den FSCTL_SET_ZERO_DATA-Steuerelementcode verwenden, um Nullen (0) in eine Sparsedatei zu schreiben und die Region null (0) groß genug ist, weist das Dateisystem möglicherweise keinen Speicherplatz zu.

Wenn Sie den FSCTL_SET_ZERO_DATA-Steuerelementcode verwenden, um Nullen (0) in eine Datei ohne Sparse zu schreiben, werden Nullen (0) in die Datei geschrieben. Das System weist Datenträgerspeicher für den gesamten Nullbereich (0) zu, was der Verwendung der WriteFile-Funktion zum Schreiben von Nullen (0) in eine Datei entspricht.

Die Zeitstempel werden möglicherweise nicht ordnungsgemäß für eine Remotedatei aktualisiert. Verwenden Sie nicht gepufferte E/A, um konsistente Ergebnisse zu gewährleisten.

In Windows 8 und Windows Server 2012 wird dieser Code von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) Ja
SMB 3.0 Transparent Failover (TFO) Ja
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) Ja
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile winioctl.h (einschließlich Windows.h)

Weitere Informationen