fltGetVolumeProperties 函数 (fltkernel.h)

FltGetVolumeProperties 例程返回给定卷的卷属性信息。

语法

NTSTATUS FLTAPI FltGetVolumeProperties(
  [in]  PFLT_VOLUME            Volume,
  [out] PFLT_VOLUME_PROPERTIES VolumeProperties,
        ULONG                  VolumePropertiesLength,
  [out] PULONG                 LengthReturned
);

参数

[in] Volume

卷的不透明指针。 此参数是必需的,不能为 NULL

[out] VolumeProperties

指向调用方分配的缓冲区的指针,该缓冲区接收请求的卷属性信息。 如果输入时 Length 为零,则忽略此参数。 否则,此参数是必需的,不能为 NULL

VolumePropertiesLength

VolumeProperties 参数指向的缓冲区的大小(以字节为单位)。 此参数是可选的,可以为零。 如果为零, LengthReturned 将接收保存卷属性所需的缓冲区的大小(以字节为单位)。 如果此参数为非零值,则其值必须至少为 sizeof (FLT_VOLUME_PROPERTIES)

[out] LengthReturned

指向调用方分配的变量的指针,该变量接收 VolumeProperties 中返回的信息的大小(以字节为单位)。 如果 FltGetVolumeProperties 返回STATUS_BUFFER_TOO_SMALL,或者如果输入时 Length 为零,则此参数将改为接收保存卷属性所需的缓冲区的大小(以字节为单位)。 此参数是必需的,不能为 NULL

返回值

FltGetVolumeProperties 返回STATUS_SUCCESS或相应的 NTSTATUS 值,例如以下值之一:

返回代码 说明
STATUS_BUFFER_OVERFLOW
VolumeProperties 参数指向的缓冲区足够大,足以容纳FLT_VOLUME_PROPERTIES结构的固定部分,但不能容纳 FileSystemDriverNameFileSystemDeviceNameRealDeviceName 成员。 在这种情况下, VolumeProperties 参数指向的缓冲区中仅返回卷信息的固定部分。 LengthReturned 参数接收返回的数据的实际长度(以字节为单位)。 这是一个警告代码。
STATUS_BUFFER_TOO_SMALL
VolumeProperties 参数指向的缓冲区不够大,无法容纳卷属性信息。 LengthReturned 参数接收所需的缓冲区大小。 在这种情况下,不返回任何卷信息。 这是错误代码。

注解

FltGetVolumeProperties 仅返回可以在装载过程中安全地查询的信息,而不会有系统死锁的风险。 因此,微筛选器驱动程序通常从装载后回调函数或 InstanceSetupCallback (调用此例程 ,PFLT_INSTANCE_SETUP_CALLBACK) 例程来确定是否附加到给定卷。

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

另请参阅

FLT_VOLUME_PROPERTIES

PFLT_INSTANCE_SETUP_CALLBACK