FltFastIoMdlRead-Funktion (fltkernel.h)
Die FltFastIoMdlRead-Routine gibt eine Speicherdeskriptorliste (Memory Descriptor List, MDL) zurück, die direkt auf den angegebenen Bytebereich im Dateicache verweist.
Syntax
BOOLEAN FLTAPI FltFastIoMdlRead(
PFLT_INSTANCE InitiatingInstance,
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
Parameter
InitiatingInstance
Undurchsichtiger instance Zeiger für den Aufrufer. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in] FileObject
Ein Zeiger auf ein Dateiobjekt für die zwischengespeicherte Datei.
[in] FileOffset
Ein Zeiger auf eine Variable, die den Anfangsbyteoffset innerhalb der zwischengespeicherten Datei angibt, die die Daten enthält.
[in] Length
Die Länge der Daten in Bytes, die aus dem Cache gelesen werden sollen.
[in] LockKey
Ein Wert, der dem zu sperrenden Bytebereich zugeordnet ist. Wenn der zu sperrende Bereich einen anderen Bereich überlappt, der bereits mit einer nicht exklusiven Sperre gesperrt ist, oder wenn der zu lesende Bereich ein Unterbereich eines anderen Bereichs ist, der bereits nicht ausschließlich gesperrt ist, muss der Wert in diesem Parameter der Schlüssel für diese nicht ausschließliche Sperre sein. Die Sperre muss vom übergeordneten Prozess des aufrufenden Threads gehalten werden. Andernfalls hat dieser Parameter keine Auswirkung.
[out] MdlChain
Bei der Ausgabe ein Zeiger auf eine verknüpfte Liste von Speicherdeskriptorlisten (MDLs).
[out] IoStatus
Ein Zeiger auf eine IO_STATUS_BLOCK Struktur, die bei der Ausgabe die status der Übertragung enthält. Wenn der Vorgang erfolgreich ist, wird IoStatus.Status auf STATUS_SUCCESS festgelegt. Andernfalls wird er auf einen geeigneten NTSTATUS-Fehlercode festgelegt. IoStatus.Information wird auf die tatsächliche Anzahl von Bytes festgelegt, die die Routine erfolgreich gesperrt hat.
Rückgabewert
Die FltFastIoMdlRead-Routine gibt TRUE zurück, wenn der Vorgang erfolgreich ist, und FALSE , wenn der Vorgang fehlschlägt.
Hinweise
Die FltFastIoMdlRead-Routine umgeht den üblichen IRP-Mechanismus und gibt eine verknüpfte Liste von Speicherdeskriptorlisten (MDL) zurück, die der Aufrufer verwenden kann, um direkt auf die zwischengespeicherten Dateidaten zuzugreifen. Dieser Vorgang kopiert oder puffert keine Daten und ist daher viel schneller als ein normaler Lesevorgang.
Die Routine ähnelt CcMdlRead und FsRtlMdlReadDev. FltFastIoMdlRead, CcMdlRead und FsRtlMdlReadDev sperren die Seiten, die die zwischengespeicherten Dateidaten enthalten, um zu verhindern, dass das System diese Seiten in die Auslagerungsdatei austauscht. Die Seiten bleiben im Arbeitsspeicher gesperrt, bis der Aufrufer die FltFastIoMdlReadComplete-Routine aufruft .
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | fltkernel.h (include Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |