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

Vedi anche

CcMdlWriteAbort

CcPrepareMdlWrite