FSCTL_GET_REPARSE_POINT控制代码

FSCTL_GET_REPARSE_POINT控制代码检索与指定文件或目录关联的重新分析点数据。

若要执行此操作,请使用以下参数调用 FltFsControlFileZwFsControlFile

有关重新分析点和FSCTL_GET_REPARSE_POINT控制代码的详细信息,请参阅Microsoft Windows SDK文档。

参数

  • FileObject [in]: FltFsControlFile only. 要从中检索重分析点数据的文件或目录的文件对象指针。 此参数是必需的,不能为 NULL

  • FileHandle [in]: 仅 ZwFsControlFile 。 要从中检索重新分析点数据的文件或目录的文件句柄。 此参数是必需的,不能为 NULL

  • FsControlCode [in]:操作的控件代码。 对此操作使用 FSCTL_GET_REPARSE_POINT

  • InputBuffer [in]:未与此操作一起使用;设置为 NULL

  • InputBufferLength [in]:未与此操作一起使用;设置为零。

  • OutputBuffer [out]:指向调用方分配 的REPARSE_GUID_DATA_BUFFER 或接收重新分析点数据的 REPARSE_DATA_BUFFER 结构的指针。

  • OutputBufferLength [out]: OutputBuffer 参数指向的缓冲区的大小(以字节为单位)。 字节数的计算方式如下:

    结构 OutputBufferLength
    REPARSE_GUID_DATA_BUFFER 必须至少REPARSE_GUID_DATA_BUFFER_HEADER_SIZE加上预期用户定义数据的大小;和 必须小于或等于 MAXIMUM_REPARSE_DATA_BUFFER_SIZE。
    REPARSE_DATA_BUFFER 必须至少REPARSE_DATA_BUFFER_HEADER_SIZE加上预期用户定义的数据的大小;和 必须小于或等于 MAXIMUM_REPARSE_DATA_BUFFER_SIZE。

状态块

FltFsControlFileZwFsControlFile 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

代码 含义
STATUS_BUFFER_OVERFLOW OutputBuffer 参数指向的缓冲区足够大,足以容纳REPARSE_GUID_DATA_BUFFER或REPARSE_DATA_BUFFER结构的固定部分,但不能保存用户定义的数据。 在这种情况下,OutputBuffer 缓冲区中仅返回 OutputBufferLength 字节FltFsControlFileLengthReturned 参数接收返回的数据的实际长度(以字节为单位)。 这是一个警告代码。
STATUS_BUFFER_TOO_SMALL OutputBuffer 指向的缓冲区小于 sizeof(REPARSE_GUID_DATA_BUFFER) 且不够大,无法保存重新分析点数据。 FltFsControlFile (的 LengthReturned 参数或 ZwFsControlFileIoStatus 参数的信息成员) 接收所需的缓冲区大小。 在这种情况下,不返回重新分析点数据。 这是错误代码。
STATUS_IO_REPARSE_DATA_INVALID 指定的参数值之一无效。 这是错误代码。
STATUS_NOT_A_REPARSE_POINT 文件或目录不是重新分析点。 这是错误代码。

要求

要求类型 要求
标头 Ntifs.h (包括 Ntifs.hFltkernel.h)

另请参阅

FLT_CALLBACK_DATA

IRP_MJ_FILE_SYSTEM_CONTROL 的 FLT_PARAMETERS

FLT_TAG_DATA_BUFFER

FltFsControlFile

FltTagFile

FltUntagFile

FSCTL_DELETE_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

IRP_MJ_FILE_SYSTEM_CONTROL

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER

REPARSE_GUID_DATA_BUFFER

ZwFsControlFile