Funzione FsRtlMdlReadDev (ntifs.h)
La routine FsRtlMdlReadDev restituisce un elenco di descrittori di memoria (MDL) che punta direttamente all'intervallo di byte specificato nella cache dei file.
Sintassi
BOOLEAN FsRtlMdlReadDev(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus,
[ in, optional ] PDEVICE_OBJECT DeviceObject
);
Parametri
[in] FileObject
Puntatore a un oggetto file per il file memorizzato nella cache.
[in] FileOffset
Puntatore a una variabile che specifica l'offset di 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 è una subrange di un altro intervallo già bloccato non esclusivamente, 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
In 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 è impostata su STATUS_SUCCESS. In caso contrario, è impostato su un codice di errore NTSTATUS appropriato. IoStatus.Information è impostato sul numero effettivo di byte bloccati dalla routine.
[ in, optional ] DeviceObject
Puntatore a un oggetto dispositivo in cui viene aperto il file.
Valore restituito
La routine FsRtlMdlReadDev restituisce TRUE se l'operazione ha esito positivo e FALSE se l'operazione ha esito negativo.
Commenti
La routine FsRtlMdlReadDev ignora il meccanismo IRP consueto e restituisce un elenco collegato di elenchi di descrittori di memoria (MDL) che il chiamante può usare per accedere direttamente ai dati dei file memorizzati nella cache. Questa operazione non copia o buffer i dati e pertanto è molto più veloce di una normale lettura.
La routine è simile a CcMdlRead e FltFastIoMdlRead. 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 FsRtlMdlReadCompleteDev .
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |