共用方式為


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

另請參閱

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS