Freigeben über


CcZeroData-Funktion (ntifs.h)

Die CcZeroData-Routine nulliert den angegebenen Bytebereich in einer zwischengespeicherten oder nicht zwischengespeicherten Datei.

Hinweis

Diese Routine sollte nur zu null Teilen einer Datei aufgerufen werden, die über die gültige Datenlänge der Datei hinausgehen. CcZeroData ändert keine zuvor geschriebenen Daten der Datei. Rufen Sie CcCopyWrite oder eine der anderen zwischengespeicherten Schreibschnittstellen auf, um zuvor geschriebene Daten zu null, die teil der Datei sind, bis zur gültigen Datenlänge der Datei.

Syntax

BOOLEAN CcZeroData(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER StartOffset,
  [in] PLARGE_INTEGER EndOffset,
  [in] BOOLEAN        Wait
);

Parameter

[in] FileObject

Ein Zeiger auf eine FILE_OBJECT für die Datei, in der ein Bytebereich auf Null gesetzt werden soll.

[in] StartOffset

Ein Zeiger auf eine Variable, die den Byteoffset innerhalb der Datei auf das erste Byte angibt, das null gesetzt werden soll.

[in] EndOffset

Ein Zeiger auf eine Variable, die den Byteoffset innerhalb der Datei auf das letzte Byte angibt, das null gesetzt werden soll.

[in] Wait

Legen Sie diesen Wert auf TRUE fest, wenn der Aufrufer in einen Wartezustand versetzt werden soll, bis der gesamte Bytebereich null ist. Andernfalls wird dieser Parameter auf FALSE festgelegt.

Rückgabewert

CcZeroData gibt TRUE zurück, wenn die Daten erfolgreich auf Null gesetzt wurden. Andernfalls wird FALSE zurückgegeben.

Hinweise

Die Datei, die null ist, kann zwischengespeichert oder nicht zwischengespeichert werden. Wenn die Datei jedoch nicht zwischengespeichert ist, müssen die Werte von StartOffset und EndOffset ein Vielfaches der Sektorgröße des Volumes sein.

Wenn ein Poolzuordnungsfehler auftritt und Wait als TRUE angegeben wurde, löst CcZeroData eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus. Wenn ein Poolzuordnungsfehler auftritt und Wait als FALSE angegeben wurde, gibt CcZeroDataFALSE zurück, löst jedoch keine Ausnahme aus.

Wenn die Zwischenspeicherung für das bereitgestellte FileObject nicht aktiviert ist, aber die Zwischenspeicherung im Stream vorhanden ist (d. h. für ein anderes Dateiobjekt für dieselbe Datei ist die Zwischenspeicherung aktiviert), wird das Nullen so behandelt, als ob die Zwischenspeicherung durch Schreibzugriff aktiviert ist.

Wenn Wait auf TRUE festgelegt ist, wird ccZeroData garantiert, dass die Datenanforderung null abgeschlossen und TRUE zurückgegeben wird. Wenn sich die erforderlichen Seiten der zwischengespeicherten Datei bereits im Arbeitsspeicher befinden, werden die Daten sofort auf Null gesetzt, und es erfolgt keine Blockierung. Wenn erforderliche Seiten nicht resident sind, wird der Aufrufer in einen Wartezustand versetzt, bis alle erforderlichen Seiten als resident festgelegt wurden und die Daten auf Null gestellt werden können.

Wenn Waitauf FALSE festgelegt ist und die erforderlichen Seiten der zwischengespeicherten Datei noch nicht im Arbeitsspeicher vorhanden sind, lehnt CcZeroData die Blockierung ab und gibt FALSE zurück.

Wenn ein Poolzuordnungsfehler auftritt, löst CcZeroData eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus. Wenn CcZeroData auf andere Fehler stößt, einschließlich E/A-Fehlern, werden die Fehler an den Aufrufer ausgelöst.

Für Windows Vista und höhere Windows-Betriebssysteme ist das Verhalten von CcZeroData wie folgt:

  • Wenn der Stream zwischengespeichert wird und write_through, muss StartOffset nicht sektor ausgerichtet sein.
  • Wenn EndOffset nicht ausgerichtet ist, wird es auf die nächste Sektorgröße aufgerundet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000. Weitere Informationen finden Sie unter Hinweise zu Änderungen für Vista und höhere Betriebssysteme.
Zielplattform Universell
Header ntifs.h (include Fltkernel.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL

Weitere Informationen

CcInitializeCacheMap

CcIsFileCached

FILE_OBJECT