IRP_MJ_SET_INFORMATION union 的FLT_PARAMETERS
IRP_MJ_SET_INFORMATION操作的FLT_IO_PARAMETER_BLOCK结构的 MajorFunction 字段时使用的联合组件。
语法
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass;
PFILE_OBJECT ParentOfTarget;
union {
struct {
BOOLEAN ReplaceIfExists;
BOOLEAN AdvanceOnly;
};
ULONG ClusterCount;
HANDLE DeleteHandle;
};
PVOID InfoBuffer;
} SetFileInformation;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
成员
SetFileInformation:包含以下成员的结构。
长度: InfoBuffer 处缓冲区的长度(以字节为单位)。
FileInformationClass:要为文件设置的信息类型。 下列类型作之一:
值 含义 FileAllocationInformation 为文件设置 FILE_ALLOCATION_INFORMATION 。 FileBasicInformation 设置 文件的FILE_BASIC_INFORMATION 。 FileDispositionInformation 为文件设置 FILE_DISPOSITION_INFORMATION 。 FileEndOfFileInformation 设置 文件的FILE_END_OF_FILE_INFORMATION 。 FileLinkInformation 为文件设置 FILE_LINK_INFORMATION 。 FilePositionInformation 为文件设置 FILE_POSITION_INFORMATION 。 FileRenameInformation 为文件设置 FILE_RENAME_INFORMATION 。 FileValidDataLengthInformation 设置 文件的FILE_VALID_DATA_LENGTH_INFORMATION 。 ParentOfTarget:用于重命名或链接操作。 如果 InfoBuffer-FileName> 包含完全限定的文件名,或者如果 InfoBuffer-RootDirectory> 为非 NULL,则此成员是作为操作目标的文件的父目录的文件对象指针。 否则为 NULL。
( 未命名结构 )
包含以下成员的结构。ReplaceIfExists:用于重命名或链接操作。 设置为 TRUE 可指定已存在的同名文件将替换为给定文件。 如果已存在具有给定名称的文件,则重命名或链接操作应失败,则设置为 FALSE 。
AdvanceOnly:文件结束操作的标志。 这决定了在 FileInformationClass == FileEndOfFileInformation 时 EndOfFile 成员FILE_END_OF_FILE_INFORMATION结构的使用。 如果 为 TRUE,则只有在增加当前有效数据长度时,才会从 EndOfFile 设置文件的新有效数据长度。 如果 为 FALSE,则从 EndOfFile 设置新的文件大小。
ClusterCount:保留供系统使用。 请勿使用。
DeleteHandle:保留供系统使用。 请勿使用。
InfoBuffer:指向包含要设置的文件信息的输入缓冲区的指针。
注解
IRP_MJ_SET_INFORMATION操作的FLT_PARAMETERS结构包含由回调数据表示的集信息操作的参数 (FLT_CALLBACK_DATA) 结构。 它包含在FLT_IO_PARAMETER_BLOCK结构中。
IRP_MJ_SET_INFORMATION是基于 IRP 的操作。
缓存管理器将 AdvanceOnly 成员设置为 TRUE ,以通知文件系统将磁盘上的当前有效数据长度提升到 EndOfFile 中的新有效数据长度。 如果 AdvanceOnly 为 FALSE,则将设置 EndOfFile 成员中的新文件大小,该大小可能大于或小于当前文件大小。
要求
要求类型 | 要求 |
---|---|
标头 | Fltkernel.h (包括 Fltkernel.h) |