CcCopyRead-Funktion (ntifs.h)

Die CcCopyRead-Routine kopiert Daten aus einer zwischengespeicherten Datei in einen Benutzerpuffer.

Syntax

BOOLEAN CcCopyRead(
  [in]  PFILE_OBJECT     FileObject,
  [in]  PLARGE_INTEGER   FileOffset,
  [in]  ULONG            Length,
  [in]  BOOLEAN          Wait,
  [out] PVOID            Buffer,
  [out] PIO_STATUS_BLOCK IoStatus
);

Parameter

[in] FileObject

Ein Zeiger auf ein Dateiobjekt für die zwischengespeicherte Datei, aus der die Daten gelesen werden sollen.

[in] FileOffset

Ein Zeiger auf eine Variable, die den Anfangsbyteoffset innerhalb der zwischengespeicherten Datei angibt.

[in] Length

Die Länge der zu lesenden Daten in Bytes.

[in] Wait

Legen Sie diesen Wert auf TRUE fest, wenn der Aufrufer in einen Wartezustand versetzt werden kann, bis alle Daten kopiert wurden, andernfalls FALSE .

[out] Buffer

Ein Zeiger auf einen Puffer, in den die Daten kopiert werden sollen.

[out] IoStatus

Ein Zeiger auf eine vom Aufrufer zugeordnete Struktur, die die endgültige Abschluss-status und Informationen zum Vorgang empfängt. Wenn nicht alle Daten erfolgreich kopiert wurden, enthält IoStatus.Information die tatsächliche Anzahl der kopierten Bytes.

Rückgabewert

Die CcCopyRead-Routine gibt TRUE zurück, wenn die Daten erfolgreich kopiert wurden, andernfalls FALSE .

Hinweise

Wenn Waitauf TRUE festgelegt ist, wird von CcCopyRead 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 erfolgt keine Blockierung. Wenn erforderliche Seiten nicht 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 Waitauf FALSE festgelegt ist, lehnt CcCopyRead das Blockieren ab und gibt FALSE zurück, wenn die erforderlichen Seiten der zwischengespeicherten Datei noch nicht im Arbeitsspeicher vorhanden sind.

FileOffset plus Length muss kleiner oder gleich der Größe der zwischengespeicherten Datei sein, andernfalls tritt ein Assertionsfehler auf.

Wenn ein Fehler auftritt, löst CcCopyRead eine status Ausnahme für diesen bestimmten Fehler aus. Wenn beispielsweise ein Poolzuordnungsfehler auftritt, löst CcCopyRead eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus. Wenn ein E/A-Fehler auftritt, löst CcCopyRead die status Ausnahme des E/A-Fehlers aus. Um die Kontrolle zu erhalten, wenn ein Fehler auftritt, sollte der Treiber daher den Aufruf von CcCopyRead in eine try-except- oder try-finally-Anweisung umschließen.

Verwenden Sie CcInitializeCacheMap, um eine Datei zwischenzuspeichern.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000
Zielplattform Universell
Header ntifs.h (include Ntifs.h, FltKernel.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

CcFastCopyRead

CcInitializeCacheMap

CcReadAhead

CcScheduleReadAhead

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity