共用方式為


IRP_MJ_DEVICE_CONTROL和IRP_MJ_INTERNAL_DEVICE_CONTROL等位的FLT_PARAMETERS

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

語法

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT IoControlCode;
    } Common;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT IoControlCode;
      PVOID                   InputBuffer;
      PVOID                   OutputBuffer;
      PMDL                    OutputMdlAddress;
    } Neither;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT IoControlCode;
      PVOID                   SystemBuffer;
    } Buffered;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT IoControlCode;
      PVOID                   InputSystemBuffer;
      PVOID                   OutputBuffer;
      PMDL                    OutputMdlAddress;
    } Direct;
    struct {
      ULONG                   OutputBufferLength;
      ULONG POINTER_ALIGNMENT InputBufferLength;
      ULONG POINTER_ALIGNMENT IoControlCode;
      PVOID                   InputBuffer;
      PVOID                   OutputBuffer;
    } FastIo;
  } DeviceIoControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

成員

  • 常見:用於所有緩衝方法的聯集元件, ([未處理]、[ 已緩衝處理] 和 [FastIo ]) 。

  • OutputBufferLength兩者、Direct.OutputBufferFastIo.OutputBuffer 成員指向的緩衝區長度,以位元組為單位。

  • InputBufferLength兩者、Buffered.SystemBufferDirect.InputSystemBufferFastIo.InputBuffer 成員指向的緩衝區長度,以位元組為單位。

  • IoControlCode:要傳遞至目標裝置的裝置驅動程式的 IOCTL 函式程式代碼。 如需IOCTL要求的詳細資訊,請參閱 Microsoft Windows SDK檔中的使用I/O控制代碼和「裝置輸入和輸出控制代碼」。 (某些語言和國家/地區可能無法使用此資源。)

  • 兩者都不是:緩衝方法METHOD_NEITHER時使用的等位元件。 如需緩衝方法的詳細資訊,請參閱核心模式架構指南中的定義I/O控制程序代碼

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

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

  • Neither.OutputMdlAddress:記憶體描述元清單的位址 (MDL) ,描述 Neither.OutputBuffer 成員指向的緩衝區。 此成員是選擇性的,可以是 NULL

  • 緩衝:緩衝處理方法METHOD_BUFFERED時使用的等位元件。 如需緩衝方法的詳細資訊,請參閱 定義 I/O 控件代碼

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

  • 直接:緩衝處理方法METHOD_IN_DIRECT或METHOD_OUT_DIRECT時使用的等位元件。 如需緩衝方法的詳細資訊,請參閱 定義 I/O 控件代碼

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

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

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

  • FastIoFLT_CALLBACK_DATA 結構代表快速 I/O IRP_MJ_DEVICE_CONTROL 作業時使用的等位元件。

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

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

備註

IRP_MJ_DEVICE_CONTROL和IRP_MJ_INTERNAL_DEVICE_CONTROL作業FLT_PARAMETERS結構包含回呼數據所代表之 IRP 型裝置 I/O 控制資訊作業的參數, (FLT_CALLBACK_DATA) 結構。 它包含在 FLT_IO_PARAMETER_BLOCK 結構中。

IRP_MJ_DEVICE_CONTROL可以是 IRP 型作業或快速 I/O 作業。

IRP_MJ_INTERNAL_DEVICE_CONTROL是以 IRP 為基礎的 I/O 作業。

規格需求

需求類型 需求
標頭 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

FltDeviceIoControlFile

FltLockUserBuffer

IoBuildDeviceIoControlRequest

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

MmGetSystemAddressForMdlSafe

MmProbeAndLockPages

ProbeForRead

ProbeForWrite

ZwDeviceIoControlFile