Funzione FltFastIoMdlRead (fltkernel.h)

La routine FltFastIoMdlRead restituisce un elenco di descrittori di memoria (MDL) che punta direttamente all'intervallo di byte specificato nella cache dei file.

Sintassi

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
);

Parametri

InitiatingInstance

Puntatore dell'istanza opaca per il chiamante. Questo parametro è obbligatorio e non può essere NULL.

[in] FileObject

Puntatore a un oggetto file per il file memorizzato nella cache.

[in] FileOffset

Puntatore a una variabile che specifica l'offset dei byte iniziale all'interno del file memorizzato nella cache che contiene i dati.

[in] Length

Lunghezza in byte dei dati da leggere dalla cache.

[in] LockKey

Valore associato all'intervallo di byte da bloccare. Se l'intervallo da bloccare si sovrappone a un altro intervallo già bloccato con un blocco non esclusivo oppure se l'intervallo da leggere è un sottoinsieme di un altro intervallo già bloccato in modo non esclusivo, il valore in questo parametro deve essere la chiave per tale blocco non esclusivo Il blocco deve essere mantenuto dal processo padre del thread chiamante. In caso contrario, questo parametro non ha alcun effetto.

[out] MdlChain

Nell'output, un puntatore a un elenco collegato di elenchi di descrittori di memoria (MDLs).

[out] IoStatus

Puntatore a una struttura IO_STATUS_BLOCK che, nell'output, contiene lo stato del trasferimento. Se l'operazione ha esito positivo, IoStatus.Status è impostato su STATUS_SUCCESS. In caso contrario, viene impostato su un codice di errore NTSTATUS appropriato. IoStatus.Information è impostato sul numero effettivo di byte bloccati dalla routine.

Valore restituito

La routine FltFastIoMdlRead restituisce TRUE se l'operazione ha esito positivo e FALSE se l'operazione non riesce.

Commenti

La routine FltFastIoMdlRead ignora il normale meccanismo IRP e restituisce un elenco collegato di elenchi di descrittori di memoria (MDL) che il chiamante può usare per accedere direttamente ai dati del file memorizzati nella cache. Questa operazione non copia o memorizza nel buffer i dati e pertanto è molto più veloce di una lettura normale.

La routine è simile a CcMdlRead e FsRtlMdlReadDev. FltFastIoMdlRead, CcMdlRead e FsRtlMdlReadDev bloccano le pagine che contengono i dati dei file memorizzati nella cache per impedire al sistema di scambiare queste pagine nel file di pagina. Le pagine rimangono bloccate in memoria finché il chiamante richiama la routine FltFastIoMdlReadComplete .

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione fltkernel.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Vedi anche

CcMdlRead

FltFastIoMdlReadComplete

FsRtlMdlReadDev