Freigeben über


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

Weitere Informationen

CcCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity