CcMdlWriteComplete-Funktion (ntifs.h)

Die CcMdlWriteComplete-Routine gibt die von CcPrepareMdlWrite erstellten MDL-Listen (Memory Descriptor Lists) für eine zwischengespeicherte Datei frei.

Syntax

void CcMdlWriteComplete(
  [in] PFILE_OBJECT   FileObject,
  [in] PLARGE_INTEGER FileOffset,
  [in] PMDL           MdlChain
);

Parameter

[in] FileObject

Dateiobjektzeiger, der an CcPrepareMdlWrite übergeben wurde.

[in] FileOffset

Wert von FileOffset , der an CcPrepareMdlWrite übergeben wurde.

[in] MdlChain

Adresse der MDL-Kette, die von CcPrepareMdlWrite zurückgegeben wird.

Rückgabewert

Keine

Bemerkungen

Dateisysteme rufen CcMdlWriteComplete auf, um die von CcPrepareMdlWrite erstellten Speicherdeskriptorlisten (Memory Descriptor Lists, MDL) für eine zwischengespeicherte Datei freizugeben und den angegebenen Bytebereich zum Schreiben zu markieren. Alle physischen Seiten, die gesperrt wurden, werden entsperrt. Alle zugeordneten Seiten sind nicht zugeordnet.

Wenn das FO_WRITE_THROUGH-Flag für das Dateiobjekt festgelegt ist, auf das der FileObject-Parameter verweist, werden die Dateidaten sofort auf den Datenträger geleert. Dieser Leerungsvorgang gelangt erneut in das Dateisystem und kann dazu führen, dass CcMdlWriteComplete eine Ausnahme auslöst, wenn der Löschvorgang fehlschlägt. In diesem Fall wurde die MDL nicht freigegeben, und der Aufrufer kann den Vorgang erneut ausprobieren.

Nachdem CcMdlWriteComplete für einen IRP_MN_COMPLETE-Vorgang erfolgreich aufgerufen wurde, muss der Aufrufer das MdlAddress-Feld des IRP auf NULL festlegen.

Vor der Verwendung von CcMdlWriteComplete werden Dateisystementwickler dringend empfohlen, die Verwendung dieser Routine im FASTFAT-Beispiel zu untersuchen.

Jedem Aufruf von CcPrepareMdlWrite muss ein Aufruf von CcMdlWriteComplete oder CcMdlWriteAbort folgen.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Weitere Informationen

CcMdlWriteAbort

CcPrepareMdlWrite