Freigeben über


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 Anfangsbyte-Offset innerhalb der zwischengespeicherten Datei angibt.

[in] Length

Die Länge in Byte der zu lesenden Daten.

[in] Wait

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

[out] Buffer

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

[out] IoStatus

Ein Zeiger auf eine vom Aufrufer zugewiesene Struktur, die den endgültigen Abschlussstatus und Informationen zum Vorgang empfängt. Wenn nicht alle Daten erfolgreich kopiert werden, enthält IoStatus.Information die tatsächliche Anzahl von Bytes, die kopiert wurden.

Rückgabewert

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

Bemerkungen

Wenn WaitTRUEist, ist CcCopyRead- garantiert, die Kopieranforderung abzuschließen und TRUEzurückzugeben. Wenn die erforderlichen Seiten der zwischengespeicherten Datei bereits im Arbeitsspeicher vorhanden sind, werden die Daten sofort kopiert, und es tritt keine Blockierung auf. Wenn erforderliche Seiten nicht vorhanden sind, wird der Aufrufer in einen Wartezustand versetzt, bis alle erforderlichen Seiten resident wurden und die Daten kopiert werden können.

Wenn WaitFALSEist, verweigert CcCopyRead- die Blockierung und gibt FALSEzurück, wenn die erforderlichen Seiten der zwischengespeicherten Datei nicht bereits im Speicher vorhanden sind.

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

Wenn ein Fehler auftritt, löst CcCopyRead eine Status ausnahme für diesen bestimmten Fehler aus. Wenn beispielsweise ein Poolzuweisungsfehler 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 erlangen, wenn ein Fehler auftritt, sollte der Treiber den Aufruf von CcCopyRead- in einem try-except oder try-finally Anweisung umschließen.

Verwenden Sie CcInitializeCacheMap, um eine Datei zwischenzuspeichern.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h, FltKernel.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL

Siehe auch

CcFastCopyRead-

CcInitializeCacheMap-

CcReadAhead-

CcScheduleReadAhead-

CcSetAdditionalCacheAttributes

CcSetReadAheadGranularity