Freigeben über


CcMdlWriteComplete-Funktion (ntifs.h)

Die CcMdlWriteComplete Routine gibt die speicherdeskriptorlisten (MDL) frei, die von CcPrepareMdlWrite für eine zwischengespeicherte Datei erstellt wurden.

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-, die an CcPrepareMdlWriteübergeben wurde.

[in] MdlChain

Adresse der von CcPrepareMdlWritezurückgegebenen MDL-Kette.

Rückgabewert

Nichts

Bemerkungen

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

Wenn das FO_WRITE_THROUGH Flag für das Dateiobjekt festgelegt ist, auf das vom FileObject Parameter verwiesen wird, werden die Dateidaten sofort auf den Datenträger geleert. Dieser Leervorgang wechselt 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 testen.

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 CcMdlWriteCompletewerden Dateisystementwickler dringend ermutigt, zu untersuchen, wie diese Routine im FASTFAT-Beispiel verwendet wird.

Jedem Aufruf von CcPrepareMdlWrite muss ein Aufruf von CcMdlWriteComplete oder CcMdlWriteAbortfolgen.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- PASSIVE_LEVEL

Siehe auch

CcMdlWriteAbort

CcPrepareMdlWrite