CcMdlWriteComplete 函式 (ntifs.h)
CcMdlWriteComplete 例程會釋放快取檔案 CcPrepareMdlW rite 所建立的記憶體描述項清單 (MDL)。
語法
void CcMdlWriteComplete(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] PMDL MdlChain
);
參數
[in] FileObject
傳遞至 CcPrepareMdlWrite的檔案物件指標。
[in] FileOffset
傳遞至 CcPrepareMdlWrite
[in] MdlChain
CcPrepareMdlWrite所傳回之 MDL 鏈結的位址。
傳回值
沒有
言論
文件系統會呼叫 CcMdlWriteComplete,以釋放 CcPrepareMdlWrite 所建立的記憶體描述項清單 (MDL),並針對快取的檔案 標記指定的位元組範圍。 鎖定的所有實體頁面都會解除鎖定。 任何對應的頁面皆未對應。
如果在 fileObject 參數指向的檔案對象上設定FO_WRITE_THROUGH旗標,檔案數據就會立即排清到磁碟。 此排清作業會重新進入文件系統,而且如果排清作業失敗,可能會導致 CcMdlWriteComplete 引發例外狀況。 在此情況下,MDL 尚未釋出,而且呼叫端可能會重新嘗試作業。
成功呼叫 CcMdlWriteComplete IRP_MN_COMPLETE 作業之後,呼叫端必須將 IRP 的 MdlAddress 字段設定為 NULL。
在使用 CcMdlWriteComplete之前,強烈建議檔系統開發人員研究 FASTFAT 範例中使用此例程的方式。
CcPrepareMdlWrite 的每個呼叫都必須接著呼叫 CcMdlWriteComplete 或 CcMdlWriteAbort。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |