IRP_MJ_PREPARE_MDL_WRITE等位的FLT_PARAMETERS
FLT_IO_PARAMETER_BLOCK時,會使用下列FLT_PARAMETERS等位成員。MajorFunction IRP_MJ_PREPARE_MDL_WRITE。
語法
typedef union _FLT_PARAMETERS {
... ;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} PrepareMdlWrite;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
成員
PrepareMdlWrite:包含下列成員的結構。
FileOffset:在快取的檔案內啟動位元組。
長度:要寫入快取檔案之數據的長度,以位元組為單位。
索引鍵:與目標檔案上位元組範圍鎖定相關聯的索引鍵值。 如果要寫入的範圍重疊,或是檔案中獨佔鎖定範圍的子範圍,此參數必須是該獨佔鎖定的索引鍵。 獨佔鎖定必須由呼叫線程的父進程保留;否則會忽略此參數。
MdlChain:變數的指標,該變數會接收一或多個記憶體描述項清單 (MDL) 鏈結的指標,此列表會描述要寫入之數據的頁面。
備註
IRP_MJ_PREPARE_MDL_WRITE是快速的 I/O 作業。 除了下列差異之外,它會執行與 IRP_MJ_WRITE + IRP_MN_MDL 相同的動作:
- IRP 型作業會在執行 MDL 工作之前尚未快取時,在檔案上設定快取。
- 如果檔案尚未快取,快速 IO 作業就會失敗。
IRP_MJ_PREPARE_MDL_WRITE作業的FLT_PARAMETERS結構包含快速 I/O PrepareMdlWrite 作業的參數。 作業是以回呼數據 (FLT_CALLBACK_DATA) 結構表示。 它包含在FLT_IO_PARAMETER_BLOCK結構中,且 Iopb 指向的FLT_IO_PARAMETER_BLOCK結構中的作業參數。
如果快速 I/O IRP_MJ_PREPARE_MDL_WRITE要求失敗,I/O 的簽發者會決定如何重新發出要求。 例如,您可以使用 IRP_MJ_WRITE + IRP_MN_MDL,將要求重新發出為以 IRP 為基礎的作業。
需求
需求類型 | 需求 |
---|---|
頁首 | Fltkernel.h (包括 Fltkernel.h) |