Funzione CcMdlWriteComplete (ntifs.h)
La routine CcMdlWriteComplete libera gli elenchi del descrittore di memoria (MDL) creati da CcPrepareMdlWrite per un file memorizzato nella cache.
Sintassi
void CcMdlWriteComplete(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] PMDL MdlChain
);
Parametri
[in] FileObject
Puntatore a oggetti file passato a CcPrepareMdlWrite.
[in] FileOffset
Valore di FileOffset passato a CcPrepareMdlWrite.
[in] MdlChain
Indirizzo della catena MDL restituita da CcPrepareMdlWrite.
Valore restituito
nessuno
Osservazioni
I file system chiamano CcMdlWriteComplete per liberare gli elenchi di descrittori di memoria (MDL) creati da CcPrepareMdlWrite per un file memorizzato nella cache e per contrassegnare l'intervallo di byte specificato per la scrittura. Tutte le pagine fisiche bloccate vengono sbloccate. Tutte le pagine di cui è stato eseguito il mapping vengono annullate.
Se il flag FO_WRITE_THROUGH è impostato sull'oggetto file a cui punta il parametro FileObject , i dati del file vengono scaricati immediatamente su disco. Questa operazione di scaricamento entra nuovamente nel file system e può causare la generazione di un'eccezione in caso di errore dell'operazione di scaricamento. In questo caso, il file MDL non è stato liberato e il chiamante può ritentare l'operazione.
Dopo che CcMdlWriteComplete viene chiamato correttamente per un'operazione di IRP_MN_COMPLETE, il chiamante deve impostare il campo MdlAddress di IRP su NULL.
Prima di usare CcMdlWriteComplete, gli sviluppatori di file system sono fortemente invitati a studiare il modo in cui questa routine viene usata nell'esempio FASTFAT.
Ogni chiamata a CcPrepareMdlWrite deve essere seguita da una chiamata a CcMdlWriteComplete o CcMdlWriteAbort.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |