Share via


IRP_MJ_FILE_SYSTEM_CONTROL等位的FLT_PARAMETERS

作業之FLT_IO_PARAMETER_BLOCK結構的MajorFunction字段IRP_MJ_FILE_SYSTEM_CONTROL時使用的等位元件。

語法

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      PVPB           Vpb;
      PDEVICE_OBJECT DeviceObject;
    } VerifyVolume;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
    } Common;
    struct {
      ULONG                    OutputBufferLength;
      ULONG POINTER_ALIGNMENT  InputBufferLength;
      ULONG POINTER_ALIGNMENT  FsControlCode;
      PVOID                    InputBuffer;
      PVOID                    OutputBuffer;
      PMDL                     OutputMdlAddress;
    } Neither;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
      PVOID                   SystemBuffer;
    } Buffered;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT FsControlCode;
      PVOID                   InputSystemBuffer;
      PVOID                   OutputBuffer;
      PMDL                    OutputMdlAddress;
    } Direct;
  } FileSystemControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

成員

  • FileSystemControl:包含下列成員的結構。

  • VerifyVolume:用於IRP_MN_VERIFY_VOLUME作業的等位元件。

  • Vpb:磁碟區參數區塊的指標 (VPB) ,以便驗證磁碟區。

  • DeviceObject:要驗證磁碟區的裝置物件的指標。

  • 常見:用於所有緩衝處理方法的聯集元件,用於IRP_MN_KERNEL_CALL和IRP_MN_USER_FS_REQUEST作業。

  • Common.OutputBufferLength兩者皆未指向任何.OutputBufferDirect.OutputBuffer 成員的緩衝區長度,以位元組為單位。

  • Common.InputBufferLength兩者、Buffered.SystemBufferDirect.InputSystemBuffer 成員所指向之緩衝區的長度、以位元節為單位。

  • Common.FsControlCode:要傳遞至目標裝置的文件系統、文件系統篩選或迷你篩選驅動程式的 FSCTL 函式程式碼。

如需IOCTL和FSCTL要求的詳細資訊,請參閱 Microsoft Windows SDK檔中的核心模式架構指南中使用I/O控制程式碼和「裝置輸入和輸出控制代碼」。 (某些語言和國家/地區可能無法使用此資源。)

  • 兩者都不是:緩衝方法METHOD_NEITHER時,用於IRP_MN_KERNEL_CALL和IRP_MN_USER_FS_REQUEST作業的等位元件。 如需緩衝方法的詳細資訊,請參閱 定義 I/O 控件代碼

  • Neither.InputBuffer:提供作業原始要求者之輸入緩衝區的使用者模式虛擬位址。 I/O 管理員和篩選管理員不會驗證這些位址。 為了確保使用者空間位址有效,迷你篩選程式必須使用 ProbeForReadProbeForWriteMmProbeAndLockPages 等例程,並將所有緩衝區參考括在 try/except 區塊中。 如需詳細資訊,請參閱參考 User-Space 位址中的未緩衝處理或直接 I/O 和錯誤。

  • Neither.OutputBuffer:提供作業原始要求者之輸出緩衝區的使用者模式虛擬位址。 I/O 管理員和篩選管理員不會驗證這些位址。 為了確保使用者空間位址有效,迷你篩選程式必須使用 ProbeForReadProbeForWriteMmProbeAndLockPages 等例程,並將所有緩衝區參考括在 try/except 區塊中。 如需詳細資訊,請參閱參考 User-Space 位址中的未緩衝處理或直接 I/O 和錯誤。 兩者.OutputBuffer 都是 選擇性的,而且如果在 Neither.OutputMdlAddress中提供MDL,則可以是NULL。 請參閱備註

  • Neither.OutputMdlAddress:記憶體描述元清單的位址 (MDL) ,描述 Neither.OutputBuffer 成員指向的緩衝區。 這個成員是選擇性的,而且如果在 Neither.OutputBuffer 中提供緩衝區,則可以是 NULL

  • 緩衝:緩衝處理方法METHOD_BUFFERED時,用於IRP_MN_KERNEL_CALL和IRP_MN_USER_FS_REQUEST作業的聯集元件。 如需緩衝方法的詳細資訊,請參閱 定義 I/O 控件代碼

  • Buffered.SystemBuffer:作業的系統配置緩衝區位址。 在 METHOD_BUFFERED I/O 中,此緩衝區用於輸入和輸出。 如需詳細資訊,請參閱 存取數據緩衝區的方法

  • 直接:緩衝方法METHOD_IN_DIRECT或METHOD_OUT_DIRECT時,用於IRP_MN_KERNEL_CALL和IRP_MN_USER_FS_REQUEST作業的聯集元件。 如需緩衝方法的詳細資訊,請參閱核心模式架構指南中的定義I/O控制程序代碼

  • Direct.InputSystemBuffer:作業之輸入緩衝區的位址。 操作系統會鎖定此緩衝區,以便安全地從核心模式存取。 如需詳細資訊,請參閱 存取數據緩衝區的方法

  • Direct.OutputBuffer:提供作業原始要求者之輸出緩衝區的使用者模式虛擬位址。 在直接 I/O 中,與 METHOD_NEITHER I/O 不同,作業系統會鎖定此緩衝區,以便安全地從核心模式存取,只要迷你篩選器與 I/O 作業的原始要求者位於相同的進程內容中。 (否則,它必須呼叫 MmGetSystemAddressForMdlSafe ,從 OutputMdlAddress 成員指向的 MDL 取得系統位址。) 如需詳細資訊,請參閱 在直接 I/O 中使用直接 I/O錯誤

  • Direct.OutputMdlAddress:描述 Direct.OutputBuffer 成員指向之緩衝區的 MDL 清單位址 (MDL) 。 此成員為必要專案,且不可為 NULL

備註

IRP_MJ_FILE_SYSTEM_CONTROL作業的FLT_PARAMETERS結構包含回數據所代表之文件系統控制資訊作業的參數, (FLT_CALLBACK_DATA) 結構。 它包含在 FLT_IO_PARAMETER_BLOCK 結構中。

如果同時提供 Neither.OutputBufferNeither.MdlAddress 緩衝區,建議迷你篩選程式使用 MDL。

如果迷你篩選程序變更 了 Neither.MdlAddress 的值,則在後續作業回呼之後,篩選管理員會釋出目前儲存在 Neither.MdlAddress 中的 MDL ,並還原 Previous value of Neither.MdlAddress

IRP_MJ_FILE_SYSTEM_CONTROL是以 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

FltFsControlFile

IoBuildAsynchronousFsdRequest

IoBuildSynchronousFsdRequest

IoVerifyVolume

IRP_MJ_FILE_SYSTEM_CONTROL

MmGetSystemAddressForMdlSafe

MmProbeAndLockPages

ProbeForRead

ProbeForWrite

ZwFsControlFile