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 |