共用方式為


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