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程式代碼,指出要執行的檔系統控制作業。此參數的值會決定 InputBuffer 和 OutputBuffer 的格式和必要長度,以及下列哪一個參數位是必要的。 如需系統定義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 |