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

指向接收请求的卷属性信息的调用方分配的缓冲区的指针。 如果输入时 长度 为零,则忽略此参数。 否则,此参数是必需的,不能 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 仅返回可以在装载过程中安全地查询的信息,而不会出现系统死锁的风险。 因此,微型筛选器驱动程序通常从装载后回调函数或 InstanceSetupCallbackPFLT_INSTANCE_SETUP_CALLBACK) 例程调用此例程,以确定是否附加到给定卷。

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

另请参阅

FLT_VOLUME_PROPERTIES

PFLT_INSTANCE_SETUP_CALLBACK