CcFastCopyRead-Funktion (ntifs.h)
Die CcFastCopyRead-Routine führt einen schnellen Kopiervorgang aus einer zwischengespeicherten Datei in einen Puffer im Arbeitsspeicher durch.
Syntax
void CcFastCopyRead(
[in] PFILE_OBJECT FileObject,
[in] ULONG FileOffset,
[in] ULONG Length,
[in] ULONG PageCount,
[out] PVOID Buffer,
[out] PIO_STATUS_BLOCK IoStatus
);
Parameter
[in] FileObject
Zeiger auf ein Dateiobjekt für die zwischengespeicherte Datei, aus der die Daten gelesen werden sollen.
[in] FileOffset
Startbyteoffset in der zwischengespeicherten Datei.
[in] Length
Länge der zu lesenden Daten in Bytes.
[in] PageCount
Anzahl der Seiten, die vom Lesevorgang überspannt werden.
[out] Buffer
Zeiger auf einen Puffer, in den die Daten kopiert werden sollen.
[out] IoStatus
Zeiger auf eine Struktur, die die endgültige Vervollständigung status und Informationen zum Vorgang empfängt. Wenn nicht alle Daten erfolgreich kopiert wurden, enthält IoStatus.Information die tatsächliche Anzahl von Bytes, die kopiert wurden.
Rückgabewert
Keine
Bemerkungen
CcFastCopyRead ist eine schnellere Version von CcCopyRead. Es unterscheidet sich in folgenden Punkten von CcCopyRead :
FileOffset ist ein ULONG, kein PLARGE_INTEGER.
Es gibt keinen Wait-Parameter . Der Aufrufer muss in der Lage sein, einen Wartezustand zu wechseln, bis alle Daten kopiert wurden.
CcFastCopyRead gibt kein BOOLEAN zurück, um anzugeben, ob der Lesevorgang erfolgreich war.
FileOffset plus Length muss kleiner oder gleich der Größe der zwischengespeicherten Datei sein, sonst tritt ein Assertionsfehler auf.
Wenn ein Fehler auftritt, löst CcFastCopyRead eine status Ausnahme für diesen bestimmten Fehler aus. Wenn beispielsweise ein Poolzuordnungsfehler auftritt, löst CcFastCopyRead eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus. Wenn ein E/A-Fehler auftritt, löst CcFastCopyRead die status Ausnahme des E/A-Fehlers aus. Daher sollte der Treiber den Aufruf von CcFastCopyRead in einer try-except- oder try-finally-Anweisung umschließen, um die Kontrolle bei einem Fehler zu erlangen.
Um eine Datei zwischenzuspeichern, verwenden Sie CcInitializeCacheMap.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ntifs.h (include Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |