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 |