FltFsControlFile 函式 (fltkernel.h)

FltFsControlFile 例程會將控件程式代碼直接傳送至指定的文件系統或文件系統篩選驅動程式,導致對應的驅動程序執行指定的動作。

語法

NTSTATUS FLTAPI FltFsControlFile(
  [in]            PFLT_INSTANCE Instance,
  [in]            PFILE_OBJECT  FileObject,
  [in]            ULONG         FsControlCode,
  [in, optional]  PVOID         InputBuffer,
  [in]            ULONG         InputBufferLength,
  [out, optional] PVOID         OutputBuffer,
  [in]            ULONG         OutputBufferLength,
  [out, optional] PULONG        LengthReturned
);

參數

[in] Instance

呼叫端的不透明實例指標。 這個參數是必要的,而且不能是 NULL

[in] FileObject

此要求目標之檔案或目錄的檔案物件指標。 這個參數是必要的,而且不能是 NULL

[in] FsControlCode

FSCTL_XXX程式代碼,指出要執行的文件系統作業。此參數的值會決定 InputBufferOutputBuffer 的格式和必要長度,並決定下列哪一個參數位 (InputBufferInputBufferLengthOutputBufferLength 和 OutputBufferLength) 。

[in, optional] InputBuffer

呼叫端配置的輸入緩衝區指標,其中包含要提供給目標驅動程式的裝置特定資訊。 如果 FsControlCode 參數指定不需要輸入資料的作業,則此參數是選擇性的,而且可以是 NULL

[in] InputBufferLength

InputBuffer 緩衝區的大小,以位元組為單位。 如果 InputBufferNULL,則會忽略此值。

[out, optional] OutputBuffer

呼叫端配置的輸出緩衝區指標,其中會從目標驅動程式傳回資訊。 如果 FsControlCode 參數指定不需要輸出資料的作業,這個參數是選擇性的,而且可以是 NULL

[in] OutputBufferLength

在 OutputBuffer 緩衝區的大小,以位元組為單位。 如果 OutputBufferNULL,則會忽略此值。

[out, optional] LengthReturned

呼叫端配置的變數指標,該變數會接收 在 OutputBuffer 緩衝區中傳回之資訊的大小,以位元組為單位。 此參數是選擇性的,可以是 NULL

傳回值

FltFsControlFile 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值。

備註

Minifilter 驅動程式應該呼叫此例程,而不是 ZwFsControlFile

核心模式驅動程式目前記載了下列 FSCTL 程式代碼:

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FSCTL_SET_REPARSE_POINT

如需系統定義FSCTL_XXX程式代碼的詳細資訊,請參閱 Microsoft Windows SDK 檔中DeviceIoControl參考專案的一節。

規格需求

需求
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 FltMgr.lib
Dll Fltmgr.sys
IRQL PASSIVE_LEVEL

另請參閱

FltDeviceIoControlFile

ZwFsControlFile