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次要代码,允许它执行操作,而无需管理某些操作的卷特权。

此函数假定传递给它的所有缓冲区都是内核模式缓冲区。

要求

要求
Header ntifs.h

另请参阅

ZwFsControlFile