FsRtlKernelFsControlFile 函式 (ntifs.h)

FsRtlKernelFsControlFile 函式會建置明確的FSCTL_XXX IRP、將它傳送至堆疊、同步等候它完成,並傳回結果。 此函式可讓呼叫端透過 FileObject 完成此動作,而不是句柄。

語法

NTSTATUS FsRtlKernelFsControlFile(
  [in]  PFILE_OBJECT FileObject,
  [in]  ULONG        FsControlCode,
  [in]  PVOID        InputBuffer,
  [in]  ULONG        InputBufferLength,
  [out] PVOID        OutputBuffer,
  [out] ULONG        OutputBufferLength,
  [out] PULONG       RetOutputBufferSize
);

參數

[in] FileObject

要傳送作業的 FILE_OBJECT 指標。

[in] FsControlCode

FSCTL_XXX程式代碼,指出要執行的檔系統控制作業。此參數的值會決定 InputBufferOutputBuffer 的格式和必要長度,以及下列哪一個參數位是必要的。 如需系統定義FSCTL_XXX程式代碼的詳細資訊,請參閱 Microsoft Windows SDK 檔中DeviceIoControl參考專案的一節。

[in] InputBuffer

呼叫端配置的輸入緩衝區指標,其中包含要提供給目標驅動程式的裝置特定資訊。 如果 FsControlCode 指定不需要輸入資料的作業,則此指標是選擇性的,而且可以是 NULL。 請注意,傳回時可能會修改此緩衝區,而且呼叫端必須適應此狀況。 這是因為此緩衝區可用來保存輸出數據。

[in] InputBufferLength

InputBuffer 的長度,以位元組為單位。

[out] OutputBuffer

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

[out] OutputBufferLength

OutputBuffer 的長度,以位元組為單位。

[out] RetOutputBufferSize

接收輸出緩衝區中實際寫入 (傳回) 位元組數目。

傳回值

FsRtlKernelFsControlFile 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一個。

意義
STATUS_INSUFFICIENT_RESOURCES 發生集區配置失敗。
STATUS_INVALID_PARAMETER (提供無效的參數,例如,無效 的 FileObject) 。

備註

FsRtlKernelFsControlFile 會設定IRP_MN_KERNEL_CALL次要程式代碼,讓它執行作業,而不需要管理特定作業的磁碟區許可權。

此函式假設傳遞至它的所有緩衝區都是核心模式緩衝區。

規格需求

需求
標頭 ntifs.h

另請參閱

ZwFsControlFile