FltQueryInformationFile 函数 (fltkernel.h)

FltQueryInformationFile 检索给定文件的信息。

语法

NTSTATUS FLTAPI FltQueryInformationFile(
  [in]            PFLT_INSTANCE          Instance,
  [in]            PFILE_OBJECT           FileObject,
  [out]           PVOID                  FileInformation,
  [in]            ULONG                  Length,
  [in]            FILE_INFORMATION_CLASS FileInformationClass,
  [out, optional] PULONG                 LengthReturned
);

参数

[in] Instance

调用方不透明的实例指针。 此参数是必需的,不能为 NULL

[in] FileObject

文件的文件对象指针。 此参数是必需的,不能为 NULL

[out] FileInformation

指向调用方分配的缓冲区的指针,该缓冲区接收有关文件的信息。 FileInformationClass 参数指定信息的类型。 此参数是必需的,不能为 NULL

[in] Length

FileInformation 缓冲区的大小(以字节为单位)。

[in] FileInformationClass

一个 FILE_INFORMATION_CLASS 值,该值指定要在 FileInformation 缓冲区中返回的文件信息的类型。

[out, optional] LengthReturned

指向调用方分配的变量的指针,该变量接收 FileInformation 缓冲区中返回的信息的大小(以字节为单位)。 此参数是可选的,可以为 NULL

返回值

FltQueryInformationFile 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_VOLUME_DISMOUNTED
该文件驻留在当前未装载的卷上。 这是错误代码。

注解

微筛选器驱动程序调用 FltQueryInformationFile 以检索 FileObject 标识的文件的信息。 文件当前必须处于打开状态。

FltQueryInformationFile 在不受特定文件系统支持的 FILE_XXX_INFORMATION 结构的任何成员中返回零。

FltQueryInformationFile 的调用方必须在 IRQL = PASSIVE_LEVEL 且已启用 APC 的情况下运行。

注意: 请勿使用非 NULL 顶级 IRP 值调用此例程,因为这样可能会导致系统死锁。

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL (请参阅“备注”部分)

另请参阅

FILE_INFORMATION_CLASS

FltQueryVolumeInformationFile

FltSetInformationFile

ZwQueryInformationFile