Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La routine FltFastIoPrepareMdlWrite restituisce un elenco collegato di elenchi di descrittori di memoria (MDLs) che puntano all'intervallo specificato di dati di file memorizzati nella cache per scrivere i dati direttamente nella cache.
Sintassi
BOOLEAN FLTAPI FltFastIoPrepareMdlWrite(
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 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 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 o se l'intervallo da leggere è un sottoinsieme di un altro intervallo già bloccato 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) 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 è impostato 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
La routine fltFastIoPrepareMdlWrite restituisce TRUE se l'operazione ha esito positivo e FALSE se l'operazione ha esito negativo.
Osservazioni
FltFastIoPrepareMdlWrite è simile a FsRtlCopyWrite, ad eccezione del fatto che FltFastIoPrepareMdlWrite non copia i dati nella cache. Al contrario, le pagine fisiche che il chiamante sovrascriverà vengono bloccate in memoria e FltFastIoPrepareMdlWrite restituisce uno o più elenchi di descrittori di memoria (MDLs) che puntano all'intervallo di byte specificato. Le pagine bloccate rimangono bloccate finché il chiamante chiama FltFastIoMdlWriteComplete.
Le pagine a cui puntano gli elenchi di certificati sono bloccate in memoria, ma non sono mappate nello spazio di sistema. Il chiamante può eseguire questo mapping chiamando MmGetSystemAddressForMdlSafe.
Anche se la chiamata a FltFastIoPrepareMdlWrite ha esito negativo, potrebbe essere stato allocato uno o più MDLs. Il chiamante può esaminare il valore di IoStatus.Information per determinare se si è verificato questo problema. In caso affermativo, il chiamante deve chiamare FltFastIoMdlWriteComplete per liberare gli mdls allocati.
Fabbisogno
| Requisito | Valore |
|---|---|
| piattaforma di destinazione | Universale |
| intestazione | fltkernel.h (include Ntifs.h) |
| libreria | NtosKrnl.lib |
| dll | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |