Funzione FsRtlPrepareMdlWriteEx (ntifs.h)
La routine FsRtlPrepareMdlWriteEx restituisce un elenco collegato di elenchi di descrittori di memoria che puntano all'intervallo specificato di dati file memorizzati nella cache per scrivere i dati direttamente nella cache. Se il supporto della cache per la scrittura non è disponibile, la routine ripristina un'operazione di scrittura MDL basata su IRP.
Sintassi
NTSTATUS FsRtlPrepareMdlWriteEx(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG LockKey,
[out] PMDL *MdlChain,
[out] PIO_STATUS_BLOCK IoStatus
);
Parametri
[in] FileObject
Puntatore all'oggetto file.
[in] FileOffset
Puntatore a un valore che specifica l'offset di byte iniziale all'interno della cache che contiene i dati.
[in] Length
Lunghezza in byte dei dati da scrivere nella 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 sottorange di un altro intervallo già bloccato non inclusivo, il valore in questo parametro deve essere la chiave per tale blocco non 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 descrittori di memoria (MDLs) che puntano all'intervallo di byte all'interno dei dati memorizzati nella cache.
[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.
Valore restituito
FsRtlPrepareMdlWriteEx restituisceSTATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio uno dei seguenti:
Codice restituito | Descrizione |
---|---|
|
Impossibile allocare un'IRP per la scrittura basata su IRP. |
Commenti
Se l'I/O veloce è disponibile per il file system, la routine FsRtlPrepareMdlWriteEx ignora il consueto meccanismo di scrittura IRP e restituisce un elenco collegato di elenchi di descrittori di memoria (MDL) che il chiamante può usare per scrivere dati direttamente nella cache dei file. Anziché copiare dati memorizzati nel buffer nella cache, le pagine fisiche che il chiamante sovrascriverà la memoria e possono essere scritte direttamente. FsRtlPrepareMdlWriteEx restituisce uno o più elenchi di descrittori di memoria che puntano all'intervallo di byte specificato.
Se l'I/O veloce non è abilitato, FsRtlPrepareMdlWriteEx genererà una preparazione di scrittura MDL basata su IRP sincrona e restituirà gli MDLs allocati dalla richiesta.
Le pagine a cui puntano gli MDLs sono bloccati in memoria, ma non vengono mappati nello spazio di sistema. Il chiamante può eseguire questo mapping chiamando MmGetSystemAddressForMdlSafe.
Ogni chiamata a FsRtlPrepareMdlWriteEx deve essere seguita da una chiamata a CcMdlWriteComplete.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per