CcCopyWriteEx-Funktion (ntifs.h)
Die CcCopyWriteEx-Routine kopiert Daten aus einem Benutzerpuffer in eine zwischengespeicherte Datei. Die Anzahl der E/A-Byte für den Vorgang wird dem ausstellenden Thread in Rechnung gestellt.
Syntax
BOOLEAN CcCopyWriteEx(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] BOOLEAN Wait,
[in] PVOID Buffer,
[in] PETHREAD IoIssuerThread
);
Parameter
[in] FileObject
Ein Zeiger auf ein Dateiobjekt für die zwischengespeicherte Datei, in die die Daten geschrieben werden sollen.
[in] FileOffset
Ein Zeiger auf eine Variable, die den Anfangsbyteoffset in der zwischengespeicherten Datei angibt.
[in] Length
Die Länge der zu schreibenden Daten in Bytes.
[in] Wait
Legen Sie auf TRUE fest, wenn der Aufrufer in einen Wartezustand versetzt werden kann, bis alle Daten kopiert wurden, andernfalls FALSE.
[in] Buffer
Ein Zeiger auf den Puffer, aus dem die Daten kopiert werden sollen.
[in] IoIssuerThread
Der Thread, der die Schreibanforderung ausgibt. Für ein Dateisystem mit aktivierter Datenträger-E/A-Abrechnung ist dies der Thread, für den E/A in Rechnung gestellt wird. Wenn IoIssuerThread NULL ist, wird die E/A dem aktuellen Thread in Rechnung gestellt.
Rückgabewert
Die CcCopyWriteEx-Routine gibt TRUE zurück, wenn die Daten erfolgreich kopiert wurden, andernfalls FALSE.
Hinweise
Wenn Wait true ist, wird von CcCopyWriteEx garantiert, dass die Kopieranforderung abgeschlossen und TRUE zurückgegeben wird. Wenn sich die erforderlichen Seiten der zwischengespeicherten Datei bereits im Arbeitsspeicher befinden, werden die Daten sofort kopiert, und es tritt keine Blockierung auf. Wenn keine benötigten Seiten vorhanden sind, wird der Aufrufer in einen Wartezustand versetzt, bis alle erforderlichen Seiten als resident festgelegt wurden und die Daten kopiert werden können.
Wenn Wait false ist, lehnt CcCopyWriteEx die Blockierung ab und gibt FALSE zurück, wenn die erforderlichen Seiten der zwischengespeicherten Datei nicht bereits im Arbeitsspeicher vorhanden sind oder wenn das FO_WRITE_THROUGH-Flag für das Dateiobjekt festgelegt ist.
Wenn ein Fehler auftritt, löst CcCopyWriteEx eine status Ausnahme für diesen bestimmten Fehler aus. Wenn beispielsweise ein Poolzuordnungsfehler auftritt, löst CcCopyWriteEx eine Ausnahme mit dem STATUS_INSUFFICIENT_RESOURCES status aus. Tritt ein E/A-Fehler auf, löst CcCopyWriteEx die status Ausnahme des E/A-Fehlers aus. Daher sollte der Treiber den Aufruf von CcCopyWriteEx in einer try-except- oder try-finally-Anweisung umschließen, um die Kontrolle zu erlangen, wenn ein Fehler auftritt.
Um eine Datei zwischenzuspeichern, verwenden Sie CcInitializeCacheMap.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 |
Zielplattform | Universell |
Header | ntifs.h (include Ntifs.h, FltKernel.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |